shudonghui 1 rok temu
rodzic
commit
2542880a23

+ 2 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/CrmAnalyseMapper.java

@@ -56,4 +56,6 @@ public interface CrmAnalyseMapper extends BaseMapper<TBCrm> {
 
     @SuppressWarnings("MybatisXMapperMethodInspection")
     Map<String, Object> projectCount(@Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("dpr") DataPermissionDto dpr);
+
+    Integer findAllocation(@Param("startTime") Long startTime,@Param("endTime")  Long endTime,@Param("dpr")  DataPermissionDto dpr);
 }

+ 7 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/CrmAnalyseServiceImpl.java

@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.result.CrmAnalyseResult;
 import com.qmth.sop.business.bean.result.TBCrmResult;
+import com.qmth.sop.business.bean.result.UserArchivesAllocationResult;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TBCrm;
 import com.qmth.sop.business.mapper.CrmAnalyseMapper;
+import com.qmth.sop.business.mapper.ServiceAnalyseMapper;
 import com.qmth.sop.business.service.CrmAnalyseService;
 import com.qmth.sop.business.service.SysUserService;
 import com.qmth.sop.common.enums.ProductTypeEnum;
@@ -112,7 +114,7 @@ public class CrmAnalyseServiceImpl extends ServiceImpl<CrmAnalyseMapper, TBCrm>
             final int[] finish = {0};
             v.stream().collect(Collectors.groupingBy(map -> map.get("crm_no")))
                     .forEach((k1, v1) -> {
-                        if (v1.stream().filter(map -> map.get("sop_no") != null).count() == v1.stream().filter(map -> "FINISH".equals(map.get("status"))).count()) {
+                        if (v1.stream().anyMatch(map2 -> map2.get("sop_no") != null) &&v1.stream().filter(map2 -> map2.get("sop_no") != null).count() == v1.stream().filter(map2 -> "FINISH".equals(map2.get("status"))).count()) {
                             finish[0] = finish[0] + 1;
                         }
                     });
@@ -136,6 +138,9 @@ public class CrmAnalyseServiceImpl extends ServiceImpl<CrmAnalyseMapper, TBCrm>
     public Map<String, Object> projectCount(Long startTime, Long endTime) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
-        return this.baseMapper.projectCount(startTime, endTime, dpr);
+        Map<String, Object> map = this.baseMapper.projectCount(startTime, endTime, dpr);
+        Integer allocation = this.baseMapper.findAllocation(startTime, endTime, dpr);
+        map.put("person",allocation);
+        return map;
     }
 }

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/service/impl/ServiceAnalyseServiceImpl.java

@@ -62,7 +62,7 @@ public class ServiceAnalyseServiceImpl extends ServiceImpl<ServiceAnalyseMapper,
         final int[] finish = {0};
         list.stream().collect(Collectors.groupingBy(map1 -> map1.get("crm_no")))
                 .forEach((k1, v1) -> {
-                    if (v1.stream().filter(map2 -> map2.get("sop_no") != null).count() == v1.stream().filter(map2 -> "FINISH".equals(map2.get("status"))).count()) {
+                    if (v1.stream().anyMatch(map2 -> map2.get("sop_no") != null) &&v1.stream().filter(map2 -> map2.get("sop_no") != null).count() == v1.stream().filter(map2 -> "FINISH".equals(map2.get("status"))).count()) {
                         finish[0] = finish[0] + 1;
                     }
                 });

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/service/impl/SopScheduleServiceImpl.java

@@ -72,7 +72,7 @@ public class SopScheduleServiceImpl extends ServiceImpl<SopScheduleMapper, TBSop
         map.put("scan", list.stream().filter(map1 -> map1.get("setup") != null && "5,6,7".indexOf(map1.get("setup").toString()) > 0).count());
         map.put("evaluation", list.stream().filter(map1 -> map1.get("setup") != null && "8,9".indexOf(map1.get("setup").toString()) > 0).count());
         map.put("summary", list.stream().filter(map1 -> map1.get("setup") != null && (Integer.parseInt(map1.get("setup").toString()) == 11 || Integer.parseInt(map1.get("setup").toString()) == 10)).count());
-        map.put("finish", list.stream().filter(map1 -> map1.get("setup") != null && Integer.parseInt(map1.get("setup").toString()) == 0).count());
+        map.put("finish", list.stream().filter(map1 -> map1.get("setup") != null && Integer.parseInt(map1.get("setup").toString()) <= 0).count());
         return map;
     }
 

