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 dc240a53d..81b17c1dc 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 @@ -113,4 +113,10 @@ public interface HouseLocationService extends IService { * @param list */ void updateHouseLocationList(List list); + + /** + * 设置库区名称和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 67e418ba6..710675714 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 @@ -179,6 +179,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} +