Browse Source

Merge remote-tracking branch 'origin/feature/user_house_import' into feature/user_house_import

feature/user_house_import
wanggongfeng 3 years ago
parent
commit
7122194b46
  1. 7
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java
  2. 31
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/AppFamilyController.java
  3. 85
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java
  4. 2
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotBuildingErrorController.java
  5. 11
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java
  6. 11
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java
  7. 25
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java
  8. 120
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java
  9. 26
      epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicBuildingUnitDao.xml
  10. 7
      epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicUnitOwnerDao.xml

7
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java

@ -7,14 +7,15 @@ import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.personroom.EpidemicUnitOwnerDTO; import com.elink.esua.epdc.dto.personroom.EpidemicUnitOwnerDTO;
import com.elink.esua.epdc.dto.personroom.form.BindingFamilyFormDTO; import com.elink.esua.epdc.dto.personroom.form.BindingFamilyFormDTO;
import com.elink.esua.epdc.dto.personroom.form.FamilyMemberInfoFormDTO; import com.elink.esua.epdc.dto.personroom.form.FamilyMemberInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.form.GetMemberListFormDTO; import com.elink.esua.epdc.dto.personroom.form.GetMemberListFormDTO;
import com.elink.esua.epdc.dto.personroom.result.FamilyMemberInfoResultDTO; import com.elink.esua.epdc.dto.personroom.result.FamilyMemberInfoResultDTO;
import com.elink.esua.epdc.vaccine.epidemic.dto.*; import com.elink.esua.epdc.vaccine.epidemic.dto.*;
import com.elink.esua.epdc.vaccine.epidemic.dto.result.*; import com.elink.esua.epdc.vaccine.epidemic.dto.result.EpidemicPageResultDTO;
import com.elink.esua.epdc.vaccine.epidemic.dto.result.EpidemicPageResultV2DTO;
import com.elink.esua.epdc.vaccine.epidemic.dto.result.VaccinationInfoResultDTO;
import com.elink.esua.epdc.vaccine.epidemic.dto.result.VaccinationInfoResultV2DTO;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity; import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity;
import com.elink.esua.epdc.vaccine.vim.dto.VaccinationInfoDTO; import com.elink.esua.epdc.vaccine.vim.dto.VaccinationInfoDTO;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;

31
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/AppFamilyController.java

