浏览代码

管乐迷需求一大推

zouxuan 2 年之前
父节点
当前提交
1465bcb0a3

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

@@ -446,7 +446,7 @@ 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> indexCoop(@Param("organIds") List<Integer> organIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-    List<DecimalMapDto> indexImportCoop(@Param("organId") Integer organId, @Param("startTime") String startTime, @Param("endTime") String endTime);
+    List<DecimalMapDto> indexImportCoop(@Param("organIds") List<Integer> organIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CloudTeacherSumDto.java

@@ -27,6 +27,9 @@ public class CloudTeacherSumDto {
     @ApiModelProperty(value = "平均练习时长")
     private BigDecimal avgTrainTime = BigDecimal.ZERO;
 
+    @ApiModelProperty(value = "平均练习时长(练习)")
+    private BigDecimal trainAvgTrainTime = BigDecimal.ZERO;
+
     @ApiModelProperty(value = "练习达标率")
     private BigDecimal trainStandRate = BigDecimal.ZERO;
 
@@ -48,6 +51,14 @@ public class CloudTeacherSumDto {
     @ApiModelProperty(value = ">=240分钟")
     private Integer train4;
 
+    public BigDecimal getTrainAvgTrainTime() {
+        return trainAvgTrainTime;
+    }
+
+    public void setTrainAvgTrainTime(BigDecimal trainAvgTrainTime) {
+        this.trainAvgTrainTime = trainAvgTrainTime;
+    }
+
     public Integer getOrganId() {
         return organId;
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/IndexBaseMonthDataService.java

@@ -21,7 +21,7 @@ public interface IndexBaseMonthDataService extends BaseService<Long, IndexBaseMo
 
     List<IndexBaseDto> getIndexBaseData(IndexDataQueryInfo indexDataQueryInfo);
 
-    List<DecimalMapDto> indexCoop(Integer organId, String startTime, String endTime);
+    List<DecimalMapDto> indexCoop(String organId, String startTime, String endTime);
 
     void indexBaseDataTask(Integer tenantId, String month, Set<IndexDataType> dataTypes);
 

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

@@ -413,7 +413,7 @@ public class ExportServiceImpl implements ExportService {
     private List<DecimalMapDto> exportIndexCoop(Map<String, Object> info){
         String startTime = getParam(info, "startTime", String.class);
         String endTime = getParam(info, "endTime", String.class);
-        Integer organId = getParam(info, "organId", Integer.class);
+        String organId = getParam(info, "organId", String.class);
         return indexService.indexCoop(organId,startTime,endTime);
     }
 

+ 12 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -359,10 +359,19 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	}
 
     @Override
-    public List<DecimalMapDto> indexCoop(Integer organId,String startTime,String endTime) {
+    public List<DecimalMapDto> indexCoop(String organId,String startTime,String endTime) {
+		List<Integer> organIds = new ArrayList<>();
+		if(StringUtils.isEmpty(organId)){
+			String employeeOrgan = organizationService.getEmployeeOrgan("");
+			if(StringUtils.isNotEmpty(employeeOrgan)){
+				organIds = Arrays.stream(employeeOrgan.split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
+			}
+		}else {
+			organIds.add(Integer.valueOf(organId));
+		}
 		//获取导入的订单汇总
-		List<DecimalMapDto> decimalMapDtos1 = indexBaseMonthDataDao.indexImportCoop(organId, startTime, endTime);
-		List<DecimalMapDto> decimalMapDtos = indexBaseMonthDataDao.indexCoop(organId, startTime, endTime);
+		List<DecimalMapDto> decimalMapDtos1 = indexBaseMonthDataDao.indexImportCoop(organIds, startTime, endTime);
+		List<DecimalMapDto> decimalMapDtos = indexBaseMonthDataDao.indexCoop(organIds, 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) {

+ 16 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1199,13 +1199,16 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         }
         BigDecimal decimal = new BigDecimal(100);
         for (CloudTeacherSumDto dto : cloudTeacherSumDtos) {
-            if(dto.getNormalNum().compareTo(BigDecimal.ZERO) == 0){
-                continue;
+            if(dto.getNormalNum().compareTo(BigDecimal.ZERO) > 0){
+                dto.setTrainRate(dto.getTrainStudentNum().divide(dto.getNormalNum(),4, 2).multiply(decimal).setScale(2));
+                dto.setAvgTrainTime(dto.getTrainTotalTime().divide(dto.getNormalNum(),2, 2));
+            }
+            if(dto.getTrainStudentNum().compareTo(BigDecimal.ZERO) > 0){
+                dto.setTrainAvgTrainTime(dto.getTrainTotalTime().divide(dto.getTrainStudentNum(),2, 2));
+                dto.setTrainStandRate(dto.getTrain0().divide(dto.getTrainStudentNum(),4, 2).multiply(decimal).setScale(2));
             }
-            BigDecimal normalNum = dto.getNormalNum();
-            dto.setAvgTrainTime(dto.getTrainTotalTime().divide(normalNum,2, 2));
-            dto.setTrainRate(dto.getTrainStudentNum().divide(normalNum,4, 2).multiply(decimal).setScale(2));
-            dto.setTrainStandRate(dto.getTrain0().divide(normalNum,4, 2).multiply(decimal).setScale(2));
+
+
         }
         return cloudTeacherSumDtos;
     }
@@ -1228,13 +1231,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             dataList = studentDao.queryCloudTeacherSumDetail(params);
             BigDecimal decimal = new BigDecimal(100);
             for (CloudTeacherSumDto dto : dataList) {
-                if(dto.getNormalNum().compareTo(BigDecimal.ZERO) == 0){
-                    continue;
+                if(dto.getNormalNum().compareTo(BigDecimal.ZERO) > 0){
+                    dto.setTrainRate(dto.getTrainStudentNum().divide(dto.getNormalNum(),4, 2).multiply(decimal).setScale(2));
+                    dto.setAvgTrainTime(dto.getTrainTotalTime().divide(dto.getNormalNum(),2, 2));
+                }
+                if(dto.getTrainStudentNum().compareTo(BigDecimal.ZERO) > 0){
+                    dto.setTrainAvgTrainTime(dto.getTrainTotalTime().divide(dto.getTrainStudentNum(),2, 2));
+                    dto.setTrainStandRate(dto.getTrain0().divide(dto.getTrainStudentNum(),4, 2).multiply(decimal).setScale(2));
                 }
-                BigDecimal normalNum = dto.getNormalNum();
-                dto.setAvgTrainTime(dto.getTrainTotalTime().divide(normalNum,2, BigDecimal.ROUND_DOWN));
-                dto.setTrainRate(dto.getTrainStudentNum().divide(normalNum,2, BigDecimal.ROUND_DOWN).multiply(decimal));
-                dto.setTrainStandRate(dto.getTrain0().divide(normalNum,2, BigDecimal.ROUND_DOWN).multiply(decimal));
             }
         }
         if (count == 0) {

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

@@ -2186,7 +2186,15 @@
 			(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>
+					<if test="organIds != null and organIds.size > 0">
+						mg.organ_id_ IN
+						<foreach collection="organIds" open="(" close=")" item="organId" separator=",">
+							#{organId}
+						</foreach>
+					</if>
+				</where>
+			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_
 		GROUP BY cop.organ_id_
@@ -2195,7 +2203,13 @@
 		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 AND co.organ_id_ = #{organId}
+		where co.is_enable_ AND co.del_flag_ = 0
+		<if test="organIds != null and organIds.size > 0">
+			AND co.organ_id_ IN
+			<foreach collection="organIds" open="(" close=")" item="organId" separator=",">
+				#{organId}
+			</foreach>
+		</if>
 		group by co.id_
 	</select>
 </mapper>

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/IndexController.java

@@ -111,7 +111,7 @@ public class IndexController extends BaseController {
 		return succeed(indexService.getIndexBaseData(queryInfo));
 	}
 	@GetMapping("/indexCoop")
-	public HttpResponseResult<List<DecimalMapDto>> indexCoop(Integer organId, String startTime, String endTime){
+	public HttpResponseResult<List<DecimalMapDto>> indexCoop(String organId, String startTime, String endTime){
 		return succeed(indexService.indexCoop(organId,startTime,endTime));
 	}
 

+ 4 - 4
mec-web/src/main/resources/exportColumnMapper.ini

@@ -323,12 +323,12 @@ headColumns = ["分部", "在读人数", "应有课耗", "实际课耗","课耗
 fieldColumns = ["organName","normalNum","courseConsumerNum","courseSum","courseConsumerRate+'%'","num5","num4","num3","num2","num1","num0","standRate+'%'"]
 
 [云教练统计导出]
-headColumns = ["分部", "会员人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长","练习达标占比"]
-fieldColumns = ["organName","normalNum","trainStudentNum","trainRate+'%'","train1","train2","train3","train4","avgTrainTime","trainStandRate+'%'"]
+headColumns = ["分部", "会员人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(会员)","平均练习时长(练习)","练习达标占比"]
+fieldColumns = ["organName","normalNum","trainStudentNum","trainRate+'%'","train1","train2","train3","train4","avgTrainTime","trainAvgTrainTime","trainStandRate+'%'"]
 
 [云教练统计详情导出]
-headColumns = ["声部老师", "会员人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长","练习达标占比"]
-fieldColumns = ["teacherName","normalNum","trainStudentNum","trainRate+'%'","train1","train2","train3","train4","avgTrainTime","trainStandRate+'%'"]
+headColumns = ["声部老师", "会员人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(会员)","平均练习时长(练习)","练习达标占比"]
+fieldColumns = ["teacherName","normalNum","trainStudentNum","trainRate+'%'","train1","train2","train3","train4","avgTrainTime","trainAvgTrainTime","trainStandRate+'%'"]
 
 [班级列表导出]
 headColumns = ["课程组编号", "课程组名称", "分部名称", "班级名称","班级类型", "班级人数", "主教老师", "助教老师", "已上课时", "总课数"]