sunyize 2 lat temu
rodzic
commit
5502e157ce

+ 41 - 32
tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmsCheckCustomerInfoMapper.java

@@ -86,12 +86,19 @@ public interface SmsCheckCustomerInfoMapper extends BaseMapper<SmsCheckCustomerI
     @SelectProvider(type = ProviderClass.class, method = "getWarningFiled")
     List<Map<String, Integer>> getWarningFiled(  Map<String, String> parameterMap );
 
+    @SelectProvider(type = ProviderClass.class, method = "warningCountGroupSum")
+    List<String> warningCountGroupSum(  Map<String, String> parameterMap );
+
+
     @SelectProvider(type = ProviderClass.class, method = "warningCountGroup")
-    List<Map<String, String>> warningCountGroup(  Map<String, String> parameterMap );
+    List<String> warningCountGroup(  Map<String, String> parameterMap );
+
 
     @SelectProvider(type = ProviderClass.class, method = "countGroupCheck")
-    List<Map<String, String>> countGroupCheck(  Map<String, String> parameterMap );
+    List<String> countGroupCheck(  Map<String, String> parameterMap );
 
+    @SelectProvider(type = ProviderClass.class, method = "countGroupCheckSum")
+    List<String> countGroupCheckSum(  Map<String, String> parameterMap );
     @SelectProvider(type = ProviderClass.class, method = "selectMapGroupJb")
     List<Map<String, Integer>> selectMapGroupJb(  Map<String, String> parameterMap );
     @SelectProvider(type = ProviderClass.class, method = "selectHistoryListPage")
@@ -199,25 +206,9 @@ public interface SmsCheckCustomerInfoMapper extends BaseMapper<SmsCheckCustomerI
             return sql.toString();
         }
 
