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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -36,6 +37,9 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RedisUtil redisUtil;
|
private RedisUtil redisUtil;
|
||||||
|
@Resource
|
||||||
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RobotWarnMsgService warnMsgService;
|
private RobotWarnMsgService warnMsgService;
|
||||||
@ -56,6 +60,10 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi {
|
|||||||
String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + data.getMac();
|
String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + data.getMac();
|
||||||
redisUtil.set(floorAreaKey, JSON.toJSONString(data.getFloorZone()));
|
redisUtil.set(floorAreaKey, JSON.toJSONString(data.getFloorZone()));
|
||||||
|
|
||||||
|
// -- get 老的数据 - 看有没有 - 有的话 - 对比下 - 如果相同 - 更新hashMap中key的value
|
||||||
|
// - 如果不相同的话 - 更新当前redis数据 - 然后 - 根据老的数据 去 hashMapRedis 中删除 这个key的数据
|
||||||
|
// - 然后插入到 对应的区域的hashMap中
|
||||||
|
|
||||||
//机器人异常等级
|
//机器人异常等级
|
||||||
if (ObjectUtil.isEmpty(data.getErrCode())) {
|
if (ObjectUtil.isEmpty(data.getErrCode())) {
|
||||||
String errorLevelKey = RobotTaskChcheConstant.ROBOT_ERROR_LEVEL + data.getMac();
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
@ -61,6 +61,7 @@ public class WareHouseLocationDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 物料信息
|
* 物料信息
|
||||||
*/
|
*/
|
||||||
|
@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||||
private String skuInfo;
|
private String skuInfo;
|
||||||
/**
|
/**
|
||||||
* 物料批次号
|
* 物料批次号
|
||||||
|
@ -136,4 +136,10 @@ public interface WareHouseLocationMapper extends BaseMapperX<WareHouseLocationDO
|
|||||||
* @param laneId
|
* @param laneId
|
||||||
*/
|
*/
|
||||||
void updateLocationLaneNameEmptyByLaneId(@Param("laneId") Long 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);
|
HouseAreaDO houseArea = BeanUtil.copyProperties(createReqVO, HouseAreaDO.class);
|
||||||
houseAreaMapper.insertOrUpdate(houseArea);
|
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.查询目前的地图所有的库位点位列表 - 如果没有的话 - 就设为空列表先 -
|
//2.查询目前的地图所有的库位点位列表 - 如果没有的话 - 就设为空列表先 -
|
||||||
List<PositionMapItemDO> list = positionMapItemService.getByCondition(new PositionMapConditionDTO()
|
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);
|
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<>();
|
List<WareHouseLocationDO> wareHouseLocationList = new ArrayList<>();
|
||||||
editList.forEach(item -> {
|
for (PositionMapItemDO item : list) {
|
||||||
List<WareHouseLocationDO> wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class);
|
List<WareHouseLocationDO> wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class);
|
||||||
wareHouseLocationDOS.forEach(a -> {
|
for (WareHouseLocationDO locationDO : wareHouseLocationDOS) {
|
||||||
if (item.getAreaId() == null) {
|
locationDO.setAreaId(houseArea.getId());
|
||||||
a.setAreaId(null);
|
locationDO.setAreaName(houseArea.getAreaName());
|
||||||
a.setAreaName(null);
|
locationDO.setSkuInfo(createReqVO.getSkuInfo());
|
||||||
} else {
|
|
||||||
a.setAreaId(houseArea.getId());
|
|
||||||
a.setAreaName(houseArea.getAreaName());
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
wareHouseLocationList.addAll(wareHouseLocationDOS);
|
wareHouseLocationList.addAll(wareHouseLocationDOS);
|
||||||
|
item.setAreaId(houseArea.getId());
|
||||||
item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS));
|
item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS));
|
||||||
});
|
}
|
||||||
if (CollUtil.isNotEmpty(editList)) {
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
positionMapItemService.updateBatchById(editList);
|
positionMapItemService.updateBatchById(list);
|
||||||
}
|
}
|
||||||
if (CollUtil.isNotEmpty(wareHouseLocationList)) {
|
if (CollUtil.isNotEmpty(wareHouseLocationList)) {
|
||||||
houseLocationService.updateBatchById(wareHouseLocationList);
|
houseLocationService.updateBatchById(wareHouseLocationList);
|
||||||
@ -198,7 +171,20 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
|
|||||||
this.removeById(id);
|
this.removeById(id);
|
||||||
//获取当前库区所对应的地图
|
//获取当前库区所对应的地图
|
||||||
// 点位中包含库区id的数据设为null
|
// 点位中包含库区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);
|
WareHouseLaneDO houseLane = BeanUtil.copyProperties(createReqVO, WareHouseLaneDO.class);
|
||||||
houseLaneMapper.insertOrUpdate(houseLane);
|
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()
|
List<PositionMapItemDO> list = positionMapItemService.getByCondition(new PositionMapConditionDTO()
|
||||||
.setPositionMapId(createReqVO.getPositionMapId())
|
.setPositionMapId(createReqVO.getPositionMapId())
|
||||||
.setLaneId(createReqVO.getId())
|
.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);
|
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<>();
|
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);
|
List<WareHouseLocationDO> wareHouseLocationDOS = JSONUtil.toList(item.getDataJson(), WareHouseLocationDO.class);
|
||||||
wareHouseLocationDOS.forEach(a -> {
|
for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) {
|
||||||
if (item.getLaneId() == null) {
|
wareHouseLocationDO.setLaneId(houseLane.getId());
|
||||||
a.setLaneId(null);
|
wareHouseLocationDO.setLaneName(houseLane.getLaneName());
|
||||||
a.setLaneName(null);
|
|
||||||
} else {
|
|
||||||
a.setLaneId(houseLane.getId());
|
|
||||||
a.setLaneName(houseLane.getLaneName());
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
wareHouseLocationList.addAll(wareHouseLocationDOS);
|
wareHouseLocationList.addAll(wareHouseLocationDOS);
|
||||||
item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS));
|
item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS));
|
||||||
});
|
}
|
||||||
if (CollUtil.isNotEmpty(editList)) {
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
positionMapItemService.updateBatchById(editList);
|
positionMapItemService.updateBatchById(list);
|
||||||
}
|
}
|
||||||
if (CollUtil.isNotEmpty(wareHouseLocationList)) {
|
if (CollUtil.isNotEmpty(wareHouseLocationList)) {
|
||||||
houseLocationService.updateBatchById(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());
|
return new HouseLaneVO().setId(houseLane.getId()).setLaneName(houseLane.getLaneName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,6 +141,17 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void delete(Long id) {
|
public void delete(Long id) {
|
||||||
WareHouseLaneDO wareHouseLaneDO = this.getById(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);
|
this.removeById(id);
|
||||||
// 点位中包含线库id的数据设为null
|
// 点位中包含线库id的数据设为null
|
||||||
positionMapItemService.emptyLaneId(wareHouseLaneDO.getPositionMapId(), id);
|
positionMapItemService.emptyLaneId(wareHouseLaneDO.getPositionMapId(), id);
|
||||||
|
@ -113,4 +113,10 @@ public interface HouseLocationService extends IService<WareHouseLocationDO> {
|
|||||||
* @param list
|
* @param list
|
||||||
*/
|
*/
|
||||||
void updateHouseLocationList(List<WareHouseLocationSaveReqVO> 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);
|
houseLocationMapper.updateLocationLaneNameEmptyByLaneId(laneId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateLocationAreaNameEmptyByAreaId(Long areaId) {
|
||||||
|
houseLocationMapper.updateLocationAreaNameEmptyByAreaId(areaId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list) {
|
public void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list) {
|
||||||
|
@ -524,6 +524,16 @@
|
|||||||
where
|
where
|
||||||
lane_id = #{laneId}
|
lane_id = #{laneId}
|
||||||
</update>
|
</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">
|
<select id="selectByTypeAndId" resultMap="BaseResultMap">
|
||||||
|
Loading…
Reference in New Issue
Block a user