Browse Source

1.Wcs组盘上报
2.wcs任务完成状态反馈
3.任务完成库存状态修改
待测试

LZH 2 years ago
parent
commit
f24c6d46c3

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/xuankuang/controller/WcsToWmsApiController.java

@@ -47,7 +47,7 @@ public class WcsToWmsApiController {
     @ApiOperation("任务状态反馈")
     @PostMapping("/taskStatusResponse")
     public AjaxResult taskStatusResponse(@RequestBody TaskStatusForm taskStatusForm) {
-        return AjaxResult.success("");
+        return wcsToWmsApiService.taskStatusResponse(taskStatusForm);
     }
 
     /**

+ 33 - 5
ruoyi-admin/src/main/java/com/ruoyi/xuankuang/controller/test/XuanKuangTestApiController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.xuankuang.controller.test;
 
+import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.xuankuang.domain.form.*;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
 import com.ruoyi.ams.xuankuang.service.WmsToWcsApiService;
@@ -39,7 +40,9 @@ public class XuanKuangTestApiController {
      */
     @ApiOperation("wms工单任务下发接口")
     @PostMapping("/billTaskForm")
-    public WcsResponseVo wmsBillTask(@RequestBody BillTaskForm billTaskForm) {return WmsToWcsApiService.wmsBillTask(billTaskForm);}
+    public WcsResponseVo wmsBillTask(@RequestBody BillTaskForm billTaskForm) {
+        return WmsToWcsApiService.wmsBillTask(billTaskForm);
+    }
 
     /**
      * wms开启破袋机回调接口
@@ -49,7 +52,9 @@ public class XuanKuangTestApiController {
      */
     @ApiOperation("wms开启破袋机回调接口")
     @PostMapping("/callbackBbmForm")
-    public WcsResponseVo wmsCallbackBbmTask(@RequestBody CallbackBbmForm callbackBbmForm) {return WmsToWcsApiService.wmsCallbackBbmTask(callbackBbmForm);}
+    public WcsResponseVo wmsCallbackBbmTask(@RequestBody CallbackBbmForm callbackBbmForm) {
+        return WmsToWcsApiService.wmsCallbackBbmTask(callbackBbmForm);
+    }
 
     /**
      * agv入库任务下发接口
@@ -59,7 +64,9 @@ public class XuanKuangTestApiController {
      */
     @ApiOperation("agv入库任务下发接口")
     @PostMapping("/agvInTaskForm")
-    public WcsResponseVo wmsAgvInTask(@RequestBody AgvInTaskForm agvInTaskForm) {return WmsToWcsApiService.wmsAgvInTask(agvInTaskForm);}
+    public WcsResponseVo wmsAgvInTask(@RequestBody AgvInTaskForm agvInTaskForm) {
+        return WmsToWcsApiService.wmsAgvInTask(agvInTaskForm);
+    }
 
     /**
      * agv回调wcs卸货完成
@@ -69,7 +76,9 @@ public class XuanKuangTestApiController {
      */
     @ApiOperation("agv回调wcs卸货完成")
     @PostMapping("/agvCallbackIntaskForm")
-    public WcsResponseVo wmsAgvCallbackIntask(String taskNo) {return WmsToWcsApiService.wmsAgvCallbackIntask(taskNo);}
+    public WcsResponseVo wmsAgvCallbackIntask(String taskNo) {
+        return WmsToWcsApiService.wmsAgvCallbackIntask(taskNo);
+    }
 
     /**
      * agv回调wcs货物取走接口
@@ -79,6 +88,25 @@ public class XuanKuangTestApiController {
      */
     @ApiOperation("agv回调wcs货物取走接口")
     @PostMapping("/agvCallbackOuttask")
-    public WcsResponseVo wmsAgvCallbackOuttask(String wcsId) {return WmsToWcsApiService.wmsAgvCallbackOuttask(wcsId);}
+    public WcsResponseVo wmsAgvCallbackOuttask(String wcsId) {
+        return WmsToWcsApiService.wmsAgvCallbackOuttask(wcsId);
+    }
+
+
+
+    //region 挡板测试
+    @PostMapping("/test1")
+    public WcsResponseVo test1(@RequestBody BillTaskForm billTaskForm) {
+        System.out.println("工单下发:" + JSON.toJSONString(billTaskForm));
+        WcsResponseVo wcsResponseVo = new WcsResponseVo();
+        if (billTaskForm.getNum() == 2) {
+            wcsResponseVo.setCode("200");
+        }else {
+            wcsResponseVo.setCode("500");
+        }
+        return wcsResponseVo;
+    }
+    //endregion
+
 
 }

