From 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 09 六月 2025 11:54:00 +0800
Subject: [PATCH] 6.9新增登录失败冻结逻辑

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActAcidRecordServiceImpl.java |  154 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 147 insertions(+), 7 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActAcidRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActAcidRecordServiceImpl.java
index 3c99777..72bf5de 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActAcidRecordServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActAcidRecordServiceImpl.java
@@ -8,8 +8,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.acid.BatchCheckAcidRecordDTO;
 import com.panzhihua.common.model.dtos.community.acid.ComActAcidRecordDTO;
 import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.StatisticsPhotoVO;
 import com.panzhihua.common.model.vos.community.acid.*;
 import com.panzhihua.common.service.user.UserService;
 import com.panzhihua.common.utlis.DateUtils;
@@ -28,9 +30,10 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotEmpty;
 import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNull;
@@ -69,6 +72,10 @@
 
     @Override
     public R pageList(ComActAcidRecordDTO comActAcidRecordDTO) {
+        //是否需要筛选
+        comActAcidRecordDTO.setType(isVilliage(comActAcidRecordDTO.getLoginAccount()));
+        log.info("搜索条件=========="+comActAcidRecordDTO);
+        //获取当前登录账号的社区名
         return R.ok(this.baseMapper.pageList(new Page<>(comActAcidRecordDTO.getPage(), comActAcidRecordDTO.getSize()),comActAcidRecordDTO));
     }
 
