Browse Source

桶装物料入库需求接口

ChenYang 1 year ago
parent
commit
e5c19ad435

+ 7 - 7
ruoyi-admin/src/main/java/com/ruoyi/xuankuang/controller/PdaAgvCallController.java

@@ -33,10 +33,10 @@ public class PdaAgvCallController {
 
 
     @ApiOperation("桶装入库")
-    @PostMapping("/theBucketIsLoadedIntoTheLibrary")
-    public AjaxResult theBucketIsLoadedIntoTheLibrary(@RequestParam String palletNo, @RequestParam String materialType,
+    @PostMapping("/bucketIntoStorage")
+    public AjaxResult bucketIntoStorage(@RequestParam String palletNo, @RequestParam String materialType,
                                                       @RequestParam String sourceLocationId, @RequestParam Double quantity) {
-        agvCallProxyService.theBucketIsLoadedIntoTheLibrary(palletNo, materialType, sourceLocationId, quantity);
+        agvCallProxyService.bucketIntoStorage(palletNo, materialType, sourceLocationId, quantity);
         return AjaxResult.success("桶装入库下发任务成功");
     }
 
@@ -46,10 +46,10 @@ public class PdaAgvCallController {
      * @return
      */
     @ApiOperation("桶装出库")
-    @PostMapping("/barrelsOutOfStorage")
-    public AjaxResult barrelsOutOfStorage(@RequestParam String palletNo, @RequestParam String materialType,
+    @PostMapping("/bucketOutOfStorage")
+    public AjaxResult bucketOutOfStorage(@RequestParam String palletNo, @RequestParam String materialType,
                                           @RequestParam String targetLocationId, @RequestParam  Double quantity) {
-        //agvCallProxyService.barrelsOutOfStorage(locationFrom, locationTo,"","");
-        return AjaxResult.success("桶装库下发任务成功");
+        agvCallProxyService.bucketOutOfStorage(palletNo, materialType, targetLocationId, quantity);
+        return AjaxResult.success("桶装库下发任务成功");
     }
 }

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

@@ -204,7 +204,6 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     public AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm) {
         String locationFrom = invLotLocIdMoveForm.getLocationFrom();
         String locationTo = invLotLocIdMoveForm.getLocationTo();
-        String reason = invLotLocIdMoveForm.getReason();
         String updateBy = invLotLocIdMoveForm.getUpdateBy();
         Long warehouseId = invLotLocIdMoveForm.getWarehouseId();
         BaseLocationInfo baseLocationFrom = null;

+ 23 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IWmsDocOrderDetailsService.java

@@ -1,9 +1,11 @@
 package com.ruoyi.ams.order.service;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
+import com.ruoyi.base.domain.BaseSku;
 
 /**
  * 出库单Service接口
@@ -82,4 +84,25 @@ public interface IWmsDocOrderDetailsService {
      * @return
      */
     int deleteWmsDocOrderDetailsByOrderNoLineNos(List<HashMap<String,Object>> list);
+
+
+    /**
+     * 创建出库单详情
+     * @author chenyang
+     * @param orderNo
+     * @param sku
+     * @param quantityDecimal
+     * @return
+     */
+    Boolean createOrderDetail(String orderNo, String sku, BigDecimal quantityDecimal);
+
+    /**
+     * 创建出库单详情
+     * @author chenyang
+     * @param orderNo
+     * @param sku
+     * @param quantityDecimal
+     * @return
+     */
+    Boolean createOrderDetail(String orderNo, BigDecimal lineNo, String sku, BigDecimal quantityDecimal);
 }

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IWmsDocOrderHeaderService.java

@@ -207,4 +207,13 @@ public interface IWmsDocOrderHeaderService {
      * @param taskNo
      */
     void checkOutCallback(String taskNo, String extParam);
+
+    /**
+     * 创建出库单单头
+     * @param orderNo
+     * @param orderType
+     * @param orderStatus
+     * @return
+     */
+    Boolean createOrderHeader(String orderNo, String orderType, String orderStatus);
 }

+ 22 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderDetailsServiceImpl.java

@@ -1,9 +1,13 @@
 package com.ruoyi.ams.order.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.BaseSku;
 import com.ruoyi.common.exception.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -130,4 +134,22 @@ public class WmsDocOrderDetailsServiceImpl implements IWmsDocOrderDetailsService
         return 1;
     }
 
+    @Override
+    public Boolean createOrderDetail(String orderNo, String sku, BigDecimal quantityDecimal){
+        return createOrderDetail(orderNo, BigDecimal.ONE, sku, quantityDecimal);
+    }
+
+    @Override
+    public Boolean createOrderDetail(String orderNo, BigDecimal lineNo, String sku, BigDecimal quantityDecimal) {
+        WmsDocOrderDetails wmsDocOrderDetails = new WmsDocOrderDetails();
+        wmsDocOrderDetails.setOrderNo(orderNo);
+        wmsDocOrderDetails.setOrderLineNo(lineNo);
+        wmsDocOrderDetails.setSku(sku);
+        wmsDocOrderDetails.setLineStatus(Constant.ORDER_STS.STS00.getValue());
+        wmsDocOrderDetails.setQtyOrderedEach(quantityDecimal);
+        wmsDocOrderDetails.setCreateTime(new Date());
+        wmsDocOrderDetails.setQtyOrdered(quantityDecimal);
+        return wmsDocOrderDetailsMapper.insertWmsDocOrderDetails(wmsDocOrderDetails) == 1;
+    }
+
 }

