|
@@ -4,12 +4,12 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.comparator.CompareUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ruoyi.ams.inv.domain.InvLotLocId;
|
|
|
import com.ruoyi.ams.inv.service.IInvLotAttService;
|
|
|
import com.ruoyi.ams.inv.service.IInvLotLocIdService;
|
|
|
import com.ruoyi.ams.xuankuang.service.ExcelLocLotModel;
|
|
|
import com.ruoyi.ams.xuankuang.service.ProcessLocationService;
|
|
|
+import com.ruoyi.base.constant.Constant;
|
|
|
import com.ruoyi.base.domain.BaseLocationInfo;
|
|
|
import com.ruoyi.base.domain.BaseSku;
|
|
|
import com.ruoyi.base.service.IBaseLocationInfoService;
|
|
@@ -49,11 +49,6 @@ public class ProcessLocationServiceImpl implements ProcessLocationService {
|
|
|
@Autowired
|
|
|
private IBaseSkuService baseSkuService;
|
|
|
|
|
|
-
|
|
|
- //仓库ID的默认值
|
|
|
- private static final Long WAREHOUSE_ID = 1L;
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 选矿项目调整库存专用脚本
|
|
|
*
|
|
@@ -85,10 +80,8 @@ public class ProcessLocationServiceImpl implements ProcessLocationService {
|
|
|
}catch (RuntimeException ex){
|
|
|
log.warn("ex is {}", ex);
|
|
|
errorLocLotList.add(locLotModel);
|
|
|
- continue;
|
|
|
}
|
|
|
}
|
|
|
- System.err.println(JSONObject.toJSONString(errorLocLotList));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -118,13 +111,13 @@ public class ProcessLocationServiceImpl implements ProcessLocationService {
|
|
|
*/
|
|
|
public void redressInventory(String locationNo, String bindSku, String palletNo, BigDecimal quantity, Map<String, String> skuTypeMapping) {
|
|
|
//1.通过库位号获得库位的ID
|
|
|
- BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationNo, WAREHOUSE_ID);
|
|
|
+ BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationNo, Constant.WAREHOUSE_ID);
|
|
|
if (ObjectUtil.isNull(baseLocationInfo)) return;
|
|
|
if (StringUtils.isBlank(bindSku) && ObjectUtil.isNotNull(quantity)) return;
|
|
|
|
|
|
|
|
|
//2.1 如果当前库位是空的,或者库位数量是空的,则删除inv_lot_loc_id中的库存数据并重置库位数据
|
|
|
- if((ObjectUtil.isNull(quantity) || CompareUtil.compare(quantity, BigDecimal.ZERO)<=0)){
|
|
|
+ if (ObjectUtil.isNull(quantity) || CompareUtil.compare(quantity, BigDecimal.ZERO) <= 0) {
|
|
|
//生成新的批次记录
|
|
|
invLotAttService.insertInvLotAtt(bindSku, palletNo);
|
|
|
invLotLocIdService.deleteInvLotLocList(baseLocationInfo.getId());
|
|
@@ -132,35 +125,30 @@ public class ProcessLocationServiceImpl implements ProcessLocationService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if(StringUtils.isNotBlank(bindSku)
|
|
|
- && ObjectUtil.isNotNull(quantity)
|
|
|
- && CompareUtil.compare(quantity, BigDecimal.ZERO) > 0){
|
|
|
- //查出原先的库存情况,如果当前库存SKU不符合,则生成新的批次记录
|
|
|
- List<InvLotLocId> invLotLocList = invLotLocIdService.getInvLotLocList(baseLocationInfo.getId());
|
|
|
- if(CollectionUtil.isNotEmpty(invLotLocList)){
|
|
|
- //此时数据是错的都要重新生成库存
|
|
|
- List<String> skuList = invLotLocList.stream().map(item -> item.getSku()).collect(Collectors.toList());
|
|
|
- if(CollectionUtil.isEmpty(skuList) || skuList.size() > 1 || !StringUtils.equals(skuList.get(0), bindSku)){
|
|
|
- //生成新的批次记录
|
|
|
- String lotnum = invLotAttService.insertInvLotAtt(bindSku, palletNo);
|
|
|
- //删除原先的库存记录`,生成新的库存记录
|
|
|
- invLotLocIdService.deleteInvLotLocList(baseLocationInfo.getId());
|
|
|
- invLotLocIdService.insertInvLotLocId(baseLocationInfo.getId(), lotnum, bindSku, quantity);
|
|
|
- //重置库位数据
|
|
|
- reSetLocationInfo(baseLocationInfo, bindSku, Constants.NO, skuTypeMapping);
|
|
|
- return;
|
|
|
- } else {
|
|
|
- //此时只有数量是错的,那么update一下数量就好
|
|
|
- InvLotLocId invLotLocId = invLotLocList.get(0);
|
|
|
- invLotLocId.setQty(quantity);
|
|
|
- //TODO 其他关于数量的字段要改嘛
|
|
|
- invLotLocId.setQtyEach(quantity);
|
|
|
- invLotLocIdService.updateInvLotLocId(invLotLocId);
|
|
|
- //重置库存数据
|
|
|
- reSetLocationInfo(baseLocationInfo, bindSku, Constants.NO, skuTypeMapping);
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
+ //查出原先的库存情况,如果当前库存SKU不符合,则生成新的批次记录
|
|
|
+ List<InvLotLocId> invLotLocList = invLotLocIdService.getInvLotLocList(baseLocationInfo.getId());
|
|
|
+ if (CollectionUtil.isEmpty(invLotLocList)) return;
|
|
|
+ //此时数据是错的都要重新生成库存
|
|
|
+ List<String> skuList = invLotLocList.stream().map(item -> item.getSku()).collect(Collectors.toList());
|
|
|
+ if (CollectionUtil.isEmpty(skuList) || skuList.size() > 1 || !StringUtils.equals(skuList.get(0), bindSku)) {
|
|
|
+ //生成新的批次记录
|
|
|
+ String lotnum = invLotAttService.insertInvLotAtt(bindSku, palletNo);
|
|
|
+ //删除原先的库存记录`,生成新的库存记录
|
|
|
+ invLotLocIdService.deleteInvLotLocList(baseLocationInfo.getId());
|
|
|
+ invLotLocIdService.insertInvLotLocId(baseLocationInfo.getId(), lotnum, bindSku, quantity);
|
|
|
+ //重置库位数据
|
|
|
+ reSetLocationInfo(baseLocationInfo, bindSku, Constants.NO, skuTypeMapping);
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ //此时只有数量是错的,那么update一下数量就好
|
|
|
+ InvLotLocId invLotLocId = invLotLocList.get(0);
|
|
|
+ invLotLocId.setQty(quantity);
|
|
|
+ //TODO 其他关于数量的字段要改嘛
|
|
|
+ invLotLocId.setQtyEach(quantity);
|
|
|
+ invLotLocIdService.updateInvLotLocId(invLotLocId);
|
|
|
+ //重置库存数据
|
|
|
+ reSetLocationInfo(baseLocationInfo, bindSku, Constants.NO, skuTypeMapping);
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -177,21 +165,11 @@ public class ProcessLocationServiceImpl implements ProcessLocationService {
|
|
|
baseLocationInfo.setIsEmpty(isEmpty);
|
|
|
baseLocationInfo.setStockStatus(FREE);
|
|
|
baseLocationInfo.setUserdefine10(StringUtils.isNotBlank(bindSku) ? bindSku : null);
|
|
|
- baseLocationInfo.setBindSku(StringUtils.isNotBlank(bindSku) ? skuTypeMapping.get(bindSku) : null );
|
|
|
+ baseLocationInfo.setBindSku(StringUtils.isNotBlank(bindSku) ? skuTypeMapping.get(bindSku) : null);
|
|
|
return baseLocationInfoService.reSetLocationInfo(baseLocationInfo);
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
- public static void main(String[] args) {
|
|
|
-// System.out.println(handleLocationNo("A\t-02\t-08"));
|
|
|
-// System.out.println(handleLocationNo(" A-02-08"));
|
|
|
-// System.out.println(handleLocationNo(" -02-08"));
|
|
|
-// System.out.println(handleLocationNo("Out-02-cache"));
|
|
|
-// System.out.w's'x'z's'x'x'z(handleLocationNo("STAGE01"));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
private static String handleLocationNo(String locationNo) {
|
|
|
if (StringUtils.isBlank(locationNo)) return StringUtil.EMPTY_STRING;
|
|
|
Pattern pattern = Pattern.compile("\\s*|\t|\r|\n");
|