@@ -133,7 +140,7 @@
     public R insertRecord(ComActAcidRecordVO comActAcidRecordVO) {
         Integer count= this.baseMapper.selectCount(new QueryWrapper<ComActAcidRecord>().lambda().eq(ComActAcidRecord::getIsDel,0).eq(ComActAcidRecord::getIdCard,comActAcidRecordVO.getIdCard()).ge(ComActAcidRecord::getCreateTime, DateUtils.getCurrentDate(DateUtils.yyyyMMdd_format)));
         if(count>0){
-            return R.fail("请勿重复提交");
+            return R.fail("您的社区报备信息已填写完整,请勿重复提交!");
         }
         if(StringUtils.isEmpty(comActAcidRecordVO.getLocalCity())){
             rabbitTemplate.convertAndSend("huacheng.acid.exchange", "huacheng.acid.key", comActAcidRecordVO, message -> {
@@ -154,6 +161,12 @@
             String dangerArea = comActAcidRecordVO.getDangerArea();
             String outsideCity = comActAcidRecordVO.getOutsideCity();
             String acidTest = comActAcidRecordVO.getAcidTest();
+            if(StringUtils.isEmpty(acidTest)){
+                acidTest="阴性";
+            }
+            if(StringUtils.isEmpty(travelCard)){
+                travelCard="否";
+            }
             if (StringUtils.inStringIgnoreCase(colorMark, "红码", "黄码") || travelCard.equals("是")
                     || dangerArea.equals("是") || outsideCity.equals("是") || acidTest.equals("阳性")) {
                 //风险人员
@@ -165,7 +178,7 @@
                 //未填住址人员
                 saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2, null);
             }
-            return R.ok();
+            return R.ok(comActAcidRecord.getId().toString());
         }
 
         return R.fail("操作失败,请重新尝试");
@@ -253,8 +266,12 @@
         return R.ok(this.baseMapper.fiveCount(localCity));
     }
     @Override
-    public R fiveCountPlus(String date,String localCity) {
-        return R.ok(this.baseMapper.fiveCountPlus(date,localCity));
+    public R fiveCountPlus(String date,String localCity,String loginAccount) {
+        Integer type=3;
+        if (StringUtils.isNotEmpty(loginAccount)){
+             type = isVilliage(loginAccount);
+        }
+        return R.ok(this.baseMapper.fiveCountPlus(date,localCity,type));
     }
 
     @Override
@@ -394,6 +411,9 @@
         if(StringUtils.isEmpty(acidTest)){
             acidTest="阴性";
         }
+        if(StringUtils.isEmpty(travelCard)){
+            travelCard="否";
+        }
         if (StringUtils.inStringIgnoreCase(colorMark, "红码", "黄码") || travelCard.equals("是") || dangerArea.equals("是")
             || outsideCity.equals("是") || acidTest.equals("阳性")) {
             // 风险人员
@@ -445,6 +465,12 @@
         String dangerArea = comActAcidRecordVO.getDangerArea();
         String outsideCity = comActAcidRecordVO.getOutsideCity();
         String acidTest = comActAcidRecordVO.getAcidTest();
+        if(StringUtils.isEmpty(acidTest)){
+            acidTest="阴性";
+        }
+        if(StringUtils.isEmpty(travelCard)){
+            travelCard="否";
+        }
         if (StringUtils.inStringIgnoreCase(colorMark, "红码", "黄码") || travelCard.equals("是") || dangerArea.equals("是")
                 || outsideCity.equals("是") || acidTest.equals("阳性")) {
             // 风险人员
@@ -542,6 +568,26 @@
         return null;
     }
 
+    /**
+     * 批量核对防疫信息数据
+     * @param batchCheckAcidRecordDTO
+     * @return
+     */
+    @Override
+    public R batchCheck(BatchCheckAcidRecordDTO batchCheckAcidRecordDTO) {
+        this.baseMapper.batchCheck(batchCheckAcidRecordDTO);
+        return R.ok();
+    }
+
+    @Override
+    public R checkCommit(Long userId) {
+        if(userId!=null){
+            List<ComActAcidRecord> comActAcidRecords= this.baseMapper.selectList(new QueryWrapper<ComActAcidRecord>().lambda().eq(ComActAcidRecord::getIsDel,0).eq(ComActAcidRecord::getUserId,userId).ge(ComActAcidRecord::getCreateTime, DateUtils.getCurrentDate(DateUtils.yyyyMMdd_format)).isNull(ComActAcidRecord::getColorImage));
+            return R.ok(comActAcidRecords);
+        }
+       return R.ok();
+    }
+
     public static void areaCheck(ComCun area,ComStreetDO comStreetDO){
         switch (area.getArea()){
             case "西区": comStreetDO.setAreaCode(510423); break;
@@ -551,4 +597,98 @@
             case "盐边县": comStreetDO.setAreaCode(510422); break;
         }
     }
+
+    /**
+     * 是否需要区分村落/社区
+     * */
+    private Integer isVilliage(String name){
+        if ("fangyipingtai".equals(name)){
+            return 3;
+        }else if ("pandashujuzhongxin".equals(name)){
+            return 1;
+        }else if ("pannongyenongcunju".equals(name)){
+            return 2;
+        }
+        return 3;
+    }
+
+    /**
+     * 统计红黄绿码
+     * @return
+     */
+    public R selectColorMarkGroup(){
+        //所有
+        List<ComActAcidColorChartsVO> comActAcidColorChartsVOS = this.baseMapper.selectColorMarkGroup();
+        int all = comActAcidColorChartsVOS.stream().mapToInt(ComActAcidColorChartsVO::getCountNum).sum();
+        for (ComActAcidColorChartsVO comActAcidColorChartsVO : comActAcidColorChartsVOS) {
+            if (0!=all){
+                BigDecimal countNum = new BigDecimal(comActAcidColorChartsVO.getCountNum());
+                BigDecimal allDecimal = new BigDecimal(all);
+                BigDecimal percent = countNum.divide(allDecimal,4, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100));
+                comActAcidColorChartsVO.setPercent(percent);
+            }
+        }
+//        Map<String, ComActAcidColorChartsVO> circleMap = comActAcidColorChartsVOS
+//                .stream()
+//                .collect(Collectors.toMap(ComActAcidColorChartsVO::getColorMark, Function.identity()));
+
+        //月份
+        List<ComActAcidColorChartsVO> comActAcidColorChartsVOS1 = this.baseMapper.selectColorMarkGroupByMonth();
+        //按颜色分组求和
+        Map<String, IntSummaryStatistics> colorCollect = comActAcidColorChartsVOS1
+                .stream()
+                .collect(Collectors.groupingBy(ComActAcidColorChartsVO::getColorMark,
+                        Collectors.summarizingInt(ComActAcidColorChartsVO::getCountNum)));
+
+        for (ComActAcidColorChartsVO comActAcidColorChartsVO : comActAcidColorChartsVOS1) {
+            String colorMark = comActAcidColorChartsVO.getColorMark();
+            if (colorCollect.containsKey(colorMark)){
+                IntSummaryStatistics intSummaryStatistics = colorCollect.get(colorMark);
+                long sum = intSummaryStatistics.getSum();
+                if (0L!=sum) {
+                    BigDecimal countNum = new BigDecimal(comActAcidColorChartsVO.getCountNum());
+                    BigDecimal sumDecimal = new BigDecimal(sum);
+                    BigDecimal percent = countNum.divide(sumDecimal, 4, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100));
+                    comActAcidColorChartsVO.setPercent(percent);
+                }
+            }
+        }
+        Map<String, Map<String, ComActAcidColorChartsVO>> colletMap = comActAcidColorChartsVOS1
+                .stream()
+                .collect(Collectors.groupingBy(ComActAcidColorChartsVO::getCountName,
+                        Collectors.toMap(ComActAcidColorChartsVO::getColorMark, Function.identity())));
+
+        String[] statusArr = {"红码","黄码","绿码"};
+        List<String> latest5Month = DateUtils.getLatest12Month(LocalDate.now(), 5);
+        for (String month : latest5Month) {
+            Map<String, ComActAcidColorChartsVO> map1;
+            if(colletMap.containsKey(month)){
+                map1 = colletMap.get(month);
+            }else {
+                map1 = new HashMap<>();
+            }
+            for (String status : statusArr) {
+                if (!map1.containsKey(status)){
+                    ComActAcidColorChartsVO comActAcidColorChartsVO = new ComActAcidColorChartsVO();
+                    comActAcidColorChartsVO.setCountNum(0);
+                    comActAcidColorChartsVO.setCountName(month);
+                    comActAcidColorChartsVO.setColorMark(status);
+                    comActAcidColorChartsVOS1.add(comActAcidColorChartsVO);
+                    map1.put(status,comActAcidColorChartsVO);
+                }
+            }
+            colletMap.put(month,map1);
+        }
+
+
+        Map<String, List<ComActAcidColorChartsVO>> chartMap = comActAcidColorChartsVOS1
+                .stream().sorted(Comparator.comparing(ComActAcidColorChartsVO::getCountName))
+                .collect(Collectors.groupingBy(ComActAcidColorChartsVO::getColorMark));
+
+        Map<String,Object> retMap = new HashMap<>();
+        retMap.put("comActAcidColorChartsVOS",comActAcidColorChartsVOS);
+        retMap.put("chartMap",chartMap);
+
+        return R.ok(retMap);
+    }
 }

--
Gitblit v1.7.1