|
@ -414,44 +414,77 @@ public class LocationServiceImpl implements LocationService { |
|
|
public List<Map<String, Object>> validateLocationAndItem(List<LocationValidateVO> locationValidateVOList) { |
|
|
public List<Map<String, Object>> validateLocationAndItem(List<LocationValidateVO> locationValidateVOList) { |
|
|
List<Map<String, Object>> result = new ArrayList<>(); |
|
|
List<Map<String, Object>> result = new ArrayList<>(); |
|
|
for(LocationValidateVO locationValidateVO : locationValidateVOList) { |
|
|
for(LocationValidateVO locationValidateVO : locationValidateVOList) { |
|
|
LocationDO locationDO = locationMapper.selectByCode(locationValidateVO.getLocationCode()); |
|
|
|
|
|
List<RuleRespVO> ruleRespVOList = ruleService.getGroundingList(locationValidateVO.getItemCode(), locationValidateVO.getInventoryStatus()); |
|
|
List<RuleRespVO> ruleRespVOList = ruleService.getGroundingList(locationValidateVO.getItemCode(), locationValidateVO.getInventoryStatus()); |
|
|
boolean validateResult = false; |
|
|
boolean validateResult = false; |
|
|
String msg = ""; |
|
|
String msg = ""; |
|
|
for(RuleRespVO ruleRespVO : ruleRespVOList) { |
|
|
if(ruleRespVOList.size() == 1) { |
|
|
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); |
|
|
validateResult = true; |
|
|
String enableMixItem = jsonObject.getStr("EnableMixItem"); |
|
|
} else { |
|
|
String enableMixLot = jsonObject.getStr("EnableMixLot"); |
|
|
for (RuleRespVO ruleRespVO : ruleRespVOList) { |
|
|
String enableMixStatus = jsonObject.getStr("EnableMixStatus"); |
|
|
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); |
|
|
List<BalanceDO> balanceDOList = balanceMapper.getBalanceList(null, null, null, null, locationDO.getCode()); |
|
|
//增加过滤条件
|
|
|
//库位上存在物品,判断可以混物品、可以混批次、可以混状态
|
|
|
QueryWrapper<LocationDO> queryWrapper = new QueryWrapper<>(); |
|
|
boolean flag1 = false; |
|
|
queryWrapper.eq("available", "TRUE"); |
|
|
for (BalanceDO balanceDO : balanceDOList) { |
|
|
queryWrapper.eq("`code`", locationValidateVO.getLocationCode()); |
|
|
boolean flag2 = true; |
|
|
List<String> locationTypeList = new ArrayList<>(); |
|
|
if ("TRUE".equals(enableMixItem) && !locationValidateVO.getItemCode().equals(balanceDO.getItemCode())) { |
|
|
locationTypeList.add("RAW"); |
|
|
break; |
|
|
locationTypeList.add("SEMI"); |
|
|
|
|
|
locationTypeList.add("FG"); |
|
|
|
|
|
queryWrapper.in("`type`", locationTypeList); |
|
|
|
|
|
String warehouseCode = jsonObject.getStr("WarehouseCode"); |
|
|
|
|
|
if (!"".equals(warehouseCode)) { |
|
|
|
|
|
queryWrapper.eq("warehouse_code", warehouseCode); |
|
|
} |
|
|
} |
|
|
if ("TRUE".equals(enableMixLot) && !locationValidateVO.getBatch().equals(balanceDO.getBatch())) { |
|
|
String areaCode = jsonObject.getStr("AreaCode"); |
|
|
flag2 = false; |
|
|
if (!"".equals(areaCode)) { |
|
|
if(!msg.contains("不能混批次;")) { |
|
|
queryWrapper.eq("area_code", areaCode); |
|
|
msg = msg + "不能混批次;"; |
|
|
} |
|
|
} |
|
|
String locationGroupCode = jsonObject.getStr("LocationGroupCode"); |
|
|
|
|
|
if (!"".equals(locationGroupCode)) { |
|
|
|
|
|
queryWrapper.eq("location_group_code", locationGroupCode); |
|
|
|
|
|
} |
|
|
|
|
|
String locationCode = jsonObject.getStr("LocationCode"); |
|
|
|
|
|
if (!"".equals(locationCode)) { |
|
|
|
|
|
queryWrapper.eq("`code`", locationCode); |
|
|
} |
|
|
} |
|
|
if ("TRUE".equals(enableMixStatus) && !locationValidateVO.getInventoryStatus().equals(balanceDO.getInventoryStatus())) { |
|
|
LocationDO locationDO = locationMapper.selectOne(queryWrapper); |
|
|
flag2 = false; |
|
|
//查询不到库位
|
|
|
if(!msg.contains("不能混状态;")) { |
|
|
if (locationDO == null) { |
|
|
msg = msg + "不能混状态;"; |
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
String enableMixItem = jsonObject.getStr("EnableMixItem"); |
|
|
|
|
|
String enableMixLot = jsonObject.getStr("EnableMixLot"); |
|
|
|
|
|
String enableMixStatus = jsonObject.getStr("EnableMixStatus"); |
|
|
|
|
|
List<BalanceDO> balanceDOList = balanceMapper.getBalanceList(null, null, null, null, locationDO.getCode()); |
|
|
|
|
|
//库位上存在物品,判断可以混物品、可以混批次、可以混状态
|
|
|
|
|
|
boolean flag1 = false; |
|
|
|
|
|
for (BalanceDO balanceDO : balanceDOList) { |
|
|
|
|
|
boolean flag2 = true; |
|
|
|
|
|
if ("TRUE".equals(enableMixItem) && !locationValidateVO.getItemCode().equals(balanceDO.getItemCode())) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
if ("TRUE".equals(enableMixLot) && !locationValidateVO.getBatch().equals(balanceDO.getBatch())) { |
|
|
|
|
|
flag2 = false; |
|
|
|
|
|
if (!msg.contains("不能混批次;")) { |
|
|
|
|
|
msg = msg + "不能混批次;"; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if ("TRUE".equals(enableMixStatus) && !locationValidateVO.getInventoryStatus().equals(balanceDO.getInventoryStatus())) { |
|
|
|
|
|
flag2 = false; |
|
|
|
|
|
if (!msg.contains("不能混状态;")) { |
|
|
|
|
|
msg = msg + "不能混状态;"; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (flag2) { |
|
|
|
|
|
flag1 = true; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if(flag2) { |
|
|
if (flag1) { |
|
|
flag1 = true; |
|
|
validateResult = true; |
|
|
|
|
|
msg = ""; |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if(flag1) { |
|
|
|
|
|
validateResult = true; |
|
|
|
|
|
msg = ""; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
map.put("itemCode", locationValidateVO.getItemCode()); |
|
|
map.put("itemCode", locationValidateVO.getItemCode()); |
|
|