瀏覽代碼

入库管理——回库业务实现

LZH 2 年之前
父節點
當前提交
d31507a41b

+ 98 - 1
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsToWmsApiService.java

@@ -1,5 +1,9 @@
 package com.ruoyi.ams.xuankuang.service;
 
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
+import com.ruoyi.ams.asn.mapper.WmsDocAsnDetailsMapper;
+import com.ruoyi.ams.asn.mapper.WmsDocAsnHeaderMapper;
 import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
 import com.ruoyi.ams.config.domain.dto.LotattDTO;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
@@ -16,6 +20,7 @@ import com.ruoyi.base.domain.BaseSku;
 import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseSkuService;
+import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
@@ -49,6 +55,12 @@ public class WcsToWmsApiService {
     private WcsTaskSubService wcsTaskSubService;
     @Autowired
     private IWcsTaskService iWcsTaskService;
+    @Autowired
+    private WmsDocAsnHeaderMapper wmsDocAsnHeaderMapper;
+    @Autowired
+    private WmsDocAsnDetailsMapper wmsDocAsnDetailsMapper;
+    @Autowired
+    private IdSequenceUtils idSequenceUtils;
 
     /**
      * 组盘上报
@@ -73,7 +85,57 @@ public class WcsToWmsApiService {
         // 任务号
         String wcsNo = stackingCompletion.getWcsNo();
 
-        log.info(String.valueOf(reportType), palletNo, materialType, sku, qty, asnNo, wcsNo);
+
+        if (asnNo.equals("")){
+            AjaxResult ajaxResult1 = generateAShippingOrder(sku, new BigDecimal(qty));
+            // 判重
+            WcsTask wcsTaskQuery = new WcsTask();
+            //AsnNO
+            wcsTaskQuery.setExt1(ajaxResult1.getData().toString());
+            wcsTaskQuery.setExt2(palletNo);
+            wcsTaskQuery.setExt3(wcsNo);
+            WcsTask wcsTask = iWcsTaskService.selectWcsTaskByModel(wcsTaskQuery);
+            if (wcsTask != null) {
+                String locationTo = wcsTask.getLocationTo();
+                BaseLocationInfo baseLocationInfo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, Constant.WAREHOUSE_ID);
+                LocationCoordinateVo locationCoordinateVo = new LocationCoordinateVo();
+                locationCoordinateVo.setTaskNo(wcsTask.getTaskNo());
+                locationCoordinateVo.setLocationId(baseLocationInfo.getLocationNo());
+                locationCoordinateVo.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
+                locationCoordinateVo.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
+                locationCoordinateVo.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
+                return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
+            }
+
+            // 推荐目标库位
+            BaseLocationLotattVO baseLocationLotattVO = baseLocationInfoSubService.recommendAReceiptLocation(sku);
+            if (baseLocationLotattVO == null) {
+                AjaxResult.error("没有可以推荐的目标库位!");
+            }
+
+            // 生成任务
+            String taskNo = "";
+            AjaxResult ajaxResult = wcsTaskSubService.addWcsTask(Constant.LOC_STAGE_CACHE.toString()
+                    , baseLocationLotattVO.getId().toString()
+                    , ajaxResult1.getData().toString()
+                    , palletNo
+                    , wcsNo);
+            if (!ajaxResult.isSuccess()) {
+                return ajaxResult;
+            }
+            taskNo = ajaxResult.get("data").toString();
+            // 入库缓存位生成库存
+            InvLotLocIdSubService.initInv(Constant.LOC_STAGE_CACHE.toString(), sku, palletNo, ajaxResult1.getData().toString(), taskNo, qty);
+            // 反馈
+            LocationCoordinateVo locationCoordinateVo = new LocationCoordinateVo();
+            locationCoordinateVo.setTaskNo(taskNo);
+            locationCoordinateVo.setLocationId(baseLocationLotattVO.getLocationNo());
+            locationCoordinateVo.setFloor(Integer.valueOf(baseLocationLotattVO.getShiftNo()));
+            locationCoordinateVo.setCol(Integer.valueOf(baseLocationLotattVO.getRowNo()));
+            locationCoordinateVo.setRow(Integer.valueOf(baseLocationLotattVO.getRowIndex()));
+            return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
+
+        }
 
         // 判重
         WcsTask wcsTaskQuery = new WcsTask();
@@ -257,4 +319,39 @@ public class WcsToWmsApiService {
         }
         return baseLocationLotattVOS.get(0);
     }
+
+    /**
+     * 生成入库单
+     * @param sku
+     * @param qty
+     * @return
+     */
+    public AjaxResult generateAShippingOrder(String sku, BigDecimal qty) {
+        WmsDocAsnHeader wmsDocAsnHeader = new WmsDocAsnHeader();
+        //生成单头
+        String asnNo = idSequenceUtils.generateId("ASNNO");
+        wmsDocAsnHeader.setAsnNo(asnNo);
+        wmsDocAsnHeader.setEdiSendFlag("N");
+        wmsDocAsnHeader.setAsnType(Constant.ASN_TYP.HK.getValue());
+        wmsDocAsnHeader.setCreateTime(new Date());
+        wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue());
+        wmsDocAsnHeader.setCreateBy("Wms");
+        wmsDocAsnHeaderMapper.insertWmsDocAsnHeader(wmsDocAsnHeader);
+
+        //生成明细
+        WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails();
+        wmsDocAsnDetails.setAsnNo(asnNo);
+        wmsDocAsnDetails.setAsnLineNo(1l);
+        wmsDocAsnDetails.setSku(sku);
+        wmsDocAsnDetails.setCreateTime(new Date());
+        wmsDocAsnDetails.setExpectedQty(qty);
+        wmsDocAsnDetails.setExpectedQtyEach(qty);
+        wmsDocAsnDetails.setReceivedQty(new BigDecimal(0));
+        wmsDocAsnDetails.setReceivedQtyEach(new BigDecimal(0));
+        wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS10.getValue());
+        wmsDocAsnDetails.setCreateTime(new Date());
+        wmsDocAsnDetails.setCreateBy("Wms");
+        wmsDocAsnDetailsMapper.insertWmsDocAsnDetails(wmsDocAsnDetails);
+        return AjaxResult.success("操作成功!", asnNo);
+    }
 }

