Browse Source

越库代码完善

LZH 1 year ago
parent
commit
49069ba609

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/mapper/WmsDocOrderHeaderMapper.java

@@ -85,4 +85,13 @@ public interface WmsDocOrderHeaderMapper {
      * @return
      */
     List<CheckOutVO> selectCheckOutList(List<String> orderNoList);
+
+
+    /**
+     * 根据soference2查询出库单头列表
+     *
+     * @param wmsDocOrderHeader 出库单头
+     * @return 出库单头集合
+     */
+    List<WmsDocOrderHeader> selectWmsDocOrderHeaderList2(WmsDocOrderHeader wmsDocOrderHeader);
 }

+ 102 - 9
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsTaskSubService.java

@@ -10,6 +10,7 @@ import com.ruoyi.ams.inv.domain.InvLotLocId;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
+import com.ruoyi.ams.order.mapper.WmsDocOrderHeaderMapper;
 import com.ruoyi.ams.order.service.IWmsDocOrderDetailsService;
 import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.ams.task.domain.WcsTask;
@@ -29,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * @author JWK
@@ -55,6 +57,8 @@ public class WcsTaskSubService {
     private IWmsDocOrderHeaderService iWmsDocOrderHeaderService;
     @Autowired
     private WcsToWmsApiService wcsToWmsApiService;
+    @Autowired
+    private WmsDocOrderHeaderMapper wmsDocOrderHeaderMapper;
 
     /**
      * 增加四向车任务
@@ -140,6 +144,31 @@ public class WcsTaskSubService {
         return AjaxResult.error("任务增加失败");
     }
 
+    /**
+     * 增加越库任务
+     *
+     * @return
+     */
+    public AjaxResult addCrossDatabaseTasks(String asnNo) {
+
+        String taskNo = generateTaskNo();
+        WcsTask wcsTask = new WcsTask();
+        wcsTask.setTaskNo(taskNo);
+        wcsTask.setState(10L);
+        wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
+        wcsTask.setBusinessType("01");
+        wcsTask.setCreateTime(new Date());
+        wcsTask.setCreateBy("Wcs");
+        wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
+        wcsTask.setPriority(10L);
+        wcsTask.setExt1(asnNo);
+        wcsTask.setRemark("立体库任务");
+        int i = iWcsTaskService.insertWcsTask(wcsTask);
+        if (i > 0) {
+            return AjaxResult.success(taskNo.toString());
+        }
+        return AjaxResult.error("任务增加失败");
+    }
 
     /**
      * wcs任务反馈
@@ -177,17 +206,25 @@ public class WcsTaskSubService {
                         return;
                     }
                     wcsTask.setEndTime(new Date());
-                    // 解锁库位
-                    iBaseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
-                            , Long.parseLong(wcsTask.getLocationTo())
-                            , Constant.WAREHOUSE_ID, updateBy);
+                    if (wcsTask.getExt2().equals("")){
+                        completeTheCallbackYueKu(wcsTask);
+                        return;
+                    }
                     if (wcsTask.getExt1().startsWith("ASN")) {
+                        // 解锁库位
+                        iBaseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
+                                , Long.parseLong(wcsTask.getLocationTo())
+                                , Constant.WAREHOUSE_ID, updateBy);
                         // 将起始点库存移动到终点库位
                         iWcsTaskService.moveStartingPointToDestination(wcsTask);
                         //  修改入库单收货数量
                         completeTheCallback(wcsTask);
                     }
                     if (wcsTask.getExt1().startsWith("SO")) {
+                        // 解锁库位
+                        iBaseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
+                                , Long.parseLong(wcsTask.getLocationTo())
+                                , Constant.WAREHOUSE_ID, updateBy);
                         // 将起始点库存移动到终点库位
                         iWcsTaskService.moveStartingPointToDestinationout(wcsTask);
                         invLotLocIdService.adjLocationIsEmpty(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID, "Wcs");
@@ -309,6 +346,7 @@ public class WcsTaskSubService {
         InvLotAtt invLotAtt = new InvLotAtt();
         invLotAtt.setLotatt07(palletNo);
         List<InvLotLocId> invLotLocIds = invLotLocIdService.queryInvByInvLotatt(invLotAtt);
+
         for (InvLotLocId invLotLocId : invLotLocIds) {
             BigDecimal qty = invLotLocId.getQty();
             if (qty.compareTo(canQty) == 1) {
@@ -338,6 +376,7 @@ public class WcsTaskSubService {
                     list.get(0).setLineStatus(Constant.ASN_STS.STS30.getValue());
                     iWmsDocOrderDetailsService.updateWmsDocOrderDetails(list.get(0));
                     con1 = false;
+                    con = false;
                 }
             }
         }
@@ -347,11 +386,6 @@ public class WcsTaskSubService {
             wmsDocOrderHeader.setOrderStatus(Constant.ORDER_STS.STS40.getValue());
             int i = iWmsDocOrderHeaderService.updateWmsDocOrderHeader(wmsDocOrderHeader);
             if (i >0) {
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
                 if (sku.equals("Na2CO3")){
                     wcsToWmsApiService.turnOffTheUnpacker();
                 }
@@ -378,6 +412,65 @@ public class WcsTaskSubService {
         return AjaxResult.success("");
     }
 
+
+    /**
+     * 越库完成后回调
+     *
+     * @param wcsTask
+     * @return
+     */
+    public AjaxResult completeTheCallbackYueKu(WcsTask wcsTask) {
+
+        String asnNo = wcsTask.getExt1();
+
+        WmsDocAsnDetails wmsDocAsnDetails = iWmsDocAsnDetailsService.selectWmsDocAsnDetailsByAsnNoLineNo(asnNo, "1");
+        String sku = wmsDocAsnDetails.getSku();
+        //修改 入库单明细40
+        wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS40.getValue());
+        wmsDocAsnDetails.setReceivedQty(wmsDocAsnDetails.getExpectedQty());
+        wmsDocAsnDetails.setReceivedQtyEach(wmsDocAsnDetails.getExpectedQty());
+        iWmsDocAsnDetailsService.updateWmsDocAsnDetails(wmsDocAsnDetails);
+        // 修改 入库单单头40
+        WmsDocAsnHeader wmsDocAsnHeader = iWmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo);
+        wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS40.getValue());
+        iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader);
+
+        //查询对应的出库单
+        WmsDocOrderHeader wmsDocOrderHeader = new WmsDocOrderHeader();
+        wmsDocOrderHeader.setSoReference2(asnNo);
+        List<WmsDocOrderHeader> wmsDocOrderHeaders = wmsDocOrderHeaderMapper.selectWmsDocOrderHeaderList2(wmsDocOrderHeader);
+        String orderNo = wmsDocOrderHeaders.get(0).getOrderNo();
+
+        //修改 出库单明细40
+        List<WmsDocOrderDetails> list = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsByOrderNo(orderNo);
+        list.get(0).setLineStatus(Constant.ASN_STS.STS40.getValue());
+        list.get(0).setQtyAllocated(list.get(0).getQtyOrdered());
+        list.get(0).setQtyAllocatedEach(list.get(0).getQtyOrdered());
+        iWmsDocOrderDetailsService.updateWmsDocOrderDetails(list.get(0));
+        //修改 出库单单头40
+        WmsDocOrderHeader wmsDocOrderHeader1 = iWmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
+        wmsDocOrderHeader1.setOrderStatus(Constant.ORDER_STS.STS40.getValue());
+        int i = iWmsDocOrderHeaderService.updateWmsDocOrderHeader(wmsDocOrderHeader1);
+        if (i >0) {
+            if (sku.equals("Na2CO3")){
+                wcsToWmsApiService.turnOffTheUnpacker();
+            }
+            if (sku.equals("C5H10OS2")){
+                wcsToWmsApiService.turnOffTheUnpacker1();
+            }
+            if (sku.equals("(NaPO3)6")){
+                wcsToWmsApiService.turnOffTheUnpacker2();
+            }
+            if (sku.equals("(NH4)2SO4")){
+                wcsToWmsApiService.turnOffTheUnpacker3();
+            }
+            if (sku.equals("CH3CH2OCS2Na")){
+                wcsToWmsApiService.turnOffTheUnpacker4();
+            }
+        };
+        return AjaxResult.success("");
+    }
+
     /**
      * 生成唯一任务号
      *

+ 101 - 1
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocAsnSubService.java

@@ -4,6 +4,7 @@ import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
+import com.ruoyi.ams.xuankuang.domain.form.AgvInTaskForm;
 import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
 import com.ruoyi.base.constant.Constant;
@@ -12,6 +13,7 @@ import com.ruoyi.base.service.IBaseSkuService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.io.Console;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 入库业务
@@ -42,8 +45,19 @@ public class WmsDocAsnSubService {
     private IBaseSkuService iBaseSkuService;
     @Autowired
     private WmsDocOrderSubService wmsDocOrderSubService;
+    @Autowired
+    private WcsToWmsApiService wcsToWmsApiService;
+    @Autowired
+    private WmsToWcsApiService wmsToWcsApiService;
+    @Autowired
+    private WcsTaskSubService wcsTaskSubService;
 
 
+    /**
+     * 工单任务下发接口
+     * @param asnNo
+     * @return
+     */
     @Transactional
     public AjaxResult queryDocAsnDetails(@PathVariable("asnNo") String asnNo) {
         //  根据单号,和创建状态为00
@@ -62,7 +76,12 @@ public class WmsDocAsnSubService {
             billTaskForm.setType(Constant.ASN_TYP.getByValue(wmsDocAsnHeader.getAsnType()).getValue1());
             billTaskForm.setNum(details.getExpectedQty().intValue());
             billTaskForm.setLineNo(details.getAsnLineNo().toString());
-//            billTaskForm.setDest(Constant.PRODUCTION_LINE_SITE.getByValue());
+            if (Constant.ASN_TYP.getByValue(wmsDocAsnHeader.getAsnType()).getValue1() == 2){
+                billTaskForm.setDest(Integer.parseInt(wmsDocAsnHeader.getAsnReference2()));
+                AjaxResult ajaxResult = wcsTaskSubService.addCrossDatabaseTasks(asnNo);
+                String msg = ajaxResult.getMsg();
+                billTaskForm.setLineNo(msg);
+            }
             billTaskForm.setMaterial(Integer.valueOf(baseSku.getDesc2()));
             //调用工单下发
             WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService();
@@ -89,4 +108,85 @@ public class WmsDocAsnSubService {
         return AjaxResult.success("", list);
 
     }
+
+    /**
+     * agv入库任务下发
+     * @param asnNo
+     * @return
+     */
+    @Transactional
+    public AjaxResult agvInTask(@PathVariable("asnNo") String asnNo) {
+        //  根据单号,和创建状态为00
+        WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails();
+        wmsDocAsnDetails.setAsnNo(asnNo);
+        wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS00.getValue());
+        List<WmsDocAsnDetails> list = iWmsDocAsnDetailsService.selectWmsDocAsnDetailsList(wmsDocAsnDetails);
+
+        WmsDocAsnHeader wmsDocAsnHeader = iWmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo);
+        boolean con = true;
+        for (WmsDocAsnDetails details:list) {
+            BaseSku baseSku = iBaseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, details.getSku());
+            AgvInTaskForm agvInTaskForm = new AgvInTaskForm();
+            agvInTaskForm.setAgvId("1");
+            agvInTaskForm.setMaterial(Integer.valueOf(baseSku.getDesc2()));
+            agvInTaskForm.setDocNo(asnNo);
+            agvInTaskForm.setNum(details.getExpectedQty().intValue());
+            // wms物料编码
+            String sku = iBaseSkuService.selectBaseSkuByMaterialType("5").getSku();
+            //托盘码
+            String pallentNo = "1234567";
+//            AjaxResult ajaxResult = wcsToWmsApiService.theBucketIsLoadedIntoTheLibrary(sku, asnNo, pallentNo, details.getExpectedQty());
+//            Object data = ajaxResult.getData();
+//            Map map = (Map) data;
+//            String taskNo = map.get("taskNo").toString();
+//            String row = map.get("row").toString();
+//            String col = map.get("col").toString();
+//            String floor = map.get("floor").toString();
+            agvInTaskForm.setTaskNo("1234556");
+            agvInTaskForm.setPalletId(pallentNo);
+            agvInTaskForm.setRow(Integer.parseInt("2"));
+            agvInTaskForm.setCol(Integer.parseInt("4"));
+            agvInTaskForm.setFloor(Integer.parseInt("1"));
+            //调用agv入库任务下发
+            WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService();
+            WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsAgvInTask(agvInTaskForm);
+            if (!wcsResponseVo.isSuccess()) {
+                con = false;
+                wmsDocAsnHeader.setNotes(wcsResponseVo.getMessage());
+                iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader);
+                continue;
+            }
+            // 修改 明细行状态为10
+            details.setLineStatus(Constant.ASN_STS.STS10.getValue());
+            iWmsDocAsnDetailsService.updateWmsDocAsnDetails(details);
+        }
+        if (con == true) {
+            wmsDocAsnHeader.setNotes("");
+            // 修改 单头10
+            wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue());
+            iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader);
+        }
+        return AjaxResult.success("", list);
+
+    }
+
+    /**
+     * agv回调wcs卸货完成
+     * @param taskNo
+     * @return
+     */
+    public AjaxResult wmsAgvCallbackIntask(String taskNo){
+        wmsToWcsApiService.wmsAgvCallbackIntask(taskNo);
+        return AjaxResult.success();
+    }
+
+    /**
+     * agv回调wcs取货完成
+     * @param wcsId
+     * @return
+     */
+    public AjaxResult wmsAgvCallbackOuttask(String wcsId){
+        wmsToWcsApiService.wmsAgvCallbackOuttask(wcsId);
+        return AjaxResult.success();
+    }
 }