101captain
2022-05-17 a3fdd6e9a15b75cd23a4ac5c8522e81e47d02f49
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,10 +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)表服务实现类
@@ -35,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));
@@ -42,20 +62,172 @@
    @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
    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());
                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);
        return R.ok(this.save(comActAcidRecord));
        comActAcidRecord.setCreateTime(new Date());
        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(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::getRecordId, recordId));
        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.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
@@ -63,21 +235,21 @@
        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);
            comAcidStaticVO.setAreaName(areaName);
            List<ComAcidAreaVO> comAcidAreaVOS=new ArrayList<>();
            for(String countryName:country){
                Integer count=this.baseMapper.countryStatics(countryName,date);
                Integer count=this.baseMapper.countryStatics(countryName,date,areaName);
                ComAcidAreaVO comAcidAreaVO=new ComAcidAreaVO();
                comAcidAreaVO.setName(countryName);
                comAcidAreaVO.setCount(count);
@@ -88,4 +260,57 @@
        }
        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()).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.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();
        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();
    }
}