Jelajahi Sumber

教育培训代码提交

jingyuanchao 2 tahun lalu
induk
melakukan
24810c704d

+ 3 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingTaskReportDto.java

@@ -5,6 +5,7 @@ import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class CoreEduTrainingTaskReportDto {
@@ -17,6 +18,8 @@ public class CoreEduTrainingTaskReportDto {
     @ApiModelProperty(value = "机构")
     private Long orgId;
 
+    private String orgPath;
+
     @NotNull(message = "请选择具体月份进行查看!")
     @ApiModelProperty(value = "统计月份")
     private Date date;

+ 3 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/vo/CoreEduTrainingTaskReportVo.java

@@ -1,5 +1,6 @@
 package com.xunmei.common.core.domain.edu.vo;
 
+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;
@@ -8,6 +9,7 @@ import lombok.Data;
 @Data
 public class CoreEduTrainingTaskReportVo {
 
+    @JsonIgnore
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "教育培训计划Id")
     private Long planId;
@@ -17,6 +19,7 @@ public class CoreEduTrainingTaskReportVo {
 
     @ApiModelProperty(value = "机构名称")
     private String orgName;
+    private String orgPath;
 
 
     @ApiModelProperty(value = "应培训数量")

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -567,6 +567,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             drillPlan.setBelongOrgPath(sysOrg.getPath());
             drillPlan.setStandard(0);
             drillPlan.setIssue(0);
+            drillPlan.setBeIssue(1);
             drillPlan.setParentId(plan.getId());
             drillPlan.setCreateTime(new Date());
             drillPlan.setUpdateTime(new Date());

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java

@@ -82,7 +82,7 @@ public class CoreEduTrainingTaskController extends BaseController {
         return toAjax(coreEduTrainingTaskService.deleteCoreEduTrainingTaskByIds(ids));
     }
 
-    @ApiOperation(value = "导出教育任务")
+    @ApiOperation(value = "教育培训统计报表")
     @RequiresPermissions("core:eduTask:report")
     @PostMapping("report")
     public AjaxResult report(@RequestBody @Validated CoreEduTrainingTaskReportDto request) {

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java

@@ -27,7 +27,7 @@ public interface CoreEduTrainingTaskMapper extends BaseMapper<CoreEduTrainingTas
 
     CoreEduTrainingTaskDetailVo selectEduTrainingTaskDetail(@Param("id") Long id);
 
-    List<CoreEduTrainingTaskReportVo> selectReport(@Param("request") CoreEduTrainingTaskReportDto request);
+    List<CoreEduTrainingTaskReportVo> selectReport(@Param("request") CoreEduTrainingTaskReportDto request, @Param("planId") Long planId, @Param("planIdList") List<Long> planIdList);
 
     Integer checkHasTask(@Param("planId") Long planId);
 

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

@@ -341,30 +341,41 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
 
     @Override
     public List<CoreEduTrainingTaskReportVo> selectCoreEduTrainingTaskReport(CoreEduTrainingTaskReportDto request) {
+        CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(request.getPlanId());
+        if (ObjectUtil.isNull(plan)) {
+            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);
+        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);
+        List<CoreEduTrainingTaskReportVo> list = coreEduTrainingTaskMapper.selectReport(request, planId, planIdList);
         for (SysOrg org : sysOrgList) {
-            Optional<CoreEduTrainingTaskReportVo> optional = list.stream().filter(vo -> ObjectUtil.equal(vo.getOrgId(), org.getId())).findFirst();
-            CoreEduTrainingTaskReportVo reportVo;
-            if (!optional.isPresent()) {
-                reportVo = new CoreEduTrainingTaskReportVo();
-                reportVo.setPlanId(request.getPlanId());
-                reportVo.setOrgId(org.getId());
-                reportVo.setOrgName(org.getName());
+            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)) {
                 reportVo.setShouldFinish(0);
                 reportVo.setFinish(0);
                 reportVo.setFinishRate("0%");
             } else {
-                reportVo = optional.get();
-                reportVo.setFinishRate(calculatePercent(reportVo.getShouldFinish(), reportVo.getFinish()));
+                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);
         }
@@ -373,7 +384,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         return result;
     }
 
-    private String calculatePercent(Integer num1, Integer num2) {
+    public static String calculatePercent(Integer num1, Integer num2) {
         if (num1 == 0 || num2 == 0) {
             return "0%";
         }

+ 21 - 10
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -91,15 +91,15 @@
                 and (
                 (
                 #{request.startTime}   <![CDATA[<=]]> t.start_date
-                and #{request.endTime}  >=  t.start_date
+                and #{request.endTime} >= t.start_date
                 )
                 or
                 (
                 #{request.startTime}    <![CDATA[<=]]> t.end_date
-                and #{request.endTime}  >=  t.end_date
+                and #{request.endTime} >= t.end_date
                 )
                 or (
-                #{request.startTime}    >= t.start_date
+                #{request.startTime} >= t.start_date
                 and #{request.endTime}  <![CDATA[<=]]>  t.end_date
                 )
                 )
@@ -139,15 +139,22 @@
     <select id="selectReport" resultType="com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo">
         SELECT t.org_id AS orgId,
         t.org_name AS orgName,
+        t.org_path AS orgPath,
         ifnull(count(0),0) AS shouldFinish,
-        ifnull(SUM(t.status != 3),0) AS finish
+        ifnull(SUM(t.status = 3),0) AS finish
         from core_edu_training_task t inner join sys_org o on t.org_id = o.id
         <where>
-            <if test="request.orgId != null">
-                and o.parent_id=#{request.orgId}
+            <if test="request.orgPath != null">
+                and o.path like concat(#{request.orgPath}, '%')
             </if>
-            <if test="request.planId != null">
-                and t.plan_id=#{request.planId}
+            <if test="planId != null">
+                and t.plan_id=#{planId}
+            </if>
+            <if test="planIdList.size()>0">
+                and t.plan_id in
+                <foreach collection="planIdList" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
             </if>
             <if test="request.startDate != null">
                 and t.start_date>=#{request.startDate}
@@ -159,7 +166,10 @@
     </select>
 
     <select id="checkHasTask" resultType="java.lang.Integer">
-        select 1 from core_edu_training_task where plan_id = #{planId} limit 1
+        select 1
+        from core_edu_training_task
+        where plan_id = #{planId}
+        limit 1
     </select>
 
     <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
@@ -167,6 +177,7 @@
         from core_edu_training_task
         where status != 0
           and plan_id in
-              (select id from core_edu_training_plan where plan_status = 0 and deleted = 0 and parent_id = #{planId}) limit 1
+              (select id from core_edu_training_plan where plan_status = 0 and deleted = 0 and parent_id = #{planId})
+        limit 1
     </select>
 </mapper>