From 462a8c41fb4043017d75148873f9aa0559722ae3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 06 六月 2025 16:25:34 +0800
Subject: [PATCH] 添加下发执行功能

---
 rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx                                       |   11 ---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java |   67 ++++++++++------------
 rsf-admin/src/page/orders/outStock/OutStockPublic.jsx                                         |   51 +++++++++++++++++
 rsf-admin/src/page/orders/outStock/OutOrderList.jsx                                           |    1 
 4 files changed, 83 insertions(+), 47 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
index 719eb4c..8095542 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
@@ -39,13 +39,9 @@
 import { Box, Typography, Card, Stack, Dialog, DialogActions, DialogTitle } from '@mui/material';
 import { styled } from '@mui/material/styles';
 import OutOrderItemCreate from "./OutOrderItemCreate";
-import EmptyData from "../../components/EmptyData";
-import MyCreateButton from "../../components/MyCreateButton";
-import MyExportButton from '../../components/MyExportButton';
 import PageDrawer from "../../components/PageDrawer";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
 import OutOrderItemEdit from "./OutOrderItemEdit";
-import ImportButton from "../../components/ImportButton";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
   '& .css-1vooibu-MuiSvgIcon-root': {
@@ -122,9 +118,7 @@
           actions={(
             <TopToolbar>
               <FilterButton />
-              <MyCreateButton onClick={() => { setCreateDialog(true) }} />
               <SelectColumnsButton preferenceKey='outStockItem' />
-              {/* <MyExportButton /> */}
             </TopToolbar>
           )}
           perPage={DEFAULT_ITEM_PAGE_SIZE}
@@ -132,10 +126,7 @@
           <StyledDatagrid
             preferenceKey='outStockItem'
             bulkActionButtons={false}
-            rowClick={(id, resource, record) => {
-              setSelect(record)
-              setEditDialog(true)
-            }}
+            rowClick={false}
             omit={['id', 'createTime', 'createBy', 'memo', 'poDetlId', 'purQty', 'purUnit', 'trackCode', 'packName', 'qrcode', 'splrName', 'matnrId', 'asnId']}
           >
             <NumberField source="id" />
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
index 20fd2e0..2f63b73 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -49,7 +49,6 @@
 import ImportButton from "../../components/ImportButton";
 import DetailsIcon from '@mui/icons-material/Details';
 import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';
-import OutOrderCreate from "./OutOrderCreate";
 import AddIcon from '@mui/icons-material/Add';
 import OutOrderModal from "./OutOrderModal";
 import PublicIcon from '@mui/icons-material/Public';
diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
new file mode 100644
index 0000000..6a4a626
--- /dev/null
+++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -0,0 +1,51 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+    List,
+    DatagridConfigurable,
+    SearchInput,
+    TopToolbar,
+    Button,
+    SelectColumnsButton,
+    EditButton,
+    FilterButton,
+    CreateButton,
+    ExportButton,
+    BulkDeleteButton,
+    WrapperField,
+    Toolbar,
+    useRecordContext,
+    useTranslate,
+    useNotify,
+    useListContext,
+    FunctionField,
+    TextField,
+    NumberField,
+    DateField,
+    BooleanField,
+    ReferenceField,
+    TextInput,
+    DateTimeInput,
+    DateInput,
+    SelectInput,
+    NumberInput,
+    ReferenceInput,
+    ReferenceArrayInput,
+    AutocompleteInput,
+    DeleteButton,
+    SimpleForm,
+    Form,
+    SaveButton,
+    useRefresh,
+    useGetList,
+} from 'react-admin';
+
+const OutStockPublic = (props) => {
+
+    return (
+        <>
+        
+        </>
+    );
+}
+
+export default OutStockPublic;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index e034a1f..d0e8a20 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -161,38 +161,37 @@
             throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
         }
         Map<Long, List<DeliveryItem>> listMap = items.stream().collect(Collectors.groupingBy(DeliveryItem::getDeliveryId));
