101captain
2022-06-30 353af3243fc246c47d4ad8e076bfca1e99d2e89d
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;
@@ -13,19 +14,20 @@
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.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.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -54,6 +56,16 @@
    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) {
@@ -62,7 +74,13 @@
    @Override
    public R export(ComActAcidRecordDTO comActAcidRecordDTO) {
        List<ComActAcidRecordExcelReturn> 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());
@@ -196,7 +214,7 @@
            }
        }
        ComActAcidDangerMember dangerMember = comActAcidDangerMemberDao.selectOne(new LambdaQueryWrapper<ComActAcidDangerMember>()
                .eq(ComActAcidDangerMember::getIdCard, comActAcidRecordVO.getIdCard()).eq(ComActAcidDangerMember::getRecordId, recordId));
                .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());
@@ -240,6 +258,74 @@
    }
    @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={"攀枝花市","东区","西区","仁和区","米易县","盐边县","钒钛新城"};
@@ -263,20 +349,39 @@
    @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)) {
            //只修改地址,其他信息需要查询
            ComActAcidRecord comActAcidRecord1 = this.baseMapper.selectById(comActAcidRecordVO.getId());
            //只修改地址
            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);
            comActAcidRecordVO.setLocalCity(localCity);
            comActAcidRecordVO.setLocalAddress(localAddress);
            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()
@@ -286,8 +391,62 @@
        String dangerArea = comActAcidRecordVO.getDangerArea();
        String outsideCity = comActAcidRecordVO.getOutsideCity();
        String acidTest = comActAcidRecordVO.getAcidTest();
        if(StringUtils.isEmpty(acidTest)){
            acidTest="阴性";
        }
        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.inStringIgnoreCase(colorMark, "红码", "黄码") || travelCard.equals("是") || dangerArea.equals("是")
                || outsideCity.equals("是") || acidTest.equals("阳性")) {
            // 风险人员
            String riskType = retrieveRiskType(colorMark, travelCard, dangerArea, outsideCity, acidTest);
            saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 1, riskType);
@@ -313,4 +472,83 @@
        });
        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);
                }
                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;
    }
    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;
        }
    }
}