Prechádzať zdrojové kódy

取货卸货agv回调wcs

zhangxin 1 rok pred
rodič
commit
66e947484c

+ 0 - 7
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/StatusUpdateService.java

@@ -73,11 +73,4 @@ public interface StatusUpdateService {
      */
     public void feedbackTS(AmsNdcEvent event);
 
-
-    /**
-     * wcs通知
-     * @param taskNo
-     * @param eventId
-     */
-    void wcsTaskNotice(String taskNo, Integer eventId);
 }

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

@@ -1,18 +1,15 @@
 package com.ruoyi.ams.agv.ndc.service.impl;
 
-import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.ams.agv.ndc.domain.AmsNdcEvent;
 import com.ruoyi.ams.agv.ndc.domain.AmsTask;
 import com.ruoyi.ams.agv.ndc.entity.CallbackResult;
 import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
 import com.ruoyi.ams.agv.ndc.service.StatusUpdateService;
 import com.ruoyi.ams.business.BusinessServiceImpl;
-import com.ruoyi.ams.task.domain.WcsTask;
 import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.ams.xuankuang.service.BeltLineClientService;
 import com.ruoyi.ams.xuankuang.service.WmsDocAsnSubService;
 import com.ruoyi.base.constant.Constant;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.uuid.SnowflakeIdWorker;
 import com.ruoyi.hard.demo.AutoDoorClient;
 import lombok.extern.slf4j.Slf4j;
@@ -73,25 +70,6 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
         }
     }
 
-
-
-    @Override
-    public void wcsTaskNotice(String taskNo, Integer eventId) {
-        Integer status = eventIdToStatus.get(eventId);
-        if(ObjectUtil.equals(status, 6)){
-            wmsDocAsnSubService.wmsAgvCallbackIntask(taskNo);
-            return;
-        }
-        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 : {}");
-                return;
-            }
-            wmsDocAsnSubService.wmsAgvCallbackOuttask(wcsTask.getExt3());
-        }
-    }
-
     @Override
     public void updateStatus(Long taskId, Integer carNo) {
         AmsTask amsTask = amsTaskService.selectAmsTaskById(taskId);
@@ -104,7 +82,7 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
             result.setCarNo(carNo);
             result.setTaskNo(amsTask.getTaskNo());
             //判断状态
-            result.setState(eventIdToStatus.get(amsTask.getEvent()));;
+            result.setState(eventIdToStatus.get(amsTask.getEvent()));
             wcsTaskService.callBack(result.getTaskNo(), result.getState(), result.getCarNo());
 
             amsTask.setSystemStatus(result.getState());

+ 8 - 2
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
-import com.jhlabs.image.Histogram;
 import com.ruoyi.ams.agv.ndc.domain.AmsTask;
 import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
 import com.ruoyi.ams.box.service.IWmsBoxInfoService;
@@ -20,6 +19,7 @@ import com.ruoyi.ams.task.domain.WcsTask;
 import com.ruoyi.ams.task.dto.WcsTaskLocationDTO;
 import com.ruoyi.ams.task.mapper.WcsTaskMapper;
 import com.ruoyi.ams.task.service.IWcsTaskService;
+import com.ruoyi.ams.xuankuang.service.WmsDocAsnSubService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
@@ -69,6 +69,9 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
     private IInvLotLocIdService invLotLocIdService;
     @Autowired
     private IInvLotAttService iInvLotAttService;
+
+    @Autowired
+    private WmsDocAsnSubService wmsDocAsnSubService;
     @Autowired
     private IAmsTaskService iAmsTaskService;
     @Autowired
@@ -394,7 +397,8 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                                 , Constant.WAREHOUSE_ID, updateBy);
                         // 将起始点库存移动到中间缓存位
                         moveStartingPointToMiddleCache(wcsTask);
-
+                        //agv回调wcs取货完成
+                        wmsDocAsnSubService.wmsAgvCallbackOutTaskByTaskNo(taskNo);
                         //释放redis锁
                         if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                             redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