+ 1 - 2
ruoyi-ui/src/views/ams/inv/invLotLocId/index.vue

@@ -137,10 +137,9 @@
       <el-table-column label="物料" align="center" prop="sku" width="200"/>
       <el-table-column label="物料名称" align="center" prop="skuName" width="200"/>
       <el-table-column label="物料种类" align="center" prop="skuTypeName"/>
-      <el-table-column label="托盘号" align="center" prop="palletNo"/>
-      <el-table-column label="是否满拖" align="center" prop="isFull"/>
       <el-table-column label="库存数量" align="center" prop="qty"/>
       <el-table-column label="已分配数量" align="center" prop="qtyallocated" width="200"/>
+      <el-table-column label="wcs任务号" align="center" prop="traceid"/>
       <el-table-column
         v-for="(item, index) in tableOption"
         :key="index"

+ 1 - 0
ruoyi-ui/src/views/ams/inv/locationView/index.vue

@@ -93,6 +93,7 @@
           <el-table-column label="物料" align="center" prop="sku" width="200"/>
           <el-table-column label="物料名称" align="center" prop="skuName" width="200"/>
           <el-table-column label="库位" align="center" prop="locationNo" width="200"/>
+          <el-table-column label="wcs任务号" align="center" prop="traceid" width="200"/>
           <el-table-column label="库存数量" align="center" prop="qty"/>
           <el-table-column label="已分配数量" align="center" prop="qtyallocated" width="200"/>
           <el-table-column

+ 1 - 0
warewms-ams/src/main/java/com/ruoyi/ams/config/domain/dto/AgvCallDTO.java

