Browse Source

补充

feature/user_house_import
zhangyuan 3 years ago
parent
commit
d7a8ac4227
  1. 9
      epdc-cloud-custom/pom.xml
  2. 4
      epdc-cloud-custom/src/main/resources/application.yml
  3. 10
      epdc-cloud-vim-yushan/pom.xml
  4. 29
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/config/QrCodeProperties.java
  5. 171
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/utils/HouseQRcodeUtils.java
  6. 6
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/VimAdminFeignClient.java
  7. 6
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/feign/fallback/VimAdminFeignClientFallback.java
  8. 60
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java
  9. 3
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java
  10. 3
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java
  11. 1
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingErrorDao.java
  12. 10
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java
  13. 10
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java
  14. 4
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotBuildingEntity.java
  15. 3
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java
  16. 2
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicPlotBuildingService.java
  17. 11
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicUnitOwnerService.java
  18. 57
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java
  19. 9
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotBuildingServiceImpl.java
  20. 7
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicUnitOwnerServiceImpl.java
  21. 11
      epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicBuildingUnitDao.xml
  22. 8
      epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotBuildingDao.xml
  23. 8
      epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml

9
epdc-cloud-custom/pom.xml

@ -189,6 +189,9 @@
<rocketmq.producer.group>organizationGroup</rocketmq.producer.group> <rocketmq.producer.group>organizationGroup</rocketmq.producer.group>
<rocketmq.consumer.vaccine-group>vaccineGroup</rocketmq.consumer.vaccine-group> <rocketmq.consumer.vaccine-group>vaccineGroup</rocketmq.consumer.vaccine-group>
<rocketmq.producer.vaccine-group>vaccineGroup</rocketmq.producer.vaccine-group> <rocketmq.producer.vaccine-group>vaccineGroup</rocketmq.producer.vaccine-group>
<!--小程序前缀-->
<qr.code.pre>https://epdc-yushan.elinkservice.cn/familyInfo/</qr.code.pre>
</properties> </properties>
</profile> </profile>
@ -232,6 +235,9 @@
<rocketmq.producer.group>organizationGroup</rocketmq.producer.group> <rocketmq.producer.group>organizationGroup</rocketmq.producer.group>
<rocketmq.consumer.vaccine-group>vaccineGroup</rocketmq.consumer.vaccine-group> <rocketmq.consumer.vaccine-group>vaccineGroup</rocketmq.consumer.vaccine-group>
<rocketmq.producer.vaccine-group>vaccineGroup</rocketmq.producer.vaccine-group> <rocketmq.producer.vaccine-group>vaccineGroup</rocketmq.producer.vaccine-group>
<!--小程序前缀-->
<qr.code.pre>https://epdc-yushan.elinkservice.cn/familyInfo/</qr.code.pre>
</properties> </properties>
</profile> </profile>
@ -275,6 +281,9 @@
<rocketmq.producer.group>organizationGroup</rocketmq.producer.group> <rocketmq.producer.group>organizationGroup</rocketmq.producer.group>
<rocketmq.consumer.vaccine-group>vaccineGroup</rocketmq.consumer.vaccine-group> <rocketmq.consumer.vaccine-group>vaccineGroup</rocketmq.consumer.vaccine-group>
<rocketmq.producer.vaccine-group>vaccineGroup</rocketmq.producer.vaccine-group> <rocketmq.producer.vaccine-group>vaccineGroup</rocketmq.producer.vaccine-group>
<!--小程序前缀-->
<qr.code.pre>https://epdc-yushan.elinkservice.cn/familyInfo/</qr.code.pre>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>

4
epdc-cloud-custom/src/main/resources/application.yml

@ -123,3 +123,7 @@ hystrix:
ribbon: ribbon:
ReadTimeout: 30000 ReadTimeout: 30000
ConnectTimeout: 30000 ConnectTimeout: 30000
#小程序码生成
qr:
code:
pre: @qr.code.pre@

10
epdc-cloud-vim-yushan/pom.xml

@ -60,6 +60,16 @@
<artifactId>rocketmq-spring-boot-starter</artifactId> <artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version> <version>2.0.3</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies> </dependencies>

29
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;
}
}

171
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<EncodeHintType, Object> 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");
}
}
}

