Browse Source

管乐迷需求迭代

zouxuan 2 years ago
parent
commit
2106833315

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -447,4 +447,6 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     int getWaitRenewInfo(@Param("organIdList") Set<Integer> organIdList);
 
     List<DecimalMapDto> indexCoop(@Param("organId") Integer organId, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<DecimalMapDto> indexImportCoop(@Param("organId") Integer organId, @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DecimalMapDto.java

@@ -5,8 +5,18 @@ import java.math.BigDecimal;
 public class DecimalMapDto {
     private String name;
 
+    private Integer id;
+
     private BigDecimal amount = BigDecimal.ZERO;
 
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
     public String getName() {
         return name;
     }

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -360,7 +360,19 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 
     @Override
     public List<DecimalMapDto> indexCoop(Integer organId,String startTime,String endTime) {
-        return indexBaseMonthDataDao.indexCoop(organId,startTime,endTime);
+		//获取导入的订单汇总
+		List<DecimalMapDto> decimalMapDtos1 = indexBaseMonthDataDao.indexImportCoop(organId, startTime, endTime);
+		List<DecimalMapDto> decimalMapDtos = indexBaseMonthDataDao.indexCoop(organId, startTime, endTime);
+		if(!CollectionUtils.isEmpty(decimalMapDtos)){
+			Map<Integer, BigDecimal> decimalMap = decimalMapDtos.stream().collect(Collectors.groupingBy(DecimalMapDto::getId, Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0).getAmount())));
+			for (DecimalMapDto decimalMapDto : decimalMapDtos1) {
+				BigDecimal bigDecimal = decimalMap.get(decimalMapDto.getId());
+				if(bigDecimal != null){
+					decimalMapDto.setAmount(decimalMapDto.getAmount().add(bigDecimal));
+				}
+			}
+		}
+		return decimalMapDtos1.stream().sorted(Comparator.comparing(DecimalMapDto::getAmount).reversed()).collect(Collectors.toList());
     }
 
     //异步处理经营数据查询

+ 16 - 7
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -2180,12 +2180,21 @@
 		</if>
 	</select>
 	<select id="indexCoop" resultType="com.ym.mec.biz.dal.dto.DecimalMapDto">
-		select cop.organ_name_ name,SUM(spo.expect_amount_) amount from (
-		select sr.user_id_,mg.cooperation_organ_id_ organ_id_,co.name_ organ_name_ from cooperation_organ co
-		left join music_group mg ON co.id_ = mg.cooperation_organ_id_
-		left join (select * from student_registration where id_ IN (select MAX(id_) from student_registration group by user_id_)) sr ON mg.id_ = sr.music_group_id_
-		where mg.organ_id_ = #{organId} AND co.is_enable_ group by sr.user_id_,mg.cooperation_organ_id_) cop
-		left join student_payment_order spo ON cop.user_id_ = spo.user_id_ AND spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
-		GROUP BY cop.organ_id_ order by amount DESC
+		SELECT cop.organ_id_ id,SUM(spo.expect_amount_) amount
+		FROM student_payment_order spo
+				 left join (select sr.user_id_,mg.cooperation_organ_id_ organ_id_,co.name_ organ_name_ from
+			(select * from student_registration where id_ IN (select MAX(id_) from student_registration group by user_id_)) sr
+				left join music_group mg ON mg.id_ = sr.music_group_id_
+				left join cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+							where mg.organ_id_ = #{organId} group by sr.user_id_,mg.cooperation_organ_id_) cop ON cop.user_id_ = spo.user_id_
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
+		  AND cop.user_id_ = spo.user_id_
+	</select>
+	<select id="indexImportCoop" resultType="com.ym.mec.biz.dal.dto.DecimalMapDto">
+		select co.id_ id,co.name_ name,SUM(spo.expect_amount_) amount from cooperation_organ co
+		left join student_payment_order spo ON co.id_ = spo.music_group_id_ AND spo.type_ = 'SCHOOL'
+		AND spo.group_type_ = 'OUTORDER' AND spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
+		where co.is_enable_ AND co.del_flag_ = 0
+		group by co.id_
 	</select>
 </mapper>