From 964a5ecb478a714f21c5bc75b3d32c16a626deef Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期一, 09 五月 2022 17:55:58 +0800
Subject: [PATCH] 花城E+防疫修改

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActAcidRecordServiceImpl.java |  156 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 139 insertions(+), 17 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 6f03b18..bf67438 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,16 +1,20 @@
 package com.panzhihua.service_community.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.ComActAcidRecordDTO;
-import com.panzhihua.common.model.dtos.property.CommonPage;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.acid.ComAcidAreaVO;
-import com.panzhihua.common.model.vos.community.acid.ComAcidStaticVO;
-import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO;
+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.dao.ComActDAO;
 import com.panzhihua.service_community.entity.ComActAcidDangerMember;
 import com.panzhihua.service_community.entity.ComActAcidRecord;
 import com.panzhihua.service_community.dao.ComActAcidRecordDao;
@@ -26,7 +30,9 @@
 import java.util.Date;
 import java.util.List;
 
+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)表服务实现类
@@ -44,6 +50,10 @@
     private RabbitTemplate rabbitTemplate;
     @Resource
     private ComActAcidDangerMemberDao comActAcidDangerMemberDao;
+    @Resource
+    private UserService userService;
+    @Resource
+    private ComActDAO comActDAO;
 
     @Override
     public R pageList(ComActAcidRecordDTO comActAcidRecordDTO) {
@@ -52,17 +62,44 @@
 
     @Override
     public R export(ComActAcidRecordDTO comActAcidRecordDTO) {
-        return R.ok(this.baseMapper.export(comActAcidRecordDTO));
+        List<ComActAcidRecordExcelReturn> 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
     @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)));
+        if(count>0){
+            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);
@@ -77,16 +114,13 @@
             if (StringUtils.inStringIgnoreCase(colorMark, "红码", "黄码") || travelCard.equals("是")
                     || dangerArea.equals("是") || outsideCity.equals("是") || acidTest.equals("阳性")) {
                 //风险人员
-                saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 1);
-//                rabbitTemplate.convertAndSend("huacheng.acid.danger.exchange", "huacheng.acid.danger.key", comActAcidRecordVO, message -> {
-//                    message.getMessageProperties().setHeader("x-delay", 24*60*60*1000);
-//                    return message;
-//                });
+                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();
         }
@@ -94,9 +128,48 @@
         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);
+                }
+            }
+        }
         ComActAcidDangerMember dangerMember = comActAcidDangerMemberDao.selectOne(new LambdaQueryWrapper<ComActAcidDangerMember>()
-                .eq(ComActAcidDangerMember::getIdCard, comActAcidRecordVO.getIdCard()));
+                .eq(ComActAcidDangerMember::getIdCard, comActAcidRecordVO.getIdCard()).eq(ComActAcidDangerMember::getRelationName, relationName));
         if (isNull(dangerMember)) {
             dangerMember = new ComActAcidDangerMember();
             dangerMember.setName(comActAcidRecordVO.getName());
@@ -106,7 +179,9 @@
             dangerMember.setSource(1);
             dangerMember.setStatus(6);
             dangerMember.setType(type);
+            dangerMember.setRelationName(relationName);
             dangerMember.setCreateTime(new Date());
+            dangerMember.setRiskType(riskType);
             comActAcidDangerMemberDao.insert(dangerMember);
         } else {
             dangerMember.setName(comActAcidRecordVO.getName());
@@ -116,9 +191,17 @@
             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();
+        BeanUtils.copyProperties(dangerMember, dangerMemberVO);
+        rabbitTemplate.convertAndSend("huacheng.acid.danger.exchange", "huacheng.acid.danger.key", dangerMemberVO, message -> {
+            message.getMessageProperties().setHeader("x-delay", 1*60*1000);
+            return message;
+        });
     }
 
     @Override
@@ -126,14 +209,14 @@
         return R.ok(this.baseMapper.fiveCount(localCity));
     }
     @Override
-    public R fiveCountPlus(String date) {
-        return R.ok(this.baseMapper.fiveCountPlus(date));
+    public R fiveCountPlus(String date,String localCity) {
+        return R.ok(this.baseMapper.fiveCountPlus(date,localCity));
     }
 
     @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);
@@ -151,4 +234,43 @@
         }
         return R.ok(comAcidStaticVOS);
     }
+
+    @Override
+    public R updateLocalCity(ComActAcidRecordVO comActAcidRecordVO) {
+        ComActAcidRecord comActAcidRecord = new ComActAcidRecord();
+        BeanUtils.copyProperties(comActAcidRecordVO, comActAcidRecord);
+        String idCard = comActAcidRecordVO.getIdCard();
+        if (isBlank(idCard)) {
+            //只修改地址,其他信息需要查询
+            ComActAcidRecord comActAcidRecord1 = this.baseMapper.selectById(comActAcidRecordVO.getId());
+            if (isNull(comActAcidRecord1)) {
+                return R.fail("填报纪录不存在");
+            }
+            String localCity = comActAcidRecordVO.getLocalCity();
+            String localAddress = comActAcidRecordVO.getLocalAddress();
+            BeanUtils.copyProperties(comActAcidRecord1, comActAcidRecordVO);
+            comActAcidRecordVO.setLocalCity(localCity);
+            comActAcidRecordVO.setLocalAddress(localAddress);
+        }
+        ComActAcidDangerMember comActAcidDangerMember =
+            comActAcidDangerMemberDao.selectOne(new QueryWrapper<ComActAcidDangerMember>().lambda()
+                .eq(ComActAcidDangerMember::getRecordId, comActAcidRecordVO.getId()));
+        String colorMark = comActAcidRecordVO.getColorMark();
+        String travelCard = comActAcidRecordVO.getTravelCard();
+        String dangerArea = comActAcidRecordVO.getDangerArea();
+        String outsideCity = comActAcidRecordVO.getOutsideCity();
+        String acidTest = comActAcidRecordVO.getAcidTest();
+        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));
+    }
 }

--
Gitblit v1.7.1