From 3ec190500044a26e48a3eb4e414e92869595bce8 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 06 五月 2025 13:11:11 +0800
Subject: [PATCH] 单据明细优化

---
 rsf-admin/src/page/orders/stock/OrderList.jsx                                                     |    4 
 rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx                                               |   22 ++--
 rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml                               |   59 +++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java           |  103 +++++++++++---------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java                  |    7 +
 rsf-admin/src/page/locItem/LocItemList.jsx                                                        |    6 -
 rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx                                           |   11 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java |   20 ++-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java        |   20 ++--
 rsf-admin/src/i18n/zh.js                                                                          |    3 
 rsf-admin/src/i18n/en.js                                                                          |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java               |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java            |    4 
 13 files changed, 177 insertions(+), 86 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 4406d71..bcdff99 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -578,6 +578,7 @@
                 asnId: "asnId",
                 asnCode: "asnCode",
                 poDetlId: "poDetlId",
+                platItemId: 'platItemId',
                 poDetlCode: "poDetlCode",
                 matnrId: "matnrId",
                 maktx: "maktx",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 5fad2bf..9cb046b 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -568,6 +568,7 @@
                 asnCode: "涓诲崟缂栫爜",
                 poDetlId: "PO鍗旾D",
                 poDetlCode: "PO鍗�",
+                platItemId: '琛屽彿',
                 matnrId: "鐗╂枡鏍囪瘑",
                 maktx: "鐗╂枡鍚嶇О",
                 spec: "瑙勬牸",
@@ -1051,7 +1052,7 @@
         batchLocType: "鎵归噺搴撲綅绫诲瀷",
         batchPrint: "鎵归噺鎵撳嵃",
         quality: "璐ㄦ",
-        complete: "瀹屾垚",
+        complete: "瀹岀粨",
         close: "鍏抽棴",
         asnCreate: "閫氳繃鍗曟嵁鍒涘缓",
         createTask: "涓嬪彂浠诲姟",
diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx
index 7b4aa44..8822317 100644
--- a/rsf-admin/src/page/locItem/LocItemList.jsx
+++ b/rsf-admin/src/page/locItem/LocItemList.jsx
@@ -128,7 +128,7 @@
                     preferenceKey='locItem'
                     bulkActionButtons={false}
                     rowClick={false}
-                    expand={() => <LocItemPanel />}
+                    expand={false}
                     expandSingle={true}
                     omit={['id', 'createTime','locId','orderId', 'orderItemId', 'matnrId', 'splrBatch','workQty','qty', 'createBy', 'memo','fieldsIndex']}
                    
@@ -157,10 +157,6 @@
                     <DateField source="createTime" label="common.field.createTime" showTime />
                     <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                     <TextField source="memo" label="common.field.memo" sortable={false} />
