Browse Source

PDA线边业务测试修改

k 1 year ago
parent
commit
0cd81b802d

+ 28 - 7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -205,12 +205,29 @@ public class PdaController {
         Map<String, AgvCallDTO> map = new HashMap<>();
         Map<String, AgvCallDTO> map = new HashMap<>();
         List<AgvCallDTO> list = new ArrayList<>();
         List<AgvCallDTO> list = new ArrayList<>();
         for (LineCallListFrom lform : lineCallForm.getLineCallList()) {
         for (LineCallListFrom lform : lineCallForm.getLineCallList()) {
-
-            // 入库回库检测光栅高度
-            String gratingNo = Constant.GRATING_AND_LOCATION_MAPPING.getByLocation(lform.getLocationFrom()).getValue();
-            boolean isSuperHigh = iSysConfigService.checkGratingIsSuperHigh(gratingNo);
-            if (isSuperHigh) {
-                return AjaxResult.error("光栅监测到货物超高!请人工处理!");
+            BaseLocationInfo baseLocationInfoFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(lform.getLocationFrom()
+                    , Constant.WAREHOUSE_ID);
+            if (baseLocationInfoFrom == null) {
+                return AjaxResult.error("起始库位不存在!");
+            }
+            if (StringUtils.isNotEmpty(lform.getLocationTo())) {
+                BaseLocationInfo baseLocationInfoTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(lform.getLocationTo()
+                        , Constant.WAREHOUSE_ID);
+                if (baseLocationInfoTo == null) {
+                    return AjaxResult.error("目标库位不存在!");
+                }
+                if (!baseLocationInfoTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_INV.getValue())) {
+                    return AjaxResult.error("目标库位需要为仓储区!");
+                }
+            }
+            if (baseLocationInfoFrom.getZoneId().equals(Constant.ZONE_TYPE.ZONE_IN.getValue())
+                    || baseLocationInfoFrom.getZoneId().equals(Constant.ZONE_TYPE.ZONE_RE.getValue())) {
+                // 入库回库检测光栅高度
+                String gratingNo = Constant.GRATING_AND_LOCATION_MAPPING.getByLocation(lform.getLocationFrom()).getValue();
+                boolean isSuperHigh = iSysConfigService.checkGratingIsSuperHigh(gratingNo);
+                if (isSuperHigh) {
+                    return AjaxResult.error("光栅监测到货物超高!请人工处理!");
+                }
             }
             }
 
 
             String asnNo = "";
             String asnNo = "";
@@ -218,7 +235,11 @@ public class PdaController {
             if (flowConfigHeaderVO.getFlowType().equals("ASN")) {
             if (flowConfigHeaderVO.getFlowType().equals("ASN")) {
                 PaForm paForm = new PaForm();
                 PaForm paForm = new PaForm();
                 paForm.setPalletNo(lform.getPalletNo());
                 paForm.setPalletNo(lform.getPalletNo());
-                paForm.setLocationFrom(Constant.LOC_STAGE_CACHE.toString());
+                if(lineCallForm.getFlowId().intValue() == 5) {
+                    paForm.setLocationFrom(Constant.LOC_STAGE_CACHE.toString());
+                }else {
+                    paForm.setLocationFrom(Constant.LOC_SORTATION_CACHE.toString());
+                }
                 paForm.setLocationTo(lform.getLocationFrom());
                 paForm.setLocationTo(lform.getLocationFrom());
                 paForm.setFlowId(lineCallForm.getFlowId().intValue());
                 paForm.setFlowId(lineCallForm.getFlowId().intValue());
                 paForm.setIsFull(lform.getIsFull());
                 paForm.setIsFull(lform.getIsFull());

+ 4 - 3
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java

@@ -281,7 +281,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
      */
      */
     @Transactional
     @Transactional
     @Override
     @Override
-    public AjaxResult doStock(StockForm stockForm) {
+    public synchronized AjaxResult doStock(StockForm stockForm) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         LoginUser loginUser = SecurityUtils.getLoginUser();
         Long STAGE01 = Constant.LOC_STAGE_CACHE;
         Long STAGE01 = Constant.LOC_STAGE_CACHE;
         WmsDocOrderHeader wmsDocOrderHeader;
         WmsDocOrderHeader wmsDocOrderHeader;
@@ -541,8 +541,9 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         BaseLocationInfo locationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(paForm.getLocationTo(), Constant.WAREHOUSE_ID);
         BaseLocationInfo locationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(paForm.getLocationTo(), Constant.WAREHOUSE_ID);
         // 校验上架库位必须为入库缓存位或者线边库位
         // 校验上架库位必须为入库缓存位或者线边库位
         if (!locationTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_IN.getValue())
         if (!locationTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_IN.getValue())
+                && !locationTo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_RE.getValue())
                 && !locationTo.getId().equals(Constant.LOC_SORTATION02_CACHE)) {
                 && !locationTo.getId().equals(Constant.LOC_SORTATION02_CACHE)) {
-            return AjaxResult.error("上架点必须为入库缓存位或者线边库位!");
+            return AjaxResult.error("上架点必须为入库缓存位,出库缓存位或者线边库位!");
         }
         }
 
 
         //获取库存当前的托盘位置
         //获取库存当前的托盘位置
@@ -565,7 +566,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         }
         }
         for (InvLotLocId inv : invLotLocIdList) {
         for (InvLotLocId inv : invLotLocIdList) {
             InvLotAtt invLotAtt = invLotAttService.selectInvLotAttByLotnum(inv.getLotnum());
             InvLotAtt invLotAtt = invLotAttService.selectInvLotAttByLotnum(inv.getLotnum());
-            invLotAttService.updateInvLotAtt(invLotAtt);
+//            invLotAttService.updateInvLotAtt(invLotAtt);
 
 
             //更新托盘库存到起始库位
             //更新托盘库存到起始库位
             invLotLocIdMapper.updateInvLotLocIdToByLotnum(inv.getLotnum(), inv.getSku(), inv.getCustomerId(), inv.getLocationId()
             invLotLocIdMapper.updateInvLotLocIdToByLotnum(inv.getLotnum(), inv.getSku(), inv.getCustomerId(), inv.getLocationId()

+ 16 - 3
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -891,7 +891,10 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         } else {
         } else {
             return AjaxResult.error("出库缓存区的库位才可释放!");
             return AjaxResult.error("出库缓存区的库位才可释放!");
         }
         }
-        adjLocationIsEmpty(locationFrom, Constant.WAREHOUSE_ID, updateBy);
+        // 起始库位无货
+        baseLocationInfoService.unOccupyLocation(baseLocationInfo.getId(), warehouseId, updateBy);
+        // 目标库位有货
+        baseLocationInfoService.occupyLocation(Constant.LOC_SORTATION_CACHE, warehouseId, updateBy);
         //修改托盘库位绑定关系
         //修改托盘库位绑定关系
         WmsBoxInfo wmsBoxInfo = iWmsBoxInfoService.selectByLocationId(String.valueOf(baseLocationInfo.getId()));
         WmsBoxInfo wmsBoxInfo = iWmsBoxInfoService.selectByLocationId(String.valueOf(baseLocationInfo.getId()));
         if (wmsBoxInfo != null) {
         if (wmsBoxInfo != null) {
@@ -908,6 +911,9 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         if (baseLocationInfo == null) {
         if (baseLocationInfo == null) {
             return AjaxResult.error("不存在此库位!");
             return AjaxResult.error("不存在此库位!");
         }
         }
+        if (!baseLocationInfo.getZoneId().equals(Constant.ZONE_TYPE.ZONE_OUT.getValue())) {
+            return AjaxResult.error("只能释放出库位!");
+        }
         List<InvLotLocIdLotattVO> invLotLocIdLotattVOS = invLotLocIdService.selectInvLocIdLotattByLocationId(baseLocationInfo.getId());
         List<InvLotLocIdLotattVO> invLotLocIdLotattVOS = invLotLocIdService.selectInvLocIdLotattByLocationId(baseLocationInfo.getId());
         if (invLotLocIdLotattVOS.size() == 0) {
         if (invLotLocIdLotattVOS.size() == 0) {
             return AjaxResult.error("不存在对应释放库存!");
             return AjaxResult.error("不存在对应释放库存!");
@@ -960,6 +966,13 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
             if (StringUtils.isEmpty(locIdLotattVO.getLotatt14())) {
             if (StringUtils.isEmpty(locIdLotattVO.getLotatt14())) {
                 return AjaxResult.error("不是备货的库存不可出库!");
                 return AjaxResult.error("不是备货的库存不可出库!");
             }
             }
+            if (locIdLotattVO.getZoneId().equals(Constant.ZONE_TYPE.ZONE_INV.getValue())) {
+                return AjaxResult.error("托盘在货架上,不可出库!");
+            }
+            if (!locIdLotattVO.getZoneId().equals(Constant.ZONE_TYPE.ZONE_OUT.getValue())
+                    && !locIdLotattVO.getLocationId().equals(Constant.LOC_SORTATION02_CACHE)) {
+                return AjaxResult.error("托盘不在指定的出库位,不可出库!");
+            }
             orderNo = locIdLotattVO.getLotatt14();
             orderNo = locIdLotattVO.getLotatt14();
             locationId = locIdLotattVO.getLocationId();
             locationId = locIdLotattVO.getLocationId();
         }
         }
@@ -982,10 +995,10 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
                 return AjaxResult.error("托盘有库存不属于当前备货单,不可操作出库!");
                 return AjaxResult.error("托盘有库存不属于当前备货单,不可操作出库!");
             }
             }
         }
         }
-            // 修改出库单状态
-        wmsDocOrderHeaderService.modifyAssignmentStockTaskStatusComplete(orderNo, locationId, palletNo, true);
         // 清除库存
         // 清除库存
         invLotLocIdService.clear(locationId, palletNo, Constant.WAREHOUSE_ID, "PDA");
         invLotLocIdService.clear(locationId, palletNo, Constant.WAREHOUSE_ID, "PDA");
+        // 修改出库单状态
+        wmsDocOrderHeaderService.modifyAssignmentStockTaskStatusComplete(orderNo, locationId, palletNo, true);
         return AjaxResult.success("托盘出库成功!" + palletNo);
         return AjaxResult.success("托盘出库成功!" + palletNo);
     }
     }
 
 

