| | |
| | | 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.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; |
| | |
| | | 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)表服务实现类 |
| | |
| | | |
| | | @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)); |
| | |
| | | |
| | | @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 |
| | | public R fiveCount() { |
| | | return null; |
| | | public R fiveCount(String localCity) { |
| | | return R.ok(this.baseMapper.fiveCount(localCity)); |
| | | } |
| | | @Override |
| | | 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[] 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) { |
| | | 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(); |
| | | } |
| | | } |