Ver código fonte

现边呼叫策略修改

xiaoddyy123 3 anos atrás
pai
commit
c123ae71a5

+ 1 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/LineCallController.java

@@ -44,6 +44,7 @@ public class LineCallController {
         agvCallDTO.setQty(lineCallForm.getQty());
         agvCallDTO.setSupplier(lineCallForm.getSupplier());
         agvCallDTO.setWeight(lineCallForm.getWeight());
+        agvCallDTO.setId(lineCallForm.getId());
         LotattDTO lotattDTO = new LotattDTO();
         List<LineCallDetailsForm> lineCallDetailsForms = lineCallForm.getLineCallDetailsFormList();
         if (lineCallDetailsForms != null && lineCallDetailsForms.size() > 0) {

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

@@ -367,6 +367,7 @@
           this.form.locationFromFlag = response.locationFromFlag
           this.form.locationToFlag = response.locationToFlag
           this.skuTypeCombo = response.skuList;
+          this.form.id = response.id
 
           if (this.form.locationFromFlag === 'Required') {
             this.rules.locationFrom = [

+ 72 - 1
warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java

@@ -8,9 +8,11 @@ import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
 import com.ruoyi.ams.config.domain.dto.InWarehouseDTO;
 import com.ruoyi.ams.config.domain.dto.LotattDTO;
 import com.ruoyi.ams.config.domain.dto.OutWarehouseDTO;
+import com.ruoyi.ams.config.domain.vo.FlowConfigHeaderVO;
 import com.ruoyi.ams.config.domain.vo.LocationPriorityHeaderVO;
 import com.ruoyi.ams.config.mapper.AsnSoStrategyMapper;
 import com.ruoyi.ams.config.mapper.LocationPriorityHeaderMapper;
+import com.ruoyi.ams.config.service.IFlowConfigHeaderService;
 import com.ruoyi.ams.config.service.ILocationPriorityHeaderService;
 import com.ruoyi.ams.config.service.LocationAllocationStrategy;
 import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
@@ -26,12 +28,14 @@ import com.ruoyi.base.service.IBaseSkuService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.exception.ServiceException;
 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.*;
 
+@Slf4j
 @Service
 public class BusinessServiceImpl implements IBusinessService {
 
@@ -55,13 +59,59 @@ public class BusinessServiceImpl implements IBusinessService {
     private BaseLocationInfoMapper baseLocationInfoMapper;
     @Autowired
     private IBaseSkuService baseSkuService;
+    @Autowired
+    private IFlowConfigHeaderService flowConfigHeaderService;
 
 
     @Transactional
     @Override
     public AjaxResult agvCall(List<AgvCallDTO> agvCallDTOList) {
         for (AgvCallDTO agvCallDTO : agvCallDTOList) {
-            //BaseLocationInfo locationFrom = agvCallDTO.getLocationFrom();
+            BaseLocationInfo locationFrom = null;
+            BaseLocationInfo locationTo = null;
+            //查询所属流程
+            FlowConfigHeaderVO flowConfigHeaderVO = flowConfigHeaderService.selectFlowConfigHeaderById(agvCallDTO.getId());
+            if (flowConfigHeaderVO == null) {
+                log.info("-----------指令查询不到对应的流程:" + JSON.toJSONString(agvCallDTO));
+                continue;
+            }
+            //起始库位逻辑---------------------------》
+            List<BaseLocationInfo> locationFromList = this.convertLocation(agvCallDTO.getLocationFrom(), agvCallDTO.getWarehouseId());
+            //判断选择的是库位还是区域
+            if (locationFromList.size() > 0) { //多个库位为库区
+                //分配可以使用的库位
+
+            } else { //单个库位为指定
+
+            }
+            //如果起始库位为入库区域则生成库存
+            if (locationFrom.getZoneId() == Constant.ZONE_TYPE.ZONE_IN.getValue()) {
+                //2.初始化库存
+                invLotLocIdService.initInv(agvCallDTO.getLocationFrom(), agvCallDTO.getSku(), Constant.CUSTOMER_ID, agvCallDTO.getQty(), agvCallDTO.getLotattDTO());
+            }
+
+            //目标库位逻辑---------------------------》
+            List<BaseLocationInfo> locationToList = this.convertLocation(agvCallDTO.getLocationTo(), agvCallDTO.getWarehouseId());
+            if (locationToList.size() > 0) { //多个库位为库区
+                //分配可以使用的库位
+
+            } else { //单个库位为指定
+
+            }
+
+            String taskNo = System.currentTimeMillis() + "";
+            WcsTask wcsTask = new WcsTask();
+            wcsTask.setTaskNo(taskNo);
+            wcsTask.setAreaFrom(locationFrom.getZoneId().toString());
+            wcsTask.setLocationFrom(locationFrom.getId().toString());
+            wcsTask.setAreaTo(locationTo.getZoneId() + "");
+            wcsTask.setLocationTo(locationTo.getId().toString());
+            wcsTask.setState(9L);
+            wcsTask.setPriority(1L);
+            wcsTask.setCreateDate(new Date());
+            wcsTask.setBusinessType("01");
+            wcsTask.setTaskType("");
+            return businessService.addTask(wcsTask);
         }
         return AjaxResult.error("无效的指令");
     }
@@ -157,6 +207,27 @@ public class BusinessServiceImpl implements IBusinessService {
         }
     }
 
+    @Override
+    public List<BaseLocationInfo> convertLocation(String locationNoOrZoneId, Long warehouseId) {
+        List<BaseLocationInfo> locationInfoList = new ArrayList<>();
+        if (!"".equals(locationNoOrZoneId)) {
+            String[] arr = locationNoOrZoneId.split(",");
+            for (String obj : arr) {
+                boolean isLocation = baseLocationInfoService.checkIsLocation(obj, warehouseId);
+                if (isLocation) {
+                    BaseLocationInfo info = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(obj, warehouseId);
+                    locationInfoList.add(info);
+                } else {
+                    List<BaseLocationInfo> infoList = baseLocationInfoService.selectSortedLocatinListByZoneId(Long.parseLong(obj), warehouseId);
+                    locationInfoList.addAll(infoList);
+                }
+            }
+        } else {
+
+        }
+        return locationInfoList;
+    }
+
     @Transactional
     @Override
     public AjaxResult addTask(WcsTask wcsTask) {

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/business/IBusinessService.java

@@ -3,6 +3,7 @@ package com.ruoyi.ams.business;
 import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
 import com.ruoyi.ams.config.domain.dto.InWarehouseDTO;
 import com.ruoyi.ams.config.domain.dto.OutWarehouseDTO;
+import com.ruoyi.ams.config.domain.vo.FlowConfigHeaderVO;
 import com.ruoyi.ams.task.domain.WcsTask;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -37,6 +38,14 @@ public interface IBusinessService {
      */
     BaseLocationInfo outInvAllocation(OutWarehouseDTO outWarehouseDTO);
 
+    /***
+     *  根据id转换库位列表(如果是库位id直接返回库位如果是区域id则返回相应的库位)
+     * @param locationNoOrZoneId 库位id或者区域id
+     * @param warehouseId 仓库id
+     * @return
+     */
+    List<BaseLocationInfo> convertLocation(String locationNoOrZoneId, Long warehouseId);
+
     /**
      * 新增任务
      * @param wcsTask

+ 21 - 0
warewms-ams/src/main/java/com/ruoyi/ams/common/Constant.java

@@ -75,4 +75,25 @@ public class Constant {
             return value;
         }
     }
+
+    public enum ZONE_TYPE {
+        /**
+         * 入库区域
+         */
+        ZONE_IN(4L),
+        /**
+         * 出库区域
+         */
+        ZONE_OUT(5L);
+
+        private Long value;
+
+        ZONE_TYPE(Long value) {
+            this.value = value;
+        }
+
+        public Long getValue() {
+            return value;
+        }
+    }
 }

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

@@ -5,6 +5,7 @@ package com.ruoyi.ams.config.domain.dto;
  */
 public class AgvCallDTO {
 
+    private Long id;
     private String sku;
     private Double qty;
     private Double weight;
@@ -77,4 +78,12 @@ public class AgvCallDTO {
     public void setWarehouseId(Long warehouseId) {
         this.warehouseId = warehouseId;
     }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
 }

+ 11 - 0
warewms-ams/src/main/java/com/ruoyi/ams/lineCall/domain/form/LineCallForm.java

@@ -8,6 +8,9 @@ import java.util.List;
  * Date: 2022/3/9
  */
 public class LineCallForm {
+
+    //编号
+    private Long id;
     //物料
     private String sku;
     //数量
@@ -71,6 +74,14 @@ public class LineCallForm {
         this.locationTo = locationTo;
     }
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
     public List<LineCallDetailsForm> getLineCallDetailsFormList() {
         return lineCallDetailsFormList;
     }

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/lineCall/domain/vo/LineCallVO.java

@@ -13,6 +13,7 @@ import java.util.List;
  * Date: 2022/3/7
  */
 public class LineCallVO {
+    private Long id;
     private List<BaseSku> skuList;
     private String skuTypeFlag;
     private Double qty;
@@ -157,4 +158,12 @@ public class LineCallVO {
     public void setWeightMin(Double weightMin) {
         this.weightMin = weightMin;
     }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
 }

+ 1 - 0
warewms-ams/src/main/java/com/ruoyi/ams/lineCall/service/impl/LineCallServiceImpl.java

@@ -125,6 +125,7 @@ public class LineCallServiceImpl implements ILineCallService {
         lineCallVO.setQtyFlag(flowConfigHeaderVO.getQtyFlag());
         lineCallVO.setWeightFlag(flowConfigHeaderVO.getWeightFlag());
         lineCallVO.setSupplierFlag(flowConfigHeaderVO.getSupplierFlag());
+        lineCallVO.setId(flowConfigHeaderVO.getId());
         return lineCallVO;
     }
 }

+ 0 - 1
warewms-base/src/main/java/com/ruoyi/base/service/IBaseLocationInfoService.java

@@ -4,7 +4,6 @@ import java.util.List;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.vo.BasLocationTreeSelectVO;
 import com.ruoyi.base.domain.vo.TreeSelectVO;
-import com.ruoyi.common.core.domain.TreeSelect;
 
 /**
  * 库位信息Service接口

+ 0 - 2
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseLocationInfoServiceImpl.java

@@ -1,9 +1,7 @@
 package com.ruoyi.base.service.impl;
 
 import java.util.ArrayList;
-import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 import com.ruoyi.base.domain.BaseLocationZone;