-                    <WrapperField cellClassName="opt" label="common.field.opt">
-                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
-                        {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
-                    </WrapperField>
                 </StyledDatagrid>
             </List>
             <LocItemCreate
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
index e35ba63..c78bcf7 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
@@ -138,13 +138,14 @@
             //   setSelect(record)
             //   setEditDialog(true)
             // }}
-            omit={['id', 'createTime', 'purQty', 'purUnit', 'poDetlCode', 'createBy', 'memo', 'model', 'packName', 'splrCode', 'qrcode', 'poDetlId', 'matnrId', 'asnId']}
+            omit={['id', 'purQty', 'purUnit','platItemId', 'poDetlCode', 'memo', 'model', 'packName', 'splrCode', 'qrcode', 'poDetlId', 'matnrId', 'asnId']}
           >
             <NumberField source="id" />
             <NumberField source="asnId" label="table.field.asnOrderItem.asnId" />
             <TextField source="asnCode" label="table.field.asnOrderItem.asnCode" />
             <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />
             <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />
+            <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />
             <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />
             <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />
             <TextField source="maktx" label="table.field.asnOrderItem.maktx" />
@@ -165,8 +166,12 @@
             <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />
             <TextField source="packName" label="table.field.asnOrderItem.packName" />
             <DateField source="updateTime" label="common.field.updateTime" showTime />
-            <TextField source="updateBy$" label="common.field.updateBy"  />
-            <TextField source="createBy$" label="common.field.createBy"  />
+            <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+              <TextField source="nickname" />
+            </ReferenceField>
+            <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+              <TextField source="nickname" />
+            </ReferenceField>
             <DateField source="createTime" label="common.field.createTime" showTime />
             <TextField source="memo" label="common.field.memo" sortable={false} />
           </StyledDatagrid>
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
index 345c3a1..19c2d3f 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -132,7 +132,7 @@
         title={"menu.asnOrder"}
         empty={false}
         filters={filters}
-        filter={{deleted: 0}}
+        filter={{ deleted: 0 }}
         sort={{ field: "create_time", order: "desc" }}
         actions={(
           <TopToolbar>
@@ -183,7 +183,8 @@
             <MyButton setCreateDialog={setCreateDialog} setmodalType={setmodalType} />
             <InspectionButton />
             <CompleteButton />
-            <CloseButton />
+            <DeleteButton mutationMode="pessimistic" />
+            {/* <CloseButton /> */}
           </WrapperField>
         </StyledDatagrid>
       </List>
@@ -225,6 +226,7 @@
   )
 }
 
+//鎶ユ
 const InspectionButton = () => {
   const record = useRecordContext();
   const notify = useNotify();
@@ -244,11 +246,8 @@
     }
   }
 
-
   return (
-    <Button onClick={inspection} label={"toolbar.inspection"}>
-      <ConstructionIcon />
-    </Button>
+    <ConfirmButton label={"toolbar.inspection"} color="secondary" startIcon={<ConstructionIcon />} onConfirm={inspection} />
   )
 }
 
@@ -332,6 +331,7 @@
   )
 }
 
+//瀹屾垚鍗曟嵁
 const CompleteButton = () => {
   const record = useRecordContext();
   const notify = useNotify();
@@ -348,10 +348,10 @@
   }
 
   return (
-    record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="success">
-      <TaskIcon />
-    </Button> : <ConfirmButton label={"toolbar.complete"} color="success" data={'褰撳墠鏀惰揣鏁伴噺灏忎簬璁″垝鏁伴噺锛屾槸鍚︾‘璁ゅ畬鎴�'} startIcon={<TaskIcon />} onConfirm={requestComplete} />)
-
+    // record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="secondary">
+    //   <TaskIcon />
+    // </Button> : )
+    <ConfirmButton label={"toolbar.complete"} color="secondary"  startIcon={<TaskIcon />} onConfirm={requestComplete} />
   )
 
 
@@ -373,6 +373,6 @@
   }
 
   return (
-    <ConfirmButton label={"toolbar.close"} color="error" data={'纭鏄惁鍏抽棴锛�'} startIcon={<CloseIcon />} onConfirm={requestClose} />
+    <ConfirmButton label={"toolbar.close"} color="error"  startIcon={<CloseIcon />} onConfirm={requestClose} />
   )
 }
diff --git a/rsf-admin/src/page/orders/stock/OrderList.jsx b/rsf-admin/src/page/orders/stock/OrderList.jsx
index 0f498e6..bfb26c5 100644
--- a/rsf-admin/src/page/orders/stock/OrderList.jsx
+++ b/rsf-admin/src/page/orders/stock/OrderList.jsx
@@ -113,9 +113,9 @@
             >
                 <StyledDatagrid
                     preferenceKey='stock'
-                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+                    bulkActionButtons={false}
                     rowClick='edit'