+ 2 - 2
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/UpdateOrderStockingProcessImpl.java

@@ -388,10 +388,10 @@ public class UpdateOrderStockingProcessImpl implements UpdateOrderStockingProces
             InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
             InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
             invLocIdSearchFrom.setLotatt14(orderNo);
             invLocIdSearchFrom.setLotatt14(orderNo);
             invLocIdSearchFrom.setSku(details.getSku());
             invLocIdSearchFrom.setSku(details.getSku());
-            invLocIdSearchFrom.setZoneId(Constant.ZONE_TYPE.ZONE_INV.toString());
+            invLocIdSearchFrom.setZoneId(Constant.ZONE_TYPE.ZONE_INV.getValue().toString());
             // 查出仓储区
             // 查出仓储区
             List<InvLotLocIdLotattVO> idLotattVOListInv = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
             List<InvLotLocIdLotattVO> idLotattVOListInv = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
-            invLocIdSearchFrom.setZoneId(Constant.ZONE_TYPE.ZONE_VIRTUAL.toString());
+            invLocIdSearchFrom.setZoneId(Constant.ZONE_TYPE.ZONE_VIRTUAL.getValue().toString());
             // 查出虚拟区
             // 查出虚拟区
             List<InvLotLocIdLotattVO> idLotattVOListVir = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
             List<InvLotLocIdLotattVO> idLotattVOListVir = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
             if (idLotattVOListVir.size() > 0) {
             if (idLotattVOListVir.size() > 0) {

+ 16 - 7
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderHeaderServiceImpl.java

@@ -685,7 +685,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
                 PickingListVO pickingListVO = new PickingListVO();
                 PickingListVO pickingListVO = new PickingListVO();
                 pickingListVO.setOrderNo(wmsDocOrderHeader.getSoReference1()); // ERP单号
                 pickingListVO.setOrderNo(wmsDocOrderHeader.getSoReference1()); // ERP单号
                 pickingListVO.setSku(locIdLotattVO.getSku());
                 pickingListVO.setSku(locIdLotattVO.getSku());
-                pickingListVO.setPickQty(BigDecimal.ZERO.doubleValue());
+                pickingListVO.setPickQty(locIdLotattVO.getQtyallocated());
                 pickingListVO.setToBePickQty(locIdLotattVO.getQty());
                 pickingListVO.setToBePickQty(locIdLotattVO.getQty());
                 pickingListVO.setBarcode(locIdLotattVO.getLotatt02());
                 pickingListVO.setBarcode(locIdLotattVO.getLotatt02());
                 pickingListVO.setModel(locIdLotattVO.getSkuModel());
                 pickingListVO.setModel(locIdLotattVO.getSkuModel());
@@ -995,6 +995,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         boolean isAllUpdate = false; // 库存转移类型,是全部修改,还是拆分
         boolean isAllUpdate = false; // 库存转移类型,是全部修改,还是拆分
         int type = 0; // 组盘类型
         int type = 0; // 组盘类型
         final Double toQty;
         final Double toQty;
+        Long currentVirtualZone; // 当前所在的虚拟区
         // 根据条码获取物料号
         // 根据条码获取物料号
         CodeSkuRelationshipVO codeSkuRelationshipVO = codeSkuRelationshipService.checkIsProduct(sn);
         CodeSkuRelationshipVO codeSkuRelationshipVO = codeSkuRelationshipService.checkIsProduct(sn);
         sku = codeSkuRelationshipVO.getSku();
         sku = codeSkuRelationshipVO.getSku();
@@ -1030,6 +1031,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         if (endLotattVO == null) {
         if (endLotattVO == null) {
             return AjaxResult.error("组盘数量大于单条库存数量!");
             return AjaxResult.error("组盘数量大于单条库存数量!");
         }
         }
+        currentVirtualZone = endLotattVO.getLocationId();
         invLotLocIdLotattVOList.add(endLotattVO);
         invLotLocIdLotattVOList.add(endLotattVO);
         // 不同的产品类型不允许放一个托盘上
         // 不同的产品类型不允许放一个托盘上
         boolean isSameType = iWmsDocAsnHeaderService.checkSameTypeByPalletNo(palletNoTo, sku);
         boolean isSameType = iWmsDocAsnHeaderService.checkSameTypeByPalletNo(palletNoTo, sku);
@@ -1138,9 +1140,12 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
 
 
             }
             }
         }
         }
