Jelajahi Sumber

演练情况表增加完成率,app根据完成率排序,

jingyuanchao 1 tahun lalu
induk
melakukan
65c06d0e74

+ 29 - 0
project_data/sql/0.1.0/soc/soc.sql

@@ -0,0 +1,29 @@
+
+
+
+
+DELIMITER ??
+DROP PROCEDURE IF EXISTS schema_change ??
+CREATE PROCEDURE schema_change()
+BEGIN
+
+/*
+    -- 子系统表增加字段是否关联登记簿,用于显示当日布撤防数据
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'iot_alarm_subsystem'
+                    AND column_name = 'in_book') THEN
+        alter table iot_alarm_subsystem
+            add in_book int default 0 null comment '是否关联登记簿,0否1是' after deleted;
+    END IF;*/
+
+
+
+END ??
+DELIMITER ;
+CALL schema_change();
+
+update sys_menu set menu_name='演练情况表' where menu_name='演练统计排名' and platform_type='0';
+update sys_menu set menu_name='培训情况表' where menu_name='培训统计报表' and platform_type='0';
+

+ 4 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskReportVo.java

@@ -6,8 +6,6 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -39,6 +37,10 @@ public class CoreDrillTaskReportVo {
     @ApiModelProperty(value = "已培演练数量")
     private Integer finish;
     @ColumnWidth(15)
+    @ExcelProperty(value = {"${cellWriterValue}","完成率"})
+    @ApiModelProperty(value = "完成率")
+    private String finishRate;
+    @ColumnWidth(15)
     @ExcelProperty(value = {"${cellWriterValue}","评分"})
     @ApiModelProperty(value = "评分")
     private String score;

+ 45 - 35
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -146,7 +146,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 //                    record.setStatus(DrillDoStatus.DONE.getCode());
 //                }
                 //查询已完成状态实际是查已完成和代签名状态,需要把返回数据设为已完成状态
-                if (ObjectUtil.equal(status, DrillDoStatus.DONE.getCode())){
+                if (ObjectUtil.equal(status, DrillDoStatus.DONE.getCode())) {
                     record.setStatus(DrillDoStatus.DONE.getCode());
                 }
                 dealData(record, records, cacheList);
@@ -663,7 +663,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             request.setStartTime(DateUtil.beginOfMonth(DateUtil.beginOfDay(st)));
             request.setEndTime(DateUtil.endOfMonth(DateUtil.endOfDay(ed)));
         }
-        if (ObjectUtil.isAllNotEmpty(request.getStartTime(),request.getEndTime())){
+        if (ObjectUtil.isAllNotEmpty(request.getStartTime(), request.getEndTime())) {
             request.setStartTime(DateUtil.beginOfMonth(DateUtil.beginOfDay(request.getStartTime())));
             request.setEndTime(DateUtil.endOfMonth(DateUtil.endOfDay(request.getEndTime())));
         }
@@ -723,29 +723,24 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                     reportVo.setShouldFinish(0);
                     reportVo.setFinish(0);
                     reportVo.setScore("0.0");
+                    reportVo.setFinishRate("0.00");
                 } else {
                     childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
                     childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
                     reportVo.setScore(calculateScore(childrenOrgData));
+                    reportVo.setFinishRate(calculateFinishRate(childrenOrgData));
                 }
                 result.add(reportVo);
             }
         }
-      /*  List<CoreDrillTaskReportVo> reportVoList = result.stream().sorted(Comparator.comparing(vo -> Double.valueOf(vo.getScore()))).collect(Collectors.toList());
-        Collections.reverse(reportVoList);*/
-        return result;
-    }
-
-    private void buildEmptyData(List<SysOrg> sysOrgList, List<CoreDrillTaskReportVo> result) {
-        for (SysOrg org : sysOrgList) {
-            CoreDrillTaskReportVo reportVo = new CoreDrillTaskReportVo();
-            reportVo.setOrgId(org.getId());
-            reportVo.setOrgName(org.getName());
-            reportVo.setShouldFinish(0);
-            reportVo.setFinish(0);
-            reportVo.setScore("0.0");
-            result.add(reportVo);
+        if (!SecurityUtils.isApp()) {
+            result.forEach(r -> r.setFinishRate(r.getFinishRate() + "%"));
+            return result;
         }
+        List<CoreDrillTaskReportVo> reportVoList = result.stream().sorted(Comparator.comparing(vo -> Double.valueOf(vo.getFinishRate()))).collect(Collectors.toList());
+        Collections.reverse(reportVoList);
+        reportVoList.forEach(r -> r.setFinishRate(r.getFinishRate() + "%"));
+        return reportVoList;
     }
 
     private String calculateScore(List<CoreDrillTaskReportVo> childrenOrgData) {
@@ -762,6 +757,25 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     }
 
 
+    private String calculateFinishRate(List<CoreDrillTaskReportVo> childrenOrgData) {
+        //计算finish 字段总和
+        int finish = childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).orElse(0);
+        if (finish == 0) {
+            return "0.00";
+        }
+        int shouldFinish = childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).orElse(0);
+        //计算完成率
+        BigDecimal finishBigDecimal = new BigDecimal(finish);
+        BigDecimal shouldFinishBigDecimal = new BigDecimal(shouldFinish);
+
+        BigDecimal divide = finishBigDecimal.divide(shouldFinishBigDecimal, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
+
+
+        return divide.toString();
+
+    }
+
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer sign(CoreDrillTaskSignDto request) {
@@ -985,6 +999,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 
     /**
      * 优秀案例学习列表查询
+     *
      * @param request
      * @return
      */
@@ -1003,6 +1018,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         }
         return TableDataInfo.build(page);
     }
