From becc33ce9681fcc75d26eb2b8fbe650d53cb1f89 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 30 七月 2025 14:55:26 +0800
Subject: [PATCH] 1. 调拔单功能优化 2. 7.30问题及bug修复

---
 rsf-admin/src/page/orders/purchase/PurchaseItemList.jsx                                           |    2 
 rsf-admin/src/page/histories/asnOrderLog/AsnOrderItemLogList.jsx                                  |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java     |    2 
 rsf-admin/src/page/orders/purchase/PurchaseEdit.jsx                                               |   25 ++++
 rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx                                               |    6 -
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java        |  106 ++++++++++++---------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java  |    2 
 rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx                                      |  123 +++++++++++++-----------
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java           |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java |    5 +
 rsf-admin/src/page/orders/transfer/TransferOrders.jsx                                             |    2 
 11 files changed, 162 insertions(+), 117 deletions(-)

diff --git a/rsf-admin/src/page/histories/asnOrderLog/AsnOrderItemLogList.jsx b/rsf-admin/src/page/histories/asnOrderLog/AsnOrderItemLogList.jsx
index 8e4d183..dc87470 100644
--- a/rsf-admin/src/page/histories/asnOrderLog/AsnOrderItemLogList.jsx
+++ b/rsf-admin/src/page/histories/asnOrderLog/AsnOrderItemLogList.jsx
@@ -144,8 +144,8 @@
                     omit={['id', 'orderId', 'poDetlId', 'poCode', 'qrcode', 'packName', 'createTime', 'memo', 'fieldsIndex', 'matnrId', 'splrCode', 'status', 'createBy$']}
                 >
                     <NumberField source="id" />
-                    <NumberField source="asnId" label="table.field.asnOrderItemLog.asnId" />
-                    <TextField source="asnCode" label="table.field.asnOrderItemLog.asnCode" />
+                    <NumberField source="asnId" label="table.field.asnOrderItemLog.orderId" />
+                    <TextField source="asnCode" label="table.field.asnOrderItemLog.orderCode" />
                     <TextField source="platItemId" label="table.field.asnOrderItemLog.platItemId" />
                     <NumberField source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" />
                     <TextField source="poCode" label="table.field.asnOrderItemLog.poCode" />
diff --git a/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx b/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx
index e0369b6..8eb27ae 100644
--- a/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx
+++ b/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx
@@ -35,19 +35,22 @@
     useRecordSelection,
     useRefresh,
 } from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import AsnOrderLogCreate from "./AsnOrderLogCreate";
-import AsnOrderLogPanel from "./AsnOrderLogPanel";
-import EmptyData from "../../components/EmptyData";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import DictionarySelect from "../../components/DictionarySelect";
 import MyCreateButton from "../../components/MyCreateButton";
 import MyExportButton from '../../components/MyExportButton';
+import { Box, Typography, Card, Stack } from '@mui/material';
+import ConfirmButton from '../../components/ConfirmButton';
 import PageDrawer from "../../components/PageDrawer";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import AsnOrderLogCreate from "./AsnOrderLogCreate";
+import CachedIcon from '@mui/icons-material/Cached';
+import EmptyData from "../../components/EmptyData";
+import AsnOrderLogPanel from "./AsnOrderLogPanel";
+import { styled } from '@mui/material/styles';
 import * as Common from '@/utils/common';
 import request from '@/utils/request';
-import ConfirmButton from '../../components/ConfirmButton';
-import CachedIcon from '@mui/icons-material/Cached';
+
+
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
         height: '.9em'
@@ -61,53 +64,59 @@
         width: 150
     },
     '& .MuiTableCell-root': {
-    whiteSpace: 'nowrap',
-    overflow: 'visible',
-    textOverflow: 'unset'
-  }
+        whiteSpace: 'nowrap',
+        overflow: 'visible',
+        textOverflow: 'unset'
+    }
 }));
 