@@ -14,6 +14,7 @@ public class AgvCallDTO {
     private String locationFrom;
     private String locationTo;
     private String palletNo;
+    private String taskNo;
     private String extParam;
     private Long warehouseId;
     private String toArea;// 目标区域(货物最终去掉区域)

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/domain/vo/InvLotLocIdLotattVO.java

@@ -9,6 +9,7 @@ public class InvLotLocIdLotattVO {
     private Long locationId;
     private String lotnum;
     private String customerId;
+    private String traceid;
     private String sku;
     private String skuName;
     private String skuTypeName;
@@ -285,4 +286,12 @@ public class InvLotLocIdLotattVO {
     public void setWeight(Double weight) {
         this.weight = weight;
     }
+
+    public String getTraceid() {
+        return traceid;
+    }
+
+    public void setTraceid(String traceid) {
+        this.traceid = traceid;
+    }
 }

+ 2 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -481,6 +481,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     @Override
     public String initInv(String locationId, AgvCallDTO agvCallDTO) {
         String customerId = Constant.CUSTOMER_ID;
+        String taskNo = agvCallDTO.getTaskNo() == null? "":agvCallDTO.getTaskNo();
         List<AgvCallItemDTO> agvCallItemDTOList = agvCallDTO.getAgvCallItemDTOList();
         for (AgvCallItemDTO agvCallItemDTO : agvCallItemDTOList) {
             String sku = agvCallItemDTO.getSku();
@@ -501,6 +502,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
             invLotLocId.setLocationId(locationId);
             invLotLocId.setSku(sku);
             invLotLocId.setCustomerId(customerId);
+            invLotLocId.setTraceid(taskNo);
             invLotLocId.setQty(new BigDecimal(qty));
             invLotLocId.setQtyEach(new BigDecimal(qty));
             invLotLocId.setQtyallocated(BigDecimal.ZERO);

+ 6 - 18
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/domain/form/StackingCompletionForm.java

@@ -27,9 +27,9 @@ public class StackingCompletionForm {
      */
     private String relatedWmsNo;
     /**
-     * 阻盘任务号,回库单号
+     * Wcs任务号 唯一标识
      */
-    private String taskNo;
+    private String wcsNo;
 
     public int getReportType() {
         return reportType;
@@ -71,23 +71,11 @@ public class StackingCompletionForm {
         this.relatedWmsNo = relatedWmsNo;
     }
 
-    public String getTaskNo() {
-        return taskNo;
+    public String getWcsNo() {
+        return wcsNo;
     }
 
-    public void setTaskNo(String taskNo) {
-        this.taskNo = taskNo;
-    }
-
-    public StackingCompletionForm(int reportType, String palletNo, String materialType, int qty, String relatedWmsNo, String taskNo) {
-        this.reportType = reportType;
-        this.palletNo = palletNo;
-        this.materialType = materialType;
-        this.qty = qty;
-        this.relatedWmsNo = relatedWmsNo;
-        this.taskNo = taskNo;
-    }
-
-    public StackingCompletionForm() {
+    public void setWcsNo(String wcsNo) {
+        this.wcsNo = wcsNo;
     }
 }

+ 19 - 4
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/domain/form/TaskStatusForm.java

@@ -8,6 +8,25 @@ public class TaskStatusForm {
      * WCS任务号
      */
     private String taskNo;
+    /**
+     * Wms单号
+     */
+    private String relatedWmsNo;
+
+    public TaskStatusForm(String taskNo, String relatedWmsNo, int status) {
+        this.taskNo = taskNo;
+        this.relatedWmsNo = relatedWmsNo;
+        this.status = status;
+    }
+
+    public String getRelatedWmsNo() {
+        return relatedWmsNo;
+    }
+
+    public void setRelatedWmsNo(String relatedWmsNo) {
+        this.relatedWmsNo = relatedWmsNo;
+    }
+
     /**
      * 任务执行状态
      */
@@ -16,10 +35,6 @@ public class TaskStatusForm {
     public TaskStatusForm() {
     }
 
-    public TaskStatusForm(String taskNo, int status) {
-        this.taskNo = taskNo;
-        this.status = status;
-    }
 
     public String getTaskNo() {
         return taskNo;

+ 23 - 2
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/InvLotLocIdSubService.java

@@ -1,11 +1,16 @@
 package com.ruoyi.ams.xuankuang.service;
 
 import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
+import com.ruoyi.ams.config.domain.dto.AgvCallItemDTO;
+import com.ruoyi.ams.config.domain.dto.LotattDTO;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author JWK
  * @version 1.0
@@ -22,11 +27,27 @@ public class InvLotLocIdSubService {
      * 初始化库存
      *
      * @param locationId
+     * @param sku
+     * @param trayNo
+     * @param asnNo
+     * @param taskNo
+     * @param qty
      * @return
      */
-    public AjaxResult initInv(String locationId,String sku,String trayNo,Double qty) {
+    public AjaxResult initInv(String locationId, String sku, String trayNo, String asnNo
+            , String taskNo, Double qty) {
         AgvCallDTO agvCallDTO = new AgvCallDTO();
-
+        AgvCallItemDTO agvCallItemDTO = new AgvCallItemDTO();
+        agvCallDTO.setTaskNo(taskNo);
+        agvCallItemDTO.setSku(sku);
+        agvCallItemDTO.setQty(qty);
+        LotattDTO lotattDTO = new LotattDTO();
+        lotattDTO.setLotatt07(trayNo);
+        lotattDTO.setLotatt08(asnNo);
+        agvCallItemDTO.setLotattDTO(lotattDTO);
+        List<AgvCallItemDTO> agvCallItemDTOList = new ArrayList<>();
+        agvCallItemDTOList.add(agvCallItemDTO);
+        agvCallDTO.setAgvCallItemDTOList(agvCallItemDTOList);
         invLotLocIdService.initInv(locationId, agvCallDTO);
         return AjaxResult.success("初始化库存成功!");
     }

+ 136 - 2
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsTaskSubService.java

@@ -2,20 +2,32 @@ package com.ruoyi.ams.xuankuang.service;
 
 import com.ruoyi.ams.task.domain.WcsTask;
 import com.ruoyi.ams.task.service.IWcsTaskService;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.BaseLocationInfo;
+import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
 
 /**
  * @author JWK
  * @version 1.0
  * @date 2023/4/4 10:48
  */
+@Slf4j
 @Service
 public class WcsTaskSubService {
 
     @Autowired
     private IWcsTaskService iWcsTaskService;
+    @Autowired
+    private IBaseLocationInfoService iBaseLocationInfoService;
 
 
     /**
@@ -23,12 +35,134 @@ public class WcsTaskSubService {
      *
      * @return
      */
-    public AjaxResult addWcsTask() {
+    public AjaxResult addWcsTask(String locationFrom, String locationTo
+            , String asnNo
+            , String palletNo
+            , String wcsNo) {
+
+        BaseLocationInfo baseLocationInfoFrom = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, 1l);
+        BaseLocationInfo baseLocationInfoTo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, 1l);
+
+        String taskNo = System.currentTimeMillis() + "";
         WcsTask wcsTask = new WcsTask();
+        wcsTask.setTaskNo(taskNo);
+        wcsTask.setState(10L);
+        wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
+        wcsTask.setBusinessType("01");
+        wcsTask.setAreaFrom(baseLocationInfoFrom.getZoneId().toString());
+        wcsTask.setLocationFrom(baseLocationInfoFrom.getId().toString());
+        wcsTask.setAreaTo(baseLocationInfoTo.getZoneId().toString());
+        wcsTask.setLocationTo(baseLocationInfoTo.getId().toString());
+        wcsTask.setCreateTime(new Date());
+        wcsTask.setCreateBy("Wcs");
+        wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
+        wcsTask.setPriority(10L);
+        wcsTask.setExt1(asnNo);
+        wcsTask.setExt2(palletNo);
+        wcsTask.setExt3(wcsNo);
+        wcsTask.setRemark("立体库任务");
         int i = iWcsTaskService.insertWcsTask(wcsTask);
         if (i > 0) {
-            return AjaxResult.success("任务增加成功!");
+            iBaseLocationInfoService.lockLocationStockStatus(Long.valueOf(wcsTask.getLocationFrom())
+                    , Long.valueOf(wcsTask.getLocationTo())
+                    , Constant.WAREHOUSE_ID, "Wcs");
+            return AjaxResult.success("任务增加成功!", taskNo);
         }
         return AjaxResult.error("任务增加失败");
     }
+
+
+    /**
+     * wcs任务反馈
+     *
+     * @param taskNo
+     * @param state
+     * @param carNo
+     */
+    @Transactional
+    public void callBack(String taskNo, Integer state, Integer carNo) {
+        String updateBy = "Wcs";
+        log.info("wcs回传------------->" + taskNo + "," + state);
+        WcsTask wcsTask = iWcsTaskService.selectWcsTaskByTaskNo(taskNo);
+        if (wcsTask == null) {
+            log.info("agv回传没有任务记录------------->");
+            return;
+        }
+
+        if (state > 1 && state != 7) {
+            wcsTask.setAgvNo(carNo + "");
+        }
+
+        if (wcsTask.getState() == 2 || wcsTask.getState() == 7) {
+            log.info("已完成的任务无需反馈");
+            return;
+        }
+        try {
+            switch (state) {
+                case 1:
+                    wcsTask.setStartTime(new Date());
+                    break;
+                case 2://完成
+                    if (wcsTask.getState() == 2) {
+                        log.info("不能重复放货," + taskNo);
+                        return;
+                    }
+                    wcsTask.setEndTime(new Date());
+                    // 解锁库位
+                    iBaseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
+                            , Long.parseLong(wcsTask.getLocationTo())
+                            , Constant.WAREHOUSE_ID, updateBy);
+                    // 将起始点库存移动到终点库位
+                    iWcsTaskService.moveStartingPointToDestination(wcsTask);
+                    // todo 修改入库单收货数量
+                    completeTheCallback(wcsTask);
+
+                    break;
+                case 4:
+//                    if (wcsTask.getState() == 4) {
+//                        log.info("不能重复取货," + taskNo);
+//                        return;
+//                    }
+//                    // 解锁起始库位
+//                    iBaseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
+//                            , Constant.WAREHOUSE_ID, updateBy);
+//                    // 将起始点库存移动到中间缓存位
+//                    iWcsTaskService.moveStartingPointToMiddleCache(wcsTask);
+
+                    break;
+                case 7://取消
+                    wcsTask.setEndTime(new Date());
+                    // 解锁终点和起始库位
+                    iBaseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom()), Long.parseLong(wcsTask.getLocationTo())
+                            , Constant.WAREHOUSE_ID, updateBy);
+                    // 取消任务删除中间缓存库存
+//                        cancelTaskDelMiddleCache(wcsTask);
+                    break;
+                default:
+                    break;
+            }
+        } catch (Exception e) {
+            log.info(wcsTask.getTaskNo() + "-----" + "回调状态:" + state + "异常", e);
+            wcsTask.setRemark("回调状态:" + state + "异常");
+            throw new RuntimeException();
+        }
+        wcsTask.setState(state.longValue());
+        wcsTask.setUpdateDate(new Date());
+        iWcsTaskService.updateWcsTask(wcsTask);
+    }
+
+
+    /**
+     * 任务完成糊回调
+     *
+     * @param wcsTask
+     * @return
+     */
+    public AjaxResult completeTheCallback(WcsTask wcsTask) {
+        // 托盘号
+        String ext1 = wcsTask.getExt1();
+        // 入库单号
+        String ext2 = wcsTask.getExt2();
+        return AjaxResult.success("");
+    }
 }

+ 69 - 6
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsToWmsApiService.java

@@ -1,13 +1,22 @@
 package com.ruoyi.ams.xuankuang.service;
 
+import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
+import com.ruoyi.ams.inv.service.IInvLotLocIdService;
+import com.ruoyi.ams.task.domain.WcsTask;
+import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.ams.xuankuang.domain.form.StackingCompletionForm;
+import com.ruoyi.ams.xuankuang.domain.form.TaskStatusForm;
 import com.ruoyi.ams.xuankuang.domain.vo.LocationCoordinateVo;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
+import com.ruoyi.base.service.IBaseLocationInfoService;
 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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author HuKang
@@ -21,7 +30,15 @@ public class WcsToWmsApiService {
     @Autowired
     private IBaseSkuService iBaseSkuService;
     @Autowired
+    private IBaseLocationInfoService iBaseLocationInfoService;
+    @Autowired
     private BaseLocationInfoSubService baseLocationInfoSubService;
+    @Autowired
+    private InvLotLocIdSubService InvLotLocIdSubService;
+    @Autowired
+    private WcsTaskSubService wcsTaskSubService;
+    @Autowired
+    private IWcsTaskService iWcsTaskService;
 
     /**
      * 组盘上报
@@ -29,7 +46,8 @@ public class WcsToWmsApiService {
      * @param stackingCompletion
      * @return
      */
-    public AjaxResult stackingCompletion(StackingCompletionForm stackingCompletion) {
+    @Transactional
+    public synchronized AjaxResult stackingCompletion(StackingCompletionForm stackingCompletion) {
         // 上报类型
         int reportType = stackingCompletion.getReportType();
         // 托盘号
@@ -39,9 +57,30 @@ public class WcsToWmsApiService {
         // wms物料编码
         String sku = iBaseSkuService.selectBaseSkuByMaterialType(materialType).getSku();
         // 数量
-        int qty = stackingCompletion.getQty();
+        Double qty = (double) stackingCompletion.getQty();
         // 入库单号
         String asnNo = stackingCompletion.getRelatedWmsNo();
+        // 任务号
+        String wcsNo = stackingCompletion.getWcsNo();
+
+        // 判重
+        WcsTask wcsTaskQuery = new WcsTask();
+//        wcsTaskQuery.setExt1(asnNo);
+//        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);
@@ -49,12 +88,22 @@ public class WcsToWmsApiService {
             AjaxResult.error("没有可以推荐的目标库位!");
         }
 
-        // todo 生成任务
-        // todo 入库缓存位生成库存
-        // todo 修改入库单收货数量
-
+        // 生成任务
+        String taskNo = "";
+        AjaxResult ajaxResult = wcsTaskSubService.addWcsTask(Constant.LOC_STAGE_CACHE.toString()
+                , baseLocationLotattVO.getId().toString()
+                , asnNo
+                , palletNo
+                , wcsNo);
+        if (!ajaxResult.isSuccess()) {
+            return ajaxResult;
+        }
+        taskNo = ajaxResult.get("data").toString();
+        // 入库缓存位生成库存
+        InvLotLocIdSubService.initInv(Constant.LOC_STAGE_CACHE.toString(), sku, palletNo, asnNo, 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()));
@@ -63,4 +112,18 @@ public class WcsToWmsApiService {
     }
 
 
+    /**
+     * 任务状态反馈
+     *
+     * @param taskStatusForm
+     * @return
+     */
+    public AjaxResult taskStatusResponse(TaskStatusForm taskStatusForm) {
+        String taskNo = taskStatusForm.getTaskNo();
+        int status = taskStatusForm.getStatus();
+        wcsTaskSubService.callBack(taskNo, status, null);
+        return AjaxResult.success();
+    }
+
+
 }

+ 7 - 5
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocAsnSubService.java

@@ -7,6 +7,8 @@ import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
 import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
 import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.BaseSku;
+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;
@@ -35,6 +37,8 @@ public class WmsDocAsnSubService {
     private IWmsDocAsnHeaderService iWmsDocAsnHeaderService;
     @Autowired
     private IWmsDocAsnDetailsService iWmsDocAsnDetailsService;
+    @Autowired
+    private IBaseSkuService iBaseSkuService;
 
 
     @Transactional
@@ -48,16 +52,14 @@ public class WmsDocAsnSubService {
         WmsDocAsnHeader wmsDocAsnHeader = iWmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo);
         boolean con = true;
         for (WmsDocAsnDetails details:list) {
+            BaseSku baseSku = iBaseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, details.getSku());
             BillTaskForm billTaskForm = new BillTaskForm();
             billTaskForm.setDocNo(details.getAsnNo());
-            billTaskForm.setTaskNo(details.getAsnLineNo().toString());
-            if (details.getDesc2()!=5){
-                billTaskForm.setPackageType(1);
-            }
+            billTaskForm.setPackageType(Integer.valueOf(baseSku.getSkuType()));
             billTaskForm.setType(Constant.ASN_TYP.getByValue(wmsDocAsnHeader.getAsnType()).getValue1());
             billTaskForm.setNum(details.getExpectedQty().intValue());
 //            billTaskForm.setDest(Constant.PRODUCTION_LINE_SITE.getByValue());
-            billTaskForm.setMaterial(details.getDesc2());
+            billTaskForm.setMaterial(Integer.valueOf(baseSku.getDesc2()));
             WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService();
             WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsBillTask(billTaskForm);
             if (!wcsResponseVo.isSuccess()) {

+ 2 - 1
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -31,6 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="lotnum"    column="lotnum"    />
         <result property="locationNo"    column="location_no"    />
         <result property="locationId"    column="location_id"    />
+        <result property="traceid"    column="traceid"    />
         <result property="zoneName"    column="zone_name"    />
         <result property="customerId"    column="customer_id"    />
         <result property="sku"    column="sku"    />
@@ -376,7 +377,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectInvLocIdLotattByLocationId" resultMap="InvLotLocIdLotattResult">
         select
-            inv.location_id,sk.sku,sk.desc1 sku_name,b.location_no,inv.qty,inv.qtyallocated
+            inv.location_id,sk.sku,sk.desc1 sku_name,b.location_no,inv.qty,inv.qtyallocated,inv.traceid
             ,att.lotnum, att.customer_id, lotatt01, lotatt02, lotatt03, lotatt04,qua.dict_label lotatt05, lotatt06, lotatt07, lotatt08, lotatt09, lotatt10, lotatt11, lotatt12, lotatt13, lotatt14, lotatt15, lotatt16, lotatt17, lotatt18
         from inv_lot_loc_id inv
         left join inv_lot_att att on inv.lotnum = att.lotnum

+ 9 - 0
warewms-ams/src/main/resources/mapper/ams/WcsTaskMapper.xml

@@ -106,6 +106,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="endTime != null "> and end_time = #{endTime}</if>
             <if test="parentTask != null  and parentTask != ''"> and parent_task = #{parentTask}</if>
             <if test="agvNo != null  and agvNo != ''"> and agv_no like concat('%', #{agvNo}, '%')</if>
+            <if test="ext1 != null  and ext1 != ''"> and ext1 = #{ext1}</if>
+            <if test="ext2 != null  and ext2 != ''"> and ext2 = #{ext2}</if>
+            <if test="ext3 != null  and ext3 != ''"> and ext3 = #{ext3}</if>
+            <if test="ext4 != null  and ext4 != ''"> and ext4 = #{ext4}</if>
+            <if test="ext5 != null  and ext5 != ''"> and ext5 = #{ext5}</if>
+            <if test="ext6 != null  and ext6 != ''"> and ext6 = #{ext6}</if>
+            <if test="ext7 != null  and ext7 != ''"> and ext7 = #{ext7}</if>
+            <if test="ext8 != null  and ext8 != ''"> and ext8 = #{ext8}</if>
+
         </where>
     </select>
 

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

@@ -26,7 +26,7 @@ public class Constant {
 
     //region WCS智库
 
-    public static final String WCS_TASK_URL = "";
+    public static final String WCS_TASK_URL = "http://localhost:8008/test/wcs/test1";
 
     /**
      * 产线编号