瀏覽代碼

桶装物料出库需求全部代码+移库需求部分代码

ChenYang 1 年之前
父節點
當前提交
333b28e7a2

+ 1 - 22
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/BacketLocInvController.java

@@ -2,20 +2,14 @@ package com.ruoyi.web.controller.warewms.ams;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.ruoyi.ams.task.service.IWcsTaskService;
-import com.ruoyi.ams.xuankuang.domain.form.EmptyPalletLocForm;
-import com.ruoyi.ams.xuankuang.service.WcsToWmsApiService;
-import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.BaseLocationZone;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseLocationZoneService;
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.sun.org.apache.regexp.internal.RE;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -29,19 +23,12 @@ import java.util.stream.Collectors;
 @Api("出入库场景下的其他逻辑")
 @RestController
 @RequestMapping("/inv/asn")
-public class BacketLocInvController {
+public class BucketLocInvController {
 
 
     @Autowired
     private IBaseLocationInfoService iBaseLocationInfoService;
 
-    @Autowired
-    private WcsToWmsApiService wcsToWmsApiService;
-
-    @Qualifier("bucketWcsToWmsApiService")
-    @Autowired
-    private WcsToWmsApiService bucketWcsToWmsApiService;
-
     @Autowired
     private IWcsTaskService wcsTaskService;
 
@@ -61,14 +48,6 @@ public class BacketLocInvController {
     }
 
 
-    //TODO 李卫
-    @ApiOperation("桶装入库:空托仓位入库")
-    @PostMapping(value = "/emptyPalletLoc")
-    public AjaxResult emptyPalletLoc(@RequestBody EmptyPalletLocForm emptyPalletLocForm) {
-        return bucketWcsToWmsApiService.emptyPalletLoc(emptyPalletLocForm);
-    }
-
-
     @ApiOperation("获取当前场景出入库的库区")
     @GetMapping(value = "/getZoneList")
     public AjaxResult getZoneList() {

+ 27 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/InvLotLocIdController.java

@@ -1,11 +1,15 @@
 package com.ruoyi.web.controller.warewms.ams;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.druid.util.StringUtils;
+import com.google.common.collect.Lists;
 import com.ruoyi.ams.inv.domain.InvLotLocId;
 import com.ruoyi.ams.inv.domain.form.InvLocIdSearchFrom;
 import com.ruoyi.ams.inv.domain.form.InvLotLocIdAdjForm;
 import com.ruoyi.ams.inv.domain.form.InvLotLocIdMoveForm;
 import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
+import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
@@ -15,11 +19,13 @@ import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.Assert;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 库位库存信息Controller
@@ -86,6 +92,27 @@ public class InvLotLocIdController extends BaseController {
         }
     }
 
+
+
+    @Log(title = "移动空托(桶装物料场景专用)", businessType = BusinessType.UPDATE)
+    @PostMapping("/moveEmptyPallet")
+    public AjaxResult moveEmptyPallet(@RequestParam String locationId, @RequestParam String moveType) {
+        Constant.MoveType moveTypeEnum = Constant.MoveType.MOVE_IN;
+        List<String> moveTypeList = Lists.newArrayList(moveTypeEnum.values()).stream().map(item -> item.getType()).collect(Collectors.toList());
+        Assert.isTrue(CollectionUtil.contains(moveTypeList, moveType), "args [moveType] is illegal");
+        return StringUtils.equals(moveType, Constant.MoveType.MOVE_IN.getType())
+                ? this.handleEmptyPalletIn(locationId) : this.handleEmptyPalletOut(locationId) ;
+    }
+
+    private AjaxResult handleEmptyPalletOut(String locationId) {
+        return AjaxResult.success();
+    }
+
+    private AjaxResult handleEmptyPalletIn(String locationId) {
+        return AjaxResult.success();
+
+    }
+
     /**
      * 库存清理
      *

+ 3 - 2
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/StatusUpdateServiceImpl.java

@@ -77,11 +77,12 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
 
     @Override
     public void wcsTaskNotice(String taskNo, Integer eventId) {
-        if(ObjectUtil.equals(eventId, 92)){
+        Integer status = eventIdToStatus.get(eventId);
+        if(ObjectUtil.equals(status, 6)){
             wmsDocAsnSubService.wmsAgvCallbackIntask(taskNo);
             return;
         }
-        if(ObjectUtil.equals(eventId, 91)) {
+        if(ObjectUtil.equals(status, 4)) {
             WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
             if(ObjectUtil.isNull(wcsTask) || StringUtils.isBlank(wcsTask.getExt3())){
                 log.info("task is not found, taskNo is {}, caused by : {}");

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

@@ -196,7 +196,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
 
     /**
      * 库存移动
-     *
+     * c
      * @param invLotLocIdMoveForm
      * @return
      */

+ 1 - 3
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -316,8 +316,6 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                     } catch (Exception e) {
                         e.printStackTrace();
                     }
-                } else {
-
                 }
             }
         }