+ 8 - 6
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -15,13 +15,11 @@ public class Constant {
 
     /**
      * 入库空托盘
-     *
      */
     public static final String PALLET_TYPE = "EMP_TRAY_BAG";
 
     /**
      * 出库空托盘
-     *
      */
     public static final String PALLET_TYPE1 = "EMP_TRAY_BUC";
 
@@ -38,11 +36,11 @@ public class Constant {
 
 
     //region WCS智库 工单下发
-    public static final String WCS_TASK_URL = "http://localhost:8082/adaptor/wms/bill";
-//    public static final String WCS_TASK_URL = "http://localhost:8008/test/wcs/test1";
+//    public static final String WCS_TASK_URL = "http://localhost:8082/adaptor/wms/bill";
+    public static final String WCS_TASK_URL = "http://localhost:8008/test/wcs/test1";
     //出库任务下发
-    public static final String WCS_TASK_URL1 = "http://localhost:8082/gsjc/wms/out/task";
-//    public static final String WCS_TASK_URL1 = "http://localhost:8008/test/wcs/test2";
+//    public static final String WCS_TASK_URL1 = "http://localhost:8082/gsjc/wms/out/task";
+    public static final String WCS_TASK_URL1 = "http://localhost:8008/test/wcs/test2";
 
     /**
      * 产线编号
@@ -124,6 +122,10 @@ public class Constant {
          * 袋装入库
          */
         DZ("DZ", 1),
+        /**
+         * 袋装回库
+         */
+        HK("HK", 1),
         /**
          * 桶装入库
          */