-//        WmsBoxInfo boxFrom = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(groupDiskFrom.getPalletNoTo());
-//        boxFrom.setIsFull(groupDiskFrom.getIsFull());
-//        wmsBoxInfoService.updateWmsBoxInfo(boxFrom);
+        // 更新托盘
+        WmsBoxInfo wmsBoxInfo = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(palletNoTo);
+        WmsBoxInfo boxInfoUpdate = new WmsBoxInfo();
+        boxInfoUpdate.setId(wmsBoxInfo.getId());
+        boxInfoUpdate.setLocationId(currentVirtualZone);
+        wmsBoxInfoService.updateWmsBoxInfo(boxInfoUpdate);
         return AjaxResult.success("组盘成功!");
         return AjaxResult.success("组盘成功!");
     }
     }
 
 
@@ -1234,6 +1239,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         boolean isAllUpdate = false; // 库存转移类型,是全部修改,还是拆分
         boolean isAllUpdate = false; // 库存转移类型,是全部修改,还是拆分
         boolean isStockPalletNoTo = groupDiskFrom.isStockPalletNoTo(); // 目标托盘是否是备货托盘,为了方便,目标托盘默认是备货托盘
         boolean isStockPalletNoTo = groupDiskFrom.isStockPalletNoTo(); // 目标托盘是否是备货托盘,为了方便,目标托盘默认是备货托盘
         final Double toQty;
         final Double toQty;
