浏览代码

PDA不合格品出库

k 2 年之前
父节点
当前提交
cf5b380636

+ 32 - 9
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaDocSoController.java

@@ -9,10 +9,10 @@ import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
 import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.Data;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -41,13 +41,32 @@ public class PdaDocSoController {
     @Autowired
     private IWmsDocOrderHeaderService wmsDocOrderHeaderService;
 
+    /**
+     * PDA出库(不合格)
+     *
+     * @param docOrderHeader
+     * @return
+     */
     @Transactional
-    @ApiOperation("出库位->接驳位任务下发")
+    @ApiOperation("仓储位->接驳位->不合格区")
+    @PostMapping("outToTranBHG")
+    public AjaxResult outToTranBHG(@RequestBody DocOrderHeader docOrderHeader) {
+        docOrderHeader.setQualityStatus("BHG");
+        return outToTran(docOrderHeader);
+    }
+
+    /**
+     * PDA出库(合格)
+     *
+     * @param docOrderHeader
+     * @return
+     */
+    @Transactional
+    @ApiOperation("仓储位->接驳位->出库缓存区")
     @PostMapping("outToTran")
     public AjaxResult outToTran(@RequestBody DocOrderHeader docOrderHeader) {
-        if (StringUtils.isEmpty(docOrderHeader.getLocationTo())) {
-//            return AjaxResult.error("目标库位不可为空!");
-        }
+        // 质量状态
+        String lotatt05 = StringUtils.isEmpty(docOrderHeader.getQualityStatus()) ? "HG" : docOrderHeader.getQualityStatus();
         // 创建出库单
         WmsDocOrderHeader header = new WmsDocOrderHeader();
         header.setOrderStatus("99");
@@ -62,8 +81,8 @@ public class PdaDocSoController {
         details.setLineStatus("99");
         details.setCustomerId(Constant.CUSTOMER_ID);
         details.setSku(docOrderHeader.getSku());
-        details.setLotatt05("HG");
-        details.setQtyOrdered(BigDecimal.ZERO);
+        details.setLotatt05(lotatt05);
+        details.setQtyOrdered(BigDecimal.ONE);
         details.setQtyOrderedEach(details.getQtyOrdered());
         details.setQtyPicked(BigDecimal.ZERO);
         details.setQtyPickedEach(BigDecimal.ZERO);
@@ -73,7 +92,7 @@ public class PdaDocSoController {
         details.setQtySoftAllocated(BigDecimal.ZERO);
         details.setQtySoftallocatedEach(BigDecimal.ZERO);
         details.setQtyShippedEach(BigDecimal.ZERO);
-        details.setCreateBy("pda");
+        details.setCreateBy("PDA");
         details.setCreateTime(new Date());
         wmsDocOrderHeaderService.insertWmsDocOrderDetails(details);
         // 下发任务
@@ -85,7 +104,7 @@ public class PdaDocSoController {
         AgvCallItemDTO agvCallItemDTO = new AgvCallItemDTO();
         agvCallItemDTO.setSku(docOrderHeader.getSku());
         LotattDTO lotattDTO = new LotattDTO();
-        lotattDTO.setLotatt05("HG");
+        lotattDTO.setLotatt05(lotatt05);
         agvCallItemDTO.setLotattDTO(lotattDTO);
         agvCallItemDTOList.add(agvCallItemDTO);
         agvCallDTO.setAgvCallItemDTOList(agvCallItemDTOList);
@@ -97,5 +116,9 @@ public class PdaDocSoController {
         private String locationFrom;
         private String locationTo;
         private String sku;
+        /**
+         * 质量状态,PDA不传这个字段
+         */
+        private String qualityStatus;
     }
 }

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

@@ -157,6 +157,7 @@ public class BusinessServiceImpl implements IBusinessService {
 
                 } else if (flowConfigHeaderVO.getFlowType().equals("SO")) {
                     AgvCallItemDTO agvCall = agvCallDTO.getAgvCallItemDTOList().get(0);
+                    agvCallDTO.setQualityStatus(agvCall.getLotattDTO().getLotatt05()); // 质量状态
                     List<BaseLocationInfo> locationToList = this.convertLocation(paramLocationTo, agvCallDTO.getWarehouseId(), null);
                     HashMap<String, String> hashMap = JSON.parseObject(JSON.toJSONString(agvCall.getLotattDTO()), HashMap.class);
                     List<BaseLocationInfo> locationFromList = baseLocationInfoMapper.selectSortedLocationLotattListByZoneIdListOrderBy(zoneIdList
@@ -453,6 +454,7 @@ public class BusinessServiceImpl implements IBusinessService {
             wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
             wcsTask.setExt8(token.toString());
             wcsTask.setExt7(flowConfigHeaderVO.getId().toString());
+            wcsTask.setExt6(StringUtils.isNotEmpty(agvCallDTO.getQualityStatus()) ? agvCallDTO.getQualityStatus() : "");
             wcsTask.setExtParam(agvCallDTO.getExtParam());
             wcsTaskList.add(wcsTask);
             businessService.addTask(wcsTask);
@@ -667,10 +669,14 @@ public class BusinessServiceImpl implements IBusinessService {
                     AgvCallDTO agvCallDTO = new AgvCallDTO();
                     agvCallDTO.setLocationFrom(baseLocationInfo.getLocationNo());
                     businessService.agvCall(Constant.TRAN_STO_FLOW_ID, agvCallDTO);
-                } else if (baseLocationInfo.getUserdefine1().equals("SO")) {
+                } else if (baseLocationInfo.getUserdefine1().equals("SO_HG")) {
                     AgvCallDTO agvCallDTO = new AgvCallDTO();
                     agvCallDTO.setLocationFrom(baseLocationInfo.getLocationNo());
                     businessService.agvCall(Constant.TRAN_OUT_FLOW_ID, agvCallDTO);
+                } else if (baseLocationInfo.getUserdefine1().equals("SO_BHG")) {
+                    AgvCallDTO agvCallDTO = new AgvCallDTO();
+                    agvCallDTO.setLocationFrom(baseLocationInfo.getLocationNo());
+                    businessService.agvCall(Constant.TRAN_OUT_BHG_FLOW_ID, agvCallDTO);
                 }
             }
         }

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

@@ -16,5 +16,6 @@ public class AgvCallDTO {
     private String palletNo;
     private String extParam;
     private Long warehouseId;
+    private String qualityStatus;// 质量状态
     private List<AgvCallItemDTO> agvCallItemDTOList = new ArrayList<>();
 }

+ 11 - 9
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -346,7 +346,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             // 将中间缓存位库存移动到终点
                             moveMiddleCacheToDestination(wcsTask);
                             // 修改库存标识标识 因为接驳位可以出库也可以入库 所以需要标识当前接驳位的库存是入库还是出库
-                            updateInvAsnSoMarking(wcsTask.getLocationFrom(), wcsTask.getLocationTo());
+                            updateInvAsnSoMarking(wcsTask);
                             //释放redis锁
                             if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                                 redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
@@ -386,7 +386,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             // 将中间缓存位库存移动到终点
                             moveMiddleCacheToDestination(wcsTask);
                             // 修改库存标识标识 因为接驳位可以出库也可以入库 所以需要标识当前接驳位的库存是入库还是出库
-                            updateInvAsnSoMarking(wcsTask.getLocationFrom(), wcsTask.getLocationTo());
+                            updateInvAsnSoMarking(wcsTask);
                             //释放redis锁
                             if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                                 redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
@@ -493,14 +493,13 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
     /**
      * 修改库存出入库标记
      *
-     * @param locationFrom
-     * @param locationTo
+     * @param wcsTask
      * @return
      */
     @Transactional
-    public void updateInvAsnSoMarking(String locationFrom, String locationTo) {
-        BaseLocationInfo baseLocationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, Constant.WAREHOUSE_ID);
-        BaseLocationInfo baseLocationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, Constant.WAREHOUSE_ID);
+    public void updateInvAsnSoMarking(WcsTask wcsTask) {
+        BaseLocationInfo baseLocationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID);
+        BaseLocationInfo baseLocationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationTo(), Constant.WAREHOUSE_ID);
         // 目标点为接驳位才进行判断
         if (baseLocationTo.getZoneId().compareTo(Constant.ZONE_TYPE.TRANSIT.getValue()) != 0) {
             return;
@@ -509,12 +508,15 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         // 判断起始库区是不是属于仓储区
         if (baseLocationFrom.getZoneId().compareTo(Constant.ZONE_TYPE.STORAGE.getValue()) == 0) {
             // 是仓储区修改库存标记为出库
-            baseLocationInfo.setUserdefine1("SO");
+            // 判断质量状态-如果是不合格品需要拉到不合格区
+            baseLocationInfo.setUserdefine1((StringUtils.isNotEmpty(wcsTask.getExt6())
+                    && wcsTask.getExt6().equals("BHG")) ?
+                    "SO_BHG" : "SO_HG");
         } else {
             // 不是仓储区修改库存标记为入库
             baseLocationInfo.setUserdefine1("ASN");
         }
-        baseLocationInfo.setId(Long.valueOf(locationTo));
+        baseLocationInfo.setId(Long.valueOf(wcsTask.getLocationTo()));
         baseLocationInfoService.updateBaseLocationInfo(baseLocationInfo);
     }
 

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

@@ -24,6 +24,10 @@ public class Constant {
      * 接驳位到出库缓存区
      */
     public static final long TRAN_OUT_FLOW_ID = 21;
+    /**
+     * 接驳位到不合格区
+     */
+    public static final long TRAN_OUT_BHG_FLOW_ID = 22;
     /**
      * 模具搬运(移库)
      */
@@ -31,11 +35,11 @@ public class Constant {
     /**
      * 模具搬运(冲边)
      */
-    public static final long MOLD_HANDLING_CB_FLOW_ID = 23;
+    public static final long MOLD_HANDLING_CB_FLOW_ID = 24;
     /**
      * 模具搬运(硫化)
      */
-    public static final long MOLD_HANDLING_LH_FLOW_ID = 24;
+    public static final long MOLD_HANDLING_LH_FLOW_ID = 25;
 
 
     /**