-const filters = [
-    <SearchInput source="condition" alwaysOn />,
-    <TextInput source="code" label="table.field.asnOrderLog.code" />,
-    <TextInput source="poCode" label="table.field.asnOrderLog.poCode" />,
-    <NumberInput source="poId" label="table.field.asnOrderLog.poId" />,
-    <TextInput source="type" label="table.field.asnOrderLog.type" />,
-    <TextInput source="wkType" label="table.field.asnOrderLog.wkType" />,
-    <NumberInput source="anfme" label="table.field.asnOrderLog.anfme" />,
-    <NumberInput source="qty" label="table.field.asnOrderLog.qty" />,
-    <TextInput source="logisNo" label="table.field.asnOrderLog.logisNo" />,
-    <DateInput source="arrTime" label="table.field.asnOrderLog.arrTime" />,
-    <SelectInput source="rleStatus" label="table.field.asnOrderLog.rleStatus"
-        choices={[
-            { id: 0, name: ' 姝e父' },
-            { id: 1, name: ' 宸查噴鏀�' },
-        ]}
-    />,
-    <SelectInput source="ntyStatus" label="table.field.asnOrderLog.ntyStatus"
-        choices={[
-            { id: 0, name: ' 鏈笂鎶�' },
-            { id: 1, name: ' 宸蹭笂鎶�' },
-            { id: 2, name: ' 閮ㄥ垎涓婃姤' },
-        ]}
-    />,
 
-    <TextInput label="common.field.memo" source="memo" />,
-    <SelectInput
-        label="common.field.status"
-        source="status"
-        choices={[
-            { id: '1', name: 'common.enums.statusTrue' },
-            { id: '0', name: 'common.enums.statusFalse' },
-        ]}
-        resettable
-    />,
-]
 
 const AsnOrderLogList = () => {
     const translate = useTranslate();
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
+    const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_order_type')) || [];
+
+    const filters = [
+        <SearchInput source="condition" alwaysOn />,
+        <TextInput source="code" label="table.field.asnOrderLog.code" />,
+        <TextInput source="poCode" label="table.field.asnOrderLog.poCode" />,
+        <NumberInput source="poId" label="table.field.asnOrderLog.poId" />,
+        // <TextInput source="type" label="table.field.asnOrderLog.type" />,
+        // <TextInput source="wkType" label="table.field.asnOrderLog.wkType" />,
+        <NumberInput source="anfme" label="table.field.asnOrderLog.anfme" />,
+        <NumberInput source="qty" label="table.field.asnOrderLog.qty" />,
+        <TextInput source="logisNo" label="table.field.asnOrderLog.logisNo" />,
+        <DateInput source="arrTime" label="table.field.asnOrderLog.arrTime" />,
+        // <SelectInput source="ntyStatus" label="table.field.asnOrderLog.ntyStatus"
+        //     choices={[
+        //         { id: 0, name: ' 鏈笂鎶�' },
+        //         { id: 1, name: ' 宸蹭笂鎶�' },
+        //         { id: 2, name: ' 閮ㄥ垎涓婃姤' },
+        //     ]}
+        // />,
+        <AutocompleteInput
+            choices={dicts}
+            optionText="label"
+            label="table.field.asnOrder.type"
+            source="type"
+            // defaultValue="in"
+            optionValue="value"
+            parse={v => v}
+            alwaysOn
+        />,
+        <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type', group: "1" }} label="table.field.asnOrder.wkType" alwaysOn>
+            <AutocompleteInput label="table.field.asnOrder.wkType" optionValue="value" />
+        </ReferenceInput>,
+        <DictionarySelect
+            label='table.field.asnOrder.exceStatus'
+            name="exceStatus"
+            group="1"
+            dictTypeCode="sys_asn_exce_status"
+            alwaysOn
+        />,
+    ]
 
     return (
         <Box display="flex">
@@ -139,7 +148,7 @@
                     rowClick={'edit'}
                     expand={false}
                     expandSingle={true}
-                    omit={['id', 'createTime', 'createBy', 'memo','logisNo', 'poId', 'rleStatus$','statusBool','createBy$']}
+                    omit={['id', 'createTime', 'createBy', 'memo', 'logisNo', 'poId', 'rleStatus$', 'statusBool', 'createBy$']}
                 >
                     <NumberField source="id" />
                     <TextField source="code" label="table.field.asnOrderLog.code" />
@@ -186,16 +195,16 @@
     const record = useRecordContext();
     const notify = useNotify();
     const continueReceipt = async () => {
-      const { data: { code, data, msg } } = await request.post(`/asnOrderLog/continue/${record.id}`);
-      if (code === 200) {
-        notify(msg);
-      } else {
-        notify(msg);
-      }
-      refresh();
+        const { data: { code, data, msg } } = await request.post(`/asnOrderLog/continue/${record.id}`);
+        if (code === 200) {
+            notify(msg);
+        } else {
+            notify(msg);
+        }
+        refresh();
     }
 
     return (
-      <ConfirmButton label={"toolbar.continue"}  startIcon={<CachedIcon />} onConfirm={continueReceipt} />
+        record.type == 'in' ? <ConfirmButton label={"toolbar.continue"} startIcon={<CachedIcon />} onConfirm={continueReceipt} /> : <></>
     )
-  }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
index c5457c1..1a1913e 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -95,12 +95,6 @@
   <NumberInput source="qty" label="table.field.asnOrder.qty" />,
   <TextInput source="logisNo" label="table.field.asnOrder.logisNo" />,
   <DateInput source="arrTime" label="table.field.asnOrder.arrTime" />,
-  <SelectInput source="rleStatus" label="table.field.asnOrder.rleStatus"
-    choices={[
-      { id: 0, name: ' 姝e父' },
-      { id: 1, name: ' 宸查噴鏀�' },
-    ]}
-  />,
   <TextInput label="common.field.memo" source="memo" />,
   <DictionarySelect
     label='table.field.asnOrder.exceStatus'
diff --git a/rsf-admin/src/page/orders/purchase/PurchaseEdit.jsx b/rsf-admin/src/page/orders/purchase/PurchaseEdit.jsx
index 3953ed2..1a0c2f7 100644
--- a/rsf-admin/src/page/orders/purchase/PurchaseEdit.jsx
+++ b/rsf-admin/src/page/orders/purchase/PurchaseEdit.jsx
@@ -55,9 +55,23 @@
                 <SimpleForm
                     shouldUnregister
                     warnWhenUnsavedChanges
-                    toolbar={<FormToolbar />}
+                    toolbar={false}
                     mode="onTouched"
                     defaultValues={{}}
+                    sx={{
+                        "& .MuiFormLabel-root.MuiInputLabel-root.Mui-disabled": {
+                            bgcolor: 'white',
+                            WebkitTextFillColor: "rgba(0, 0, 0)"
+                        },
+
+                        "& .MuiInputBase-input.MuiFilledInput-input.Mui-disabled": {
+                            bgcolor: 'white',
+                            WebkitTextFillColor: "rgba(0, 0, 0)"
+                        },
+                        "& .MuiFilledInput-root.MuiInputBase-sizeSmall": {
+                            bgcolor: 'white',
+                        }
+                    }}
                 // validate={(values) => { }}
                 >
                     <Grid container width={{ xs: '100%', xl: '100%' }} rowSpacing={3} columnSpacing={3}>
@@ -81,6 +95,7 @@
                                     source="type"
                                     optionValue="value"
                                     parse={v => v}
+                                    readOnly
                                 />
                                 <AutocompleteInput
                                     choices={business}
@@ -89,16 +104,19 @@
                                     source="wkType"
                                     optionValue="value"
                                     parse={v => v}
+                                    readOnly
                                 />
                                 <TextInput
                                     label="table.field.purchase.source"
                                     source="source"
                                     parse={v => v}
+                                    readOnly
                                     validate={required()}
                                 />
                                 <NumberInput
                                     label="table.field.purchase.anfme"
                                     source="anfme"
+                                    readOnly
                                     validate={required()}
                                 />
                             </Stack>
@@ -106,25 +124,30 @@
                                 <TextInput
                                     label="table.field.purchase.project"
                                     source="project"
+                                    readOnly
                                     parse={v => v}
                                 />
                                 <TextInput
                                     label="table.field.purchase.channel"
                                     source="channel"
                                     parse={v => v}
+                                    readOnly
                                 />
                                 <TextInput
                                     label="table.field.purchase.platCode"
                                     source="platCode"
                                     parse={v => v}
+                                    readOnly
                                 />
                                 <DateInput
                                     label="table.field.purchase.startTime"
                                     source="startTime"
+                                    readOnly
                                 />
                                 <DateInput
                                     label="table.field.purchase.endTime"
                                     source="endTime"
+                                    readOnly
                                 />
                             </Stack>
                         </Grid>
diff --git a/rsf-admin/src/page/orders/purchase/PurchaseItemList.jsx b/rsf-admin/src/page/orders/purchase/PurchaseItemList.jsx
index ba27383..e6ff1af 100644
--- a/rsf-admin/src/page/orders/purchase/PurchaseItemList.jsx
+++ b/rsf-admin/src/page/orders/purchase/PurchaseItemList.jsx
@@ -108,7 +108,7 @@
           actions={(
             <TopToolbar>
               <FilterButton />
-              <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+              {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
               <SelectColumnsButton preferenceKey='purchaseItem' />
               {/* <MyExportButton /> */}
             </TopToolbar>
diff --git a/rsf-admin/src/page/orders/transfer/TransferOrders.jsx b/rsf-admin/src/page/orders/transfer/TransferOrders.jsx
index ba4d7f7..be8eac0 100644
--- a/rsf-admin/src/page/orders/transfer/TransferOrders.jsx
+++ b/rsf-admin/src/page/orders/transfer/TransferOrders.jsx
@@ -81,7 +81,7 @@
                         omit={['id', 'memo']}
                     >
                         <NumberField source="id" />
-                        <TextField source="code" label="table.field.transferOrder.code" />
+                        <TextField source="code" label="table.field.transferOrder.code"/>
                         <TextField source="poCode" label="table.field.transferOrder.poCode" />
                         <TextField source="type$" label="table.field.transferOrder.type" />
                         <TextField cellClassName="wkType" source="wkType$" label="table.field.transferOrder.wkType" />
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 109120c..c8b78f0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -243,7 +243,7 @@
                 throw new CoolException("鏁版嵁閿欒锛侊紒");
             }
             if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) {
-                throw new CoolException("鍑哄簱鍗曟湭瀹屾垚锛屾棤娉曞畬鎴愭敹璐э紒锛�");
+                throw new CoolException("璋冩嫈鍑哄簱鍗曟湭瀹屾垚锛屼笉鍙墽琛屾敹璐ф搷浣滐紒锛�");
             }
         }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
index 5ad4d08..ffb2dd6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -1,17 +1,13 @@
 package com.vincent.rsf.server.manager.schedules;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.exception.CoolException;
-import com.vincent.rsf.server.manager.entity.WkOrder;
-import com.vincent.rsf.server.manager.entity.WkOrderItem;
-import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
-import com.vincent.rsf.server.manager.entity.AsnOrderLog;
+import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.AsnExceStatus;
 import com.vincent.rsf.server.manager.enums.OrderType;
-import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
-import com.vincent.rsf.server.manager.service.AsnOrderItemService;
-import com.vincent.rsf.server.manager.service.AsnOrderLogService;
-import com.vincent.rsf.server.manager.service.AsnOrderService;
+import com.vincent.rsf.server.manager.enums.POExceStatus;
+import com.vincent.rsf.server.manager.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -20,6 +16,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -34,69 +31,66 @@
 public class AsnOrderLogSchedule {
 
     @Autowired
+    private PurchaseService purchaseService;
+    @Autowired
+    private DeliveryService deliveryService;
+    @Autowired
     private AsnOrderService asnOrderService;
     @Autowired
     private AsnOrderItemService asnOrderItemService;
-
     @Autowired
     private AsnOrderLogService asnOrderLogService;
-
     @Autowired
     private AsnOrderItemLogService asnOrderItemLogService;
 
     /**
-     * @author Ryan
-     * @description 鍒犻櫎宸插畬鎴愯鍗曞姞鍏og琛�
      * @param
      * @return
+     * @author Ryan
+     * @description 鍒犻櫎宸插畬鎴愯鍗曞姞鍏og琛�
      * @time 2025/3/19 19:09
      */
-    @Scheduled(cron = "0 0/05 * * * ?  ")
+    @Scheduled(cron = "0/35 * * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
     public void moveOrderToLog() {
         List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
-                        .eq(WkOrder::getType, OrderType.ORDER_IN.type)
+                .eq(WkOrder::getType, OrderType.ORDER_IN.type)
                 .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val));
         if (wkOrders.isEmpty()) {
             return;
         }
-        moveOrderToLog(wkOrders, OrderType.ORDER_IN.type);
+        try {
+            moveOrderToLog(wkOrders, OrderType.ORDER_IN.type);
+        } catch (Exception e) {
+            throw new CoolException(e.getMessage());
+        }
     }
 
 
     /**
-    * @author Ryan
-    * @description 鍑哄簱鍗曞畬鎴愬悗锛岀姸鎬佷慨鏀�
-    * @param
-    * @return
-    * @time 2025/6/16 08:35
-    */
-//    @Scheduled(cron = "0/30 * * * * ?  ")
+     * @param
+     * @return
+     * @author Ryan
+     * @description 鍑哄簱鍗曞畬鎴愬悗锛岀姸鎬佷慨鏀�
+     * @time 2025/6/16 08:35
+     */
+    @Scheduled(cron = "0/30 * * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
     public void outStockComplete() {
         List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
-                        .eq(WkOrder::getType, OrderType.ORDER_OUT.type)
-                        .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)
+                .eq(WkOrder::getType, OrderType.ORDER_OUT.type)
+                .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)
                 .apply("anfme = work_qty")
         );
         if (wkOrders.isEmpty()) {
             return;
         }