+ 68 - 3
sop-business/src/main/resources/mapper/CrmAnalyseMapper.xml

@@ -254,12 +254,12 @@
 
     <select id="projectCount" resultType="java.util.Map">
         SELECT
-        COUNT(DISTINCT c.id ) crm,
-        count(DISTINCT a.id ) person
+        sum(case when c.id is not null then 1 else 0 end ) crm
+<!--        count(DISTINCT a.id ) person-->
         FROM
         t_b_service s
         LEFT JOIN t_b_crm c ON c.service_id = s.id
-        LEFT JOIN t_b_user_archives_allocation a ON a.service_id = s.id
+<!--        LEFT JOIN t_b_user_archives_allocation a ON a.service_id = s.id-->
         <where>
             and s.`status` IN ( 'PUBLISH', 'FINISH' ) and c.service_id is not null and c.enable=1
             <if test="startTime != null">
@@ -275,5 +275,70 @@
             </if>
         </where>
     </select>
+    <select id="findAllocation"
+            resultType="java.lang.Integer">
+        SELECT
+        sum(result.distributed)
+        FROM
+        (SELECT
+
+
+        IF(tbc.region_coordinator_id IS NULL, 0, 1) + IFNULL(effectR.reality, 0) + IFNULL(assistantR.reality, 0) AS distributed
+
+        FROM
+        t_b_crm tbc
+
+        LEFT JOIN t_b_service tbs ON tbc.service_id = tbs.id
+
+        LEFT JOIN sys_custom su ON tbc.custom_id = su.id
+        LEFT JOIN sys_level sl ON su.level_id = sl.id
+
+        LEFT JOIN (SELECT
+        slr.quota, slr.level_id
+        FROM
+        sys_level_role slr
+        LEFT JOIN sys_role sr ON sr.id = slr.role_id
+        WHERE
+        sr.type = 'EFFECT_ENGINEER') effectQ ON effectQ.level_id = sl.id
+        LEFT JOIN (SELECT
+        slr.quota, slr.level_id
+        FROM
+        sys_level_role slr
+        LEFT JOIN sys_role sr ON sr.id = slr.role_id
+        WHERE
+        sr.type = 'ASSISTANT_ENGINEER') assistantQ ON assistantQ.level_id = sl.id
+        LEFT JOIN (SELECT
+        tbuaa.crm_no, COUNT(*) AS reality
+        FROM
+        t_b_user_archives_allocation tbuaa
+        LEFT JOIN sys_role sr ON sr.id = tbuaa.role_id
+        WHERE
+        sr.type = 'EFFECT_ENGINEER'
+        GROUP BY tbuaa.crm_no) effectR ON effectR.crm_no = tbc.crm_no
+        LEFT JOIN (SELECT
+        tbuaa.crm_no, COUNT(*) AS reality
+        FROM
+        t_b_user_archives_allocation tbuaa
+        LEFT JOIN sys_role sr ON sr.id = tbuaa.role_id
+        WHERE
+        sr.type = 'ASSISTANT_ENGINEER'
+        GROUP BY tbuaa.crm_no) assistantR ON assistantR.crm_no = tbc.crm_no
+        <where>
+            and tbs.`status` IN ( 'PUBLISH', 'FINISH' ) and tbc.service_id is not null and tbc.enable=1
+            <if test="startTime != null">
+                AND tbs.start_time >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                AND #{endTime} >= tbs.start_time
+            </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <if test="dpr.hasBusiness">
+                    AND tbs.service_lead_id = #{dpr.requestUserId}
+                </if>
+            </if>
+        </where>
+
+        ) result
 
+    </select>
 </mapper>

+ 25 - 25
sop-business/src/main/resources/mapper/SopScheduleMapper.xml

@@ -40,10 +40,10 @@
 
     <select id="detail" resultType="java.util.Map">
         select DISTINCT