@ -17,29 +17,18 @@
package com.elink.esua.epdc.vaccine.personroom.controller; package com.elink.esua.epdc.vaccine.personroom.controller;
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; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; 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.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.dto.epidemic.DictOptionDTO; import com.elink.esua.epdc.dto.personroom.form.BindingFamilyFormDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicPlotCoordinateDTO; import com.elink.esua.epdc.dto.personroom.form.FamilyMemberInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.form.*; import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicPlotCoordinateResultDTO; import com.elink.esua.epdc.dto.personroom.form.GetMemberListFormDTO;
import com.elink.esua.epdc.vaccine.epidemic.service.EpidemicUserInfoService; import com.elink.esua.epdc.vaccine.epidemic.service.EpidemicUserInfoService;
import com.elink.esua.epdc.vaccine.personroom.excel.EpidemicPlotCoordinateExcel;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService; import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicPlotCoordinateService;
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 javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/** /**
@ -66,7 +55,7 @@ public class AppFamilyController {
* @Author wanggongfeng * @Author wanggongfeng
*/ */
@GetMapping("getFamilyMember") @GetMapping("getFamilyMember")
public Result getFamilyMember(@RequestBody GetMemberListFormDTO formDTO){ public Result getFamilyMember(@RequestBody GetMemberListFormDTO formDTO) {
//效验数据 //效验数据
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class);
return epidemicUserInfoService.getFamilyMember(formDTO); return epidemicUserInfoService.getFamilyMember(formDTO);
@ -80,7 +69,7 @@ public class AppFamilyController {
* @Author wanggongfeng * @Author wanggongfeng
*/ */
@PostMapping("addFamilyMember") @PostMapping("addFamilyMember")
public Result addFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO){ public Result addFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO) {
//效验数据 //效验数据
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class);
return epidemicUserInfoService.addFamilyMember(formDTO); return epidemicUserInfoService.addFamilyMember(formDTO);
@ -94,7 +83,7 @@ public class AppFamilyController {
* @Author wanggongfeng * @Author wanggongfeng
*/ */
@PostMapping("updateFamilyMember") @PostMapping("updateFamilyMember")
public Result updateFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO){ public Result updateFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO) {
//效验数据 //效验数据
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class);
return epidemicUserInfoService.updateFamilyMember(formDTO); return epidemicUserInfoService.updateFamilyMember(formDTO);
@ -108,7 +97,7 @@ public class AppFamilyController {
* @Author wanggongfeng * @Author wanggongfeng
*/ */
@GetMapping("getHouseInfo") @GetMapping("getHouseInfo")
public Result getHouseInfo(@RequestBody GetHouseInfoFormDTO formDTO){ public Result getHouseInfo(@RequestBody GetHouseInfoFormDTO formDTO) {
//效验数据 //效验数据
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class);
return epidemicBuildingUnitService.getHouseInfo(formDTO); return epidemicBuildingUnitService.getHouseInfo(formDTO);
@ -122,13 +111,11 @@ public class AppFamilyController {
* @Author wanggongfeng * @Author wanggongfeng
*/ */
@PostMapping("bindingFamily") @PostMapping("bindingFamily")
public Result bindingFamily(@RequestBody BindingFamilyFormDTO formDTO){ public Result bindingFamily(@RequestBody BindingFamilyFormDTO formDTO) {
//效验数据 //效验数据
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class);
return epidemicUserInfoService.bindingFamily(formDTO); return epidemicUserInfoService.bindingFamily(formDTO);
} }
} }

85
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java

@ -18,8 +18,6 @@
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;
@ -32,23 +30,15 @@ import com.elink.esua.epdc.config.QrCodeProperties;
import com.elink.esua.epdc.dto.epidemic.DictOptionDTO; import com.elink.esua.epdc.dto.epidemic.DictOptionDTO;
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.form.HouseQrcodeFormDTO;
import com.elink.esua.epdc.dto.personroom.form.HouseQrcodeZipFormDTO;
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;
@ -120,54 +110,21 @@ public class BuildingUnitController {
return epidemicBuildingUnitService.importEpidemicHouse(file, gridId); return epidemicBuildingUnitService.importEpidemicHouse(file, gridId);
} }
/**
* 更新房屋自增序号
*
* @return
*/
@PostMapping("updateMaCode") @PostMapping("updateMaCode")
public Result updateMaCode() { public Result updateMaCode() {
epidemicBuildingUnitService.updateMaCode(); epidemicBuildingUnitService.updateMaCode();
return new Result(); return new Result();
} }
/** @PostMapping("updateErrorRoom")
* @return void public Result updateErrorRoom() {
* @describe: 下载房屋编码 epidemicBuildingUnitService.updateErrorRoom();
* @author wangtong return new Result();
* @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("生成房屋码失败");
}
} }
/** /**
@ -198,6 +155,20 @@ public class BuildingUnitController {
return new Result<List<DictOptionDTO>>().ok(list); return new Result<List<DictOptionDTO>>().ok(list);
} }
/**
* @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);
epidemicBuildingUnitService.createQrCode(formDTO.getId(), response);
}
/** /**
* @return java.lang.String * @return java.lang.String
* @describe: 批量生成房屋的房屋编码和一户一档二维码 * @describe: 批量生成房屋的房屋编码和一户一档二维码
@ -217,10 +188,10 @@ public class BuildingUnitController {
* @date 2022/5/31 17:58 * @date 2022/5/31 17:58
* @params [loginUser, formDTO, response] * @params [loginUser, formDTO, response]
*/ */
@PostMapping(value = "/downloadZip") @PostMapping("downloadZip")
public void downloadZip(HttpServletResponse response) throws Exception { public void downloadZip(@RequestBody HouseQrcodeZipFormDTO formDTO, HttpServletResponse response) throws Exception {
epidemicBuildingUnitService.downloadZip(response); ValidatorUtils.validateEntity(formDTO);
epidemicBuildingUnitService.downloadZip(formDTO, response);
} }
} }

