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:
commit
2b2a9cad0d
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -61,6 +61,7 @@ public class WareHouseLocationDO extends BaseDO {
|
||||
/**
|
||||
* 物料信息
|
||||
*/
|
||||
@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String skuInfo;
|
||||
/**
|
||||
* 物料批次号
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -113,4 +113,10 @@ public interface HouseLocationService extends IService<WareHouseLocationDO> {
|
||||
* @param list
|
||||
*/
|
||||
void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list);
|
||||
|
||||
/**
|
||||
* 设置库区名称和id为空
|
||||
* @param id
|
||||
*/
|
||||
void updateLocationAreaNameEmptyByAreaId(Long areaId);
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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">
|
||||
|
Loading…
Reference in New Issue
Block a user