Bläddra i källkod

选矿AGV需求后端代码

ChenYang 1 år sedan
förälder
incheckning
d3fe77db0d

+ 36 - 14
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -1,16 +1,9 @@
 package com.ruoyi.ams.task.service.impl;
 
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.ams.agv.ndc.domain.AmsTask;
 import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
 import com.ruoyi.ams.box.service.IWmsBoxInfoService;
@@ -36,9 +29,6 @@ import com.ruoyi.hard.demo.AutoDoorClient;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.ruoyi.ams.task.mapper.WcsTaskMapper;
-import com.ruoyi.ams.task.domain.WcsTask;
-import com.ruoyi.ams.task.service.IWcsTaskService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.lang.reflect.Method;
@@ -128,8 +118,6 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         return wcsTaskMapper.selectWcsUnallocated(warehouseId);
     }
 
-
-
     /**
      * 新增AGV任务
      *
@@ -462,8 +450,6 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                 }
                 throw new RuntimeException();
             }
-        } else {
-
         }
         wcsTask.setState(state.longValue());
         wcsTask.setUpdateDate(new Date());
@@ -589,6 +575,42 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         return AjaxResult.success();
     }
 
+    @Override
+    public Boolean updateTaskStatus(String taskNo, Integer sourceStatus, Integer targetStatus) {
+        LambdaUpdateWrapper<WcsTask> updateWrapper = Wrappers.<WcsTask>lambdaUpdate().set(WcsTask::getState, targetStatus)
+                .eq(WcsTask::getTaskNo, taskNo).eq(WcsTask::getState, sourceStatus);
+        return wcsTaskMapper.update(null, updateWrapper) == 1;
+    }
+
+
+
+    @Override
+    public WcsTask selectWcsTask(String asnNo, String palletNo, Constant.TASK_STS taskStatusEnum) {
+        WcsTask wcsTask = new WcsTask();
+        wcsTask.setExt1(asnNo);
+        wcsTask.setExt2(palletNo);
+        wcsTask.setState(Long.parseLong(String.valueOf(taskStatusEnum)));
+        List<WcsTask> wcsTaskList = wcsTaskMapper.selectWcsTaskList(wcsTask);
+        return CollectionUtil.isNotEmpty(wcsTaskList) ? wcsTaskList.get(0) : new WcsTask();
+    }
+
+
+    /**
+     * 查询AGV任务
+     *
+     * @param wcsTask AGV任务
+     * @return AGV任务
+     */
+    @Override
+    public WcsTask selectWcsTaskByModel(WcsTask wcsTask) {
+        List<WcsTask> list = wcsTaskMapper.selectWcsTaskList(wcsTask);
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        } else {
+            return null;
+        }
+    }
+
     /**
      * 修改库存出入库标记
      *

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

@@ -1,6 +1,7 @@
 package com.ruoyi.ams.xuankuang.service;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
@@ -105,7 +106,6 @@ public class WcsTaskSubService {
         BaseLocationInfo baseLocationInfoFrom = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, 1l);
         BaseLocationInfo baseLocationInfoTo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, 1l);
 
-        String taskNo = generateTaskNo();
         WcsTask wcsTask = new WcsTask();
         wcsTask.setTaskNo(taskNo);
         wcsTask.setState(state);

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

@@ -1,17 +1,20 @@
 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.order.domain.WmsDocOrderDetails;
-import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
-import com.ruoyi.ams.order.mapper.WmsDocOrderDetailsMapper;
+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.LocationCoordinateVo;
 import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseSku;
@@ -19,21 +22,16 @@ import com.ruoyi.base.service.IBaseSkuService;
 import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
-import java.io.Console;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 入库业务
@@ -65,7 +63,7 @@ public class WmsDocAsnSubService {
     @Autowired
     private WmsDocAsnHeaderMapper wmsDocAsnHeaderMapper;
     @Autowired
-    private WmsDocAsnDetailsMapper wmsDocAsnDetailsMapper;
+    private IWcsTaskService wcsTaskService;
 
 
     /**
@@ -126,7 +124,6 @@ public class WmsDocAsnSubService {
 
     /**
      * agv入库任务下发
-     * @param asnNo
      * @return
      */
     @Transactional
@@ -141,7 +138,7 @@ public class WmsDocAsnSubService {
         WmsDocAsnDetails wmsDocAsnDetail =
                 iWmsDocAsnDetailsService.createAsnDetail(asnNo, baseSku.getSku(), quantity);
         //3. 如果任务已经存在,则从任务中获取库存信息,否则就预建立入库库存
-        WcsTask wcsTask = iWcsTaskService.selectWcsTask(asnNo, palletNo, Constant.TASK_STS.TASK_PUBILSH);
+        WcsTask wcsTask = wcsTaskService.selectWcsTask(asnNo, palletNo, Constant.TASK_STS.TASK_PUBILSH);
         Boolean isNotEmpty = ObjectUtils.isNotNull(wcsTask) && StringUtils.isNotBlank(wcsTask.getTaskNo());
         String taskNo = IdWorker.getIdStr();
         LocationCoordDTO locationCoordDTO = isNotEmpty ? wcsToWmsApiService.getInvInfoByTask(wcsTask)

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

@@ -12,11 +12,13 @@ import com.ruoyi.base.mapper.BaseLocationInfoMapper;
 import com.ruoyi.base.mapper.BaseLocationZoneMapper;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.utils.CommonUtils;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -109,10 +111,27 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
         List<BaseLocationInfo> inStockByLocs = baseLocationInfoMapper.queryByListInStockByLoc(baseLocationLotattVO);
         if (CollectionUtil.isEmpty(inStockByLocs)) return baseLocationLotattVO;
 
-        if (inStockByLocs.stream().noneMatch(item -> baseLocationList.stream().map(BaseLocationInfo::getId).collect(Collectors.toList()).contains(item.getId()))) return null;
+        if (inStockByLocs.size() > 0) {
+
+            boolean isSuccess = true;
+            for (int i = 0; i < inStockByLocs.size(); i++) {
+                if (baseLocationList.size() == 0) {
+                    return null;
+                }
+
                 boolean isSuit = false;
-                for (BaseLocationLotattDTO vo : basLocationList) {
+                for (BaseLocationInfo baseLocationInfo : baseLocationList) {
 
+                    if (inStockByLocs.get(i).getId().equals(baseLocationInfo.getId())) {
+
+                        isSuit = true;
+                    }
+                }
+
+                isSuccess = isSuit;
+                if (!isSuccess) return null;
+            }
+        }
         return baseLocationLotattVO;
     }