+
     private void dealRecTaskListParam(CoreDrillTaskRecPageDto request) {
 
         //App的查询, App 默认下穿
@@ -1011,11 +1027,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         request.setStartTime(DateUtil.beginOfMonth(request.getStartTime()));
         request.setEndTime(DateUtil.endOfMonth(request.getEndTime()));
         // 查询行社优秀
-        if(ObjectUtil.equals(request.getRecStatus(),1))
-        {
+        if (ObjectUtil.equals(request.getRecStatus(), 1)) {
             List<SysOrgVO> sysOrgVOS = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(request.getOrgId()), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 
-            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(),4);
+            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(), 4);
             request.setOrgPath(orgPath);
 //            // 如果当前机构或者机构的上级存在 行社 取 该行社的机构Path
 //            final Optional<SysOrgVO> first = sysOrgVOS.stream().filter(x -> ObjectUtil.equal(x.getType(), 3)).findFirst();
@@ -1032,36 +1047,31 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 
         }
         // 查询地区优秀
-        else if(ObjectUtil.equals(request.getRecStatus(),3))
-        {
-            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(),2);
+        else if (ObjectUtil.equals(request.getRecStatus(), 3)) {
+            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(), 2);
             request.setOrgPath(orgPath);
         }
         // 查询省级优秀
-        else if(ObjectUtil.equals(request.getRecStatus(),5))
-        {
+        else if (ObjectUtil.equals(request.getRecStatus(), 5)) {
 //            SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
             request.setOrgPath(null);
         }
     }
 
-    private  String dealRecTaskOrgPathParam(Long requestOrgId,Integer orgType)
-    {
+    private String dealRecTaskOrgPathParam(Long requestOrgId, Integer orgType) {
         List<SysOrgVO> sysOrgVOS = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(requestOrgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 
         // 如果当前机构或者机构的上级存在 指定机构类型的机构 该类型的机构Path
         final Optional<SysOrgVO> first = sysOrgVOS.stream().filter(x -> ObjectUtil.equal(x.getType(), orgType)).findFirst();
-        if(first.isPresent())
-        {
-            return  first.get().getPath();
+        if (first.isPresent()) {
+            return first.get().getPath();
         }
         // 不存在 这说明该机构是在 指定机构类型之上 取当前查询条件机构的Path
-        else{
+        else {
             final Optional<SysOrgVO> self = sysOrgVOS.stream().filter(x -> ObjectUtil.equal(x.getId(), requestOrgId)).findFirst();
 
-            if(self.isPresent())
-            {
-                return  self.get().getPath();
+            if (self.isPresent()) {
+                return self.get().getPath();
             }
         }
         return null;
@@ -1357,7 +1367,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 }
             });
         }
-        waitRecTaskList.removeIf(item -> DateUtil.date().before(item.getStartTime()) );
+        waitRecTaskList.removeIf(item -> DateUtil.date().before(item.getStartTime()));
         waitRecTaskList.forEach(item -> {
             item.setType(PanelTypeEnums.DRILL_REC.getCode());
         });
@@ -1877,7 +1887,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     public List<String> checkTaskExit(List<String> allDrillIdList) {
         List<Long> collect = allDrillIdList.stream().map(Long::parseLong).collect(Collectors.toList());
         LambdaQueryWrapper<CoreDrillTask> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(CoreDrillTask::getId,collect);
+        wrapper.in(CoreDrillTask::getId, collect);
         wrapper.select(CoreDrillTask::getId);
         List<CoreDrillTask> coreDrillTasks = baseMapper.selectList(wrapper);
         return coreDrillTasks.stream().map(CoreDrillTask::getId).map(String::valueOf).collect(Collectors.toList());

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

@@ -737,7 +737,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             CoreEduTrainingTaskReportVo reportVo = new CoreEduTrainingTaskReportVo();
             reportVo.setOrgId(org.getId());
             reportVo.setCity(org.getAffiliatedArea());
-            reportVo.setOrgName(org.getName());
+            reportVo.setOrgName(org.getShortName());
             reportVo.setShouldFinish(totalShouldFinish);
             reportVo.setFinish(totalFinish);
             reportVo.setFinishRate(calculatePercent(totalFinish, totalShouldFinish));