diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java index e7782bf..3dd23eb 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java @@ -1643,6 +1643,14 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl().ok(dto); } @@ -1696,6 +1704,10 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl> getBuildingOptionApp(@RequestBody EpidemicPlotBuildingDTO formDTO) { + log.info("################楼栋############plotId:" + formDTO.getPlotId()); List list = epidemicPlotBuildingService.getBuildingOption(formDTO); return new Result>().ok(list); } /** - * @describe: 导入房屋信息 - * @author wangtong - * @date 2022/4/25 17:01 - * @params [file] - * @return io.pingyin.common.utils.Result - */ + * @return io.pingyin.common.utils.Result + * @describe: 导入房屋信息 + * @author wangtong + * @date 2022/4/25 17:01 + * @params [file] + */ @PostMapping("importBuilding") public Result importBuilding(@RequestParam("file") MultipartFile file) { return epidemicPlotBuildingService.importBuilding(file); diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotCoordinateController.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotCoordinateController.java index 07bdf53..5b6db27 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotCoordinateController.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/PlotCoordinateController.java @@ -31,6 +31,7 @@ import com.elink.esua.epdc.dto.personroom.form.EpidemicPlotCoordinateFormDTO; import com.elink.esua.epdc.dto.personroom.result.EpidemicPlotCoordinateResultDTO; import com.elink.esua.epdc.vaccine.personroom.excel.EpidemicPlotCoordinateExcel; import com.elink.esua.epdc.vaccine.personroom.service.EpidemicPlotCoordinateService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -46,6 +47,7 @@ import java.util.Map; * @author zhangyuan qu@elink-cn.com * @since v1.0.0 2021-07-09 */ +@Slf4j @RestController @RequestMapping("epidemicplotcoordinate") public class PlotCoordinateController { @@ -138,6 +140,7 @@ public class PlotCoordinateController { */ @GetMapping("getPlotOptionApp") public Result> getPlotOptionApp(@RequestBody EpidemicPlotCoordinateDTO formDTO) { + log.info("###############小区#############gridId:"+formDTO.getGridId()); List list = epidemicPlotCoordinateService.getPlotOption(formDTO); return new Result>().ok(list); } @@ -168,5 +171,15 @@ public class PlotCoordinateController { return epidemicPlotCoordinateService.importExcel(file); } + /** + * 更新房屋自增序号 + * + * @return + */ + @PostMapping("updateMaCode") + public Result updateMaCode() { + epidemicPlotCoordinateService.updateMaCode(); + return new Result(); + } } 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 3b2661f..2cce1be 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 @@ -111,7 +111,11 @@ public interface EpidemicBuildingUnitDao extends BaseDao listAllUnitInfo(@Param("gridId") String gridId); - Integer getMaxCode(); + Integer getRoomMaxCode(@Param("buildingId") Long buildingId, @Param("unit") String unit); + + Integer getUnitMaxCode(@Param("buildingId") Long buildingId); + + Integer getUnitCode(@Param("buildingId") Long buildingId, @Param("unit") String unit); List getErrorRoom(); diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java index 7e7ca6c..e11df4a 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotBuildingDao.java @@ -142,6 +142,6 @@ public interface EpidemicPlotBuildingDao extends BaseDao listAllBuildingInfo(@Param("gridId") String gridId); - Integer getMaxCode(); + Integer getMaxCode(@Param("plotId") Long plotId); } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotCoordinateDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotCoordinateDao.java index 3ce4a4b..22a36f0 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotCoordinateDao.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/dao/EpidemicPlotCoordinateDao.java @@ -100,4 +100,7 @@ public interface EpidemicPlotCoordinateDao extends BaseDao */ List getListByGridId(@Param("gridId") String gridId); + + Integer getMaxCode(); + } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java index 85b0219..3796b9c 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicBuildingUnitEntity.java @@ -181,6 +181,11 @@ public class EpidemicBuildingUnitEntity extends BasePingyinEntity { */ private Integer roomMaCode; + /** + * 房屋码(5位数字自增) + */ + private Integer unitMaCode; + /** * 二维码 */ diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotCoordinateEntity.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotCoordinateEntity.java index e5698f6..7154d29 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotCoordinateEntity.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/entity/EpidemicPlotCoordinateEntity.java @@ -102,4 +102,9 @@ public class EpidemicPlotCoordinateEntity extends BasePingyinEntity { */ private String introduce; + /** + * 自增编码 + */ + private Integer plotMaCode; + } 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 75e4576..760ea57 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 @@ -23,6 +23,7 @@ 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.form.GetHouseInfoFormDTO; +import com.elink.esua.epdc.dto.personroom.form.HouseInfoFormDTO; 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; @@ -119,7 +120,17 @@ public interface EpidemicBuildingUnitService extends CrudService page(Map params) { IPage page = getPage(params); @@ -178,6 +184,13 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl list = baseDao.getErrorRoom(); @@ -362,13 +389,59 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl list = baseDao.selectList(getWrapper(params)); if (!list.isEmpty()) { - for (int i = 0; i < list.size(); i++) { - list.get(i).setRoomMaCode(i + 1); + for (EpidemicBuildingUnitEntity epidemicBuildingUnitEntity : list) { + if (epidemicBuildingUnitEntity.getBuildingId() != null && StringUtils.isNotBlank(epidemicBuildingUnitEntity.getUnit())) { + updateUnitMaCode(epidemicBuildingUnitEntity); + if (StringUtils.isNotBlank(epidemicBuildingUnitEntity.getRoomNo())) { + updateRoomMaCode(epidemicBuildingUnitEntity); + } + } } updateBatchById(list); } } + private void updateUnitMaCode(EpidemicBuildingUnitEntity entity) { + String key = RedisKeys.getMaUnitCodeKey(entity.getBuildingId().toString(), entity.getUnit()); + String nextKey = RedisKeys.getMaUnitNextCodeKey(entity.getBuildingId().toString()); + Object obj = redisUtils.get(key); + Object nextObj = redisUtils.get(nextKey); + if (null != obj) { + int maCodeCache = (int) obj; + entity.setUnitMaCode(maCodeCache); + redisUtils.set(key, maCodeCache, RedisUtils.HOUR_ONE_EXPIRE); + return; + } + if (null != nextObj) { + int maCodeCache = (int) nextObj; + entity.setUnitMaCode(maCodeCache); + redisUtils.set(key, maCodeCache, RedisUtils.HOUR_ONE_EXPIRE); + redisUtils.set(nextKey, maCodeCache + 1, RedisUtils.HOUR_ONE_EXPIRE); + return; + } + + int maCode = getUnitNewCode(entity.getBuildingId(), entity.getUnit()); + entity.setUnitMaCode(maCode); + redisUtils.set(key, maCode, RedisUtils.HOUR_ONE_EXPIRE); + redisUtils.set(nextKey, maCode + 1, RedisUtils.HOUR_ONE_EXPIRE); + } + + private void updateRoomMaCode(EpidemicBuildingUnitEntity entity) { + String key = RedisKeys.getMaRoomCodeKey(entity.getBuildingId().toString(), entity.getUnit()); + Object obj = redisUtils.get(key); + if (null != obj) { + int maCodeCache = (int) obj; + maCodeCache = maCodeCache + 1; + entity.setRoomMaCode(maCodeCache); + redisUtils.set(key, maCodeCache, RedisUtils.HOUR_ONE_EXPIRE); + return; + } + int maCode = getRoomMaxCode(entity.getBuildingId(), entity.getUnit()); + maCode = maCode + 1; + entity.setRoomMaCode(maCode); + redisUtils.set(key, maCode, RedisUtils.HOUR_ONE_EXPIRE); + } + @Override public Result createBatchHouseCodeAndUrl() { epidemicPlotBuildingService.updateMaCode(); @@ -608,7 +681,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl unitList = listAllUnitInfo(parentAndAllDeptDTO.getGrid()); List addOwner = new ArrayList<>(); for (EpidemicUserInfoEntity item : addList) { @@ -632,6 +705,9 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl().ok(houseInfoResultDTO); } + @Override + public Result updateHouseInfo(HouseInfoFormDTO formDTO) { + EpidemicBuildingUnitEntity entity = ConvertUtils.sourceToTarget(formDTO, EpidemicBuildingUnitEntity.class); + baseDao.updateById(entity); + return new Result(); + } + public String createHouseQrCodeUrl(String roomCode, String name) throws Exception { //url组成:小程序地址?房屋编码 String url = qrCodeProperties.getPre() + roomCode; diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotBuildingServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotBuildingServiceImpl.java index cc508b8..e5fd88b 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotBuildingServiceImpl.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotBuildingServiceImpl.java @@ -28,6 +28,8 @@ import com.elink.esua.epdc.commons.tools.constant.StrConstant; import com.elink.esua.epdc.commons.tools.exception.ErrorCode; 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.redis.RedisKeys; +import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.*; import com.elink.esua.epdc.dto.AllDeptDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO; @@ -88,6 +90,9 @@ public class EpidemicPlotBuildingServiceImpl extends CrudServiceImpl page(Map params) { IPage page = getPage(params); @@ -105,12 +110,14 @@ public class EpidemicPlotBuildingServiceImpl extends CrudServiceImpl wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); wrapper.eq(StringUtils.isNotBlank(name), "BUILDING_NAME", name); wrapper.eq(StringUtils.isNotBlank(type), "BUILDING_TYPE", type); + wrapper.eq(plotId != null, "PLOT_ID", plotId); wrapper.eq(StringUtils.isNotBlank(buildingMaCode), "BUILDING_MA_CODE", buildingMaCode); return wrapper; @@ -139,8 +146,11 @@ public class EpidemicPlotBuildingServiceImpl extends CrudServiceImpl list = baseDao.selectList(getWrapper(params)); if (!list.isEmpty()) { - for (int i = 0; i < list.size(); i++) { - list.get(i).setBuildingMaCode(i + 1); + for (EpidemicPlotBuildingEntity entity : list) { + // 没有绑定楼栋的没有这个码 + if (entity.getPlotId() != null) { + updateBuildingMaCode(entity); + } } updateBatchById(list); } } + private void updateBuildingMaCode(EpidemicPlotBuildingEntity entity) { + String key = RedisKeys.getMaBuildingCodeKey(entity.getPlotId().toString()); + Object obj = redisUtils.get(key); + if (null != obj) { + int maCodeCache = (int) obj; + maCodeCache = maCodeCache + 1; + entity.setBuildingMaCode(maCodeCache); + redisUtils.set(key, maCodeCache, RedisUtils.HOUR_ONE_EXPIRE); + return; + } + int maCode = getMaxCode(entity.getPlotId()); + maCode = maCode + 1; + entity.setBuildingMaCode(maCode); + redisUtils.set(key, maCode, RedisUtils.HOUR_ONE_EXPIRE); + } + /** * @return void * @describe: 创建数据库里不存在的小区 diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java index d2be91e..661e875 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java +++ b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java @@ -45,6 +45,7 @@ import com.elink.esua.epdc.dto.personroom.result.EpidemicPlotCoordinateResultDTO import com.elink.esua.epdc.vaccine.feign.VimAdminFeignClient; import com.elink.esua.epdc.vaccine.personroom.dao.EpidemicPlotBuildingDao; import com.elink.esua.epdc.vaccine.personroom.dao.EpidemicPlotCoordinateDao; +import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity; import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicPlotCoordinateEntity; import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicPlotCoordinateErrorEntity; import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicPlotGridEntity; @@ -97,7 +98,7 @@ public class EpidemicPlotCoordinateServiceImpl extends CrudServiceImpl page(Map params) { IPage page = getPage(params); List list = baseDao.getPlotPage(params); - list.forEach(item->{ + list.forEach(item -> { }); return new PageData<>(list, page.getTotal()); @@ -120,6 +121,7 @@ public class EpidemicPlotCoordinateServiceImpl extends CrudServiceImpl wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); wrapper.like(StringUtils.isNotBlank(streetName), "STREET_NAME", streetName); @@ -129,6 +131,7 @@ public class EpidemicPlotCoordinateServiceImpl extends CrudServiceImpl params = new HashMap<>(2); params.put("plotId", id); List relation = epidemicPlotGridService.list(params); - dto.setGridIds(relation.stream().map(EpidemicPlotGridDTO::getGridId).collect(Collectors.toList())); - + if (relation != null && relation.size() > 0) { + dto.setGridIds(relation.stream().map(EpidemicPlotGridDTO::getGridId).collect(Collectors.toList())); + } return dto; } @@ -162,10 +166,11 @@ public class EpidemicPlotCoordinateServiceImpl extends CrudServiceImpl lists = epidemicPlotCoordinateDao.selectList(wrapper); if (lists.isEmpty()) { + int maCode = getMaxCode(); + dto.setPlotMaCode(maCode); EpidemicPlotCoordinateEntity entity = ConvertUtils.sourceToTarget(dto, EpidemicPlotCoordinateEntity.class); insert(entity); saveOrUpdateRelation(entity.getId(), dto.getGridIds()); -// epidemicUserInoutRecordService.updatePositionInfo(entity); return new Result(); } else { return new Result().error("该小区已存在"); @@ -340,6 +345,27 @@ public class EpidemicPlotCoordinateServiceImpl extends CrudServiceImpl params = new HashMap<>(4); + params.put("plotMaCode", "0"); + List list = baseDao.selectList(getWrapper(params)); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + list.get(i).setPlotMaCode(i + 1); + } + updateBatchById(list); + } + } /** * 更新小区网格关系 diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml index b519b17..78f006a 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml +++ b/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml @@ -701,6 +701,7 @@ from epidemic_user_inout_record uir where uir.DEL_FLAG = '0' and uir.ID_CARD = #{idCard} + order by uir.ID limit 1 ) ur on ur.ID_CARD = ui.ID_CARD where ui.DEL_FLAG = '0' 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 e3f36ac..9f21b4c 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 @@ -177,11 +177,41 @@ - SELECT MAX( ROOM_MA_CODE ) FROM epidemic_building_unit + WHERE + DEL_FLAG = '0' + + AND BUILDING_ID = #{buildingId} + + + AND UNIT = #{unit} + + + + + + SELECT u.ID AS dictValue, - u.ROOM_NO AS dictName + u.ROOM_NO AS dictName, + u.ROOM_CODE FROM epidemic_building_unit u WHERE u.DEL_FLAG = '0' @@ -235,9 +266,13 @@ @@ -195,5 +195,8 @@ MAX( BUILDING_MA_CODE ) FROM epidemic_plot_building + WHERE + DEL_FLAG = '0' AND + PLOT_ID = #{plotId} diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotCoordinateDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotCoordinateDao.xml index f51ed2b..8fd927e 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotCoordinateDao.xml +++ b/epdc-cloud-vim-yushan/src/main/resources/mapper/personroom/EpidemicPlotCoordinateDao.xml @@ -109,18 +109,16 @@ pc.PLOT_NAME AS dictName from epidemic_plot_coordinate pc LEFT JOIN epidemic_plot_grid pg ON pc.id = pg.PLOT_ID - - - pc.STREET_ID = #{streetId} - - - and pc.COMMUNITY_ID = #{communityId} - - - and pg.GRID_ID = #{gridId} - - and pc.DEL_FLAG = '0' - + where pc.DEL_FLAG = '0' + + and pc.STREET_ID = #{streetId} + + + and pc.COMMUNITY_ID = #{communityId} + + + and pg.GRID_ID = #{gridId} + +