-                    expandSingle={true}
+                    expandSingle={false}
                     omit={['id', 'createTime','sourceId', 'createBy', 'memo']}
                 >
                     <NumberField source="id" />
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
index e576ffd..6427b32 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
@@ -28,6 +28,9 @@
 @ApiModel(value = "ReceiptDetlsDto", description = "鏀惰揣鏄庣粏淇℃伅")
 public class ReceiptDetlsDto implements Serializable {
 
+    @ApiModelProperty("鏄庣粏ID")
+    private Long id;
+
     @ApiModelProperty("鏀惰揣閫氱煡鍗�")
     private String asnCode;
 
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 537556c..d59b56d 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
@@ -254,10 +254,14 @@
 //            if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
 //                throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
 //            }
-            AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
-                    .eq(AsnOrderItem::getAsnCode, asnCode)
-                    .eq(AsnOrderItem::getTrackCode, dto.getBarcode())
-                    .eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
+//            AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
+//                    .eq(AsnOrderItem::getAsnCode, asnCode)
+//                    .eq(AsnOrderItem::getId, dto.getId())
+//                    .eq(AsnOrderItem::getTrackCode, dto.getBarcode())
+//                    .eq(AsnOrderItem::getSplrBatch, dto.getSplrBatch()));
+
+            AsnOrderItem orderItem = asnOrderItemMapper.resultById(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, dto.getId()));
+
             if (Objects.isNull(orderItem)) {
                 throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
             }
@@ -290,47 +294,13 @@
                 throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
             }
 
-            WarehouseAreasItem item = new WarehouseAreasItem();
-//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//            String format = null;
-//            if (Objects.isNull(dto.getProdTime())) {
-//                 format = dateFormat.format(dto.getProdTime());
-//            }
-            item.setTrackCode(dto.getBarcode())
-                    .setAreaName(areasItem.getName())
-                    .setAreaId(areasItem.getId())
-                    .setAsnItemId(orderItem.getId())
-                    .setAsnCode(asnOrder.getCode())
-                    .setAsnId(asnOrder.getId())
-                    .setProdTime(dto.getProdTime())
-                    .setWeight(dto.getWeigth())
-                    //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
-                    .setUnit(orderItem.getStockUnit())
-                    .setStockUnit(orderItem.getStockUnit())
-                    .setBatch(StringUtils.isBlank(orderItem.getBatch()) ? SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto) : orderItem.getBatch())
-                    .setAnfme(dto.getReceiptQty())
-                    .setSplrBatch(dto.getSplrBatch())
-                    .setMatnrCode(matnr.getCode())
-                    .setUpdateBy(loginUserId)
-                    .setCreateBy(loginUserId)
-                    .setMatnrId(matnr.getId())
-                    .setMaktx(matnr.getName())
-                    .setWeight(matnr.getWeight())
-                    .setFieldsIndex(orderItem.getFieldsIndex())
-                    .setShipperId(matnr.getShipperId());
-            //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
-
-            WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>()
-                    .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId())
-                    .eq(WarehouseAreasItem::getTrackCode, item.getTrackCode())
-                    .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch()));
-            if (!Objects.isNull(serviceOne)) {
-                item.setAnfme(item.getAnfme() + serviceOne.getAnfme());
-                item.setId(serviceOne.getId());
-            }
-
-            if (!warehouseAreasItemService.saveOrUpdate(item)) {
-                throw new CoolException("鏀惰揣澶辫触锛侊紒");
+            List<QlyIsptItem> isptItems = qlyIsptItemService.list(new LambdaQueryWrapper<QlyIsptItem>().eq(QlyIsptItem::getAsnItemId, dto.getId()));
+            if (isptItems.isEmpty()) {
+                extracted(loginUserId, dto, areasItem, orderItem, asnOrder, matnr);
+            } else {
+                for (QlyIsptItem isptItem : isptItems) {
+                    extracted(loginUserId, dto, areasItem, orderItem, asnOrder, matnr);
+                }
             }
         }
 
@@ -343,6 +313,46 @@
         }
 
         return R.ok("鏀惰揣鎴愬姛锛侊紒");