-        moveOrderToLog(wkOrders, OrderType.ORDER_OUT.type);
+        try {
+            moveOrderToLog(wkOrders, OrderType.ORDER_OUT.type);
+        } catch (Exception e) {
+            throw new CoolException(e.getMessage());
+        }
     }
-
-//    /**
-//     * @author Ryan
-//     * @date 2025/7/30
-//     * @description: 鏇存柊璋冩嫈鍗曠姸鎬�
-//     * @version 1.0
-//     */
-//    @Scheduled(cron = "0/30 * * * * ?  ")
-//    @Transactional(rollbackFor = Exception.class)
-//    public void updateTransferExc() {
-//
-//    }
-
 
 
     /**
@@ -107,7 +101,8 @@
      * @description 娣诲姞鍘嗗彶鍗曟嵁
      * @time 2025/6/16 08:56
      */
-    private void moveOrderToLog(List<WkOrder> wkOrders, String type) {
+    @Transactional(rollbackFor = Exception.class)
+    public void moveOrderToLog(List<WkOrder> wkOrders, String type) throws Exception{
         Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet());
         List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                 .in(WkOrderItem::getOrderId, longSet));
@@ -145,15 +140,34 @@
             if (!asnOrderItemLogService.saveBatch(logs)) {
                 throw new CoolException("鍗曟嵁鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
             }
+
+            //鏇存柊PO/DO鍗曟墽琛岀姸鎬�
+            if (type.equals(OrderType.ORDER_IN.type)) {
+                if (!Objects.isNull(order.getPoId())) {
+                    if (!purchaseService.update(new LambdaUpdateWrapper<Purchase>()
+                            .set(Purchase::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val)
+                            .eq(Purchase::getId, order.getPoId()))) {
+                        throw new CoolException("PO鍗曟洿鏂扮姸鎬佹洿鏂板け璐ワ紒锛�");
+                    }
+                }
+            } else {
+                if (!Objects.isNull(order.getPoId())) {
+                    if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>()
+                            .eq(Delivery::getId, order.getPoId())
+                            .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val))) {
+                        throw new CoolException("DO鍗曟洿鏂扮姸鎬佹洿鏂板け璐�");
+                    }
+                }
+            }
         }
 