6
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.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.AllDeptDTO; 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.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.SysSimpleDictDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO;
import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO; import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO;
@ -22,7 +23,7 @@ import java.util.List;
* @date 2019/9/5 14:44 * @date 2019/9/5 14:44
*/ */
@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = VimAdminFeignClientFallback.class @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 { public interface VimAdminFeignClient {
@ -48,6 +49,9 @@ public interface VimAdminFeignClient {
@GetMapping("/sys/dept/getParentAndAllDept/{deptId}") @GetMapping("/sys/dept/getParentAndAllDept/{deptId}")
Result<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") String deptId); Result<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") String deptId);
@GetMapping("/sys/dept/getCompleteDept/{gridId}")
Result<CompleteDeptDTO> getCompleteDept(@PathVariable("gridId") String gridId);
/** /**
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.SysPopulationSimpleDictDTO>> * @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.SysPopulationSimpleDictDTO>>
* @Description 获取多个字典值列表 * @Description 获取多个字典值列表

6
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.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.AllDeptDTO; 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.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.SysSimpleDictDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO;
import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO; 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); return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId);
} }
@Override
public Result<CompleteDeptDTO> getCompleteDept(String gridId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getCompleteDept", gridId);
}
@Override @Override
public Result<List<SysPopulationSimpleDictDTO>> listPopulationSimple(SysPopulationSimpleDictFormDTO sysPopulationSimpleDictFormDTO){ public Result<List<SysPopulationSimpleDictDTO>> listPopulationSimple(SysPopulationSimpleDictFormDTO sysPopulationSimpleDictFormDTO){
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listPopulationSimple", sysPopulationSimpleDictFormDTO); return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listPopulationSimple", sysPopulationSimpleDictFormDTO);

60
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; 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.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils; import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result; 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.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; 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.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.EpidemicBuildingUnitDTO;
import com.elink.esua.epdc.dto.personroom.form.HouseQrcodeFormDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO; 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.excel.EpidemicBuildingUnitExcel;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService; import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.http.HttpServletResponse; 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.List;
import java.util.Map; import java.util.Map;
@ -52,6 +65,9 @@ public class BuildingUnitController {
@Autowired @Autowired
private EpidemicBuildingUnitService epidemicBuildingUnitService; private EpidemicBuildingUnitService epidemicBuildingUnitService;
@Autowired
private QrCodeProperties qrCodeProperties;
@GetMapping("page") @GetMapping("page")
public Result<PageData<EpidemicBuildingUnitDTO>> page(@RequestParam Map<String, Object> params) { public Result<PageData<EpidemicBuildingUnitDTO>> page(@RequestParam Map<String, Object> params) {
PageData<EpidemicBuildingUnitDTO> page = epidemicBuildingUnitService.page(params); PageData<EpidemicBuildingUnitDTO> page = epidemicBuildingUnitService.page(params);
@ -103,4 +119,48 @@ public class BuildingUnitController {
return epidemicBuildingUnitService.importEpidemicHouse(file, gridId); 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("生成房屋码失败");
}
}
} }

3
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<EpidemicBuildingUnitEnt
* @date 2022/6/2 15:38 * @date 2022/6/2 15:38
*/ */
List<EpidemicUnitInfoResultDTO> listAllUnitInfo(); List<EpidemicUnitInfoResultDTO> listAllUnitInfo();
Integer getMaxCode();
} }

3
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<EpidemicPlotBuildingEnt
* @date 2022/6/2 15:13 * @date 2022/6/2 15:13
*/ */
List<EpidemicPlotBuildingResultDTO> listAllBuildingInfo(); List<EpidemicPlotBuildingResultDTO> listAllBuildingInfo();
Integer getMaxCode();
} }

1
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<EpidemicPlotBuildi
* @return java.util.List<io.pingyin.modules.personroom.dto.EpidemicPlotBuildingErrorDTO> * @return java.util.List<io.pingyin.modules.personroom.dto.EpidemicPlotBuildingErrorDTO>
*/ */
List<EpidemicPlotBuildingErrorDTO> getErrorExcelList(Map<String, Object> params); List<EpidemicPlotBuildingErrorDTO> getErrorExcelList(Map<String, Object> params);
} }

10
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<EpidemicUnitOwnerEntity> {
* @date 2022/6/6 10:12 * @date 2022/6/6 10:12
*/ */
void deletePhysicalByIdCardAndUnitId(@Param("idCard") String idCard, @Param("unitId") Long unitId); 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);
} }

10
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 streetId;
/**
* 房屋编码
*/
private String roomCode;
/**
* 房屋码(5位数字自增)
*/
private Integer roomMaCode;
} }