+    }
+
+    private void extracted(Long loginUserId, ReceiptDetlsDto dto, WarehouseAreas areasItem, AsnOrderItem orderItem, AsnOrder asnOrder, Matnr matnr) {
+        WarehouseAreasItem item = new WarehouseAreasItem();
+        item.setTrackCode(dto.getBarcode())
+                .setAreaName(areasItem.getName())
+                .setAreaId(areasItem.getId())
+                .setAsnItemId(orderItem.getId())
+                .setAsnCode(asnOrder.getCode())
+                .setAsnId(asnOrder.getId())
+                .setProdTime(dto.getProdTime())
+                .setWeight(dto.getWeigth())
+                //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
+                .setUnit(orderItem.getStockUnit())
+                .setStockUnit(orderItem.getStockUnit())
+                .setBatch(StringUtils.isBlank(orderItem.getBatch()) ? SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto) : orderItem.getBatch())
+                .setAnfme(dto.getReceiptQty())
+                .setSplrBatch(dto.getSplrBatch())
+                .setMatnrCode(matnr.getCode())
+                .setUpdateBy(loginUserId)
+                .setCreateBy(loginUserId)
+                .setMatnrId(matnr.getId())
+                .setMaktx(matnr.getName())
+                .setWeight(matnr.getWeight())
+                .setFieldsIndex(orderItem.getFieldsIndex())
+                .setShipperId(matnr.getShipperId());
+        //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
+
+        WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>()
+                .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId())
+                .eq(WarehouseAreasItem::getTrackCode, item.getTrackCode())
+                .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch()));
+        if (!Objects.isNull(serviceOne)) {
+            item.setAnfme(item.getAnfme() + serviceOne.getAnfme());
+            item.setId(serviceOne.getId());
+        }
+
+        if (!warehouseAreasItemService.saveOrUpdate(item)) {
+            throw new CoolException("鏀惰揣澶辫触锛侊紒");
+        }
     }
 
     /**
@@ -420,7 +430,7 @@
      * @time 2025/4/7 16:58
      */
     @Override