-<!--        cast(tbsi.id as char) as id,-->
-<!--        cast(tbs.id as char) as serviceId,-->
+        cast(tbsi.id as char) as id,
+        cast(tbs.id as char) as serviceId,
         tbs.name as serviceName,
-<!--        tbsi.sop_no as sopNo,-->
+        tbsi.sop_no as sopNo,
         tbsi.crm_no as crmNo,
         tbc.begin_time as beginTime,
         cast(tbc.crm_user_id as char) as customManagerId,
@@ -55,24 +55,24 @@
         cast(tbp.id as char) as productId,
         tbp.name as productName,
         tbc.exam_start_time as examStartTime,
-        tbc.exam_end_time as examEndTime
-<!--        cast(tfcfe.flow_id as char) as flowId,-->
-<!--        cast(tfcfe.create_id as char) as flowCreateId,-->
-<!--        su2.real_name as flowCreateName,-->
-<!--        tffa.create_time as flowCreateTime,-->
-<!--        tffa.update_time as flowUpdateTime,-->
-<!--        tffa.status,-->
-<!--        CASE-->
-<!--        WHEN tffa.status = 'FINISH' THEN '已完结'-->
-<!--        WHEN tffa.status = 'END' THEN '已作废'-->
-<!--        ELSE '进行中'-->
-<!--        END as statusStr,-->
-<!--        tfcf.type,-->
-<!--        IF(tfcf.type = 'OFFICE_SOP_FLOW','教务处SOP','研究生SOP') as typeStr,-->
-<!--        tfcf.version,-->
-<!--        cast(tfcf.flow_deployment_id as char) as flowDeploymentId,-->
-<!--        art.NAME_ as taskName,-->
-<!--        art.TASK_DEF_KEY_ as taskDefKey-->
+        tbc.exam_end_time as examEndTime,
+        cast(tfcfe.flow_id as char) as flowId,
+        cast(tfcfe.create_id as char) as flowCreateId,
+        su2.real_name as flowCreateName,
+        tffa.create_time as flowCreateTime,
+        tffa.update_time as flowUpdateTime,
+        tffa.status,
+        CASE
+        WHEN tffa.status = 'FINISH' THEN '已完结'
+        WHEN tffa.status = 'END' THEN '已作废'
+        ELSE '进行中'
+        END as statusStr,
+        tfcf.type,
+        IF(tfcf.type = 'OFFICE_SOP_FLOW','教务处SOP','研究生SOP') as typeStr,
+        tfcf.version,
+        cast(tfcf.flow_deployment_id as char) as flowDeploymentId,
+        art.NAME_ as taskName,
+        art.TASK_DEF_KEY_ as taskDefKey
         from t_b_crm tbc
         left join t_b_sop_info tbsi on tbc.crm_no = tbsi.crm_no
         left join t_b_service tbs on tbs.id = tbc.service_id
@@ -81,11 +81,11 @@
         left join sys_user su1 on su1.id = tbc.crm_user_id
         left join t_b_product tbp on tbp.id = tbc.product_id
         left join t_f_custom_flow_entity tfcfe on tfcfe.code = tbsi.sop_no
-<!--        left join sys_user su2 on su2.id = tfcfe.create_id-->
+        left join sys_user su2 on su2.id = tfcfe.create_id
         left join t_f_flow_approve tffa on tffa.flow_id = tfcfe.flow_id
-<!--        left join ACT_RU_TASK art on art.PROC_INST_ID_ = tffa.flow_id-->
-<!--        left join act_ru_identitylink ari on ari.TASK_ID_ = art.ID_-->
-<!--        left join t_f_custom_flow tfcf on tfcf.id = tfcfe.t_f_custom_flow_id-->
+        left join ACT_RU_TASK art on art.PROC_INST_ID_ = tffa.flow_id
+        left join act_ru_identitylink ari on ari.TASK_ID_ = art.ID_
+        left join t_f_custom_flow tfcf on tfcf.id = tfcfe.t_f_custom_flow_id
         LEFT JOIN t_b_sop_info_detail sd ON sd.sop_info_id = tbsi.id
         LEFT JOIN sys_user u ON u.id = tbc.region_coordinator_id
         LEFT JOIN t_b_user_archives ua ON ua.mobile_number = u.mobile_number