Ver código fonte

agv入库问题测试

ChenYang 1 ano atrás
pai
commit
b499419ead

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/WcsTaskController.java

@@ -154,8 +154,8 @@ public class WcsTaskController extends BaseController {
         wcsTask.setLocationFrom(addTaskForm.getLocationFrom());
         wcsTask.setAreaTo(addTaskForm.getAreaTo());
         wcsTask.setLocationTo(addTaskForm.getLocationTo());
-        wcsTask.setCreateTime(new Date());
-        wcsTask.setCreateBy(loginUser.getUsername());
+        wcsTask.setCreateDate(new Date());
+        wcsTask.setCreateUser(loginUser.getUsername());
         wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
         wcsTask.setPriority(10L);
         return toAjax(wcsTaskService.insertWcsTask(wcsTask));

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/xuankuang/controller/WmsToWcsApiController.java

@@ -58,9 +58,9 @@ public class WmsToWcsApiController {
     //agv回调wcs取货完成
     @ApiOperation("回调取货完成")
     @GetMapping(value = "/wmsAgvCallbackOuttask/{wcsId}")
-    public AjaxResult wmsAgvCallbackOuttask(@PathVariable("wcsId") String wcsId) {
-        log.info("WmsToWcsApiController - wmsAgvCallbackOuttask request wcsId is :{}, time is :{}", wcsId, DateUtils.getTime());
-        AjaxResult ajaxResult = wmsDocAsnSubService.wmsAgvCallbackOuttask(wcsId);
+    public AjaxResult wmsAgvCallbackOuttask(@PathVariable("wcsId") String taskNo) {
+        log.info("WmsToWcsApiController - wmsAgvCallbackOuttask request wcsId is :{}, time is :{}", taskNo, DateUtils.getTime());
+        AjaxResult ajaxResult = wmsDocAsnSubService.wmsAgvCallbackOuttask(taskNo);
         log.info("WmsToWcsApiController - wmsAgvCallbackOuttask response ajaxResult is :{}, time is :{}", ajaxResult, DateUtils.getTime());
         return ajaxResult;
     }

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/xuankuang/controller/test/XuanKuangTestApiController.java

@@ -83,13 +83,13 @@ public class XuanKuangTestApiController {
     /**
      * agv回调wcs货物取走接口
      *
-     * @param wcsId
+     * @param taskNo
      * @return
      */
     @ApiOperation("agv回调wcs货物取走接口")
     @PostMapping("/agvCallbackOuttask")
-    public WcsResponseVo wmsAgvCallbackOuttask(String wcsId) {
-        return WmsToWcsApiService.wmsAgvCallbackOuttask(wcsId);
+    public WcsResponseVo wmsAgvCallbackOuttask(String taskNo) {
+        return WmsToWcsApiService.wmsAgvCallbackOuttask(taskNo);
     }
 
 

+ 3 - 3
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java

@@ -1,13 +1,13 @@
 package com.ruoyi.common.core.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
 /**
  * Entity基类
  *

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

@@ -390,7 +390,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     }
 
     @Override
-    public AjaxResult adjLocationIsEmpty(String locationId, Long warehouseId, String updateBy) {
+    public AjaxResult adjLocationIsEmpty(String locationId, Long warehouseId, String updateUser) {
         Long id; // 库位ID
         BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationId, warehouseId);
         if (baseLocationInfo == null) {
@@ -399,8 +399,8 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         id = baseLocationInfo.getId();
         // 动态修改库存占用状态 有货|无货
         Boolean isInStock = baseLocationInfoService.verifyLocationIsInStock(locationId, warehouseId); // isInStock 是否有货
-        Boolean result = isInStock ? baseLocationInfoService.unOccupyLocation(id, warehouseId, updateBy)
-                    : baseLocationInfoService.occupyLocation(id, warehouseId, updateBy);
+        Boolean result = isInStock ? baseLocationInfoService.unOccupyLocation(id, warehouseId, updateUser)
+                    : baseLocationInfoService.occupyLocation(id, warehouseId, updateUser);
         if (!result) {
             return AjaxResult.success("修改库位库存占用状态失败!");
         }

+ 17 - 5
warewms-ams/src/main/java/com/ruoyi/ams/task/domain/WcsTask.java

@@ -2,7 +2,6 @@ package com.ruoyi.ams.task.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -14,7 +13,7 @@ import java.util.Date;
  * @author andy
  * @date 2022-03-10
  */
-public class WcsTask extends BaseEntity
+public class WcsTask
 {
     private static final long serialVersionUID = 1L;
 
@@ -84,7 +83,7 @@ public class WcsTask extends BaseEntity
     private Date createDate;
 
     /** 编辑人 */
-    private Long updateUser;
+    private String updateUser;
 
     /** 编辑时间 */
     private Date updateDate;
@@ -145,6 +144,11 @@ public class WcsTask extends BaseEntity
     /** 是否有前置任务,有必须等待前置任务完成 */
     private String beforeTask;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
     public void setTaskNo(String taskNo) 
     {
         this.taskNo = taskNo;
@@ -307,12 +311,12 @@ public class WcsTask extends BaseEntity
     {
         return createDate;
     }
-    public void setUpdateUser(Long updateUser) 
+    public void setUpdateUser(String updateUser)
     {
         this.updateUser = updateUser;
     }
 
-    public Long getUpdateUser() 
+    public String getUpdateUser()
     {
         return updateUser;
     }
@@ -512,4 +516,12 @@ public class WcsTask extends BaseEntity
             .append("beforeTask", getBeforeTask())
             .toString();
     }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
 }

+ 8 - 0
warewms-ams/src/main/java/com/ruoyi/ams/task/service/IWcsTaskService.java

@@ -184,6 +184,14 @@ public interface IWcsTaskService {
      */
     AjaxResult  moveStartingPointToDestination(WcsTask wcsTask);
 
+    /**
+     * 根据类型和单号查询出入库任务
+     * @param billNo 入库单或者出库单
+     * @param taskType 任务类型
+     * @return
+     */
+    WcsTask selectWcsTask(String billNo, String taskType);
+
     /**
      * 翻转任务状态
      * @author chenyang

+ 13 - 4
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -3,6 +3,7 @@ package com.ruoyi.ams.task.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
@@ -427,7 +428,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         // 将起始点库存移动到中间缓存位
                         moveStartingPointToMiddleCache(wcsTask);
                         //agv回调wcs取货完成
-                        wmsDocAsnSubService.wmsAgvCallbackOuttask(taskNo);
+                        wmsDocAsnSubService.callbackWcsAgvOutTask(taskNo);
                         //释放redis锁
                         if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                             redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
@@ -450,7 +451,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             // 修改库存标识标识 因为接驳位可以出库也可以入库 所以需要标识当前接驳位的库存是入库还是出库
                             updateInvAsnSoMarking(wcsTask);
                             //agv回调wcs卸货完成
-                            wmsDocAsnSubService.wmsAgvCallbackIntask(taskNo);
+                            wmsDocAsnSubService.callbackWcsAgvInTask(taskNo);
                             //释放redis锁
                             if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                                 redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
@@ -519,7 +520,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
             invLotLocIdMapper.moveInvByLocationId(locationFrom, middleCache, taskNo);
         }
         // 修改起始库位状态为空闲无货
-        baseLocationInfoService.updateLocationIdleAndEmpty(locationFrom, Constant.WAREHOUSE_ID, wcsTask.getUpdateBy());
+        baseLocationInfoService.updateLocationIdleAndEmpty(locationFrom, Constant.WAREHOUSE_ID, wcsTask.getUpdateUser());
 
         return AjaxResult.success();
     }
@@ -557,10 +558,18 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         // 转移库存
         invLotLocIdMapper.moveInvByTraceIdOut(locationFrom, locationTo, taskNo);
         //修改目标库位状态为占用
-        baseLocationInfoService.occupyLocation(locationTo, Constant.WAREHOUSE_ID, wcsTask.getUpdateBy());
+        baseLocationInfoService.occupyLocation(locationTo, Constant.WAREHOUSE_ID, wcsTask.getUpdateUser());
         return AjaxResult.success();
     }
 
+
+    @Override
+    public WcsTask selectWcsTask(String billNo, String taskType) {
+        LambdaQueryWrapper<WcsTask> queryWrapper = Wrappers.<WcsTask>lambdaQuery().eq(WcsTask::getExt1, billNo).eq(WcsTask::getWhTypeFrom, taskType);
+        List<WcsTask> wcsTaskList = wcsTaskMapper.selectList(queryWrapper);
+        return CollectionUtil.isNotEmpty(wcsTaskList) ? wcsTaskList.get(0) : new WcsTask();
+    }
+
     @Override
     public Boolean updateTaskStatus(String billNo, String taskType, Integer sourceStatus, Integer targetStatus) {
         LambdaUpdateWrapper<WcsTask> updateWrapper = Wrappers.<WcsTask>lambdaUpdate().set(WcsTask::getState, targetStatus)

+ 6 - 10
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WcsTaskSubService.java

@@ -79,8 +79,8 @@ public class WcsTaskSubService {
         wcsTask.setLocationFrom(baseLocationInfoFrom.getId().toString());
         wcsTask.setAreaTo(baseLocationInfoTo.getZoneId().toString());
         wcsTask.setLocationTo(baseLocationInfoTo.getId().toString());
-        wcsTask.setCreateTime(new Date());
-        wcsTask.setCreateBy("Wcs");
+        wcsTask.setCreateDate(new Date());
+        wcsTask.setCreateUser("Wcs");
         wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
         wcsTask.setPriority(10L);
         wcsTask.setExt1(asnNo);
@@ -117,8 +117,8 @@ public class WcsTaskSubService {
         wcsTask.setLocationFrom(baseLocationInfoFrom.getId().toString());
         wcsTask.setAreaTo(baseLocationInfoTo.getZoneId().toString());
         wcsTask.setLocationTo(baseLocationInfoTo.getId().toString());
-        wcsTask.setCreateTime(new Date());
-        wcsTask.setCreateBy("Wcs");
+        wcsTask.setCreateDate(new Date());
+        wcsTask.setCreateUser("Wcs");
         wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
         wcsTask.setPriority(10L);
         wcsTask.setExt1(asnNo);
@@ -160,8 +160,8 @@ public class WcsTaskSubService {
         wcsTask.setState(10L);
         wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
         wcsTask.setBusinessType("01");
-        wcsTask.setCreateTime(new Date());
-        wcsTask.setCreateBy("Wcs");
+        wcsTask.setCreateDate(new Date());
+        wcsTask.setCreateUser("Wcs");
         wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
         wcsTask.setPriority(10L);
         wcsTask.setExt1(asnNo);
@@ -239,10 +239,6 @@ public class WcsTaskSubService {
                     else if (CollectionUtil.contains(
                             Lists.newArrayList(Constant.TaskType.EMPTY_PALLET.getDesc(), Constant.TaskType.MOVE_INV.getDesc()), wcsTask.getWhTypeFrom())) {
                         invLotLocIdService.adjLocationIsEmpty(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID, "Wcs");
-                    }//agv出库完成后反馈回调取货完成
-                    else if (wcsTask.getExt5() != null) {
-                        //TODO 取货完成接口
-                        wmsDocAsnSubService.wmsAgvCallbackOuttask(wcsTask.getExt5());
                     }
                     break;
                 case 4:

+ 20 - 2
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/WmsDocAsnSubService.java

@@ -5,6 +5,7 @@ import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 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.form.BillTaskForm;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
@@ -109,6 +110,22 @@ public class WmsDocAsnSubService {
 
     }
 
+
+    public AjaxResult callbackWcsAgvInTask(String taskNo){
+        WcsTask agvWcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
+        WcsTask wcsTask = wcsTaskService.selectWcsTask(agvWcsTask.getExt1(), Constant.TaskType.RGV.getDesc());
+        return AjaxResult.success(wmsToWcsApiService.wmsAgvCallbackIntask(wcsTask.getTaskNo()));
+    }
+
+    public AjaxResult callbackWcsAgvOutTask(String taskNo) {
+        WcsTask agvWcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
+        WcsTask wcsTask = wcsTaskService.selectWcsTask(agvWcsTask.getExt1(), Constant.TaskType.RGV.getDesc());
+        return AjaxResult.success(wmsToWcsApiService.wmsAgvCallbackOuttask(wcsTask.getTaskNo()));
+    }
+
+
+
+
     /**
      * agv回调wcs卸货完成
      * @param taskNo
@@ -124,9 +141,10 @@ public class WmsDocAsnSubService {
      * @param wcsId
      * @return
      */
-    public AjaxResult wmsAgvCallbackOuttask(String wcsId){
-        wmsToWcsApiService.wmsAgvCallbackOuttask(wcsId);
+    public AjaxResult wmsAgvCallbackOuttask(String taskNo){
+        wmsToWcsApiService.wmsAgvCallbackOuttask(taskNo);
         return AjaxResult.success();
     }
 
+
 }

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

@@ -116,6 +116,7 @@ public class WmsDocOrderSubService {
         //重新筛选库存
 //        baseLocationLotattVOS1 = filterInv(baseLocationLotattVOS, orderNo);
 
+        if(1==1) throw new RuntimeException("test");
         boolean con = true;
         //机械手应拆袋数
         int allocateQuantities = 0;

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

@@ -163,12 +163,12 @@ public class WmsToWcsApiService {
             //调用失败后,等待5s重试,后面重试间隔依次变为原来的2倍
             backoff = @Backoff(delay = 5000, multiplier = 2)
     )
-    public WcsResponseVo wmsAgvCallbackOuttask(String wcsId) {
-        log.info("WmsToWcsApiService - wmsAgvCallbackOuttask request is :{}, time is :{}", wcsId, DateUtils.getTime());
+    public WcsResponseVo wmsAgvCallbackOuttask(String taskNo) {
+        log.info("WmsToWcsApiService - wmsAgvCallbackOuttask request is :{}, time is :{}", taskNo, DateUtils.getTime());
         String r = "";
         WcsResponseVo wcsResponseVo = new WcsResponseVo();
         try {
-            r = HttpUtils.sendGet(Constant.WCS_TASK_URL6, wcsId);
+            r = HttpUtils.sendGet(Constant.WCS_TASK_URL6, taskNo);
             wcsResponseVo = JSON.parseObject(r, WcsResponseVo.class);
             log.info("WmsToWcsApiService - wmsAgvCallbackOuttask response is :{}, time is :{}", JSONObject.toJSONString(wcsResponseVo), DateUtils.getTime());
         } catch (Exception e) {

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

@@ -259,7 +259,7 @@ public interface IBaseLocationInfoService {
      * @param updateBy
      * @return
      */
-    boolean occupyLocation(Long id, Long warehouseId, String updateBy);
+    boolean occupyLocation(Long id, Long warehouseId, String updateUser);
 
     /**
      * 放开占领库位状态(是否有货状态)

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

@@ -392,8 +392,8 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
     }
 
     @Override
-    public boolean occupyLocation(Long id, Long warehouseId, String updateBy) {
-        return updateLocationStockStatusAndIsEmpty(id, warehouseId, updateBy
+    public boolean occupyLocation(Long id, Long warehouseId, String updateUser) {
+        return updateLocationStockStatusAndIsEmpty(id, warehouseId, updateUser
                 , null, Constant.IS_YES.N);
     }
 
@@ -404,8 +404,8 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
     }
 
     @Override
-    public boolean updateLocationIdleAndEmpty(Long id, Long warehouseId, String updateBy) {
-        return updateLocationStockStatusAndIsEmpty(id, warehouseId, updateBy
+    public boolean updateLocationIdleAndEmpty(Long id, Long warehouseId, String updateUser) {
+        return updateLocationStockStatusAndIsEmpty(id, warehouseId, updateUser
                 , Constant.STOCK_STATUS.STOCK00, Constant.IS_YES.Y);
     }