Merge branch 'dev' into cbs

# Conflicts:
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/houselocation/HouseLocationServiceImpl.java
This commit is contained in:
cbs 2025-04-01 16:10:54 +08:00
commit 2b2a9cad0d
9 changed files with 84 additions and 83 deletions

View File

@ -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();

View File

@ -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;

View File

@ -61,6 +61,7 @@ public class WareHouseLocationDO extends BaseDO {
/**
* 物料信息
*/
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String skuInfo;
/**
* 物料批次号

View File

@ -136,4 +136,10 @@ public interface WareHouseLocationMapper extends BaseMapperX<WareHouseLocationDO
* @param laneId
*/
void updateLocationLaneNameEmptyByLaneId(@Param("laneId") Long laneId);
}
/**
* 设置库位的区域id和名称为空
* @param areaId
*/
void updateLocationAreaNameEmptyByAreaId(@Param("areaId") Long areaId);
}

View File

@ -121,13 +121,6 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
}
HouseAreaDO houseArea = BeanUtil.copyProperties(createReqVO, HouseAreaDO.class);
houseAreaMapper.insertOrUpdate(houseArea);
// -- 先判定这些点位是否在同一区域内 - 如果不在则提示 哪些点位不在同一区域内
//1.获取原该线库绑定的点位列表
List<PositionMapItemDO> oldList = createReqVO.getId() == null ? Collections.emptyList() :
positionMapItemService.getByCondition(new PositionMapConditionDTO()
.setPositionMapId(createReqVO.getPositionMapId())
.setAreaId(createReqVO.getId())
.setType(NodeTypeEnum.WARE.getType()));
//2.查询目前的地图所有的库位点位列表 - 如果没有的话 - 就设为空列表先 -
List<PositionMapItemDO> list = positionMapItemService.getByCondition(new PositionMapConditionDTO()
@ -143,40 +136,20 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
throw exception(THERE_ARE_ALREADY_STORAGE_LOCATIONS_IN_OTHER_STORAGE_AREAS);
}
// -- 这里去判断更新点位的线库信息
List<List<PositionMapItemDO>> allList = CollectionUtils.compareLists(oldList, list,
(oldVal, newVal) -> ObjectUtil.equal(oldVal.getAreaId(), newVal.getAreaId()));
List<PositionMapItemDO> editList = new ArrayList<>();
if (CollUtil.isNotEmpty(allList.get(0))) {
List<PositionMapItemDO> editItemList = allList.get(0);
editItemList.forEach(a -> a.setAreaId(houseArea.getId()));
// -- 新增的 就是更改的 - 需要更新的
editList.addAll(editItemList);
}
if (CollUtil.isNotEmpty(allList.get(2))) {
//需要删除的就是取消掉的
List<PositionMapItemDO> editItemList = allList.get(2);
editItemList.forEach(a -> a.setAreaId(null));
editList.addAll(allList.get(2));
}
List<WareHouseLocationDO> wareHouseLocationList = new ArrayList<>();
editList.forEach(item -> {
for (PositionMapItemDO item : list) {
List<WareHouseLocationDO> 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<HouseAreaMapper, HouseArea
this.removeById(id);
//获取当前库区所对应的地图
// 点位中包含库区id的数据设为null
positionMapItemService.emptyAreaId(areaDO.getPositionMapId(), id);
List<PositionMapItemDO> items = positionMapItemService.getByCondition(new PositionMapConditionDTO().setAreaId(id).setPositionMapId(areaDO.getPositionMapId()));
for (PositionMapItemDO item : items) {
item.setAreaId(null);
List<WareHouseLocationDO> 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);
}
}

View File

@ -95,15 +95,8 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
}
WareHouseLaneDO houseLane = BeanUtil.copyProperties(createReqVO, WareHouseLaneDO.class);
houseLaneMapper.insertOrUpdate(houseLane);
// -- 先判定这些点位是否在同一区域内 - 如果不在则提示 哪些点位不在同一区域内
//1.获取原该线库绑定的点位列表
List<PositionMapItemDO> oldList = createReqVO.getId() == null ? Collections.emptyList() :
positionMapItemService.getByCondition(new PositionMapConditionDTO()
.setPositionMapId(createReqVO.getPositionMapId())
.setLaneId(createReqVO.getId())
.setType(NodeTypeEnum.WARE.getType()));
//2.查询目前的点位列表 - 如果没有的话 - 就设为空列表先 -
//查询目前的点位列表 - 如果没有的话 - 就设为空列表先 -
List<PositionMapItemDO> list = positionMapItemService.getByCondition(new PositionMapConditionDTO()
.setPositionMapId(createReqVO.getPositionMapId())
.setLaneId(createReqVO.getId())
@ -123,50 +116,24 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
throw exception(THE_LINE_LIBRARY_POINTS_ARE_NOT_LOCATED_IN_THE_SAME_AREA);
}
}
// -- 这里去判断更新点位的线库信息
List<List<PositionMapItemDO>> allList = CollectionUtils.compareLists(oldList, list,
(oldVal, newVal) -> ObjectUtil.equal(oldVal.getLaneId(), newVal.getLaneId()));
List<PositionMapItemDO> editList = new ArrayList<>();
if (CollUtil.isNotEmpty(allList.get(0))) {
List<PositionMapItemDO> 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<PositionMapItemDO> editItemList = allList.get(2);
editItemList.forEach(a -> a.setLaneId(null));
editList.addAll(allList.get(2));
}
List<WareHouseLocationDO> wareHouseLocationList = new ArrayList<>();
editList.forEach(item -> {
for (PositionMapItemDO item : list) {
item.setLaneId(houseLane.getId());
List<WareHouseLocationDO> 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<WareHouseLaneMapper, W
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
WareHouseLaneDO wareHouseLaneDO = this.getById(id);
List<PositionMapItemDO> items = positionMapItemService.getByCondition(new PositionMapConditionDTO().setLaneId(id).setPositionMapId(wareHouseLaneDO.getPositionMapId()));
for (PositionMapItemDO item : items) {
item.setLaneId(null);
List<WareHouseLocationDO> 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);

View File

@ -113,4 +113,10 @@ public interface HouseLocationService extends IService<WareHouseLocationDO> {
* @param list
*/
void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list);
/**
* 设置库区名称和id为空
* @param id
*/
void updateLocationAreaNameEmptyByAreaId(Long areaId);
}

View File

@ -179,6 +179,11 @@ public class HouseLocationServiceImpl extends ServiceImpl<WareHouseLocationMappe
houseLocationMapper.updateLocationLaneNameEmptyByLaneId(laneId);
}
@Override
public void updateLocationAreaNameEmptyByAreaId(Long areaId) {
houseLocationMapper.updateLocationAreaNameEmptyByAreaId(areaId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list) {

View File

@ -524,6 +524,16 @@
where
lane_id = #{laneId}
</update>
<update id="updateLocationAreaNameEmptyByAreaId">
update
ware_house_location
set
area_name = null,
area_id = null,
sku_info = null
where
area_id = #{areaId}
</update>
<select id="selectByTypeAndId" resultMap="BaseResultMap">