4
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 String emergencyPosition;
/**
* 楼栋唯一编码五位数自增
*/
private Integer buildingMaCode;
} }

3
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<EpidemicBuildin
* @date 2022/6/7 9:30 * @date 2022/6/7 9:30
*/ */
Result importEpidemicHouse(MultipartFile file, String gridId); Result importEpidemicHouse(MultipartFile file, String gridId);
int getMaxCode();
} }

2
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicPlotBuildingService.java

@ -83,4 +83,6 @@ public interface EpidemicPlotBuildingService extends CrudService<EpidemicPlotBui
* @date 2022/6/2 15:11 * @date 2022/6/2 15:11
*/ */
List<EpidemicPlotBuildingResultDTO> listAllBuildingInfo(); List<EpidemicPlotBuildingResultDTO> listAllBuildingInfo();
int getMaxCode();
} }

11
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<EpidemicUnitOwnerE
*/ */
void deleteByUnitId(Long unitId); void deleteByUnitId(Long unitId);
/**
* 批量删除
*
* @param idCard
* @return void
* @author generator
* @date 2022-04-09
*/
void deleteByIdCard(String idCard);
/** /**
* 根据身份证和房屋物理删除 * 根据身份证和房屋物理删除
* *

57
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java

@ -30,6 +30,7 @@ import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.IdentityNoUtils; import com.elink.esua.epdc.commons.tools.utils.IdentityNoUtils;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.utils.StreamUtils; import com.elink.esua.epdc.commons.tools.utils.StreamUtils;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO; import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO;
import com.elink.esua.epdc.dto.house.result.EpdcPopulationErrorResultDTO; import com.elink.esua.epdc.dto.house.result.EpdcPopulationErrorResultDTO;
@ -286,6 +287,15 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
return new Result(); return new Result();
} }
@Override
public int getMaxCode() {
Integer maxCode = baseDao.getMaxCode();
if (maxCode == null) {
maxCode = 0;
}
return maxCode;
}
private void saveOrUpdateOwners(List<EpidemicUnitOwnerDTO> owners, Long unitId) { private void saveOrUpdateOwners(List<EpidemicUnitOwnerDTO> owners, Long unitId) {
List<EpidemicUnitOwnerDTO> dtoList = owners.stream().filter(item -> StringUtils.isNotBlank(item.getIdCard())).collect(Collectors.toList()); List<EpidemicUnitOwnerDTO> dtoList = owners.stream().filter(item -> StringUtils.isNotBlank(item.getIdCard())).collect(Collectors.toList());
List<EpidemicUnitOwnerEntity> list = ConvertUtils.sourceToTarget(dtoList, EpidemicUnitOwnerEntity.class); List<EpidemicUnitOwnerEntity> list = ConvertUtils.sourceToTarget(dtoList, EpidemicUnitOwnerEntity.class);
@ -335,7 +345,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
baseResidentInformationUpdateExcel.setSelfIdentityNo(selfIdentityNo); baseResidentInformationUpdateExcel.setSelfIdentityNo(selfIdentityNo);
} }
} }
if (StringUtils.isBlank(plot)||StringUtils.isBlank(buildingNo)||StringUtils.isBlank(unit)||StringUtils.isBlank(roomNo)) { if (StringUtils.isBlank(plot) || StringUtils.isBlank(buildingNo) || StringUtils.isBlank(unit) || StringUtils.isBlank(roomNo)) {
errorInfo += "房屋信息不完整"; errorInfo += "房屋信息不完整";
} }
@ -369,6 +379,9 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
List<EpidemicUserInfoEntity> addList = new ArrayList<>(); List<EpidemicUserInfoEntity> addList = new ArrayList<>();
List<EpidemicUserInfoEntity> updateList = new ArrayList<>(); List<EpidemicUserInfoEntity> updateList = new ArrayList<>();
Result<CompleteDeptDTO> allDeptInfo = adminVimFeignClient.getCompleteDept(parentAndAllDeptDTO.getGridId().toString());
CompleteDeptDTO completeDept = allDeptInfo.getData();
List<EpidemicUserInfoEntity> checkList = epidemicUserInfoService.listByIdCards(baseResidentInformationExcels.stream().map(BaseResidentInformationUpdateExcel::getSelfIdentityNo).collect(Collectors.toList())); List<EpidemicUserInfoEntity> checkList = epidemicUserInfoService.listByIdCards(baseResidentInformationExcels.stream().map(BaseResidentInformationUpdateExcel::getSelfIdentityNo).collect(Collectors.toList()));
for (BaseResidentInformationUpdateExcel baseResidentInformationExcel : baseResidentInformationExcels) { for (BaseResidentInformationUpdateExcel baseResidentInformationExcel : baseResidentInformationExcels) {
@ -401,10 +414,11 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
// 补充人房关系 // 补充人房关系
List<EpidemicPlotBuildingResultDTO> buildingList = epidemicPlotBuildingService.listAllBuildingInfo(); List<EpidemicPlotBuildingResultDTO> buildingList = epidemicPlotBuildingService.listAllBuildingInfo();
int roomCode = getMaxCode();
List<EpidemicUnitInfoResultDTO> unitList = listAllUnitInfo(); List<EpidemicUnitInfoResultDTO> unitList = listAllUnitInfo();
List<EpidemicUnitOwnerEntity> addOwner = new ArrayList<>(); List<EpidemicUnitOwnerEntity> addOwner = new ArrayList<>();
List<EpidemicBuildingUnitEntity> addUnit = new ArrayList<>(); List<EpidemicBuildingUnitEntity> addUnit = new ArrayList<>();
addList.forEach(item -> { for (EpidemicUserInfoEntity item : addList) {
// 只有信息完整的才进行匹配 // 只有信息完整的才进行匹配
if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst(); Optional<EpidemicUnitInfoResultDTO> 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<EpidemicBui
unitEntity.setOwnerName(item.getUserName()); unitEntity.setOwnerName(item.getUserName());
unitEntity.setMobile(item.getMobile()); unitEntity.setMobile(item.getMobile());
unitEntity.setRoomType(NumConstant.ONE_STR); unitEntity.setRoomType(NumConstant.ONE_STR);
roomCode = roomCode + 1;
unitEntity.setRoomMaCode(roomCode);
unitEntity.setRoomCode(getRoomCode(buildingOptional.get().getBuildingMaCode(), roomCode));
unitEntity.setGridId(completeDept.getGridId().toString());
unitEntity.setGridName(completeDept.getGrid());
unitEntity.setCommunityId(completeDept.getCommunityId().toString());
unitEntity.setCommunityName(completeDept.getCommunity());
unitEntity.setStreetId(completeDept.getStreetId().toString());
unitEntity.setStreetName(completeDept.getStreet());
addUnit.add(unitEntity); addUnit.add(unitEntity);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity(); EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard()); entity.setIdCard(item.getIdCard());
@ -436,19 +459,19 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
} }
} }
} }
}); }
updateList.forEach(item -> { for (EpidemicUserInfoEntity item : updateList) {
// 只有信息完整的才进行匹配 // 只有信息完整的才进行匹配
if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst(); Optional<EpidemicUnitInfoResultDTO> 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()) { if (unitOptional.isPresent()) {
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity(); EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard()); entity.setIdCard(item.getIdCard());
entity.setUnitId(unitOptional.get().getUnitId()); entity.setUnitId(unitOptional.get().getUnitId());
entity.setOwnerName(item.getUserName()); entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile()); entity.setMobile(item.getMobile());
// todo del? epidemicUnitOwnerService.deleteByIdCard(item.getIdCard());
addOwner.add(entity); addOwner.add(entity);
} else { } else {
Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst(); Optional<EpidemicPlotBuildingResultDTO> 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<EpidemicBui
unitEntity.setOwnerName(item.getUserName()); unitEntity.setOwnerName(item.getUserName());
unitEntity.setMobile(item.getMobile()); unitEntity.setMobile(item.getMobile());
unitEntity.setRoomType(NumConstant.ONE_STR); unitEntity.setRoomType(NumConstant.ONE_STR);
addUnit.add(unitEntity); roomCode = roomCode + 1;
unitEntity.setRoomMaCode(roomCode);
unitEntity.setRoomCode(getRoomCode(buildingOptional.get().getBuildingMaCode(), roomCode));
unitEntity.setGridId(completeDept.getGridId().toString());
unitEntity.setGridName(completeDept.getGrid());
unitEntity.setCommunityId(completeDept.getCommunityId().toString());
unitEntity.setCommunityName(completeDept.getCommunity());
unitEntity.setStreetId(completeDept.getStreetId().toString());
unitEntity.setStreetName(completeDept.getStreet());
insert(unitEntity);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity(); EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard()); entity.setIdCard(item.getIdCard());
entity.setUnitId(unitEntity.getId()); entity.setUnitId(unitEntity.getId());
entity.setOwnerName(item.getUserName()); entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile()); entity.setMobile(item.getMobile());
// todo del? epidemicUnitOwnerService.deleteByIdCard(item.getIdCard());
addOwner.add(entity); addOwner.add(entity);
} }
} }
} }
}); }
insertBatch(addUnit);
epidemicUnitOwnerService.insertBatch(addOwner); epidemicUnitOwnerService.insertBatch(addOwner);
} }
private String getRoomCode(Integer buildingMaCode, Integer roomMaCode) {
String orgId = "370211010042";
return orgId.concat(String.format("%05d", buildingMaCode).concat(String.format("%05d", roomMaCode)));
}
} }

9
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotBuildingServiceImpl.java

@ -407,6 +407,15 @@ public class EpidemicPlotBuildingServiceImpl extends CrudServiceImpl<EpidemicPlo
return baseDao.listAllBuildingInfo(); return baseDao.listAllBuildingInfo();
} }
@Override
public int getMaxCode() {
Integer maxCode = baseDao.getMaxCode();
if (maxCode == null) {
maxCode = 0;
}
return maxCode;
}
/** /**
* @return void * @return void
* @describe: 创建数据库里不存在的小区 * @describe: 创建数据库里不存在的小区

7
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicUnitOwnerServiceImpl.java

@ -109,6 +109,13 @@ public class EpidemicUnitOwnerServiceImpl extends BaseServiceImpl<EpidemicUnitOw
baseDao.deleteByUnitId(unitId); baseDao.deleteByUnitId(unitId);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByIdCard(String idCard) {
baseDao.deleteByIdCard(idCard);
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deletePhysicalByIdCardAndUnitId(String idCard, Long unitId) { public void deletePhysicalByIdCardAndUnitId(String idCard, Long unitId) {

11
epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicBuildingUnitDao.xml

@ -103,6 +103,7 @@
<select id="selectDetailById" resultType="com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO"> <select id="selectDetailById" resultType="com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO">
SELECT SELECT
bu.*, bu.*,
pb.BUILDING_NAME,
pb.PLOT_ID, pb.PLOT_ID,
pc.PLOT_NAME pc.PLOT_NAME
FROM FROM
@ -127,6 +128,8 @@
SELECT SELECT
u.id AS unitId, u.id AS unitId,
u.UNIT, u.UNIT,
u.ROOM_NO,
u.ROOM_MA_CODE,
b.id AS buildingId, b.id AS buildingId,
b.BUILDING_NAME, b.BUILDING_NAME,
p.id AS plotId, p.id AS plotId,
@ -140,4 +143,12 @@
AND b.DEL_FLAG = '0' AND b.DEL_FLAG = '0'
AND p.DEL_FLAG = '0' AND p.DEL_FLAG = '0'
</select> </select>
<select id="getMaxCode" resultType="java.lang.Integer">
SELECT
MAX( ROOM_MA_CODE )
FROM
epidemic_building_unit
</select>
</mapper> </mapper>

8
epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotBuildingDao.xml

@ -177,6 +177,7 @@
b.id, b.id,
b.BUILDING_NAME, b.BUILDING_NAME,
p.id AS plotId, p.id AS plotId,
b.BUILDING_MA_CODE,
p.PLOT_NAME p.PLOT_NAME
FROM FROM
epidemic_plot_building b epidemic_plot_building b
@ -185,5 +186,10 @@
b.DEL_FLAG = '0' b.DEL_FLAG = '0'
AND p.DEL_FLAG = '0' AND p.DEL_FLAG = '0'
</select> </select>
<select id="getMaxCode" resultType="java.lang.Integer">
SELECT
MAX( BUILDING_MA_CODE )
FROM
epidemic_plot_building
</select>
</mapper> </mapper>

8
epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml

@ -26,6 +26,14 @@
UNIT_ID = #{unitId} UNIT_ID = #{unitId}
</delete> </delete>
<delete id="deleteByIdCard">
DELETE
FROM
epidemic_unit_owner
WHERE
ID_CARD = #{idCard}
</delete>
<delete id="deletePhysicalByIdCardAndUnitId"> <delete id="deletePhysicalByIdCardAndUnitId">
DELETE DELETE
FROM FROM

Loading…
Cancel
Save