+ 13 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderHeaderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.ams.order.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.box.domain.WmsBoxInfo;
 import com.ruoyi.ams.box.mapper.WmsBoxInfoMapper;
@@ -35,6 +36,7 @@ import com.ruoyi.base.domain.vo.CodeSkuRelationshipVO;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.base.utils.IdSequenceUtils;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.WareWmsEnums;
 import com.ruoyi.common.constant.base.EnumUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -715,4 +717,15 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     public void checkOutCallback(String taskNo, String extParam) {
         System.out.println(extParam);
     }
+
+    @Override
+    public Boolean createOrderHeader(String orderNo, String orderType, String orderStatus) {
+        WmsDocOrderHeader wmsDocOrderHeader = new WmsDocOrderHeader();
+        wmsDocOrderHeader.setOrderNo(orderNo);
+        wmsDocOrderHeader.setEdiSendFlag(Constants.NO);
+        wmsDocOrderHeader.setOrderStatus(Constant.ORDER_STS.STS00.getValue());
+        wmsDocOrderHeader.setCreateTime(DateUtil.date());
+        wmsDocOrderHeader.setOrderType(Constant.ORDER_TYP.DZ.getValue());
+        return wmsDocOrderHeaderMapper.insertWmsDocOrderHeader(wmsDocOrderHeader) == 1;
+    }
 }

+ 25 - 2
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/AgvCallProxyService.java

@@ -12,6 +12,9 @@ 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.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.vo.WcsResponseVo;
@@ -27,10 +30,12 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysConfigService;
 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 java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -61,6 +66,10 @@ public class AgvCallProxyService {
     @Autowired
     private IWmsDocAsnDetailsService iWmsDocAsnDetailsService;
     @Autowired
+    private IWmsDocOrderHeaderService iWmsDocOrderHeaderService;
+    @Autowired
+    private IWmsDocOrderDetailsService iWmsDocOrderDetailsService;
+    @Autowired
     private WcsTaskSubService wcsTaskSubService;
     @Autowired
     private WmsToWcsApiService wmsToWcsApiService;
@@ -75,7 +84,7 @@ public class AgvCallProxyService {
      * 桶装入库
      * @return
      */
-    public void theBucketIsLoadedIntoTheLibrary(String palletNo, String materialType,
+    public void bucketIntoStorage(String palletNo, String materialType,
                                                       String agvSourceLocationId, Double quantity) {
         //1.预备参数设置
         BaseSku baseSku  = iBaseSkuService.selectBaseSkuByMaterialType(materialType);
@@ -112,6 +121,19 @@ public class AgvCallProxyService {
     }
 
 
+    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");
+        String orderNo = idSequenceUtils.generateId(Constant.ID_TYPE.ORDERNO.getDesc());
+        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);
+    }
+
+
+
     /**
      * 桶装出库
      *
@@ -119,7 +141,7 @@ public class AgvCallProxyService {
      * @param locationTo
      * @return
      */
-    public AjaxResult barrelsOutOfStorage(String locationFrom, String locationTo,String palletNo,String wcsId) {
+    public AjaxResult barrelsOutOfStorage(String locationFrom, String locationTo, String palletNo, String wcsId) {
         AgvCallDTO agvCallDTO = new AgvCallDTO();
         agvCallDTO.setLocationFrom(locationFrom);
         agvCallDTO.setLocationTo(locationTo);
@@ -177,4 +199,5 @@ public class AgvCallProxyService {
     }
 
 
+
 }

+ 28 - 2
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/BaseLocationInfoSubService.java

@@ -49,17 +49,43 @@ public class BaseLocationInfoSubService {
             , Constant.LOCATION_ZONE.INV_3.getValue());
 
 
+
     /**
-     * 推荐一个入库库位
+     * 推荐入库库位
      *
      * @param bindSku
      * @return
      */
     public BaseLocationLotattDTO recommendAReceiptLocation(String bindSku) {
-        List<BaseLocationLotattDTO> baseLocationLotattVOS = selectAllocatingInventoryAccordingConditionsOrderBy(
+        List<BaseLocationLotattDTO> baseLocationLotattVOS = selectAllocatingLocationAccordingConditionsOrderBy(
                 Arrays.asList(IN_ZONES), bindSku);
         return baseLocationInfoService.checkTheSameColumnLocation(baseLocationLotattVOS);
+    }
 
+
+    /**
+     * 推荐出库库存
+     *
+     * @param bindSku
+     * @return
+     */
+    public BaseLocationLotattDTO recommendAReceiptInventory(String bindSku) {
+        List<BaseLocationLotattDTO> baseLocationLotattVOS = selectAllocatingInventoryAccordingConditionsOrderBy(
+                OUT_ZONES, bindSku);
+        return baseLocationInfoService.checkTheSameColumnLocation(baseLocationLotattVOS);
+    }
+
+
+    /**
+     * 根据条件查询可分配库存
+     *
+     * @param zoneId
+     * @param sku
+     * @return
+     */
+    public List<BaseLocationLotattDTO> selectAllocatingLocationAccordingConditionsOrderBy(
+            List<String> zoneId, String sku) {
+        return baseLocationInfoService.selectAllocatingLocationAccordingConditionsOrderBy(zoneId, sku, null);
     }
 
 

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

@@ -741,8 +741,9 @@ public class Constant {
     }
 
     public enum ID_TYPE {
-        ASNNO("ASNNO");
+        ASNNO("ASNNO"),
 
+        ORDERNO("ORDERNO");
         private String desc;
 
         ID_TYPE(String desc) {