-    public R getDeltByCode(Map<String, Object> params ) {
+    public R getDeltByCode(Map<String, Object> params) {
         String code = params.get("code").toString();
         String batch = null;
         if (!Objects.isNull(params.get("batch"))) {
@@ -938,6 +948,7 @@
             ReceiptDetlsDto detlsDto = new ReceiptDetlsDto();
 
             detlsDto.setAsnCode(asnOrderItem.getAsnCode())
+                    .setId(asnOrderItem.getId())
                     .setMaktx(asnOrderItem.getMaktx())
                     .setFieldsIndex(asnOrderItem.getFieldsIndex())
                     .setBarcode(asnOrderItem.getTrackCode())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
index 18b0a4a..49b50fa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -200,6 +200,13 @@
     @ApiModelProperty("璐ㄦ鐘舵��")
     private Short isptStatus;
 
+
+    @ApiModelProperty("鍚堟牸鏁伴噺")
+    private Double safeQty;
+
+    @ApiModelProperty("涓嶅悎鏍兼暟閲�")
+    private Double disQty;
+
     /**
      * 鐘舵�� 1: 姝e父  0: 鍐荤粨
      */
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
index c8b8e13..c605541 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
@@ -60,13 +60,13 @@
      */
     @Excel(name = "涓氬姟绫诲瀷")
     @ApiModelProperty(value= "涓氬姟绫诲瀷")
-    @ExcelComment(value = "wkType", example = "鐢熶骇鍏ュ簱")
+    @ExcelComment(value = "wkType", example = "瀹屽伐鍏ュ簱鍗�")
     private String wkType;
 
 
     @Excel(name = "鎵ц鐘舵��")
     @ApiModelProperty(value= "鎵ц鐘舵��")
-    @ExcelComment(value = "exceStatus", example = "1")
+    @ExcelComment(value = "exceStatus", example = "0")
     private String exceStatus;
 
     @Excel(name = "琛屽彿")
@@ -126,12 +126,12 @@
 
     @Excel(name = "渚涘簲鍟嗙紪鐮�")
     @ApiModelProperty("渚涘簲鍟嗙紪鐮�")
-    @ExcelComment(value = "splrCode",example = "3654821")
+    @ExcelComment(value = "splrCode",example = "685947")
     private String splrCode;
 
     @Excel(name = "渚涘簲鍟嗗悕绉�")
     @ApiModelProperty("渚涘簲鍟嗗悕绉�")
-    @ExcelComment(value = "splrName",example = "娴欐睙涓壃鎶�鏈叕鍙�")
+    @ExcelComment(value = "splrName",example = "娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�")
     private String splrName;
 
     @Excel(name = "渚涘簲鍟嗘壒娆�")
@@ -139,19 +139,19 @@
     @ExcelComment(value = "splrBatch",example = "25251212")
     private String splrBatch;
 
-    @Excel(name = "浜岀淮鐮�")
-    @ApiModelProperty("浜岀淮鐮�")
-    @ExcelComment(value = "qrcode",example = "")
-    private String qrcode;
+//    @Excel(name = "浜岀淮鐮�")
+//    @ApiModelProperty("浜岀淮鐮�")
+//    @ExcelComment(value = "qrcode",example = "")
+//    private String qrcode;
 
     @Excel(name = "鏉″舰鐮�")
     @ApiModelProperty("鏉″舰鐮�")
-    @ExcelComment(value = "barcode",example = "2354788")
+    @ExcelComment(value = "barcode",example = "")
     private String barcode;
 
     @Excel(name = "璺熻釜鐮�")
     @ApiModelProperty("璺熻釜鐮�")
-    @ExcelComment(value = "trackCode",example = "2354788")
+    @ExcelComment(value = "trackCode",example = "")
     private String trackCode;
 
     @Excel(name = "鍖呰鍚嶇О")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java
index 25d621b..dc48b56 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java
@@ -1,5 +1,6 @@
 package com.vincent.rsf.server.manager.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
@@ -11,6 +12,7 @@
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Map;
 
 @Mapper
@@ -19,6 +21,6 @@
 
     IPage<Map<String, Object>> resultForMap(PageParam<AsnOrderItem, BaseParam> pages, @Param(Constants.WRAPPER)  QueryWrapper<AsnOrderItem> buildWrapper);
 
-//    List<Map<String, Object>> resultForMap(long pageParam, @Param(Constants.WRAPPER) QueryWrapper<AsnOrderItem> ew);
+    AsnOrderItem resultById(@Param(Constants.WRAPPER) LambdaQueryWrapper<AsnOrderItem> buildWrapper);
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 9ab4f72..43ef3b5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -20,6 +20,7 @@
 import com.vincent.rsf.server.manager.entity.Companys;
 import com.vincent.rsf.server.manager.entity.Matnr;
 import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
+import com.vincent.rsf.server.manager.enums.CompanysType;
 import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper;
 import com.vincent.rsf.server.manager.entity.AsnOrderItem;
 import com.vincent.rsf.server.manager.service.AsnOrderItemService;
@@ -127,13 +128,15 @@
                     sbFaild.append(orderTemplate.getMatnrCode()).append("鐗╂枡涓嶅瓨鍦�");
                     continue;
                 }
+                String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, matnr);
                 orderItem.setAsnId(order.getId())
                         .setAsnCode(order.getCode())
                         .setSplrBatch(orderTemplate.getSplrBatch())
+                        .setPlatItemId(orderTemplate.getPlatItemId())
                         .setAnfme(Double.parseDouble(orderTemplate.getAnfme()))
                         .setQty(Double.parseDouble(orderTemplate.getQty()))
-                        .setBarcode(orderTemplate.getBarcode())
-                        .setTrackCode(orderTemplate.getTrackCode())
+                        .setTrackCode(StringUtils.isBlank(orderTemplate.getTrackCode()) ? trackCode : orderTemplate.getTrackCode())
+                        .setBarcode(StringUtils.isBlank(orderTemplate.getBarcode()) ? trackCode : orderTemplate.getBarcode())
                         .setPoCode(orderTemplate.getPoCode())
                         .setPurUnit(orderTemplate.getPurUnit())
                         .setCreateBy(loginUserId)
@@ -146,18 +149,21 @@
                         .setMatnrId(matnr.getId())
                         .setStockUnit(matnr.getUnit());
                 if (!Objects.isNull(orderTemplate.getSplrCode())) {
-                    Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderTemplate.getSplrCode()));
+                    Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
+                                    .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val)
+                            .eq(Companys::getCode, orderTemplate.getSplrCode()));
                     if (!Objects.isNull(companys)) {
                         orderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName());
                     } else {
-                        orderItem.setSplrCode(orderTemplate.getSplrCode()).setSplrName(orderTemplate.getSplrName() + "(渚涘簲鍟嗕笉瀛樺湪锛侊紒)");
+                        sbFaild.append("渚涘簲鍟�:" + orderTemplate.getSplrCode()).append("涓嶅瓨鍦�");
+                        continue;
                     }
                 } else {
                     continue;
                 }