@@ -551,8 +549,8 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
      * 根据场景code返回库位列表
      * @param subSceneCode
      * @return
-     * //TODO 李卫
      */
+    @Override
     public List<Long> getBucketLocationIdList(String subSceneCode) {
         String bucketConfig = sysConfigService.selectConfigByKey(SceneConstants.STORAGE_BUCKET_SCENE);
         if(StringUtils.isBlank(bucketConfig)) return Lists.newArrayList();

+ 58 - 13
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/AgvCallProxyService.java

@@ -12,11 +12,13 @@ import com.ruoyi.ams.business.IBusinessService;
 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.order.domain.WmsDocOrderDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
 import com.ruoyi.ams.order.service.IWmsDocOrderDetailsService;
 import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.ams.xuankuang.domain.form.AgvInTaskForm;
+import com.ruoyi.ams.xuankuang.domain.form.OutTaskForm;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
@@ -28,16 +30,18 @@ import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysConfigService;
+import com.sun.deploy.perf.PerfRollup;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.stereotype.Service;
+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.baomidou.mybatisplus.core.toolkit.StringPool.Y;
+
 /**
  * @author Jwk
  * @version 1.0
@@ -70,6 +74,8 @@ public class AgvCallProxyService {
     @Autowired
     private IWmsDocOrderDetailsService iWmsDocOrderDetailsService;
     @Autowired
+    private WmsDocOrderSubService wmsDocOrderSubService;
+    @Autowired
     private WcsTaskSubService wcsTaskSubService;
     @Autowired
     private WmsToWcsApiService wmsToWcsApiService;
@@ -84,6 +90,7 @@ public class AgvCallProxyService {
      * 桶装入库
      * @return
      */
+    @Transactional(rollbackFor = RuntimeException.class)
     public void bucketIntoStorage(String palletNo, String materialType,
                                                       String agvSourceLocationId, Double quantity) {
         //1.预备参数设置
@@ -121,6 +128,7 @@ public class AgvCallProxyService {
     }
 
 
+    @Transactional(rollbackFor = RuntimeException.class)
     public void bucketOutOfStorage(String palletNo, String materialType, String targetLocationId, Double quantity) {
         BaseSku baseSku  = iBaseSkuService.selectBaseSkuByMaterialType(materialType);
         Assert.isTrue(ObjectUtil.isNotNull(baseSku) && StringUtils.isNotBlank(baseSku.getSku()), "the materialType is illegal");
@@ -128,11 +136,48 @@ public class AgvCallProxyService {
         Assert.isTrue(ObjectUtil.isNotNull(quantity) && quantity > 0, "quantity is illegal");
         BigDecimal quantityDecimal = new BigDecimal(quantity);
 
-        iWmsDocOrderHeaderService.createOrderHeader(orderNo, Constant.ORDER_TYP.TZ.getValue(), Constant.ORDER_STS.STS00.getValue());
-        iWmsDocOrderDetailsService.createOrderDetail(orderNo, baseSku.getSku(), quantityDecimal);
+        WmsDocOrderHeader docOrderHeader = iWmsDocOrderHeaderService.createOrderHeader(orderNo, Constant.ORDER_TYP.TZ.getValue(), Constant.ORDER_STS.STS00.getValue());
+        WmsDocOrderDetails docOrderDetail = iWmsDocOrderDetailsService.createOrderDetail(orderNo, baseSku.getSku(), quantityDecimal);
+
+        List<BaseLocationLotattDTO> baseLocationLotattList = wmsDocOrderSubService.addConfirmAllocationAuto(orderNo);
+        List<BaseLocationLotattDTO> filteredBaseLocationLotattList = wmsDocOrderSubService.filterInv(baseLocationLotattList, orderNo);
+        Assert.isTrue(CollectionUtil.isNotEmpty(filteredBaseLocationLotattList), "filteredBaseLocationLotattList is empty");
+
+        //int errorCount = 0;
+        for (BaseLocationLotattDTO baseLocationLotatt : filteredBaseLocationLotattList){
+            String taskNo = idSequenceUtils.generateId(Constant.ID_TYPE.LOTNUMBER.getDesc());
+            String locationInfoId = String.valueOf(baseLocationLotatt.getId());
+            //每个推荐的出库库存都创建一个wcs任务
+            wcsTaskSubService.addWcsOutTask(taskNo, locationInfoId, Constant.DRUM_CONNECTORS.toString(), orderNo, palletNo);
+            OutTaskForm outTaskForm = assemblyOutTaskForm(orderNo, taskNo,  baseSku.getSkuType(), materialType, quantity, baseLocationLotatt);
+            WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsOutTask(outTaskForm);
+            if (!wcsResponseVo.isSuccess()) {
+                //errorCount++;
+                docOrderHeader.setRemark(wcsResponseVo.getMessage());
+                iWmsDocOrderHeaderService.updateWmsDocOrderHeader(docOrderHeader);
+            }
+        }
+        //此处屏蔽的代码:代表只有在全部同步失败的情况下,不改变单头和明细的状态
+        //if(errorCount == filteredBaseLocationLotattList.size()) return;
+        docOrderHeader.setOrderStatus(Constant.ASN_STS.STS10.getValue());
+        docOrderDetail.setLineStatus(Constant.ASN_STS.STS10.getValue());
+        iWmsDocOrderDetailsService.updateWmsDocOrderDetails(docOrderDetail);
+        iWmsDocOrderHeaderService.updateWmsDocOrderHeader(docOrderHeader);
 
     }
 
+    private OutTaskForm assemblyOutTaskForm(String orderNo, String taskNo, String skuType, String materialType, Double quantity, BaseLocationLotattDTO baseLocationLotatt) {
+        OutTaskForm outTaskForm = new OutTaskForm();
+        outTaskForm.setDocNo(orderNo);
+        outTaskForm.setTaskNo(taskNo);
+        outTaskForm.setRow(Integer.valueOf(baseLocationLotatt.getRowIndex()));
+        outTaskForm.setCol(Integer.parseInt(baseLocationLotatt.getRowNo()));
+        outTaskForm.setFloor(Integer.parseInt(baseLocationLotatt.getShiftNo()));
+        outTaskForm.setPackageType(Integer.valueOf(skuType));
+        outTaskForm.setMaterial(Integer.valueOf(materialType));
+        outTaskForm.setTotal(quantity.intValue());
+        return outTaskForm;
+    }
 
 
     /**
@@ -163,21 +208,21 @@ public class AgvCallProxyService {
         BaseSku baseSku = iBaseSkuService.selectBaseSkuByMaterialType(materialType);
         Assert.isTrue(ObjectUtil.isNotNull(baseSku), "baseSku is null");
         // 1.推荐目标库位
-        BaseLocationLotattDTO baseLocationLotatt = baseLocationInfoSubService.recommendAReceiptLocation(baseSku.getSku());
-        Assert.isTrue(ObjectUtil.isNotNull(baseLocationLotatt), "baseLocationLotatt is null");
-        // 2.入库缓存位生成库存
+        BaseLocationInfo baseLocationInfo = baseLocationInfoSubService.recommendAReceiptLocation(baseSku.getSku());
+        Assert.isTrue(ObjectUtil.isNotNull(baseLocationInfo), "baseLocationLotatt is null");
+        // 2.桶装接驳位生成库存
         invLotLocIdSubService.initInv(bucketCacheLocationId, baseSku.getSku(), palletNo, asnNo, taskNo, quantity);
 
         // 3.生成任务
         wcsTaskSubService.addWcsTask(taskNo, bucketCacheLocationId
-                , String.valueOf(baseLocationLotatt.getId()), asnNo, palletNo, Constant.TASK_STS.TASK_PUBILSH.getLongValue(), "四向车入库任务");
+                , String.valueOf(baseLocationInfo.getId()), asnNo, palletNo, Constant.TASK_STS.TASK_PUBILSH.getLongValue(), "四向车入库任务");
         //4.同步当前的wcs任务
-        AgvInTaskForm agvInTaskForm = assemblyAgvInTaskForm(taskNo, asnNo, materialType, quantity, palletNo, baseLocationLotatt);
+        AgvInTaskForm agvInTaskForm = assemblyAgvInTaskForm(taskNo, asnNo, materialType, quantity, palletNo, baseLocationInfo);
         return wmsToWcsApiService.wmsAgvInTask(agvInTaskForm);
     }
 
 
-    private AgvInTaskForm assemblyAgvInTaskForm(String taskNo, String asnNo, String materialType, Double quantity, String palletNo, BaseLocationLotattDTO baseLocationLotatt) {
+    private AgvInTaskForm assemblyAgvInTaskForm(String taskNo, String asnNo, String materialType, Double quantity, String palletNo, BaseLocationInfo baseLocationInfo) {
         AgvInTaskForm agvInTaskForm = new AgvInTaskForm();
         agvInTaskForm.setTaskNo(taskNo);
         agvInTaskForm.setAgvId("1");
@@ -185,9 +230,9 @@ public class AgvCallProxyService {
         agvInTaskForm.setDocNo(asnNo);
         agvInTaskForm.setNum(quantity.intValue());
         agvInTaskForm.setPalletId(palletNo);
-        agvInTaskForm.setRow(Integer.valueOf(baseLocationLotatt.getRowIndex()));
-        agvInTaskForm.setCol(Integer.valueOf(baseLocationLotatt.getRowNo()));
-        agvInTaskForm.setFloor(Integer.valueOf(baseLocationLotatt.getShiftNo()));
+        agvInTaskForm.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
+        agvInTaskForm.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
+        agvInTaskForm.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
         return agvInTaskForm;
     }
 

+ 28 - 0
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/IBucketLocInvService.java

@@ -0,0 +1,28 @@
+package com.ruoyi.ams.xuankuang.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
+import com.ruoyi.ams.inv.service.IInvLotLocIdService;
+import com.ruoyi.ams.task.service.IWcsTaskService;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.BaseLocationInfo;
+import com.ruoyi.base.domain.vo.BaseLocationLotattDTO;
+import com.ruoyi.base.domain.vo.LotattVO;
+import com.ruoyi.base.service.IBaseLocationInfoService;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.utils.ConvertUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+public interface IBucketLocInvService {
+
+    BaseLocationInfo selectLocationInfo();
+
+    BaseLocationLotattDTO allocateLocationInfo();
+}

+ 14 - 11
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsTaskSubService.java

@@ -73,7 +73,7 @@ public class WcsTaskSubService {
      */
     public AjaxResult addWcsTask(String locationFrom, String locationTo
             , String asnNo, String palletNo, String wcsNo) {
-        return addWcsTask(IdWorker.getIdStr(), locationFrom, locationTo, asnNo, palletNo, wcsNo, 10L, "立体库任务");
+        return addWcsTask(IdWorker.getIdStr(), locationFrom, locationTo, asnNo, palletNo, wcsNo, 10L, "立体库入库任务");
     }
 
 
@@ -133,18 +133,19 @@ public class WcsTaskSubService {
     }
 
 
-    /**
-     * 增加四向车出库任务
-     *
-     * @return
-     */
-    public AjaxResult addWcsOutTask(String locationFrom, String locationTo
-            , String orderNo
-            , String palletNo
-            , String wcsNo) {
-        return addWcsTask(locationFrom, locationTo, orderNo, palletNo, wcsNo);
+    public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
+            , String orderNo, String palletNo, Long state, String remark) {
+        return addWcsTask(taskNo, locationFrom, locationTo, orderNo, palletNo, StringUtils.EMPTY, state, remark);
     }
 
+
+    public AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo
+            , String orderNo, String palletNo) {
+        return addWcsOutTask(taskNo, locationFrom, locationTo, orderNo, palletNo, 10L, "立体库出库任务");
+
+    }
+
+
     /**
      * 增加越库任务
      *
@@ -220,6 +221,7 @@ public class WcsTaskSubService {
                         completeTheCallback(wcsTask);
                     }//agv入库完成后反馈,回调wcs卸货完成
                     else if (wcsTask.getLocationTo().equals("100733") && wcsTask.getExt1() == null) {
+                        //卸货完成接口
                         wcsToWmsApiService.agvCallbackWCSBeforeUnloadingIsCompleted();
                     }
                     //出库完成后反馈
@@ -232,6 +234,7 @@ public class WcsTaskSubService {
                         invLotLocIdService.adjLocationIsEmpty(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID, "Wcs");
                     }//agv出库完成后反馈回调取货完成
                     else if (wcsTask.getExt5() != null) {
+                        //TODO 取货完成接口
                         wmsDocAsnSubService.wmsAgvCallbackOuttask(wcsTask.getExt5());
                     }
                     break;

+ 0 - 4
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsToWmsApiService.java

@@ -3,8 +3,6 @@ package com.ruoyi.ams.xuankuang.service;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.comparator.CompareUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSONObject;
-import com.google.common.collect.Lists;
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 import com.ruoyi.ams.asn.mapper.WmsDocAsnDetailsMapper;
@@ -22,7 +20,6 @@ import com.ruoyi.base.domain.vo.BaseLocationLotattDTO;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseSkuService;
 import com.ruoyi.base.utils.IdSequenceUtils;
-import com.ruoyi.common.constant.SceneConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.hard.xuankang.StirringTankClient;
@@ -37,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
 

+ 0 - 4
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocOrderSubService.java

@@ -54,10 +54,6 @@ public class WmsDocOrderSubService {
     @Autowired
     private WcsTaskSubService wcsTaskSubService;
     @Autowired
-    private IInvLotLocIdService invLotLocIdService;
-    @Autowired
-    InvLotLocIdMapper invLotLocIdMapper;
-    @Autowired
     IBaseLocationInfoService baseLocationInfoService;
     @Autowired
     BaseLocationInfoSubService baseLocationInfoSubService;

+ 10 - 8
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/BucketWcsToWmsApiService.java

@@ -1,10 +1,11 @@
-package com.ruoyi.ams.xuankuang.service;
+package com.ruoyi.ams.xuankuang.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.ams.task.service.IWcsTaskService;
+import com.ruoyi.ams.xuankuang.service.IBucketLocInvService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.vo.BaseLocationLotattDTO;
@@ -25,8 +26,8 @@ import java.util.stream.Collectors;
  * @date 2023/3/30 15:42
  */
 @Slf4j
-@Service("bucketWcsToWmsApiService")
-public class BucketWcsToWmsApiService extends WcsToWmsApiService {
+@Service
+public class BucketLocInvServiceImpl implements IBucketLocInvService {
 
 
     @Autowired
@@ -39,12 +40,12 @@ public class BucketWcsToWmsApiService extends WcsToWmsApiService {
     private IWcsTaskService iWcsTaskService;
 
     /**
-     * 入库分配库位
+     * 空托移
      * @return
      * TODO 李卫  看看怎么判空
      */
     @Override
-    protected BaseLocationInfo selectLocationInfo(){
+    public BaseLocationInfo selectLocationInfo(){
         //4,5,6
         List<BaseLocationInfo> locationInfoList =
                 baseLocationInfoService.selectLocationInfoList(Constants.EMPTY_PALLET_INV, Constant.PALLET_TYPE,
@@ -62,11 +63,12 @@ public class BucketWcsToWmsApiService extends WcsToWmsApiService {
 
 
     /**
-     * 出库分配库存
+     * 移库 空托移
      * @return
-     * TODO 李卫
+     * TODO 李卫 看看怎么判空
      */
-    protected BaseLocationLotattDTO allocateLocationInfo(){
+    @Override
+    public BaseLocationLotattDTO allocateLocationInfo(){
         //1,2,3
         List<BaseLocationInfo> locationInfoList =
                 baseLocationInfoService.selectLocationInfoList(Constants.EMPTY_PALLET_INV, Constant.PALLET_TYPE,

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

@@ -304,7 +304,7 @@ public class Constant {
         STS00("00"),
 
         /**
-         * 同步成功
+         * 同步
          */
         STS10("10"),
 
@@ -760,7 +760,9 @@ public class Constant {
     public enum ID_TYPE {
         ASNNO("ASNNO"),
 
-        ORDERNO("ORDERNO");
+        ORDERNO("ORDERNO"),
+
+        LOTNUMBER("LOTNUMBER");
         private String desc;
 
         ID_TYPE(String desc) {
@@ -816,4 +818,20 @@ public class Constant {
         }
 
     }
+
+    public enum MoveType {
+
+        MOVE_IN("in"),
+        MOVE_OUT("out");
+
+        private String type;
+
+        MoveType(String type){
+            this.type = type;
+        }
+
+        public String getType() {
+            return type;
+        }
+    }
 }