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 |  203 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 193 insertions(+), 10 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 74539cf..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,14 +1,21 @@
 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;
 import com.panzhihua.service_community.service.ComActAcidRecordService;
@@ -16,11 +23,16 @@
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 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)表服务实现类
@@ -36,6 +48,13 @@
 
     @Resource
     private RabbitTemplate rabbitTemplate;
+    @Resource
+    private ComActAcidDangerMemberDao comActAcidDangerMemberDao;
+    @Resource
+    private UserService userService;
+    @Resource
+    private ComActDAO comActDAO;
+
     @Override
     public R pageList(ComActAcidRecordDTO comActAcidRecordDTO) {
         return R.ok(this.baseMapper.pageList(new Page<>(comActAcidRecordDTO.getPage(), comActAcidRecordDTO.getSize()),comActAcidRecordDTO));
@@ -43,21 +62,146 @@
 
     @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);
         comActAcidRecord.setCreateTime(new Date());
-        return R.ok(this.save(comActAcidRecord));
+        int result = this.baseMapper.insert(comActAcidRecord);
+        if (result > 0) {
+            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);
+                return R.ok();
+            }
+            if (StringUtils.isEmpty(comActAcidRecordVO.getLocalCity())) {
+                //未填住址人员
+                saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2, null);
+            }
+            return R.ok();
+        }
+
+        return R.fail("操作失败,请重新尝试");
+    }
+
+    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::getRelationName, relationName));
+        if (isNull(dangerMember)) {
+            dangerMember = new ComActAcidDangerMember();
+            dangerMember.setName(comActAcidRecordVO.getName());
+            dangerMember.setPhone(comActAcidRecordVO.getPhone());
+            dangerMember.setRecordId(recordId);
+            dangerMember.setIdCard(comActAcidRecordVO.getIdCard());
+            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());
+            dangerMember.setPhone(comActAcidRecordVO.getPhone());
+            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();
+        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
@@ -65,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);
@@ -90,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