diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java index 6de01a2..8b25514 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java +++ b/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.form.BindingFamilyFormDTO; 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.result.FamilyMemberInfoResultDTO; 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.vim.dto.VaccinationInfoDTO; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; import java.util.List; diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/AppFamilyController.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/AppFamilyController.java index cf4840a..193af00 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/AppFamilyController.java +++ b/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; -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.validator.AssertUtils; 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.dto.epidemic.DictOptionDTO; -import com.elink.esua.epdc.dto.personroom.EpidemicPlotCoordinateDTO; -import com.elink.esua.epdc.dto.personroom.form.*; -import com.elink.esua.epdc.dto.personroom.result.EpidemicPlotCoordinateResultDTO; +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.GetHouseInfoFormDTO; +import com.elink.esua.epdc.dto.personroom.form.GetMemberListFormDTO; 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.EpidemicPlotCoordinateService; import org.springframework.beans.factory.annotation.Autowired; 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 */ @GetMapping("getFamilyMember") - public Result getFamilyMember(@RequestBody GetMemberListFormDTO formDTO){ + public Result getFamilyMember(@RequestBody GetMemberListFormDTO formDTO) { //效验数据 ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); return epidemicUserInfoService.getFamilyMember(formDTO); @@ -80,7 +69,7 @@ public class AppFamilyController { * @Author wanggongfeng */ @PostMapping("addFamilyMember") - public Result addFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO){ + public Result addFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO) { //效验数据 ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); return epidemicUserInfoService.addFamilyMember(formDTO); @@ -94,7 +83,7 @@ public class AppFamilyController { * @Author wanggongfeng */ @PostMapping("updateFamilyMember") - public Result updateFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO){ + public Result updateFamilyMember(@RequestBody FamilyMemberInfoFormDTO formDTO) { //效验数据 ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); return epidemicUserInfoService.updateFamilyMember(formDTO); @@ -108,7 +97,7 @@ public class AppFamilyController { * @Author wanggongfeng */ @GetMapping("getHouseInfo") - public Result getHouseInfo(@RequestBody GetHouseInfoFormDTO formDTO){ + public Result getHouseInfo(@RequestBody GetHouseInfoFormDTO formDTO) { //效验数据 ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); return epidemicBuildingUnitService.getHouseInfo(formDTO); @@ -122,13 +111,11 @@ public class AppFamilyController { * @Author wanggongfeng */ @PostMapping("bindingFamily") - public Result bindingFamily(@RequestBody BindingFamilyFormDTO formDTO){ + public Result bindingFamily(@RequestBody BindingFamilyFormDTO formDTO) { //效验数据 ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); return epidemicUserInfoService.bindingFamily(formDTO); } - - } 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 1c6e857..e119d05 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,8 +18,6 @@ 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; @@ -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.personroom.EpidemicBuildingUnitDTO; 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.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; @@ -120,54 +110,21 @@ public class BuildingUnitController { return epidemicBuildingUnitService.importEpidemicHouse(file, gridId); } + /** + * 更新房屋自增序号 + * + * @return + */ @PostMapping("updateMaCode") public Result updateMaCode() { epidemicBuildingUnitService.updateMaCode(); return new Result(); } - /** - * @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("生成房屋码失败"); - } + @PostMapping("updateErrorRoom") + public Result updateErrorRoom() { + epidemicBuildingUnitService.updateErrorRoom(); + return new Result(); } /** @@ -198,6 +155,20 @@ public class BuildingUnitController { return new Result>().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 * @describe: 批量生成房屋的房屋编码和一户一档二维码 @@ -217,10 +188,10 @@ public class BuildingUnitController { * @date 2022/5/31 17:58 * @params [loginUser, formDTO, response] */ - @PostMapping(value = "/downloadZip") - public void downloadZip(HttpServletResponse response) throws Exception { - epidemicBuildingUnitService.downloadZip(response); - + @PostMapping("downloadZip") + public void downloadZip(@RequestBody HouseQrcodeZipFormDTO formDTO, HttpServletResponse response) throws Exception { + ValidatorUtils.validateEntity(formDTO); + epidemicBuildingUnitService.downloadZip(formDTO, response); } } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/EpidemicPlotBuildingErrorController.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotBuildingErrorController.java similarity index 98% rename from epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/EpidemicPlotBuildingErrorController.java rename to epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotBuildingErrorController.java index f7c451d..b86e6a7 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/EpidemicPlotBuildingErrorController.java +++ b/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 @RequestMapping("epidemicplotbuildingerror") -public class EpidemicPlotBuildingErrorController { +public class PlotBuildingErrorController { @Autowired private EpidemicPlotBuildingErrorService epidemicPlotBuildingErrorService; 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 7f58b42..3b2661f 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 @@ -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.dto.epidemic.DictOptionDTO; 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.HouseQrcodeZipFormDTO; 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.HouseInfoResultDTO; @@ -72,14 +72,14 @@ public interface EpidemicBuildingUnitDao extends BaseDao listUnitHasNotUrl(); /** - * 展示所有没有二维码的房屋 + * 展示所有包含房屋码的数据 * - * @param + * @param formDTO * @return java.util.List * @author zhy * @date 2022/4/6 17:22 */ - List listUnitHasUrl(); + List listUnitHasCode(HouseQrcodeZipFormDTO formDTO); /** * 获取详情 @@ -113,6 +113,8 @@ public interface EpidemicBuildingUnitDao extends BaseDao getErrorRoom(); + /** * 单元列表下拉框 * @@ -136,6 +138,7 @@ public interface EpidemicBuildingUnitDao extends BaseDao { */ 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); + /** * 根据身份证和房屋物理删除 * 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 9f55df7..75e4576 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 @@ -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.dto.epidemic.DictOptionDTO; 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.HouseQrcodeZipFormDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO; import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity; @@ -131,6 +131,16 @@ public interface EpidemicBuildingUnitService extends CrudService getWrapper(Map params) { 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 type = (String) params.get("roomType"); String owner = (String) params.get("ownerName"); @@ -137,6 +139,8 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl wrapper = new QueryWrapper<>(); 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(type), "ROOM_TYPE", type); wrapper.eq(StringUtils.isNotBlank(owner), "OWNER_NAME", owner); @@ -166,6 +170,13 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl 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); EpidemicBuildingUnitEntity entity = ConvertUtils.sourceToTarget(dto, EpidemicBuildingUnitEntity.class); insert(entity); @@ -322,6 +333,29 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl list = baseDao.getErrorRoom(); + list.forEach(item -> { + log.info("正在处理" + item.getBuildingId() + "/" + item.getUnit() + "/" + item.getRoomNo()); + Map params = new HashMap<>(); + params.put("buildingId", item.getBuildingId().toString()); + params.put("unit", item.getUnit()); + params.put("roomNo", item.getRoomNo()); + List 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 public void updateMaCode() { Map params = new HashMap<>(4); @@ -342,13 +376,13 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl list = baseDao.listUnitHasNotUrl(); if (!list.isEmpty()) { list.forEach(item -> { - String url = ""; 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) { throw new RenException("房屋码上传失败"); } - item.setMaUrl(url); }); List updateList = ConvertUtils.sourceToTarget(list, EpidemicBuildingUnitEntity.class); updateBatchById(updateList); @@ -357,7 +391,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl getHouseInfo(GetHouseInfoFormDTO formDTO) { HouseInfoResultDTO houseInfoResultDTO = baseDao.getHouseInfo(formDTO); - if(houseInfoResultDTO != null){ + if (houseInfoResultDTO != null) { List members = epidemicUnitOwnerDao.getFamilyMemberInfoByUnitId(houseInfoResultDTO.getId()); houseInfoResultDTO.setMembers(members); } @@ -656,11 +742,11 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl().ok(houseInfoResultDTO); } - public String createHouseQrcodeUrl(EpidemicBuildingUnitDTO house) throws Exception { + public String createHouseQrCodeUrl(String roomCode, String name) throws Exception { //url组成:小程序地址?房屋编码 - String url = qrCodeProperties.getPre() + house.getRoomCode(); - String fileName = house.getBuildingName() + house.getUnit() + house.getRoomNo() + ".png"; - BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(house.getBuildingName() + house.getUnit() + house.getRoomNo(), url); + String url = qrCodeProperties.getPre() + roomCode; + String fileName = name + ".png"; + BufferedImage image = HouseQRcodeUtils.drawHouseQRImage(name, url); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { ImageIO.write(image, "png", out); diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicBuildingUnitDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicBuildingUnitDao.xml index cc9feff..99c44a9 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicBuildingUnitDao.xml +++ b/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 WHERE u.DEL_FLAG = '0' - AND u.MA_URL IS NULL + AND (u.MA_URL IS NULL OR u.MA_URL = '') - SELECT u.*, b.BUILDING_NAME, @@ -115,7 +115,8 @@ LEFT JOIN epidemic_plot_coordinate p ON b.PLOT_ID = p.id WHERE u.DEL_FLAG = '0' - AND u.MA_URL IS NOT NULL + AND u.GRID_ID = #{gridId} + AND u.ROOM_CODE IS NOT NULL + +