From 786572b2bffe9ba196a56f4b0bb7098568dbf342 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 26 三月 2026 16:10:02 +0800
Subject: [PATCH] #pda生产直送

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 1 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
index 010a1da..8390a0a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -16,15 +16,17 @@
 import com.vincent.rsf.server.manager.enums.*;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.service.impl.BasContainerServiceImpl;
+import com.vincent.rsf.server.manager.service.impl.BasStationAreaServiceImpl;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import lombok.Synchronized;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -56,6 +58,8 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private WaitPakinItemService waitPakinItemService;
+    @Autowired
+    private BasStationAreaServiceImpl basStationAreaService;
 
     @Override
     public R getOutStockTaskItem(String barcode) {
@@ -283,6 +287,17 @@
             if (!taskService.updateById(task)) {
                 throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐�");
             }
+            if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
+                BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                        .eq(BasStation::getBarcode, param.getContainerNo()));
+                if (!Cools.isEmpty(basStation)) {
+                    basStation.setUseStatus(LocStsType.LOC_STS_TYPE_D.type);
+                    basStation.setUpdateTime(new Date());
+                    if (!basStationService.updateById(basStation)){
+                        throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐�");
+                    }
+                }
+            }
         }
 
         return R.ok();
@@ -310,6 +325,102 @@
     }
 
     @Override
+    public R getOrderItem(PdaGeneralParam param) {
+        WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
+                .eq(WkOrder::getCode, param.getOrderNo())
+                .eq(WkOrder::getType,OrderType.ORDER_OUT.type)
+        );
+        if (null == order) {
+            throw new CoolException("鏈壘鍒板搴旇鍗�");
+        }
+        if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val) && !order.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) ) {
+            throw new CoolException("褰撳墠璁㈠崟涓嶅湪鍙墽琛岀姸鎬�");
+        }
+        List<WkOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
+                .eq(WkOrderItem::getOrderId, order.getId())
+                .apply("anfme <> work_qty")
+        );
+
+        return R.ok(list);
+    }
+
+    @Override
+    public R getStationArea(PdaGeneralParam param) {
+        return R.ok(basStationAreaService.list());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R productionDirectDelivery(PdaGeneralParam param,Long loginUserId) {
+        WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
+                .eq(WkOrder::getCode, param.getOrderNo())
+                .eq(WkOrder::getType,OrderType.ORDER_OUT.type)
+        );
+        if (null == order) {
+            throw new CoolException("鏈壘鍒板搴旇鍗�");
+        }
+        ArrayList<String> arrayList = new ArrayList<>();
+        arrayList.add(param.getStationAreaId().toString());
+        Task task = new Task();
+        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
+        task.setTaskCode(ruleCode)
+             .setOrgSite(param.getSta1())
+            .setSort(Constants.TASK_SORT_DEFAULT_VALUE)
+            .setUpdateBy(loginUserId)
+            .setCreateBy(loginUserId)
+            .setCreateTime(new Date())
+            .setUpdateTime(new Date())
+            .setTaskStatus(TaskStsType.MISSION_INITIAL.id)
+            .setBarcode(param.getContainerNo())
+            .setTargSiteArea(arrayList)
+            .setTaskType(TaskType.TASK_TYPE_PDD.type);
+
+        if (!taskService.save(task)) {
+            throw new CoolException("浠诲姟鍒涘缓澶辫触锛侊紒");
+        }
+        List<TaskItem> taskItems = new ArrayList<>();
+        param.getWkOrderItems().forEach(item -> {
+            TaskItem taskItem = new TaskItem();
+            BeanUtils.copyProperties(item, taskItem);
+            taskItem.setTaskId(task.getId())
+                    .setAnfme(item.getDemandQty())
+                    .setWorkQty(0D)
+                    .setBatch(item.getBatch())
+                    .setUpdateBy(loginUserId)
+                    .setCreateBy(loginUserId)
+                    .setCreateTime(new Date())
+                    .setUpdateTime(new Date())
+                    .setSplrBatch(item.getBatch())
+                    .setPlatWorkCode(item.getPlatWorkCode())
+                    .setPlatItemId(item.getPlatItemId())
+                    .setOrderType(OrderType.ORDER_OUT.type)
+                    .setWkType(Short.parseShort(order.getWkType()))
+                    .setSourceCode(order.getCode())
+                    .setSourceId(order.getId());
+            taskItems.add(taskItem);
+
+            item.setWorkQty(item.getWorkQty()+item.getDemandQty());
+        });
+        if (!taskItemService.saveBatch(taskItems)) {
+            throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触锛侊紒");
+        }
+        if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val)) {
+            order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
+            order.setUpdateBy(loginUserId);
+            order.setUpdateTime(new Date());
+            if (!asnOrderService.updateById(order)){
+                throw new CoolException("鍗曟嵁鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
+        }
+        if (!asnOrderItemService.updateBatchById(param.getWkOrderItems())) {
+            throw new CoolException("鍗曟嵁鏄庣粏鏇存柊澶辫触锛侊紒");
+        }
+
+        return R.ok();
+
+    }
+
+    @Override
     public R getWaveListItem(String barcode) {
         LambdaQueryWrapper<Wave> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(!Cools.isEmpty(barcode), Wave::getCode, barcode);

--
Gitblit v1.9.1