diff --git a/epdc-cloud-custom/pom.xml b/epdc-cloud-custom/pom.xml index c92c7ad..a12c280 100644 --- a/epdc-cloud-custom/pom.xml +++ b/epdc-cloud-custom/pom.xml @@ -189,6 +189,9 @@ organizationGroup vaccineGroup vaccineGroup + + + https://epdc-yushan.elinkservice.cn/familyInfo/ @@ -232,6 +235,9 @@ organizationGroup vaccineGroup vaccineGroup + + + https://epdc-yushan.elinkservice.cn/familyInfo/ @@ -275,6 +281,9 @@ organizationGroup vaccineGroup vaccineGroup + + + https://epdc-yushan.elinkservice.cn/familyInfo/ diff --git a/epdc-cloud-custom/src/main/resources/application.yml b/epdc-cloud-custom/src/main/resources/application.yml index e85ba0b..007fb7f 100644 --- a/epdc-cloud-custom/src/main/resources/application.yml +++ b/epdc-cloud-custom/src/main/resources/application.yml @@ -123,3 +123,7 @@ hystrix: ribbon: ReadTimeout: 30000 ConnectTimeout: 30000 +#小程序码生成 +qr: + code: + pre: @qr.code.pre@ diff --git a/epdc-cloud-vim-yushan/pom.xml b/epdc-cloud-vim-yushan/pom.xml index 0d9cd56..0e025b4 100644 --- a/epdc-cloud-vim-yushan/pom.xml +++ b/epdc-cloud-vim-yushan/pom.xml @@ -60,6 +60,16 @@ rocketmq-spring-boot-starter 2.0.3 + + com.google.zxing + core + 3.4.1 + + + com.google.zxing + javase + 3.4.1 + diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/config/QrCodeProperties.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/config/QrCodeProperties.java new file mode 100644 index 0000000..f4213e1 --- /dev/null +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/config/QrCodeProperties.java @@ -0,0 +1,29 @@ +package com.elink.esua.epdc.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * 二维码前缀 + * + * @author zhy + * @date 2022/5/20 14:59 + */ +@Configuration +@ConfigurationProperties(prefix = "qr.code") +public class QrCodeProperties { + + /** + * 前缀 + */ + private String pre; + + public String getPre() { + return pre; + } + + public void setPre(String pre) { + this.pre = pre; + } + +} diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/utils/HouseQRcodeUtils.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/utils/HouseQRcodeUtils.java new file mode 100644 index 0000000..63fc506 --- /dev/null +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/utils/HouseQRcodeUtils.java @@ -0,0 +1,171 @@ +package com.elink.esua.epdc.vaccine.epidemic.utils; + + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageConfig; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.CharacterSetECI; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import lombok.extern.slf4j.Slf4j; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; + +/** + * Date: 2022/06/7 10:01 + * Description:房屋一户一码生成工具类 + */ +@Slf4j +public class HouseQRcodeUtils { + /** + * 二维码颜色 默认是黑色 + */ + private static final Color QRCOLOR = Color.black; + /** + * 背景颜色 + */ + private static final Color BGWHITE = Color.white; + public static final int WIDTH = 800; + public static final int HEIGHT = 800; + public static final int MARGIN = 10; + public static final int FONTSIZE = 40; + + + + /** + * 房屋一户一码生成-指定像素 + * + * @param contents 说明 + * @return BufferedImage + * @throws Exception + */ + public static BufferedImage drawHouseQRImage(String pressText, String contents) throws Exception { + BufferedImage qRImage = null; + if (contents == null || "".equals(contents)) { + throw new Exception("content说明不能为空"); + } + // 二维码参数设置 + HashMap hints = new HashMap<>(); + hints.put(EncodeHintType.CHARACTER_SET, CharacterSetECI.UTF8); // 编码设置 + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 安全等级,最高h + hints.put(EncodeHintType.MARGIN, MARGIN); // 设置margin=0-10 + + // 二维码图片的生成 + BarcodeFormat format = BarcodeFormat.QR_CODE; + // 创建矩阵容器 + BitMatrix matrix = null; + try { + matrix = new MultiFormatWriter().encode(contents, format, WIDTH, HEIGHT, hints); + } catch (WriterException e) { + log.error("method exception", e); + } + + // 设置矩阵转为图片的参数 + MatrixToImageConfig toImageConfig = new MatrixToImageConfig(QRCOLOR.getRGB(), BGWHITE.getRGB()); + + // 矩阵转换图像 + qRImage = MatrixToImageWriter.toBufferedImage(matrix, toImageConfig); + return pressHouseText(pressText, qRImage); + } + + /** + * @param pressText 二维码下方插入文字 + * @param image 需要添加文字的图片 + * @为图片添加文字 + */ + private static BufferedImage pressHouseText(String pressText, BufferedImage image) throws Exception { + + BufferedImage outImage = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); + //计算文字开始的位置 + //x开始的位置:(图片宽度-字体大小*字的个数)/2 + int startX = (WIDTH - (FONTSIZE * pressText.length())) / 2; + //y开始的位置:图片高度-(图片高度-图片宽度)/2 +// int startY = HEIGHT - (HEIGHT - WIDTH) / 2 + FONTSIZE; + int startY = 740; + + int imageW = outImage.getWidth(); + int imageH = outImage.getHeight(); + Graphics2D g = outImage.createGraphics(); + g.drawImage(image, 0, 0, imageW, imageH, null); + g.setColor(QRCOLOR); + g.setFont(new Font("Noto Sans SC Light", Font.BOLD, FONTSIZE)); + g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + g.setBackground(Color.white); +// 获取文字数量 按照字节展示 + int size = pressText.getBytes("GBK").length; +// 获取一行最多能容纳多少文字 按照文字字节展示 + int maxSize = (WIDTH / FONTSIZE - 2) * 2; + if (size > maxSize) { + int v = size % maxSize; + for (int a = 0; a < (size / maxSize); a++) { + String s = outStringByByte(pressText, maxSize); + g.drawString(s, (WIDTH - (FONTSIZE * (WIDTH / FONTSIZE - 2))) / 2, startY); + pressText = pressText.substring(s.length(), pressText.length()); + startY = startY + 35; + } + if (v != 0) { + g.drawString(pressText, (WIDTH - (FONTSIZE * v)) / 2, startY); + } + } else { + g.drawString(pressText, (WIDTH - ((pressText.getBytes("GBK").length) / 2) * FONTSIZE) / 2, startY); + } + + g.dispose(); + return outImage; + } + + + + /** + * 保存二维码图片到本地 + * + * @param contents + * @throws Exception + */ + public static void createImg(String pressText, String contents, String filename, String filePath) throws Exception { + BufferedImage qRImageWithLogo = drawHouseQRImage(pressText, contents); + // 写入返回 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(qRImageWithLogo, "jpg", baos); + //图片类型 + String imageType = "jpg"; + //生成二维码存放文件 + File file = new File(filePath + filename + ".jpg"); + if (!file.exists()) { + file.mkdirs(); + } + ImageIO.write(qRImageWithLogo, imageType, file); + baos.close(); + } + + + private static String outStringByByte(String str, int len) throws IOException { + byte[] btf = str.getBytes("GBK"); + int count = 0; + + for (int j = len - 1; j >= 0; j--) { + if (btf[j] < 0) { + count++; + } else { + break; + } + } + + if (count % 2 == 0) { + return new String(btf, 0, len, "GBK"); + } else { + return new String(btf, 0, len - 1, "GBK"); + } + } + +} + diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/VimAdminFeignClient.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/VimAdminFeignClient.java index 9846338..02bfa0b 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/VimAdminFeignClient.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/VimAdminFeignClient.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.vaccine.feign; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.AllDeptDTO; +import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO; import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO; @@ -22,7 +23,7 @@ import java.util.List; * @date 2019/9/5 14:44 */ @FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = VimAdminFeignClientFallback.class -// ,url = "http://127.0.0.1:9092" + ,url = "http://127.0.0.1:9092" ) public interface VimAdminFeignClient { @@ -48,6 +49,9 @@ public interface VimAdminFeignClient { @GetMapping("/sys/dept/getParentAndAllDept/{deptId}") Result getParentAndAllDept(@PathVariable("deptId") String deptId); + @GetMapping("/sys/dept/getCompleteDept/{gridId}") + Result getCompleteDept(@PathVariable("gridId") String gridId); + /** * @return com.elink.esua.epdc.commons.tools.utils.Result> * @Description 获取多个字典值列表 diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/fallback/VimAdminFeignClientFallback.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/fallback/VimAdminFeignClientFallback.java index 9e5f519..034b99b 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/fallback/VimAdminFeignClientFallback.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/fallback/VimAdminFeignClientFallback.java @@ -4,6 +4,7 @@ import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.AllDeptDTO; +import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO; import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO; @@ -31,6 +32,11 @@ public class VimAdminFeignClientFallback implements VimAdminFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId); } + @Override + public Result getCompleteDept(String gridId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getCompleteDept", gridId); + } + @Override public Result> listPopulationSimple(SysPopulationSimpleDictFormDTO sysPopulationSimpleDictFormDTO){ return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listPopulationSimple", sysPopulationSimpleDictFormDTO); diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java index 488c525..e5c61be 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java @@ -18,6 +18,8 @@ package com.elink.esua.epdc.vaccine.personroom.controller; +import com.elink.esua.epdc.commons.tools.constant.StrConstant; +import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.ExcelUtils; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -26,15 +28,26 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; +import com.elink.esua.epdc.config.QrCodeProperties; import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO; +import com.elink.esua.epdc.dto.personroom.form.HouseQrcodeFormDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO; +import com.elink.esua.epdc.vaccine.epidemic.utils.HouseQRcodeUtils; import com.elink.esua.epdc.vaccine.personroom.excel.EpidemicBuildingUnitExcel; import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.imageio.ImageIO; +import javax.imageio.stream.ImageOutputStream; import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -52,6 +65,9 @@ public class BuildingUnitController { @Autowired private EpidemicBuildingUnitService epidemicBuildingUnitService; + @Autowired + private QrCodeProperties qrCodeProperties; + @GetMapping("page") public Result> page(@RequestParam Map params) { PageData page = epidemicBuildingUnitService.page(params); @@ -103,4 +119,48 @@ public class BuildingUnitController { return epidemicBuildingUnitService.importEpidemicHouse(file, gridId); } + /** + * @return void + * @describe: 下载房屋编码 + * @author wangtong + * @date 2022/6/1 17:24 + * @params [formDTO, response] + */ + @PostMapping("createHouseQrcode") + public void createQrCode(@RequestBody HouseQrcodeFormDTO formDTO, HttpServletResponse response) { + ValidatorUtils.validateEntity(formDTO); + try { + EpidemicBuildingUnitDetailResultDTO house = epidemicBuildingUnitService.get(formDTO.getId()); + if (null == house) { + throw new RenException("未查到房屋信息"); + } + //url组成:小程序地址?房屋编码 + String url = qrCodeProperties.getPre() + house.getRoomCode(); + BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(house.getBuildingName() + house.getUnit() + house.getRoomNo(), url); + //BufferedImage 转 InputStream + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ImageOutputStream imageOutput = ImageIO.createImageOutputStream(byteArrayOutputStream); + ImageIO.write(image, "png", imageOutput); + InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + long length = imageOutput.length(); + String fileName = house.getBuildingName() + house.getUnit() + house.getRoomNo() + ".png"; + response.setContentType("application/octet-stream"); + response.setContentLength((int) length); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, StrConstant.UTF_8)); + + //输出流 + byte[] bytes = new byte[1024]; + OutputStream outputStream = response.getOutputStream(); + long count = 0; + while (count < length) { + int len = inputStream.read(bytes, 0, 1024); + count += len; + outputStream.write(bytes, 0, len); + } + outputStream.flush(); + } catch (Exception e) { + throw new RenException("生成房屋码失败"); + } + } + } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java index 75c6f33..343cd2a 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java @@ -86,4 +86,7 @@ public interface EpidemicBuildingUnitDao extends BaseDao listAllUnitInfo(); + + Integer getMaxCode(); + } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java index 165b491..79fdb18 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java @@ -141,4 +141,7 @@ public interface EpidemicPlotBuildingDao extends BaseDao listAllBuildingInfo(); + + Integer getMaxCode(); + } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingErrorDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingErrorDao.java index 68ecc5b..b149aba 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingErrorDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingErrorDao.java @@ -42,4 +42,5 @@ public interface EpidemicPlotBuildingErrorDao extends BaseDao */ List getErrorExcelList(Map params); + } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java index f0d5df2..4ed9b8b 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java @@ -51,4 +51,14 @@ public interface EpidemicUnitOwnerDao extends BaseDao { * @date 2022/6/6 10:12 */ void deletePhysicalByIdCardAndUnitId(@Param("idCard") String idCard, @Param("unitId") Long unitId); + + /** + * 根据身份证删除 + * + * @param idCard + * @author zhy + * @date 2022/6/7 16:02 + */ + int deleteByIdCard(@Param("idCard") String idCard); + } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java index 06b7752..802b555 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java @@ -170,4 +170,14 @@ public class EpidemicBuildingUnitEntity extends BasePingyinEntity { * 街道编码 */ private String streetId; + + /** + * 房屋编码 + */ + private String roomCode; + + /** + * 房屋码(5位数字自增) + */ + private Integer roomMaCode; } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotBuildingEntity.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotBuildingEntity.java index d500ae5..e319b03 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotBuildingEntity.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotBuildingEntity.java @@ -207,4 +207,8 @@ public class EpidemicPlotBuildingEntity extends BasePingyinEntity { */ private String emergencyPosition; + /** + * 楼栋唯一编码五位数自增 + */ + private Integer buildingMaCode; } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java index 512407c..82c6df9 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java @@ -106,4 +106,7 @@ public interface EpidemicBuildingUnitService extends CrudService listAllBuildingInfo(); + + int getMaxCode(); } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicUnitOwnerService.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicUnitOwnerService.java index 40276c5..6d3632e 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicUnitOwnerService.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicUnitOwnerService.java @@ -104,6 +104,17 @@ public interface EpidemicUnitOwnerService extends BaseService owners, Long unitId) { List dtoList = owners.stream().filter(item -> StringUtils.isNotBlank(item.getIdCard())).collect(Collectors.toList()); List list = ConvertUtils.sourceToTarget(dtoList, EpidemicUnitOwnerEntity.class); @@ -335,7 +345,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl addList = new ArrayList<>(); List updateList = new ArrayList<>(); + Result allDeptInfo = adminVimFeignClient.getCompleteDept(parentAndAllDeptDTO.getGridId().toString()); + CompleteDeptDTO completeDept = allDeptInfo.getData(); + List checkList = epidemicUserInfoService.listByIdCards(baseResidentInformationExcels.stream().map(BaseResidentInformationUpdateExcel::getSelfIdentityNo).collect(Collectors.toList())); for (BaseResidentInformationUpdateExcel baseResidentInformationExcel : baseResidentInformationExcels) { @@ -401,10 +414,11 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl buildingList = epidemicPlotBuildingService.listAllBuildingInfo(); + int roomCode = getMaxCode(); List unitList = listAllUnitInfo(); List addOwner = new ArrayList<>(); List addUnit = new ArrayList<>(); - addList.forEach(item -> { + for (EpidemicUserInfoEntity item : addList) { // 只有信息完整的才进行匹配 if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { Optional unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst(); @@ -426,6 +440,15 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl { + for (EpidemicUserInfoEntity item : updateList) { // 只有信息完整的才进行匹配 if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { - Optional unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst(); + Optional unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())&& unit.getRoomNo().equals(item.getRoomNo())).findFirst(); if (unitOptional.isPresent()) { EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity(); entity.setIdCard(item.getIdCard()); entity.setUnitId(unitOptional.get().getUnitId()); entity.setOwnerName(item.getUserName()); entity.setMobile(item.getMobile()); - // todo del? + epidemicUnitOwnerService.deleteByIdCard(item.getIdCard()); addOwner.add(entity); } else { Optional buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst(); @@ -461,20 +484,34 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl SELECT bu.*, + pb.BUILDING_NAME, pb.PLOT_ID, pc.PLOT_NAME FROM @@ -127,6 +128,8 @@ SELECT u.id AS unitId, u.UNIT, + u.ROOM_NO, + u.ROOM_MA_CODE, b.id AS buildingId, b.BUILDING_NAME, p.id AS plotId, @@ -140,4 +143,12 @@ AND b.DEL_FLAG = '0' AND p.DEL_FLAG = '0' + + + diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotBuildingDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotBuildingDao.xml index 4cd5602..1b92632 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotBuildingDao.xml +++ b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotBuildingDao.xml @@ -177,6 +177,7 @@ b.id, b.BUILDING_NAME, p.id AS plotId, + b.BUILDING_MA_CODE, p.PLOT_NAME FROM epidemic_plot_building b @@ -185,5 +186,10 @@ b.DEL_FLAG = '0' AND p.DEL_FLAG = '0' - + diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml index 3d81f2c..9b6b3be 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml +++ b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml @@ -26,6 +26,14 @@ UNIT_ID = #{unitId} + + DELETE + FROM + epidemic_unit_owner + WHERE + ID_CARD = #{idCard} + + DELETE FROM