-        //鑾峰彇绗竴涓狪D
-        Long deliveryId = items.stream().findFirst().get().getDeliveryId();
-        Delivery delivery = deliveryService.getById(deliveryId);
-        if (Objects.isNull(delivery)) {
-            throw new CoolException("涓诲崟鎹笉瀛樺湪锛侊紒");
-        }
-        AsnOrder order = new AsnOrder();
-        BeanUtils.copyProperties(delivery, order);
-        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order);
-        if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
-            throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�");
-        }
-        order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
-                .setType(delivery.getType())
-                .setWkType(delivery.getWkType())
-                .setCode(ruleCode)
-                .setId(null)
-                .setUpdateBy(loginUserId)
-                .setCreateBy(loginUserId);
-        if (!this.save(order)) {
-            throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
-        }
-
         listMap.keySet().forEach(key -> {
-            Delivery delivery1 = deliveryService.getById(key);
+            //TODO 鍒ゆ柇鍗曟嵁鏄惁宸茬粡瀛樺湪锛屽瀛樺湪鍒欑疮鍔犱慨鏀瑰瓙琛紝涓嶅瓨鍦ㄦ墠鏂板缓
+            Delivery delivery = deliveryService.getById(key);
+            if (Objects.isNull(delivery)) {
+                throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+            }
+            AsnOrder order = new AsnOrder();
+            BeanUtils.copyProperties(delivery, order);
+            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order);
+            if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
+                throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�");
+            }
+            order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
+                    .setType(delivery.getType())
+                    .setWkType(delivery.getWkType())
+                    .setCode(ruleCode)
+                    .setPoId(delivery.getId())
+                    .setId(null)
+                    .setUpdateBy(loginUserId)
+                    .setCreateBy(loginUserId)
+                    .setPoCode(delivery.getCode());
+            if (!this.save(order)) {
+                throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
+            }
             List<AsnOrderItem> orderItems = new ArrayList<>();
             listMap.get(key).forEach(item -> {
                 AsnOrderItem orderItem = new AsnOrderItem();
                 Double anfme = Math.round((item.getAnfme() - item.getWorkQty() - item.getQty()) * 10000) / 10000.0;
                 BeanUtils.copyProperties(item, orderItem);
                 orderItem.setId(null)
-                        .setPoCode(delivery1.getCode())
+                        .setPoCode(order.getPoCode())
                         .setMaktx(item.getMaktx())
                         .setMatnrCode(item.getMatnrCode())
                         .setFieldsIndex(item.getFieldsIndex())
@@ -206,7 +205,6 @@
                         .setPlatOrderCode(item.getPlatOrderCode())
                         .setProjectCode(item.getProjectCode())
                         .setPlatItemId(item.getPlatItemId())
-                        .setFieldsIndex(item.getFieldsIndex())
                         .setUpdateBy(loginUserId)
                         .setCreateBy(loginUserId)
                         .setPoDetlId(item.getId());
@@ -220,13 +218,17 @@
             });
 
             Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
-
+            //淇敼璁″垝鏁伴噺
+            order.setAnfme(sum).setWorkQty(0.0);
+            if (!this.saveOrUpdate(order)) {
+                throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒");
+            }
             if (!asnOrderItemService.saveBatch(orderItems)) {
                 throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
             }
 
             Short exceStatus = POExceStatus.PO_EXCE_STATUS_SECTION_DONE.val;
-            if (delivery1.getAnfme().compareTo(sum) <= 0) {
+            if (delivery.getAnfme().compareTo(order.getAnfme()) <= 0) {
                 exceStatus = AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val;
             }
 
@@ -236,15 +238,8 @@
                     .eq(Delivery::getId, key))) {
                 throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
             }
+
         });
-
-        Double sum = items.stream().mapToDouble(DeliveryItem::getAnfme).sum();
-        //淇敼璁″垝鏁伴噺
-        order.setAnfme(sum).setWorkQty(0.0);
-        if (!this.saveOrUpdate(order)) {
-            throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒");
-        }
-
         return R.ok();
     }
 

--
Gitblit v1.9.1