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;
|
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.BatchCheckAcidRecordDTO;
|
import com.panzhihua.common.model.dtos.community.acid.ComActAcidRecordDTO;
|
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.*;
|
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.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)表服务实现类
|
* projectName 成都呐喊信息技术有限公司-智慧社区项目
|
* description: 相关功能
|
*
|
* @author zzj
|
* @since 2022-04-12 15:29:58
|
*/
|
@Slf4j
|
@Service
|
public class ComActAcidRecordServiceImpl extends ServiceImpl<ComActAcidRecordDao, ComActAcidRecord> implements ComActAcidRecordService {
|
|
@Resource
|
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<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());
|
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::getIsDel,0).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", 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());
|
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.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);
|
return R.ok();
|
}
|
if (StringUtils.isEmpty(comActAcidRecordVO.getLocalCity())) {
|
//未填住址人员
|
saveAcidDangerMember(comActAcidRecordVO, comActAcidRecord.getId(), 2, null);
|
}
|
return R.ok(comActAcidRecord.getId().toString());
|
}
|
|
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).orderByDesc(ComActAcidDangerMember::getCreateTime).last("limit 1"));
|
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
|
public R fiveCount(String localCity) {
|
return R.ok(this.baseMapper.fiveCount(localCity));
|
}
|
@Override
|
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[] 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,areaName);
|
ComAcidAreaVO comAcidAreaVO=new ComAcidAreaVO();
|
comAcidAreaVO.setName(countryName);
|
comAcidAreaVO.setCount(count);
|
comAcidAreaVOS.add(comAcidAreaVO);
|
}
|
comAcidStaticVO.setComAcidAreaVOS(comAcidAreaVOS);
|
comAcidStaticVOS.add(comAcidStaticVO);
|
}
|
return R.ok(comAcidStaticVOS);
|
}
|
|
@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();
|
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);
|
}
|
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);
|
}
|
}
|
}
|
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);
|
}
|
}
|