jingyuanchao 2 жил өмнө
parent
commit
f7a82af487

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -202,7 +202,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         int insert = coreEduTrainingPlanMapper.insert(plan);
 
         //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-        if (/*(!checkOrgType(org.getType())||org.getType()==3) &&*/ ObjectUtil.equal(0, plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
+        if ((!checkOrgType(org.getType())) && ObjectUtil.equal(0, plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
             CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(plan.getId());
             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
         }

+ 36 - 19
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -293,8 +293,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             start = dateRange.getStartTime();
             end = dateRange.getEndTime();
         } else {
-            start = DateUtil.beginOfDay(start).setField(DateField.MILLISECOND,0);
-            end = DateUtil.endOfDay(end).setField(DateField.MILLISECOND,0);
+            start = DateUtil.beginOfDay(start).setField(DateField.MILLISECOND, 0);
+            end = DateUtil.endOfDay(end).setField(DateField.MILLISECOND, 0);
         }
         List<CoreEduTrainingPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
@@ -359,46 +359,63 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     @Override
     public List<CoreEduTrainingTaskReportVo> selectCoreEduTrainingTaskReport(CoreEduTrainingTaskReportDto request) {
         CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(request.getPlanId());
-        if (ObjectUtil.isNull(plan)) {
+        if (plan == null) {
             throw new SystemException("未获取到该计划信息");
         }
+
         List<Long> planIdList = new ArrayList<>();
         Long planId = request.getPlanId();
         if (ObjectUtil.equal(1, plan.getStandard()) && ObjectUtil.equal(1, plan.getIssue())) {
             planIdList = coreEduTrainingPlanMapper.selectIdByParentId(plan.getId());
             planId = null;
         }
+
         request.setStartDate(DateUtil.beginOfMonth(request.getDate()));
         request.setEndDate(DateUtil.endOfMonth(request.getDate()));
-        Long orgId = request.getOrgId();
 
-        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        Long orgId = request.getOrgId();
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         request.setOrgPath(sysOrg.getPath());
+
         List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         if (ObjectUtil.isEmpty(sysOrgList)) {
             return new ArrayList<>();
         }
+
         List<CoreEduTrainingTaskReportVo> result = new ArrayList<>();
         List<CoreEduTrainingTaskReportVo> list = coreEduTrainingTaskMapper.selectReport(request, planId, planIdList);
-        for (SysOrg org : sysOrgList) {
-            List<CoreEduTrainingTaskReportVo> childrenOrgData = list.stream().filter(vo -> vo.getOrgPath().startsWith(org.getPath())).collect(Collectors.toList());
-            CoreEduTrainingTaskReportVo reportVo = new CoreEduTrainingTaskReportVo();
-            reportVo.setOrgId(org.getId());
-            reportVo.setOrgName(org.getName());
-            if (ObjectUtil.isEmpty(childrenOrgData)) {
+
+        if (list.size() == 1 && list.get(0).getOrgId() == null) {
+            //走到这 说明mapper没有查到数据 构建空数据返回
+            for (SysOrg org : sysOrgList) {
+                CoreEduTrainingTaskReportVo reportVo = new CoreEduTrainingTaskReportVo();
+                reportVo.setOrgId(org.getId());
+                reportVo.setOrgName(org.getName());
                 reportVo.setShouldFinish(0);
                 reportVo.setFinish(0);
                 reportVo.setFinishRate("0%");
-            } else {
-                childrenOrgData.stream().map(CoreEduTrainingTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
-                childrenOrgData.stream().map(CoreEduTrainingTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
-                reportVo.setFinishRate(calculatePercent(reportVo.getFinish(), reportVo.getShouldFinish()));
+                result.add(reportVo);
+            }
+            return result;
+        } else {
+            for (SysOrg org : sysOrgList) {
+                List<CoreEduTrainingTaskReportVo> childrenOrgData = list.stream()
+                        .filter(vo -> vo.getOrgPath().startsWith(org.getPath()))
+                        .collect(Collectors.toList());
+
+                int totalShouldFinish = childrenOrgData.stream().mapToInt(CoreEduTrainingTaskReportVo::getShouldFinish).sum();
+                int totalFinish = childrenOrgData.stream().mapToInt(CoreEduTrainingTaskReportVo::getFinish).sum();
+
+                CoreEduTrainingTaskReportVo reportVo = new CoreEduTrainingTaskReportVo();
+                reportVo.setOrgId(org.getId());
+                reportVo.setOrgName(org.getName());
+                reportVo.setShouldFinish(totalShouldFinish);
+                reportVo.setFinish(totalFinish);
+                reportVo.setFinishRate(calculatePercent(totalFinish, totalShouldFinish));
+                result.add(reportVo);
             }
-            result.add(reportVo);
+            return result;
         }
-
-
-        return result;
     }
 
     public static String calculatePercent(Integer num1, Integer num2) {