-        if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
-                .in(WkOrderItem::getOrderId, longSet))) {
-            throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
-        }
-        if (!this.asnOrderService.removeByIds(longSet)) {
-            throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
-        }
+//        if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
+//                .in(WkOrderItem::getOrderId, longSet))) {
+//            throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
+//        }
+//        if (!this.asnOrderService.removeByIds(longSet)) {
+//            throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+//        }
     }
 
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
index 2b7b816..688e732 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
@@ -53,7 +53,7 @@
                 .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
 
         WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, orderLog.getCode()));
-        if (Objects.isNull(wkOrder)) {
+        if (!Objects.isNull(wkOrder)) {
             throw new CoolException("鏀惰揣鍗曟嵁宸叉坊鍔狅紝鍒锋柊鍚庡啀鎿嶄綔锛侊紒");
         }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
index dbaeed5..0a64954 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
@@ -22,6 +22,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -50,6 +51,7 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception {
         ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), DeliveryTemplate.class, ExcelUtil.getDefaultImportParams());
         if (result.getList().isEmpty()) {
@@ -116,6 +118,9 @@
                     sbFaild.append(orderTemplate.getMatnrCode()).append("鐗╂枡涓嶅瓨鍦�");
                     throw new CoolException(sbFaild.toString());
                 }
+                if (!matnr.getName().equals(orderTemplate.getMaktx())) {
+                    throw new CoolException("瀵煎叆鐗╂枡鍚嶇О涓庡簱鍐呭悕绉颁笉涓�鑷达紒锛�");
+                }
                 orderItem.setDeliveryId(order.getId())
                         .setDeliveryCode(order.getCode())
                         .setSplrBatch(orderTemplate.getSplrBatch())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java
index b34fdcb..13530da 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java
@@ -23,7 +23,7 @@
 
     @Override
     public Delivery removeDo(List<Long> list) {
-        List<Delivery> deliveries = this.list(new LambdaQueryWrapper<Delivery>().eq(Delivery::getId, list));
+        List<Delivery> deliveries = this.list(new LambdaQueryWrapper<Delivery>().in(Delivery::getId, list));
         if (deliveries.isEmpty()) {
             throw new BusinessException("鏁版嵁閿欒锛氬崟鎹俊鎭笉瀛樺湪锛侊紒");
         }

--
Gitblit v1.9.1