2
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/EpidemicPlotBuildingErrorController.java → epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotBuildingErrorController.java

@ -44,7 +44,7 @@ import java.util.Map;
*/ */
@RestController @RestController
@RequestMapping("epidemicplotbuildingerror") @RequestMapping("epidemicplotbuildingerror")
public class EpidemicPlotBuildingErrorController { public class PlotBuildingErrorController {
@Autowired @Autowired
private EpidemicPlotBuildingErrorService epidemicPlotBuildingErrorService; private EpidemicPlotBuildingErrorService epidemicPlotBuildingErrorService;

11
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicBuildingUnitDao.java

@ -20,8 +20,8 @@ package com.elink.esua.epdc.vaccine.personroom.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.epidemic.DictOptionDTO; import com.elink.esua.epdc.dto.epidemic.DictOptionDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO; import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicPlotBuildingDTO;
import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO; import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.form.HouseQrcodeZipFormDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO;
import com.elink.esua.epdc.dto.personroom.result.HouseInfoResultDTO; import com.elink.esua.epdc.dto.personroom.result.HouseInfoResultDTO;
@ -72,14 +72,14 @@ public interface EpidemicBuildingUnitDao extends BaseDao<EpidemicBuildingUnitEnt
List<EpidemicBuildingUnitDTO> listUnitHasNotUrl(); List<EpidemicBuildingUnitDTO> listUnitHasNotUrl();
/** /**
* 展示所有没有二维码的房屋 * 展示所有包含房屋码的数据
* *
* @param * @param formDTO
* @return java.util.List<io.pingyin.modules.personroom.dto.EpidemicBuildingUnitDTO> * @return java.util.List<io.pingyin.modules.personroom.dto.EpidemicBuildingUnitDTO>
* @author zhy * @author zhy
* @date 2022/4/6 17:22 * @date 2022/4/6 17:22
*/ */
List<EpidemicBuildingUnitDTO> listUnitHasUrl(); List<EpidemicBuildingUnitDTO> listUnitHasCode(HouseQrcodeZipFormDTO formDTO);
/** /**
* 获取详情 * 获取详情
@ -113,6 +113,8 @@ public interface EpidemicBuildingUnitDao extends BaseDao<EpidemicBuildingUnitEnt
Integer getMaxCode(); Integer getMaxCode();
List<EpidemicBuildingUnitEntity> getErrorRoom();
/** /**
* 单元列表下拉框 * 单元列表下拉框
* *
@ -136,6 +138,7 @@ public interface EpidemicBuildingUnitDao extends BaseDao<EpidemicBuildingUnitEnt
/** /**
* 获取房屋信息 * 获取房屋信息
*
* @param formDTO * @param formDTO
* @return * @return
*/ */

11
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicUnitOwnerDao.java

@ -44,6 +44,17 @@ public interface EpidemicUnitOwnerDao extends BaseDao<EpidemicUnitOwnerEntity> {
*/ */
int deleteByUnitId(@Param("unitId") Long unitId); int deleteByUnitId(@Param("unitId") Long unitId);
/**
* 根据单元ID修改
*
* @param unitId
* @param newUnitId
* @return int
* @author zhy
* @date 2022/4/2 14:02
*/
int updateByUnitId(@Param("unitId") Long unitId,@Param("newUnitId") Long newUnitId);
/** /**
* 根据身份证和房屋物理删除 * 根据身份证和房屋物理删除
* *

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

@ -22,8 +22,8 @@ import com.elink.esua.epdc.commons.mybatis.service.CrudService;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.epidemic.DictOptionDTO; import com.elink.esua.epdc.dto.epidemic.DictOptionDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO; import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicPlotBuildingDTO;
import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO; import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.form.HouseQrcodeZipFormDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO;
import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity; import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity;
@ -131,6 +131,16 @@ public interface EpidemicBuildingUnitService extends CrudService<EpidemicBuildin
*/ */
void updateMaCode(); void updateMaCode();
/**
* 更新错误数据
*
* @param
* @return void
* @author zhy
* @date 2022/6/9 17:24
*/
void updateErrorRoom();
/** /**
* 单元列表下拉框 * 单元列表下拉框
* *
@ -175,7 +185,18 @@ public interface EpidemicBuildingUnitService extends CrudService<EpidemicBuildin
* @date 2022/5/31 18:00 * @date 2022/5/31 18:00
* @params [formDTO] * @params [formDTO]
*/ */
void downloadZip(HttpServletResponse response) throws Exception; void downloadZip(HouseQrcodeZipFormDTO formDTO, HttpServletResponse response) throws Exception;
/**
* 实时生成一户一码
*
* @param roomId
* @param response
* @return void
* @author zhy
* @date 2022/6/13 10:21
*/
void createQrCode(String roomId, HttpServletResponse response);
} }

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

@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.CrudServiceImpl; import com.elink.esua.epdc.commons.mybatis.service.impl.CrudServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant;
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.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.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
@ -37,6 +38,7 @@ import com.elink.esua.epdc.dto.house.result.EpdcPopulationErrorResultDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO; import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicUnitOwnerDTO; import com.elink.esua.epdc.dto.personroom.EpidemicUnitOwnerDTO;
import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO; import com.elink.esua.epdc.dto.personroom.form.GetHouseInfoFormDTO;
import com.elink.esua.epdc.dto.personroom.form.HouseQrcodeZipFormDTO;
import com.elink.esua.epdc.dto.personroom.result.*; import com.elink.esua.epdc.dto.personroom.result.*;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserErrorEntity; import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserErrorEntity;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity; import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity;
@ -63,6 +65,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO; 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.awt.image.BufferedImage;
import java.io.*; import java.io.*;
@ -105,9 +108,6 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
@Autowired @Autowired
private VimOssFeignClient ossFeignClient; private VimOssFeignClient ossFeignClient;
//
// @Autowired
// private HouseQRcodeUtils houseQRcodeUtils;
@Autowired @Autowired
private QrCodeProperties qrCodeProperties; private QrCodeProperties qrCodeProperties;
@ -129,6 +129,8 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
@Override @Override
public QueryWrapper<EpidemicBuildingUnitEntity> getWrapper(Map<String, Object> params) { public QueryWrapper<EpidemicBuildingUnitEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP); String id = (String) params.get(FieldConstant.ID_HUMP);
String buildingId = (String) params.get("buildingId");
String unit = (String) params.get("unit");
String roomNo = (String) params.get("roomNo"); String roomNo = (String) params.get("roomNo");
String type = (String) params.get("roomType"); String type = (String) params.get("roomType");
String owner = (String) params.get("ownerName"); String owner = (String) params.get("ownerName");
@ -137,6 +139,8 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
QueryWrapper<EpidemicBuildingUnitEntity> wrapper = new QueryWrapper<>(); QueryWrapper<EpidemicBuildingUnitEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
wrapper.eq(StringUtils.isNotBlank(buildingId), "BUILDING_ID", buildingId);
wrapper.eq(StringUtils.isNotBlank(unit), "UNIT", unit);
wrapper.eq(StringUtils.isNotBlank(roomNo), "ROOM_NO", roomNo); wrapper.eq(StringUtils.isNotBlank(roomNo), "ROOM_NO", roomNo);
wrapper.eq(StringUtils.isNotBlank(type), "ROOM_TYPE", type); wrapper.eq(StringUtils.isNotBlank(type), "ROOM_TYPE", type);
wrapper.eq(StringUtils.isNotBlank(owner), "OWNER_NAME", owner); wrapper.eq(StringUtils.isNotBlank(owner), "OWNER_NAME", owner);
@ -166,6 +170,13 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result saveNew(EpidemicBuildingUnitDTO dto) { public Result saveNew(EpidemicBuildingUnitDTO dto) {
Map<String, Object> params = new HashMap<>(8);
params.put("buildingId", dto.getBuildingId());
params.put("unit", dto.getUnit());
params.put("roomNo", dto.getRoomNo());
if (!list(params).isEmpty()) {
throw new RenException("房屋已存在");
}
checkData(dto); checkData(dto);
EpidemicBuildingUnitEntity entity = ConvertUtils.sourceToTarget(dto, EpidemicBuildingUnitEntity.class); EpidemicBuildingUnitEntity entity = ConvertUtils.sourceToTarget(dto, EpidemicBuildingUnitEntity.class);
insert(entity); insert(entity);
@ -322,6 +333,29 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
return maxCode; return maxCode;
} }
@Override
public void updateErrorRoom() {
List<EpidemicBuildingUnitEntity> list = baseDao.getErrorRoom();
list.forEach(item -> {
log.info("正在处理" + item.getBuildingId() + "/" + item.getUnit() + "/" + item.getRoomNo());
Map<String, Object> params = new HashMap<>();
params.put("buildingId", item.getBuildingId().toString());
params.put("unit", item.getUnit());
params.put("roomNo", item.getRoomNo());
List<EpidemicBuildingUnitDTO> dtos = list(params);
EpidemicBuildingUnitDTO base = dtos.get(0);
dtos.forEach(dto -> {
// 更新关系表的房屋ID
epidemicUnitOwnerDao.updateByUnitId(dto.getId(), base.getId());
if (!dto.getId().equals(base.getId())) {
String[] ids = new String[]{dto.getId().toString()};
// 删除无用的房屋
delete(ids);
}
});
});
}
@Override @Override
public void updateMaCode() { public void updateMaCode() {
Map<String, Object> params = new HashMap<>(4); Map<String, Object> params = new HashMap<>(4);
@ -342,13 +376,13 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
List<EpidemicBuildingUnitDTO> list = baseDao.listUnitHasNotUrl(); List<EpidemicBuildingUnitDTO> list = baseDao.listUnitHasNotUrl();
if (!list.isEmpty()) { if (!list.isEmpty()) {
list.forEach(item -> { list.forEach(item -> {
String url = "";
try { try {
url = createHouseQrcodeUrl(item); String name = item.getBuildingName() + StrConstant.HYPHEN + item.getUnit() + StrConstant.HYPHEN + item.getRoomNo();
String maUrl = createHouseQrCodeUrl(item.getRoomCode(), name);
item.setMaUrl(maUrl);
} catch (Exception e) { } catch (Exception e) {
throw new RenException("房屋码上传失败"); throw new RenException("房屋码上传失败");
} }
item.setMaUrl(url);
}); });
List<EpidemicBuildingUnitEntity> updateList = ConvertUtils.sourceToTarget(list, EpidemicBuildingUnitEntity.class); List<EpidemicBuildingUnitEntity> updateList = ConvertUtils.sourceToTarget(list, EpidemicBuildingUnitEntity.class);
updateBatchById(updateList); updateBatchById(updateList);
@ -357,7 +391,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
} }
@Override @Override
public void downloadZip(HttpServletResponse response) throws Exception { public void downloadZip(HouseQrcodeZipFormDTO formDTO, HttpServletResponse response) throws Exception {
//response //response
response.reset(); response.reset();
//文件的名称 //文件的名称
@ -370,14 +404,14 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename); response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);
ZipOutputStream zip = new ZipOutputStream(response.getOutputStream()); ZipOutputStream zip = new ZipOutputStream(response.getOutputStream());
List<EpidemicBuildingUnitDTO> houseList = baseDao.listUnitHasUrl(); List<EpidemicBuildingUnitDTO> houseList = baseDao.listUnitHasCode(formDTO);
String urlPre = qrCodeProperties.getPre();
for (EpidemicBuildingUnitDTO house : houseList) { for (EpidemicBuildingUnitDTO house : houseList) {
BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(house.getBuildingName() + house.getUnit() + house.getRoomNo(),
qrCodeProperties.getPre() + house.getRoomCode());
try { try {
BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(house.getBuildingName() + StrConstant.HYPHEN + house.getUnit() + StrConstant.HYPHEN + house.getRoomNo(),
urlPre + house.getRoomCode());
byte[] buf = new byte[8192]; byte[] buf = new byte[8192];
int len; int len;
//添加到zip //添加到zip
@ -388,6 +422,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
zip.write(buf, 0, len); zip.write(buf, 0, len);
} }
inputStream.close(); inputStream.close();
zip.closeEntry();
} catch (IOException e) { } catch (IOException e) {
throw new RenException("组装zip失败"); throw new RenException("组装zip失败");
} }
@ -395,6 +430,43 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
zip.close(); zip.close();
} }
@Override
public void createQrCode(String roomId, HttpServletResponse response) {
try {
EpidemicBuildingUnitDetailResultDTO house = get(roomId);
if (null == house) {
throw new RenException("未查到房屋信息");
}
//url组成:小程序地址?房屋编码
String url = qrCodeProperties.getPre() + house.getRoomCode();
String name = house.getBuildingName() + StrConstant.HYPHEN + house.getUnit() + StrConstant.HYPHEN + house.getRoomNo();
BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(name, 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("生成房屋码失败");
}
}
/** /**
* 将BufferedImage转换为InputStream * 将BufferedImage转换为InputStream
* *
@ -570,6 +642,20 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
unitEntity.setStreetId(parentAndAllDeptDTO.getStreetId().toString()); unitEntity.setStreetId(parentAndAllDeptDTO.getStreetId().toString());
unitEntity.setStreetName(parentAndAllDeptDTO.getStreet()); unitEntity.setStreetName(parentAndAllDeptDTO.getStreet());
insert(unitEntity); insert(unitEntity);
// 新增的房屋也要放到待筛选列表,后续循环便可认为该房屋是已存在的
EpidemicUnitInfoResultDTO newUnit = new EpidemicUnitInfoResultDTO();
newUnit.setBuildingId(buildingOptional.get().getId());
newUnit.setBuildingName(buildingOptional.get().getBuildingName());
newUnit.setGridId(buildingOptional.get().getGridId());
newUnit.setPlotId(buildingOptional.get().getPlotId());
newUnit.setPlotName(buildingOptional.get().getPlotName());
newUnit.setUnit(item.getUnit().trim().toUpperCase());
newUnit.setUnitId(unitEntity.getId());
newUnit.setRoomNo(item.getRoomNo().trim().toUpperCase());
newUnit.setRoomMaCode(roomCode);
unitList.add(newUnit);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity(); EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard()); entity.setIdCard(item.getIdCard());
entity.setUnitId(unitEntity.getId()); entity.setUnitId(unitEntity.getId());
@ -647,7 +733,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
public Result<HouseInfoResultDTO> getHouseInfo(GetHouseInfoFormDTO formDTO) { public Result<HouseInfoResultDTO> getHouseInfo(GetHouseInfoFormDTO formDTO) {
HouseInfoResultDTO houseInfoResultDTO = baseDao.getHouseInfo(formDTO); HouseInfoResultDTO houseInfoResultDTO = baseDao.getHouseInfo(formDTO);
if(houseInfoResultDTO != null){ if (houseInfoResultDTO != null) {
List<FamilyMemberInfoResultDTO> members = epidemicUnitOwnerDao.getFamilyMemberInfoByUnitId(houseInfoResultDTO.getId()); List<FamilyMemberInfoResultDTO> members = epidemicUnitOwnerDao.getFamilyMemberInfoByUnitId(houseInfoResultDTO.getId());
houseInfoResultDTO.setMembers(members); houseInfoResultDTO.setMembers(members);
} }
@ -656,11 +742,11 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
return new Result<HouseInfoResultDTO>().ok(houseInfoResultDTO); return new Result<HouseInfoResultDTO>().ok(houseInfoResultDTO);
} }
public String createHouseQrcodeUrl(EpidemicBuildingUnitDTO house) throws Exception { public String createHouseQrCodeUrl(String roomCode, String name) throws Exception {
//url组成:小程序地址?房屋编码 //url组成:小程序地址?房屋编码
String url = qrCodeProperties.getPre() + house.getRoomCode(); String url = qrCodeProperties.getPre() + roomCode;
String fileName = house.getBuildingName() + house.getUnit() + house.getRoomNo() + ".png"; String fileName = name + ".png";
BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(house.getBuildingName() + house.getUnit() + house.getRoomNo(), url); BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(name, url);
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
try { try {
ImageIO.write(image, "png", out); ImageIO.write(image, "png", out);

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

@ -101,10 +101,10 @@
LEFT JOIN epidemic_plot_coordinate p ON b.PLOT_ID = p.id LEFT JOIN epidemic_plot_coordinate p ON b.PLOT_ID = p.id
WHERE WHERE
u.DEL_FLAG = '0' u.DEL_FLAG = '0'
AND u.MA_URL IS NULL AND (u.MA_URL IS NULL OR u.MA_URL = '')
</select> </select>
<select id="listUnitHasUrl" resultType="com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO"> <select id="listUnitHasCode" resultType="com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO">
SELECT SELECT
u.*, u.*,
b.BUILDING_NAME, b.BUILDING_NAME,
@ -115,7 +115,8 @@
LEFT JOIN epidemic_plot_coordinate p ON b.PLOT_ID = p.id LEFT JOIN epidemic_plot_coordinate p ON b.PLOT_ID = p.id
WHERE WHERE
u.DEL_FLAG = '0' u.DEL_FLAG = '0'
AND u.MA_URL IS NOT NULL AND u.GRID_ID = #{gridId}
AND u.ROOM_CODE IS NOT NULL
</select> </select>
<select id="selectByBuildingId" resultType="com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity"> <select id="selectByBuildingId" resultType="com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity">
@ -183,6 +184,25 @@
epidemic_building_unit epidemic_building_unit
</select> </select>
<select id="getErrorRoom" resultType="com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity">
SELECT
BUILDING_ID,
UNIT,
ROOM_NO
FROM
epidemic_building_unit
WHERE
BUILDING_ID IS NOT NULL
AND UNIT IS NOT NULL
AND ROOM_NO IS NOT NULL
GROUP BY
BUILDING_ID,
UNIT,
ROOM_NO
HAVING
COUNT( 0 )>1
</select>
<select id="getUnitOption" resultType="com.elink.esua.epdc.dto.epidemic.DictOptionDTO"> <select id="getUnitOption" resultType="com.elink.esua.epdc.dto.epidemic.DictOptionDTO">
SELECT SELECT
u.UNIT AS dictValue, u.UNIT AS dictValue,

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

@ -26,6 +26,13 @@
UNIT_ID = #{unitId} UNIT_ID = #{unitId}
</delete> </delete>
<update id="updateByUnitId">
UPDATE epidemic_unit_owner
SET UNIT_ID = #{newUnitId}
WHERE
UNIT_ID = #{unitId}
</update>
<delete id="deleteByIdCard"> <delete id="deleteByIdCard">
DELETE DELETE
FROM FROM

Loading…
Cancel
Save