-
                 items.add(orderItem);
-                if (!asnOrderItemService.saveBatch(items)) {
+
+                if (!asnOrderItemService.save(orderItem)) {
                     throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒");
                 }
             }
@@ -173,7 +179,7 @@
             }
         }
 
-        return R.ok("鎿嶄綔鎴愬姛," + sbFaild.toString());
+        return R.ok("瀵煎叆鎴愬姛锛�" + sbFaild.toString());
     }
 
     /**
diff --git a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
index 07fd049..7192284 100644
--- a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
@@ -61,4 +61,63 @@
             ) t
         ${ew.customSqlSegment}
     </select>
+    <select id="resultById" resultType="com.vincent.rsf.server.manager.entity.AsnOrderItem">
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    aoi.id,
+                    aoi.asn_id,
+                    aoi.asn_code,
+                    aoi.plat_item_id,
+                    aoi.po_detl_id,
+                    aoi.po_code,
+                    aoi.fields_index,
+                    aoi.matnr_id,
+                    aoi.matnr_code,
+                    aoi.maktx,
+                    aoi.anfme,
+                    aoi.stock_unit,
+                    aoi.pur_qty,
+                    aoi.pur_unit,
+                    aoi.prod_time,
+                    aoi.qty,
+                    qii.safe_qty,
+                    qii.dis_qty,
+                    aoi.splr_code,
+                    aoi.splr_batch,
+                    aoi.splr_name,
+                    aoi.qrcode,
+                    aoi.track_code,
+                    aoi.barcode,
+                    aoi.pack_name,
+                    aoi.nty_status,
+                    aoi.`status`,
+                    CASE
+                        aoi.ispt_result
+                        WHEN 0 THEN
+                            '鏈'
+                        WHEN 1 THEN
+                            '鍚堟牸'
+                        WHEN 2 THEN
+                            '涓嶅悎鏍�'
+                        WHEN 3 THEN
+                            '寰呭畾'
+                        WHEN 4 THEN
+                            '閮ㄥ垎鍚堟牸'
+                        END AS isptResult$,
+                    aoi.deleted,
+                    aoi.tenant_id,
+                    aoi.create_by,
+                    aoi.create_time,
+                    aoi.update_by,
+                    aoi.update_time,
+                    aoi.memo
+                FROM
+                    man_asn_order_item aoi
+                        LEFT JOIN man_qly_ispt_item qii ON aoi.id = qii.asn_item_id
+            ) t
+            ${ew.customSqlSegment}
+    </select>
 </mapper>

--
Gitblit v1.9.1