+        Long currentVirtualZone; // 当前所在的虚拟区
         if (StringUtils.isNotEmpty(groupDiskFrom.getOrderNo())) {
         if (StringUtils.isNotEmpty(groupDiskFrom.getOrderNo())) {
             orderNo = groupDiskFrom.getOrderNo();
             orderNo = groupDiskFrom.getOrderNo();
         }
         }
@@ -1286,6 +1292,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         if (endLotattVO == null) {
         if (endLotattVO == null) {
             return AjaxResult.error("组盘数量大于单条库存数量!");
             return AjaxResult.error("组盘数量大于单条库存数量!");
         }
         }
+        currentVirtualZone = endLotattVO.getLocationId();
         invLotLocIdLotattVOList.add(endLotattVO);
         invLotLocIdLotattVOList.add(endLotattVO);
         // 验证备货库存是否已经备货
         // 验证备货库存是否已经备货
         if (StringUtils.isNotEmpty(endLotattVO.getLotatt14())) {
         if (StringUtils.isNotEmpty(endLotattVO.getLotatt14())) {
@@ -1367,9 +1374,11 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             }
             }
         }
         }
         // 更新托盘
         // 更新托盘
-//        WmsBoxInfo boxFrom = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(groupDiskFrom.getPalletNoTo());
-//        boxFrom.setIsFull(groupDiskFrom.getIsFull());
-//        wmsBoxInfoService.updateWmsBoxInfo(boxFrom);
+        WmsBoxInfo wmsBoxInfo = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(palletNoTo);
+        WmsBoxInfo boxInfoUpdate = new WmsBoxInfo();
+        boxInfoUpdate.setId(wmsBoxInfo.getId());
+        boxInfoUpdate.setLocationId(currentVirtualZone);
+        wmsBoxInfoService.updateWmsBoxInfo(boxInfoUpdate);
         return AjaxResult.success("组盘成功!");
         return AjaxResult.success("组盘成功!");
     }
     }
 
 

+ 0 - 2
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -228,8 +228,6 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
             case "9":
             case "9":
                 // 修改批次lotatt15(出库单号)为空
                 // 修改批次lotatt15(出库单号)为空
                 invLotLocIdService.clearInvActOrderNoByPalletNo(wcsTask.getExt5());
                 invLotLocIdService.clearInvActOrderNoByPalletNo(wcsTask.getExt5());
-
-                // todo 非备货库存清空分配数
                 break;
                 break;
             default:
             default:
                 break;
                 break;