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 |  547 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 511 insertions(+), 36 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 ccfbdf1..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
@@ -1,5 +1,6 @@
 package com.panzhihua.service_community.service.impl;
 
+import cn.hutool.core.util.ArrayUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -7,30 +8,36 @@
 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.dtos.property.CommonPage;
 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;
 import com.panzhihua.common.utlis.StringUtils;
-import com.panzhihua.service_community.dao.ComActAcidDangerMemberDao;
-import com.panzhihua.service_community.entity.ComActAcidDangerMember;
-import com.panzhihua.service_community.entity.ComActAcidRecord;
-import com.panzhihua.service_community.dao.ComActAcidRecordDao;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.entity.*;
+import com.panzhihua.service_community.model.dos.ComActDO;
+import com.panzhihua.service_community.model.dos.ComStreetDO;
 import com.panzhihua.service_community.service.ComActAcidRecordService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.math.BigDecimal;
+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;
+import static org.apache.commons.lang3.StringUtils.isBlank;
 
 /**
  * (ComActAcidRecord)表服务实现类
@@ -48,15 +55,64 @@
     private RabbitTemplate rabbitTemplate;
     @Resource
     private ComActAcidDangerMemberDao comActAcidDangerMemberDao;
+    @Resource
+    private UserService userService;
+    @Resource
+    private ComActDAO comActDAO;
+    @Resource
+    private ComActAcidUpdateRecordDao comActAcidUpdateRecordDao;
+    @Resource
+    private ComAreaTownCommunityDao comAreaTownCommunityDao;
+    @Resource
+    private ComCunDao comCunDao;
+    @Resource
+    private ComStreetDAO comStreetDAO;
+    @Resource
+    private SysUserDao sysUserDao;
 
     @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));
     }
 
     @Override
     public R export(ComActAcidRecordDTO comActAcidRecordDTO) {
-        List<ComActAcidRecordExcelVO> comActAcidRecordExcelVOS=this.baseMapper.export(comActAcidRecordDTO);
+        List<ComActAcidRecordExcelReturn> comActAcidRecordExcelVOS=new ArrayList<>();
+        if(StringUtils.isNotEmpty(comActAcidRecordDTO.getIds())){
+            comActAcidRecordExcelVOS=this.baseMapper.selectByIds(comActAcidRecordDTO.getIds());
+        }
+        else {
+            comActAcidRecordExcelVOS=this.baseMapper.export(comActAcidRecordDTO);
+        }
+        comActAcidRecordExcelVOS.forEach(comActAcidRecordExcelVO -> {
+            if(StringUtils.isNotEmpty(comActAcidRecordExcelVO.getTouristCity())&&comActAcidRecordExcelVO.getTouristCity().contains("[")){
+                JSONArray jsonArray = JSON.parseArray(comActAcidRecordExcelVO.getTouristCity());
+                if(jsonArray.isEmpty()){
+                    comActAcidRecordExcelVO.setTouristCity("");
+                }
+                else {
+                    StringBuilder touristCity= new StringBuilder();
+                    for(int i=0;i<jsonArray.size();i++){
+                        JSONObject jsonObject=jsonArray.getJSONObject(i);
+                        String name=jsonObject.getString("name");
+                        if(StringUtils.isNotEmpty(name)){
+                            touristCity.append(name).append(";");
+                        }
+                    }
+                    comActAcidRecordExcelVO.setTouristCity(touristCity.toString());
+                }
+            }
+        });
+        return R.ok(comActAcidRecordExcelVOS);
+    }
+
+    @Override
+    public R exportNew(ComActAcidRecordDTO comActAcidRecordDTO) {
+        List<ComActAcidRecordExcelReturn> comActAcidRecordExcelVOS=this.baseMapper.exportNew(comActAcidRecordDTO);
         comActAcidRecordExcelVOS.forEach(comActAcidRecordExcelVO -> {
             if(StringUtils.isNotEmpty(comActAcidRecordExcelVO.getTouristCity())&&comActAcidRecordExcelVO.getTouristCity().contains("[")){
                 JSONArray jsonArray = JSON.parseArray(comActAcidRecordExcelVO.getTouristCity());
@@ -82,15 +138,18 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R insertRecord(ComActAcidRecordVO comActAcidRecordVO) {
-        Integer count= this.baseMapper.selectCount(new QueryWrapper<ComActAcidRecord>().lambda().eq(ComActAcidRecord::getIdCard,comActAcidRecordVO.getIdCard()).ge(ComActAcidRecord::getCreateTime, DateUtils.getCurrentDate(DateUtils.yyyyMMdd_format)));
+        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 -> {
-                message.getMessageProperties().setHeader("x-delay", 24*60*60*1000);
+                message.getMessageProperties().setHeader("x-delay", 2*60*60*1000);
                 return message;
             });
+        }
+        else {
+            rabbitTemplate.convertAndSend("huacheng.acid.direct.exchange", "huacheng.acid.direct.key", comActAcidRecordVO);
         }
         ComActAcidRecord comActAcidRecord=new ComActAcidRecord();
         BeanUtils.copyProperties(comActAcidRecordVO,comActAcidRecord);
@@ -102,39 +161,73 @@
             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("阳性")) {
                 //风险人员
-                saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 1);
+                String riskType = retrieveRiskType(colorMark, travelCard, dangerArea, outsideCity, acidTest);
+                saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 1, riskType);
                 return R.ok();
             }
             if (StringUtils.isEmpty(comActAcidRecordVO.getLocalCity())) {
                 //未填住址人员
-                saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2);
+                saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2, null);
             }
-            return R.ok();
+            return R.ok(comActAcidRecord.getId().toString());
         }
 
         return R.fail("操作失败,请重新尝试");
     }
 
-    private void saveAcidDangerMember(ComActAcidRecordVO comActAcidRecordVO, Long recordId, Integer type) {
+    private String retrieveRiskType(String colorMark, String travelCard, String dangerArea, String outsideCity, String acidTest) {
+        StringBuilder riskType = new StringBuilder();
+        if (StringUtils.inStringIgnoreCase(colorMark, "红码", "黄码")) {
+            riskType.append(",");
+            riskType.append(ComActAcidDangerMember.RiskType.COLOR);
+        }
+        if (travelCard.equals("是")) {
+            riskType.append(",");
+            riskType.append(ComActAcidDangerMember.RiskType.STAR);
+        }
+        if (dangerArea.equals("是")) {
+            riskType.append(",");
+            riskType.append(ComActAcidDangerMember.RiskType.HIGH);
+        }
+        if (outsideCity.equals("是")) {
+            riskType.append(",");
+            riskType.append(ComActAcidDangerMember.RiskType.OUT);
+        }
+        if (acidTest.equals("阳性")) {
+            riskType.append(",");
+            riskType.append(ComActAcidDangerMember.RiskType.TEST);
+        }
+        return riskType.substring(1);
+    }
+
+    private void saveAcidDangerMember(ComActAcidRecordVO comActAcidRecordVO, Long recordId, Integer type, String riskType) {
         String localCity = comActAcidRecordVO.getLocalCity();
         String relationName = "panzhihua";
         if (isNotEmpty(localCity)) {
             relationName = localCity;
         } else {
             String realAddress = comActAcidRecordVO.getRealAddress();
-            if (realAddress.contains("攀枝花")) {
-                if (realAddress.contains("区")) {
-                    relationName = realAddress.substring(realAddress.indexOf("市") + 1, realAddress.indexOf("区") + 1);
-                } else {
-                    relationName = realAddress.substring(realAddress.indexOf("市") + 1, realAddress.indexOf("县") + 1);
+            if(isNotEmpty(realAddress)){
+                if (realAddress.contains("攀枝花")) {
+                    if (realAddress.contains("区")) {
+                        relationName = realAddress.substring(realAddress.indexOf("市") + 1, realAddress.indexOf("区") + 1);
+                    } else {
+                        relationName = realAddress.substring(realAddress.indexOf("市") + 1, realAddress.indexOf("县") + 1);
+                    }
                 }
             }
         }
         ComActAcidDangerMember dangerMember = comActAcidDangerMemberDao.selectOne(new LambdaQueryWrapper<ComActAcidDangerMember>()
-                .eq(ComActAcidDangerMember::getIdCard, comActAcidRecordVO.getIdCard()).eq(ComActAcidDangerMember::getRelationName, relationName));
+                .eq(ComActAcidDangerMember::getIdCard, comActAcidRecordVO.getIdCard()).eq(ComActAcidDangerMember::getRecordId, recordId).orderByDesc(ComActAcidDangerMember::getCreateTime).last("limit 1"));
         if (isNull(dangerMember)) {
             dangerMember = new ComActAcidDangerMember();
             dangerMember.setName(comActAcidRecordVO.getName());
@@ -146,6 +239,7 @@
             dangerMember.setType(type);
             dangerMember.setRelationName(relationName);
             dangerMember.setCreateTime(new Date());
+            dangerMember.setRiskType(riskType);
             comActAcidDangerMemberDao.insert(dangerMember);
         } else {
             dangerMember.setName(comActAcidRecordVO.getName());
@@ -153,10 +247,10 @@
             dangerMember.setRecordId(recordId);
             dangerMember.setIdCard(comActAcidRecordVO.getIdCard());
             dangerMember.setSource(1);
-            dangerMember.setStatus(6);
             dangerMember.setType(type);
             dangerMember.setRelationName(relationName);
             dangerMember.setUpdateTime(new Date());
+            dangerMember.setRiskType(riskType);
             comActAcidDangerMemberDao.updateById(dangerMember);
         }
         ComActAcidDangerMemberVO dangerMemberVO = new ComActAcidDangerMemberVO();
@@ -172,14 +266,86 @@
         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
+    public R charts(String date, String localCity) {
+        if(StringUtils.isNotEmpty(localCity)){
+            ComActAcidCharts comActAcidCharts=new ComActAcidCharts();
+            List<ComActAcidChartsVO> acidList=new ArrayList<>();
+            List<ComActAcidChartsVO> dangerList=new ArrayList<>();
+            List<ComActAcidChartsVO> checkCount=new ArrayList<>();
+            String[] area={"东区","西区","仁和区","米易县","盐边县"};
+            if("panzhihua".equals(localCity)){
+                for(String areaValue:area){
+                    ComActAcidChartsVO acid=new ComActAcidChartsVO();
+                    acid.setName(areaValue);
+                    ComActAcidChartsVO acidCount =this.baseMapper.selectAcidCount(date,areaValue);
+                    if(acidCount!=null){
+                        acid.setNumOne(acidCount.getNumOne());
+                    }
+                    acidList.add(acid);
+                    ComActAcidChartsVO danger=new ComActAcidChartsVO();
+                    danger.setName(areaValue);
+                    ComActAcidChartsVO dangerCount =this.baseMapper.selectDangerCount(date,areaValue);
+                    if(dangerCount!=null){
+                        danger.setNumOne(dangerCount.getNumOne());
+                        danger.setNumTwo(dangerCount.getNumTwo());
+                    }else{
+                        danger.setNumOne(0);
+                        danger.setNumTwo(0);
+                    }
+                    dangerList.add(danger);
+                    checkCount =this.baseMapper.selectCheck(date,localCity);
+                    if(checkCount!=null){
+                        checkCount.forEach(comActAcidChartsVO -> {
+                            if(comActAcidChartsVO.getNumTwo()!=null){
+                                comActAcidChartsVO.setPercent(new BigDecimal(comActAcidChartsVO.getNumOne())
+                                        .divide(new BigDecimal(comActAcidChartsVO.getNumTwo()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
+                            }
+                        });
+                    }
+
+                }
+            }
+            if(ArrayUtil.contains(area,localCity)){
+                List<String> streets=comAreaTownCommunityDao.selectDistinctTown(localCity);
+                streets.forEach(street ->{
+                    ComActAcidChartsVO acid=new ComActAcidChartsVO();
+                    acid.setName(street);
+                    ComActAcidChartsVO acidCount =this.baseMapper.selectAcidCount(date,street);
+                    if(acidCount!=null){
+                        acid.setNumOne(acidCount.getNumOne());
+                    }
+                    acidList.add(acid);
+                    ComActAcidChartsVO danger=new ComActAcidChartsVO();
+                    danger.setName(street);
+                    ComActAcidChartsVO dangerCount =this.baseMapper.selectDangerCount(date,street);
+                    if(dangerCount!=null){
+                        danger.setNumOne(dangerCount.getNumOne());
+                        danger.setNumTwo(dangerCount.getNumTwo());
+                    }
+                    dangerList.add(danger);
+                });
+            }
+            comActAcidCharts.setAcidList(acidList);
+            comActAcidCharts.setDangerList(dangerList);
+            comActAcidCharts.setCheckList(checkCount);
+            return R.ok(comActAcidCharts);
+        }
+        return R.fail();
     }
 
     @Override
     public R statics(String date) {
         List<ComAcidStaticVO> comAcidStaticVOS=new ArrayList<>();
-        String[] area={"东区","西区","仁和区","米易县","盐边县","钒钛新城"};
+        String[] area={"攀枝花市","东区","西区","仁和区","米易县","盐边县","钒钛新城"};
         String[] country={"上海市","吉林省","广东省","江苏省","浙江省","山东省","湖北省","山西省","黑龙江省","广西壮族自治区","河北省","辽宁省","河南省","福建省","安徽省","南昌市","西宁市","西安市","文山州","兰州市","邵阳市"};
         for(String areaName:area){
             ComAcidStaticVO comAcidStaticVO=this.baseMapper.areaStatics(areaName,date);
@@ -200,20 +366,329 @@
 
     @Override
     public R updateLocalCity(ComActAcidRecordVO comActAcidRecordVO) {
+        ComActAcidUpdateRecord comActAcidUpdateRecord=new ComActAcidUpdateRecord();
+        comActAcidUpdateRecord.setRecordId(comActAcidRecordVO.getId());
+        comActAcidUpdateRecord.setUserId(comActAcidRecordVO.getUserId());
+        comActAcidUpdateRecord.setCreateTime(new Date());
+        comActAcidUpdateRecordDao.insert(comActAcidUpdateRecord);
+        ComActAcidRecord comActAcidRecord = new ComActAcidRecord();
+        BeanUtils.copyProperties(comActAcidRecordVO, comActAcidRecord);
+        String idCard = comActAcidRecordVO.getIdCard();
+        ComActAcidRecord comActAcidRecord1 = this.baseMapper.selectById(comActAcidRecordVO.getId());
+        comActAcidRecord.setUserId(comActAcidRecord1.getUserId());
+        if (isBlank(idCard)) {
+            //只修改地址
+            if (isNull(comActAcidRecord1)) {
+                return R.fail("填报纪录不存在");
+            }
+            String localCity = comActAcidRecordVO.getLocalCity();
+            String localAddress = comActAcidRecordVO.getLocalAddress();
+            Integer checkStatus=comActAcidRecordVO.getCheckStatus();
+            String remark=comActAcidRecordVO.getRemark();
+            BeanUtils.copyProperties(comActAcidRecord1, comActAcidRecordVO);
+            if(StringUtils.isNotEmpty(localCity)){
+                comActAcidRecordVO.setLocalCity(localCity);
+            }
+            if(StringUtils.isNotEmpty(localAddress)){
+                comActAcidRecordVO.setLocalAddress(localAddress);
+            }
+            BeanUtils.copyProperties(comActAcidRecord1,comActAcidRecord);
+            if(checkStatus>0){
+                comActAcidRecord.setCheckStatus(checkStatus);
+            }
+            if(StringUtils.isNotEmpty(remark)){
+                comActAcidRecord.setRemark(remark);
+            }
+        }
+        ComActAcidDangerMember comActAcidDangerMember =
+            comActAcidDangerMemberDao.selectOne(new QueryWrapper<ComActAcidDangerMember>().lambda()
+                .eq(ComActAcidDangerMember::getRecordId, comActAcidRecordVO.getId()).orderByDesc(ComActAcidDangerMember::getCreateTime).last("limit 1"));
+        String colorMark = comActAcidRecordVO.getColorMark();
+        String travelCard = comActAcidRecordVO.getTravelCard();
+        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("阳性")) {
+            // 风险人员
+            String riskType = retrieveRiskType(colorMark, travelCard, dangerArea, outsideCity, acidTest);
+            saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 1, riskType);
+        } else if (StringUtils.isEmpty(comActAcidRecordVO.getLocalCity())) {
+            // 未填住址人员
+            saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2, null);
+        } else if (comActAcidDangerMember != null && comActAcidDangerMember.getType() == 2) {
+            this.comActAcidDangerMemberDao.deleteById(comActAcidDangerMember.getId());
+        }
+
+        return R.ok(this.baseMapper.updateById(comActAcidRecord));
+    }
+
+    @Override
+    public R updateApplets(ComActAcidRecordVO comActAcidRecordVO) {
+        ComActAcidUpdateRecord comActAcidUpdateRecord=new ComActAcidUpdateRecord();
+        comActAcidUpdateRecord.setRecordId(comActAcidRecordVO.getId());
+        comActAcidUpdateRecord.setUserId(comActAcidRecordVO.getUserId());
+        comActAcidUpdateRecord.setCreateTime(new Date());
+        comActAcidUpdateRecordDao.insert(comActAcidUpdateRecord);
+        ComActAcidRecord comActAcidRecord = new ComActAcidRecord();
+        BeanUtils.copyProperties(comActAcidRecordVO, comActAcidRecord);
+        String idCard = comActAcidRecordVO.getIdCard();
+        ComActAcidRecord comActAcidRecord1 = this.baseMapper.selectById(comActAcidRecordVO.getId());
+        comActAcidRecord.setUserId(comActAcidRecord1.getUserId());
+        if (isBlank(idCard)) {
+            //只修改核对状态
+            if (isNull(comActAcidRecord1)) {
+                return R.fail("填报纪录不存在");
+            }
+            Integer checkStatus=comActAcidRecordVO.getCheckStatus();
+            String remark=comActAcidRecordVO.getRemark();
+            BeanUtils.copyProperties(comActAcidRecord1, comActAcidRecordVO);
+            BeanUtils.copyProperties(comActAcidRecord1,comActAcidRecord);
+            if(checkStatus>0){
+                comActAcidRecord.setCheckStatus(checkStatus);
+            }
+            if(StringUtils.isNotEmpty(remark)){
+                comActAcidRecord.setRemark(remark);
+            }
+        }
+        ComActAcidDangerMember comActAcidDangerMember =
+                comActAcidDangerMemberDao.selectOne(new QueryWrapper<ComActAcidDangerMember>().lambda()
+                        .eq(ComActAcidDangerMember::getRecordId, comActAcidRecordVO.getId()).orderByDesc(ComActAcidDangerMember::getCreateTime).last("limit 1"));
+        String colorMark = comActAcidRecordVO.getColorMark();
+        String travelCard = comActAcidRecordVO.getTravelCard();
+        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("阳性")) {
+            // 风险人员
+            String riskType = retrieveRiskType(colorMark, travelCard, dangerArea, outsideCity, acidTest);
+            saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 1, riskType);
+        } else if (StringUtils.isEmpty(comActAcidRecordVO.getLocalCity())) {
+            // 未填住址人员
+            saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2, null);
+        } else if (comActAcidDangerMember != null && comActAcidDangerMember.getType() == 2) {
+            this.comActAcidDangerMemberDao.deleteById(comActAcidDangerMember.getId());
+        }
+        return R.ok(this.baseMapper.updateById(comActAcidRecord));
+    }
+
+    @Override
+    public R delete(Long id) {
         ComActAcidRecord comActAcidRecord=new ComActAcidRecord();
-        BeanUtils.copyProperties(comActAcidRecordVO,comActAcidRecord);
-        if(StringUtils.isNotEmpty(comActAcidRecord.getLocalCity())){
-            ComActAcidDangerMember comActAcidDangerMember= comActAcidDangerMemberDao.selectOne(new QueryWrapper<ComActAcidDangerMember>().lambda().eq(ComActAcidDangerMember::getRecordId,comActAcidRecordVO.getId()));
-            if(comActAcidDangerMember!=null){
-                if(comActAcidDangerMember.getType()==2){
-                    this.comActAcidDangerMemberDao.deleteById(comActAcidDangerMember.getId());
+        comActAcidRecord.setId(id);
+        comActAcidRecord.setIsDel(1);
+        this.baseMapper.updateById(comActAcidRecord);
+        List<ComActAcidDangerMember> comActAcidDangerMembers=this.comActAcidDangerMemberDao.selectList(new QueryWrapper<ComActAcidDangerMember>().lambda().eq(ComActAcidDangerMember::getRecordId,id));
+        comActAcidDangerMembers.forEach(comActAcidDangerMember -> {
+            comActAcidDangerMember.setIsDel(1);
+            this.comActAcidDangerMemberDao.updateById(comActAcidDangerMember);
+        });
+        return R.ok();
+    }
+
+    @Override
+    public R detailByApp(Long id,String localCity) {
+        ComActAcidRecord comActAcidRecord=this.baseMapper.selectById(id);
+        ComActAcidRecordVO comActAcidRecordVO=this.baseMapper.selectLastNext(id,localCity);
+        BeanUtils.copyProperties(comActAcidRecord,comActAcidRecordVO);
+        return R.ok(comActAcidRecordVO);
+    }
+
+    @Override
+    public R detailByCommunity(Long id) {
+        ComActAcidRecordVO comActAcidRecordVO=new ComActAcidRecordVO();
+        ComActAcidRecord comActAcidRecord= this.baseMapper.selectById(id);
+        BeanUtils.copyProperties(comActAcidRecord,comActAcidRecordVO);
+        List<ComActAcidUpdateRecordVO> comActAcidUpdateRecordList=this.comActAcidUpdateRecordDao.selectList(id);
+        if(!comActAcidUpdateRecordList.isEmpty()){
+            comActAcidRecordVO.setComActAcidUpdateRecordVOList(comActAcidUpdateRecordList);
+        }
+        return R.ok(comActAcidRecordVO);
+    }
+
+    @Override
+    public R test() {
+        List<ComCun> comCuns=comCunDao.selectList(new QueryWrapper<ComCun>());
+        comCuns.forEach(comCun->{
+           ComActDO comActDO= comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getName,comCun.getCommunity()));
+            if(comActDO==null){
+                ComStreetDO comStreetDO = comStreetDAO.selectOne(new QueryWrapper<ComStreetDO>().lambda().eq(ComStreetDO::getName,comCun.getTown()));
+                if(comStreetDO==null){
+                    comStreetDO=new ComStreetDO();
+                    comStreetDO.setName(comCun.getTown());
+                    areaCheck(comCun,comStreetDO);
+                    comStreetDO.setAccount(comCun.getAccount());
+                    comStreetDAO.insert(comStreetDO);
                 }
-                else {
-                    comActAcidDangerMember.setRelationName(comActAcidRecord.getLocalCity());
-                    this.comActAcidDangerMemberDao.updateById(comActAcidDangerMember);
+                comActDO=new ComActDO();
+                comActDO.setStreetId(comStreetDO.getStreetId());
+                comActDO.setAreaCode(comStreetDO.getAreaCode().toString());
+                comActDO.setName(comCun.getCommunity());
+                comActDO.setContacts(comCun.getName());
+                comActDO.setContactsPhone(comCun.getPhone());
+                comActDAO.insert(comActDO);
+            }
+            ComAreaTownCommunity community=comAreaTownCommunityDao.selectOne(new QueryWrapper<ComAreaTownCommunity>().lambda().eq(ComAreaTownCommunity::getArea,comCun.getArea()).eq(ComAreaTownCommunity::getTown,comCun.getTown()).eq(ComAreaTownCommunity::getCommunity,comCun.getCommunity()));
+            if(community==null){
+                community=new ComAreaTownCommunity();
+                community.setArea(comCun.getArea());
+                community.setTown(comCun.getTown());
+                community.setCommunity(comCun.getCommunity());
+                comAreaTownCommunityDao.insert(community);
+            }else {
+                community.setCommunityId(comActDO.getCommunityId());
+                comAreaTownCommunityDao.updateById(community);
+            }
+            SysUser sysUser=sysUserDao.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getAccount,comCun.getAccount()));
+            if(sysUser!=null){
+                System.out.println(comCun.getAccount()+","+comCun.getCommunity());
+            }
+            else {
+                sysUser=new SysUser();
+                sysUser.setAccount(comCun.getAccount());
+                sysUser.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR.");
+                sysUser.setName(comCun.getCommunity());
+                sysUser.setType(9);
+                sysUserDao.insert(sysUser);
+            }
+        });
+        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;
+            case "东区": comStreetDO.setAreaCode(510402); break;
+            case "仁和区": comStreetDO.setAreaCode(510411); break;
+            case "米易县": comStreetDO.setAreaCode(510421); break;
+            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);
                 }
             }
         }
-        return R.ok(this.baseMapper.updateById(comActAcidRecord));
+        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