-
         public String countGroupCheck(   Map<String, String>  parameterMap){
             StringBuilder sql = new StringBuilder();
-
-            sql.append(" SELECT count(*) from sms_check_customer_info  info where 1=1 and info.del_flag=0 and info.check_state =5 ");
-
-            if (StringUtils.isNotBlank(parameterMap.get("startDate"))){
-                sql.append(" and  info.create_time>='"+parameterMap.get("startDate")+"'  ");
-            }
-            if (StringUtils.isNotBlank(parameterMap.get("endDate")))  {
-                sql.append(" and  info.create_time<='"+parameterMap.get("endDate")+"'  ");
-            }
-            if (StringUtils.isNotBlank(parameterMap.get("taskType")))  {
-                sql.append(" and  info.type ="+parameterMap.get("taskType")+"  ");
-            }
-            sql.append(" union all  ");
-
-
-            sql.append(" SELECT Sum(a) from ( select count(*)a from (\n" +
+            sql.append("  select info_id from (\n" +
                     "SELECT create_date,info.type,info.del_flag,info_id from sms_check_customer_data_log_bill bill left join sms_check_customer_info  info on bill.info_id=info.id  \n" +
                     " \n" +
                     "UNION all \n" +
@@ -230,47 +221,65 @@ public interface SmsCheckCustomerInfoMapper extends BaseMapper<SmsCheckCustomerI
                     ") aa  where 1=1  and aa.del_flag=0    ");
 
             if (StringUtils.isNotBlank(parameterMap.get("startDate"))){
-                sql.append(" and  aa.create_date>='"+parameterMap.get("startDate")+"'  ");
+                sql.append(" and  aa.create_date>='"+parameterMap.get("startDate")+" 00:00:00'  ");
             }
             if (StringUtils.isNotBlank(parameterMap.get("endDate")))  {
-                sql.append(" and  aa.create_date<='"+parameterMap.get("endDate")+"'  ");
+                sql.append(" and  aa.create_date<='"+parameterMap.get("endDate")+" 23:59:59'  ");
             }
             if (StringUtils.isNotBlank(parameterMap.get("taskType")))  {
                 sql.append(" and  aa.type ="+parameterMap.get("taskType")+"  ");
             }
-                sql.append(" group by info_id  )a  ");
+
             return sql.toString();
         }
-        public String warningCountGroup(   Map<String, String>  parameterMap){
+        public String countGroupCheckSum(   Map<String, String>  parameterMap){
             StringBuilder sql = new StringBuilder();
 
-            sql.append(" SELECT count(*) from sms_check_customer_info_become_due  due where 1=1 and due.del_flag=0 and due.check_state=5 ");
+            sql.append(" SELECT id from sms_check_customer_info  info where 1=1 and info.del_flag=0 and info.check_state =5 ");
 
             if (StringUtils.isNotBlank(parameterMap.get("startDate"))){
-                sql.append(" and  due.create_time>='"+parameterMap.get("startDate")+"'  ");
+                sql.append(" and  info.create_time>='"+parameterMap.get("startDate")+" 00:00:00'  ");
             }
             if (StringUtils.isNotBlank(parameterMap.get("endDate")))  {
-                sql.append(" and  due.create_time<='"+parameterMap.get("endDate")+"'  ");
+                sql.append(" and  info.create_time<='"+parameterMap.get("endDate")+" 23:59:59'  ");
+            }
+            if (StringUtils.isNotBlank(parameterMap.get("taskType")))  {
+                sql.append(" and  info.type ="+parameterMap.get("taskType")+"  ");
+            }
+            return sql.toString();
+        }
+        public String warningCountGroupSum(   Map<String, String>  parameterMap){
+            StringBuilder sql = new StringBuilder();
+
+            sql.append(" SELECT info_id from sms_check_customer_info_become_due  due where 1=1 and due.del_flag=0 and due.check_state=5 ");
+
+            if (StringUtils.isNotBlank(parameterMap.get("startDate"))){
+                sql.append(" and  due.create_time>='"+parameterMap.get("startDate")+" 00:00:00'  ");
+            }
+            if (StringUtils.isNotBlank(parameterMap.get("endDate")))  {
+                sql.append(" and  due.create_time<='"+parameterMap.get("endDate")+" 23:59:59'  ");
             }
             if (StringUtils.isNotBlank(parameterMap.get("taskType")))  {
                 sql.append(" and  due.type ="+parameterMap.get("taskType")+"  ");
             }
-            sql.append(" union all  ");
+            return sql.toString();
+        }
 
 
-            sql.append(" SELECT count(*) from sms_warning_check_customer_data_history  his  LEFT JOIN sms_check_customer_info_become_due due  on due.id = his.due_id where 1=1  ");
+        public String warningCountGroup(   Map<String, String>  parameterMap){
+            StringBuilder sql = new StringBuilder();
+
+            sql.append(" SELECT his.info_id from sms_warning_check_customer_data_history  his  LEFT JOIN sms_check_customer_info_become_due due  on due.id = his.due_id where 1=1  ");
 
             if (StringUtils.isNotBlank(parameterMap.get("startDate"))){
-                sql.append(" and  his.create_time>='"+parameterMap.get("startDate")+"'  ");
+                sql.append(" and  due.create_time>='"+parameterMap.get("startDate")+" 00:00:00'  ");
             }
             if (StringUtils.isNotBlank(parameterMap.get("endDate")))  {
-                sql.append(" and  his.create_time<='"+parameterMap.get("endDate")+"'  ");
+                sql.append(" and  due.create_time<='"+parameterMap.get("endDate")+" 23:59:59'  ");
             }
             if (StringUtils.isNotBlank(parameterMap.get("taskType")))  {
                 sql.append(" and  due.type ="+parameterMap.get("taskType")+"  ");
             }
-
-            sql.append("  GROUP BY due.info_id ");
             return sql.toString();
         }
         public String getWarningFiled(   Map<String, String>  parameterMap){

+ 98 - 8
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmsCheckCustomerInfoServiceImpl.java

@@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.models.auth.In;
+import org.apache.commons.collections.CollectionUtils;
 import org.checkerframework.checker.units.qual.A;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.vo.SysDepartModel;
 import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
 import org.jeecg.modules.smscheck.entity.*;
+import org.jeecg.modules.smscheck.mapper.SmsCheckCustomerInfoBecomeDueMapper;
+import org.jeecg.modules.smscheck.mapper.SmsWarningCustomerDataMapper;
 import org.jeecg.modules.smscheck.service.ISysUserService;
 import org.jeecg.modules.smscheck.vo.SmsCheckCustomerInfoTaskVo;
 import org.jeecg.modules.smscheck.vo.SmsCheckTaskVo;
@@ -23,6 +26,8 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static java.util.stream.Collectors.toList;
+
 /**
  * @description 客户信息
  * @author jeecg-boot
@@ -36,6 +41,8 @@ public class SmsCheckCustomerInfoServiceImpl extends ServiceImpl<SmsCheckCustome
     @Autowired
     private SysSmsUserServiceImpl service;
     @Autowired
+    private SmsCheckCustomerInfoBecomeDueMapper smsCheckCustomerInfoBecomeDueMapper;
+    @Autowired
     private ISysUserService iSysUserService;
     @Override
     public Integer checkInfoWarningCount(SmsCheckCustomerInfo smsCheckCustomerInfo) {
@@ -67,7 +74,23 @@ public class SmsCheckCustomerInfoServiceImpl extends ServiceImpl<SmsCheckCustome
 
     @Override
     public List<SmsCustomerInfoGroupByCheckState> groupCheckStateWarning(String startDate, String endDate,String id,String taskType) {
-        return smsCheckCustomerInfoMapper.groupCheckStateWarning( startDate,  endDate,id,taskType);
+
+
+        List<SmsCustomerInfoGroupByCheckState> smsCustomerInfoGroupByCheckStates = smsCheckCustomerInfoMapper.groupCheckStateWarning(startDate, endDate, id, taskType);
+        Map<Integer, SmsCustomerInfoGroupByCheckState> meterStationDateByDateMap
+                = smsCustomerInfoGroupByCheckStates.stream().collect(Collectors.toMap(v->v.getCheckState(),Function.identity(), (o, n) -> o));
+        List<SmsCustomerInfoGroupByCheckState> smsCustomerInfoGroupByCheckStateList =new ArrayList<>();
+
+        for (int i = 0; i < 6; i++) {
+            if (meterStationDateByDateMap.get(i)==null){
+                SmsCustomerInfoGroupByCheckState smsCustomerInfoGroupByCheckState = new SmsCustomerInfoGroupByCheckState();
+                smsCustomerInfoGroupByCheckState.setCheckState(i);
+                smsCustomerInfoGroupByCheckState.setCount(0);
+                smsCustomerInfoGroupByCheckStateList.add(smsCustomerInfoGroupByCheckState);
+            }
+        }
+        smsCustomerInfoGroupByCheckStateList.addAll(smsCustomerInfoGroupByCheckStates);
+        return smsCustomerInfoGroupByCheckStateList;
     }
 
     @Override
@@ -285,11 +308,47 @@ public class SmsCheckCustomerInfoServiceImpl extends ServiceImpl<SmsCheckCustome
 
         Map<String, Integer> map =new HashMap<>();
 
-        List<Map<String, String>> maps = smsCheckCustomerInfoMapper.warningCountGroup(parameterMap);
 
-        map.put("his",Integer.parseInt(String.valueOf(maps.get(1).get("count(*)"))));
-        map.put("sum",Integer.parseInt(String.valueOf(maps.get(0).get("count(*)")))-Integer.parseInt(String.valueOf((maps.get(1).get("count(*)")))));
+        //1、稽核通过率:稽核通过客户数量(包括一次稽核通过、多次稽核通过)/客户总数*100%  前段计算
+        //2、一次稽核通过率:一次稽核通过客户数量/客户总数*100%
+        //3、整改完成率:整改通过的客户数量(多次稽核通过的)/全部需要整改的客户数量(一次稽核不通过的)*100%
+
+        //稽核客户通过总数 稽核通过客户数量
+        List<String> listSum = smsCheckCustomerInfoMapper.warningCountGroupSum(parameterMap);
+        //稽核整改历史 包含多次稽核的
+        List<String> list = smsCheckCustomerInfoMapper.warningCountGroup(parameterMap);
+
+        //全部需要整改的客户数量
+        Set zg =new HashSet<>();
+        for (String s : list) {
+            zg.add(s);
+        }
+        //未整改过数   一次稽核通过客户数量
+        List<String> difference = new ArrayList<>();
+
+        Map<String, String> listMap
+                = list.stream().collect(Collectors.toMap(v->v,Function.identity(), (o, n) -> o));
+        for (String s : listSum) {
+            if (listMap.get(s)==null){
+                difference.add(s);
+            }
+        }
 
+        Set set = new HashSet();
+        for (String s : difference) {
+            set.add(s);
+        }
+        //整改完成数
+        Set<String> intersection = listSum.stream().filter(item -> list.contains(item)).collect(Collectors.toSet());
+
+
+
+        //未整改过数   一次稽核通过客户数量
+        map.put("sum",set.size());
+        //整改过  整改通过的客户数量(多次稽核通过的)
+        map.put("his",intersection.size());
+        //全部需要整改的客户数量
+        map.put("zgSum",zg.size());
         return map;
     }
 
@@ -299,12 +358,43 @@ public class SmsCheckCustomerInfoServiceImpl extends ServiceImpl<SmsCheckCustome
 
         Map<String, Integer> map =new HashMap<>();
 
-        List<Map<String, String>> maps = smsCheckCustomerInfoMapper.countGroupCheck(parameterMap);
+        List<String> list = smsCheckCustomerInfoMapper.countGroupCheck(parameterMap);
+
+        List<String> listSum = smsCheckCustomerInfoMapper.countGroupCheckSum(parameterMap);
+        //1、稽核通过率:稽核通过客户数量(包括一次稽核通过、多次稽核通过)/客户总数*100%  前段计算
+        //2、一次稽核通过率:一次稽核通过客户数量/客户总数*100%
+        //3、整改完成率:整改通过的客户数量(多次稽核通过的)/全部需要整改的客户数量(一次稽核不通过的)*100%
+
+        //全部需要整改的客户数量
+        Set zg =new HashSet<>();
+        for (String s : list) {
+            zg.add(s);
+        }
+        //未整改过数   一次稽核通过客户数量
+        List<String> difference = new ArrayList<>();
+
+        Map<String, String> listMap
+                = list.stream().collect(Collectors.toMap(v->v,Function.identity(), (o, n) -> o));
+        for (String s : listSum) {
+            if (listMap.get(s)==null){
+                difference.add(s);
+            }
+        }
+
+        Set set = new HashSet();
+        for (String s : difference) {
+            set.add(s);
+        }
+        //整改完成数
+        Set<String> intersection = listSum.stream().filter(item -> list.contains(item)).collect(Collectors.toSet());
 
-        map.put("his",Integer.parseInt(String.valueOf(maps.get(1).get("count(*)"))));
-        // 完成数 - 整改数
-        map.put("sum",Integer.parseInt(String.valueOf(maps.get(0).get("count(*)")))-Integer.parseInt(String.valueOf((maps.get(1).get("count(*)")))));
 
+        //未整改过数   一次稽核通过客户数量
+        map.put("sum",set.size());
+        //整改过  整改通过的客户数量(多次稽核通过的)
+        map.put("his",intersection.size());
+        //全部需要整改的客户数量
+        map.put("zgSum",zg.size());
         return map;
     }
 

+ 5 - 1
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmsWarningCheckCustomerDataLogServiceImpl.java

@@ -87,6 +87,10 @@ public class SmsWarningCheckCustomerDataLogServiceImpl extends ServiceImpl<SmsWa
 
 
         SmsWarningCheckCustomerDataLogAndData warningCheckCustomerDataLog = JSON.parseObject(jsonObject.toJSONString(), SmsWarningCheckCustomerDataLogAndData.class);
+        SmsCheckCustomerInfoBecomeDue byId = dueService.getById(warningCheckCustomerDataLog.getDueId());
+
+        warningCheckCustomerDataLog.setInfoId(byId.getInfoId());
+
         SmsWarningCheckCustomerDataLog smsWarningCheckCustomerDataLog = new SmsWarningCheckCustomerDataLog();
         BeanUtils.copyProperties(warningCheckCustomerDataLog,smsWarningCheckCustomerDataLog);
         smsWarningCheckCustomerDataLog.setId(warningCheckCustomerDataLog.getLogId());
@@ -99,7 +103,7 @@ public class SmsWarningCheckCustomerDataLogServiceImpl extends ServiceImpl<SmsWa
         if (saveLog && b){
             Map<String, String> mapByResult = getMapWarningByResult(smsWarningCheckCustomerDataLog);
             /** 稽核状态 0:未处理;1:未完善;2:待稽核;3:已整改;4:待整改;5:稽核通过;  */
-            SmsCheckCustomerInfoBecomeDue byId = dueService.getById(warningCheckCustomerDataLog.getDueId());
+
             if (byId.getCheckState()==4){
                 byId.setCheckState(CheckStateCode.CHECK_STSTE_2);
             }else {