From 7c7092b350c0b1c171ec0523ed005221c4c4fcbb Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 1 Apr 2025 15:44:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor(system):=20=E9=87=8D=E6=9E=84=E5=BA=93?= =?UTF-8?q?=E5=8C=BA=E5=92=8C=E7=BA=BF=E5=BA=93=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -简化了库区和线库的创建、更新和删除逻辑 - 优化了点位和库位的处理方式,提高了代码的可读性和效率 - 新增了设置库位区域名称和ID为空的方法 - 调整了机器人状态相关的API,为后续的缓存优化做准备 --- .../api/robot/RobotReactiveStatusApiImpl.java | 8 +++ .../system/api/robot/RobotStatusApiImpl.java | 1 + .../houselocation/WareHouseLocationDO.java | 1 + .../WareHouseLocationMapper.java | 8 ++- .../housearea/HouseAreaServiceImpl.java | 62 +++++++---------- .../houselane/WareHouseLaneServiceImpl.java | 66 +++++++------------ .../houselocation/HouseLocationService.java | 6 ++ .../HouseLocationServiceImpl.java | 5 ++ .../houselocation/WareHouseLocationMapper.xml | 10 +++ 9 files changed, 84 insertions(+), 83 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java index 779bb3b40..e7f1731bc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; @@ -36,6 +37,9 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi { @Resource private RedisUtil redisUtil; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource private RobotWarnMsgService warnMsgService; @@ -56,6 +60,10 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi { String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + data.getMac(); redisUtil.set(floorAreaKey, JSON.toJSONString(data.getFloorZone())); + // -- get 老的数据 - 看有没有 - 有的话 - 对比下 - 如果相同 - 更新hashMap中key的value + // - 如果不相同的话 - 更新当前redis数据 - 然后 - 根据老的数据 去 hashMapRedis 中删除 这个key的数据 + // - 然后插入到 对应的区域的hashMap中 + //机器人异常等级 if (ObjectUtil.isEmpty(data.getErrCode())) { String errorLevelKey = RobotTaskChcheConstant.ROBOT_ERROR_LEVEL + data.getMac(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java index 357be6164..9960a6e79 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotStatusApiImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseLocationDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseLocationDO.java index 86c2f4d5c..fb254d6e1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseLocationDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/houselocation/WareHouseLocationDO.java @@ -61,6 +61,7 @@ public class WareHouseLocationDO extends BaseDO { /** * 物料信息 */ + @TableField(updateStrategy = FieldStrategy.IGNORED) private String skuInfo; /** * 物料批次号 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java index 0d1fec253..72cd11dbd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/houselocation/WareHouseLocationMapper.java @@ -136,4 +136,10 @@ public interface WareHouseLocationMapper extends BaseMapperX oldList = createReqVO.getId() == null ? Collections.emptyList() : - positionMapItemService.getByCondition(new PositionMapConditionDTO() - .setPositionMapId(createReqVO.getPositionMapId()) - .setAreaId(createReqVO.getId()) - .setType(NodeTypeEnum.WARE.getType())); //2.查询目前的地图所有的库位点位列表 - 如果没有的话 - 就设为空列表先 - List list = positionMapItemService.getByCondition(new PositionMapConditionDTO() @@ -143,40 +136,20 @@ public class HouseAreaServiceImpl extends ServiceImpl> allList = CollectionUtils.compareLists(oldList, list, - (oldVal, newVal) -> ObjectUtil.equal(oldVal.getAreaId(), newVal.getAreaId())); - List editList = new ArrayList<>(); - if (CollUtil.isNotEmpty(allList.get(0))) { - List editItemList = allList.get(0); - editItemList.forEach(a -> a.setAreaId(houseArea.getId())); - // -- 新增的 就是更改的 - 需要更新的 - editList.addAll(editItemList); - } - if (CollUtil.isNotEmpty(allList.get(2))) { - //需要删除的就是取消掉的 - List editItemList = allList.get(2); - editItemList.forEach(a -> a.setAreaId(null)); - editList.addAll(allList.get(2)); - } - List wareHouseLocationList = new ArrayList<>(); - editList.forEach(item -> { + for (PositionMapItemDO item : list) { List wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class); - wareHouseLocationDOS.forEach(a -> { - if (item.getAreaId() == null) { - a.setAreaId(null); - a.setAreaName(null); - } else { - a.setAreaId(houseArea.getId()); - a.setAreaName(houseArea.getAreaName()); - } - }); + for (WareHouseLocationDO locationDO : wareHouseLocationDOS) { + locationDO.setAreaId(houseArea.getId()); + locationDO.setAreaName(houseArea.getAreaName()); + locationDO.setSkuInfo(createReqVO.getSkuInfo()); + } wareHouseLocationList.addAll(wareHouseLocationDOS); + item.setAreaId(houseArea.getId()); item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS)); - }); - if (CollUtil.isNotEmpty(editList)) { - positionMapItemService.updateBatchById(editList); + } + if (CollUtil.isNotEmpty(list)) { + positionMapItemService.updateBatchById(list); } if (CollUtil.isNotEmpty(wareHouseLocationList)) { houseLocationService.updateBatchById(wareHouseLocationList); @@ -198,7 +171,20 @@ public class HouseAreaServiceImpl extends ServiceImpl items = positionMapItemService.getByCondition(new PositionMapConditionDTO().setAreaId(id).setPositionMapId(areaDO.getPositionMapId())); + for (PositionMapItemDO item : items) { + item.setAreaId(null); + List wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class); + for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) { + wareHouseLocationDO.setAreaId(null); + wareHouseLocationDO.setAreaName(null); + wareHouseLocationDO.setSkuInfo(null); + } + item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS)); + } + positionMapItemService.updateBatchById(items); + houseLocationService.updateLocationAreaNameEmptyByAreaId(id); +// positionMapItemService.emptyAreaId(areaDO.getPositionMapId(), id); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselane/WareHouseLaneServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselane/WareHouseLaneServiceImpl.java index d4fca1811..262b98bde 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselane/WareHouseLaneServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselane/WareHouseLaneServiceImpl.java @@ -95,15 +95,8 @@ public class WareHouseLaneServiceImpl extends ServiceImpl oldList = createReqVO.getId() == null ? Collections.emptyList() : - positionMapItemService.getByCondition(new PositionMapConditionDTO() - .setPositionMapId(createReqVO.getPositionMapId()) - .setLaneId(createReqVO.getId()) - .setType(NodeTypeEnum.WARE.getType())); - //2.查询目前的点位列表 - 如果没有的话 - 就设为空列表先 - + //查询目前的点位列表 - 如果没有的话 - 就设为空列表先 - List list = positionMapItemService.getByCondition(new PositionMapConditionDTO() .setPositionMapId(createReqVO.getPositionMapId()) .setLaneId(createReqVO.getId()) @@ -123,50 +116,24 @@ public class WareHouseLaneServiceImpl extends ServiceImpl> allList = CollectionUtils.compareLists(oldList, list, - (oldVal, newVal) -> ObjectUtil.equal(oldVal.getLaneId(), newVal.getLaneId())); - List editList = new ArrayList<>(); - if (CollUtil.isNotEmpty(allList.get(0))) { - List editItemList = allList.get(0); - editItemList.forEach(a -> a.setLaneId(houseLane.getId())); - // -- 新增的 就是更改的 - 需要更新的 - editList.addAll(editItemList); - } - if (CollUtil.isNotEmpty(allList.get(1))) { - // -- 需要更新的 - editList.addAll(allList.get(1)); - } - if (CollUtil.isNotEmpty(allList.get(2))) { - //需要删除的就是取消掉的 - List editItemList = allList.get(2); - editItemList.forEach(a -> a.setLaneId(null)); - editList.addAll(allList.get(2)); - } - List wareHouseLocationList = new ArrayList<>(); - editList.forEach(item -> { + for (PositionMapItemDO item : list) { + item.setLaneId(houseLane.getId()); List wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class); - wareHouseLocationDOS.forEach(a -> { - if (item.getLaneId() == null) { - a.setLaneId(null); - a.setLaneName(null); - } else { - a.setLaneId(houseLane.getId()); - a.setLaneName(houseLane.getLaneName()); - } - }); + for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) { + wareHouseLocationDO.setLaneId(houseLane.getId()); + wareHouseLocationDO.setLaneName(houseLane.getLaneName()); + } wareHouseLocationList.addAll(wareHouseLocationDOS); item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS)); - }); - if (CollUtil.isNotEmpty(editList)) { - positionMapItemService.updateBatchById(editList); + } + if (CollUtil.isNotEmpty(list)) { + positionMapItemService.updateBatchById(list); } if (CollUtil.isNotEmpty(wareHouseLocationList)) { houseLocationService.updateBatchById(wareHouseLocationList); } - houseLocationService.updateLocationLaneNameByLaneId(createReqVO.getId(),createReqVO.getLaneName()); + houseLocationService.updateLocationLaneNameByLaneId(createReqVO.getId(), createReqVO.getLaneName()); return new HouseLaneVO().setId(houseLane.getId()).setLaneName(houseLane.getLaneName()); } @@ -174,6 +141,17 @@ public class WareHouseLaneServiceImpl extends ServiceImpl items = positionMapItemService.getByCondition(new PositionMapConditionDTO().setLaneId(id).setPositionMapId(wareHouseLaneDO.getPositionMapId())); + for (PositionMapItemDO item : items) { + item.setLaneId(null); + List wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class); + for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) { + wareHouseLocationDO.setLaneId(null); + wareHouseLocationDO.setLaneName(null); + } + item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS)); + } + positionMapItemService.updateBatchById(items); this.removeById(id); // 点位中包含线库id的数据设为null positionMapItemService.emptyLaneId(wareHouseLaneDO.getPositionMapId(), id); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationService.java index 642e9e4e0..6d5677f2f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationService.java @@ -107,4 +107,10 @@ public interface HouseLocationService extends IService { * @param id */ void updateLocationLaneNameEmptyByLaneId(Long laneId); + + /** + * 设置库区名称和id为空 + * @param id + */ + void updateLocationAreaNameEmptyByAreaId(Long areaId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationServiceImpl.java index 206a7fa2a..7325c00f7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationServiceImpl.java @@ -153,6 +153,11 @@ public class HouseLocationServiceImpl extends ServiceImpl> list) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml index 2e3d2ffd6..0c82c6a5b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/houselocation/WareHouseLocationMapper.xml @@ -524,6 +524,16 @@ where lane_id = #{laneId} + + update + ware_house_location + set + area_name = null, + area_id = null, + sku_info = null + where + area_id = #{areaId} +