@@ -416,6 +420,8 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             moveMiddleCacheToDestination(wcsTask);
                             // 修改库存标识标识 因为接驳位可以出库也可以入库 所以需要标识当前接驳位的库存是入库还是出库
                             updateInvAsnSoMarking(wcsTask);
+                            //agv回调wcs卸货完成
+                            wmsDocAsnSubService.wmsAgvCallbackIntask(taskNo);
                             //释放redis锁
                             if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                                 redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));

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

@@ -1,19 +1,13 @@
 package com.ruoyi.ams.xuankuang.service;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-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;
 import com.ruoyi.ams.asn.mapper.WmsDocAsnHeaderMapper;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
 import com.ruoyi.ams.task.domain.WcsTask;
 import com.ruoyi.ams.task.service.IWcsTaskService;
-import com.ruoyi.ams.xuankuang.domain.dto.LocationCoordDTO;
-import com.ruoyi.ams.xuankuang.domain.form.AgvInTaskForm;
 import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
 import com.ruoyi.base.constant.Constant;
@@ -21,16 +15,13 @@ import com.ruoyi.base.domain.BaseSku;
 import com.ruoyi.base.service.IBaseSkuService;
 import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.PathVariable;
 
-import java.math.BigDecimal;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -122,7 +113,19 @@ public class WmsDocAsnSubService {
 
     }
 
-
+    /**
+     * agv回调wcs取货完成
+     * @param taskNo
+     * @return
+     */
+    public void wmsAgvCallbackOutTaskByTaskNo(String taskNo){
+        WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
+        if(ObjectUtil.isNull(wcsTask) || StringUtils.isBlank(wcsTask.getExt3())){
+            log.info("task is not found, taskNo is {}, caused by : {}");
+            return;
+        }
+        wmsAgvCallbackOuttask(wcsTask.getExt3());
+    }
 
     /**
      * agv回调wcs卸货完成

+ 20 - 0
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsToWcsApiService.java

@@ -99,6 +99,11 @@ public class WmsToWcsApiService {
      * @param agvInTaskForm
      * @return
      */
+    @Retryable(
+            maxAttempts = 4, //指定重试次数
+            //调用失败后,等待5s重试,后面重试间隔依次变为原来的2倍
+            backoff = @Backoff(delay = 5000, multiplier = 2)
+    )
     public WcsResponseVo wmsAgvInTask(AgvInTaskForm agvInTaskForm) {
         String json = JSON.toJSONString(agvInTaskForm);
         String r = "";
@@ -120,6 +125,11 @@ public class WmsToWcsApiService {
      * @param taskNo
      * @return
      */
+    @Retryable(
+            maxAttempts = 4, //指定重试次数
+            //调用失败后,等待5s重试,后面重试间隔依次变为原来的2倍
+            backoff = @Backoff(delay = 5000, multiplier = 2)
+    )
     public WcsResponseVo wmsAgvCallbackIntask(String taskNo) {
         String r = "";
         WcsResponseVo wcsResponseVo = new WcsResponseVo();
@@ -138,6 +148,11 @@ public class WmsToWcsApiService {
      * @param wcsId
      * @return
      */
+    @Retryable(
+            maxAttempts = 4, //指定重试次数
+            //调用失败后,等待5s重试,后面重试间隔依次变为原来的2倍
+            backoff = @Backoff(delay = 5000, multiplier = 2)
+    )
     public WcsResponseVo wmsAgvCallbackOuttask(String wcsId) {
         String r = "";
         WcsResponseVo wcsResponseVo = new WcsResponseVo();
@@ -155,6 +170,11 @@ public class WmsToWcsApiService {
      * @param ticketTaskCancellation
      * @return
      */
+    @Retryable(
+            maxAttempts = 4, //指定重试次数
+            //调用失败后,等待5s重试,后面重试间隔依次变为原来的2倍
+            backoff = @Backoff(delay = 5000, multiplier = 2)
+    )
     public WcsResponseVo cancelTheTask(TicketTaskCancellation ticketTaskCancellation){
         String json = JSON.toJSONString(ticketTaskCancellation);
         String r = "";