From 0a0f8d7480b9ddab9ce7d62dede869ee8c57fe75 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期日, 27 四月 2025 14:12:21 +0800
Subject: [PATCH] #堆垛机生成入库任务ok

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java     |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java          |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java |   98 ++++++++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 99 insertions(+), 5 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
index 53139af..2e10cc7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
@@ -37,7 +37,7 @@
         if (Cools.isEmpty(param.getLocType1())){
             return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
         }
-        InTaskMsgDto msgDto = wcsService.createInTask(param);
+        InTaskMsgDto msgDto = wcsService.createInTask(param,getLoginUserId());
         return R.ok(msgDto);
 
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
index d184363..c4ba4e6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
@@ -12,5 +12,5 @@
 
     private String locNo;
 
-    private Integer workNo;
+    private String workNo;
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
index b691923..433194a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
@@ -4,5 +4,5 @@
 import com.vincent.rsf.server.api.controller.params.TaskInParam;
 
 public interface WcsService {
-    InTaskMsgDto createInTask(TaskInParam param);
+    InTaskMsgDto createInTask(TaskInParam param, Long loginUserId);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 263c812..0d8bd8b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -1,22 +1,34 @@
 package com.vincent.rsf.server.api.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
 import com.vincent.rsf.server.api.entity.dto.LocTypeDto;
 import com.vincent.rsf.server.api.controller.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.enums.OrderType;
+import com.vincent.rsf.server.api.entity.enums.TaskStsType;
 import com.vincent.rsf.server.api.entity.enums.TaskType;
 import com.vincent.rsf.server.api.service.WcsService;
 import com.vincent.rsf.server.api.utils.LocUtils;
 import com.vincent.rsf.server.api.utils.SlaveProperties;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
+import com.vincent.rsf.server.manager.utils.LocManageUtil;
+import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 @Service
 public class WcsServiceImpl implements WcsService {
@@ -34,10 +46,92 @@
     private SlaveProperties slaveProperties;
     @Autowired
     private WarehouseAreasService warehouseAreasService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private TaskItemService taskItemService;
+    @Autowired
+    private WaitPakinItemService waitPakinItemService;
 
     @Override
-    public InTaskMsgDto createInTask(TaskInParam param) {
+    public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) {
         InTaskMsgDto locNo = getLocNo(param);
+        DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+                .eq(DeviceSite::getSite, param.getSourceStaNo())
+                .eq(DeviceSite::getType,param.getIoType())
+        );
+        if (Objects.isNull(deviceSite)) {
+            throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
+        }
+
+        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+                .eq(WaitPakin::getBarcode, param.getBarcode())
+                .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)));
+        if (Cools.isEmpty(waitPakin)) {
+            throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
+        }
+
+            List<TaskItem> taskItems = new ArrayList<>();
+            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
+            if (StringUtils.isBlank(ruleCode)) {
+                throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!");
+            }
+            Task task = new Task();
+            task.setTaskCode(ruleCode)
+                    .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
+                    .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+                    .setTargLoc(locNo.getLocNo())
+                    .setBarcode(waitPakin.getBarcode())
+                    .setTargSite(deviceSite.getDeviceSite())
+                    .setCreateBy(loginUserId)
+                    .setUpdateBy(loginUserId)
+                    .setOrgSite(param.getSourceStaNo().toString());
+
+
+
+
+            if (!taskService.save(task)) {
+                throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
+            }
+            if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
+                    .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, waitPakin.getBarcode()))) {
+                throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
+            }
+            /**鑾峰彇缁勬嫋鏄庣粏**/
+            List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
+            if (waitPakinItems.isEmpty()) {
+                throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪");
+            }
+            waitPakinItems.forEach(item -> {
+                TaskItem taskItem = new TaskItem();
+                BeanUtils.copyProperties(item, taskItem);
+//                AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId()));
+//                if (Objects.isNull(order)) {
+//                    throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
+//                }
+                taskItem.setTaskId(task.getId())
+                        .setOrderType(OrderType.ORDER_RECEIPT.type)
+                        .setSource(item.getId())
+                        .setTrackCode(item.getTrackCode())
+                        .setCreateBy(loginUserId)
+                        .setUpdateBy(loginUserId)
+                        .setOrderId(item.getAsnId())
+                        .setOrderItemId(item.getAsnItemId());
+                taskItems.add(taskItem);
+            });
+            if (!taskItemService.saveBatch(taskItems)) {
+                throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
+            }
+
+
+        if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
+                .eq(WaitPakin::getBarcode, param.getBarcode())
+                .set(WaitPakin::getUpdateBy, loginUserId)
+                .set(WaitPakin::getCreateBy, loginUserId)
+                .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) {
+            throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
+        locNo.setWorkNo(ruleCode);
         return locNo;
     }
 
@@ -115,7 +209,7 @@
             throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
         }
         //鍏ュ簱闈犺繎鎽嗘斁
-        if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && Cools.isEmpty(matnr)) {
+        if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) {
             if (nearRow != curRow) {
                 List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
                 for (LocItem locItem : locItems) {

--
Gitblit v1.9.1