From 307d5a291ca19496d4abee0e099ebe3eb39ac7d2 Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期三, 02 四月 2025 10:59:19 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-admin/src/page/taskItem/TaskItemCreate.jsx                                                     |   15 
 rsf-admin/src/page/taskItem/TaskItemList.jsx                                                       |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java            |  148 +++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/IsptHistoriesMapper.java            |   12 
 rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java                            |   49 +++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/CheckObjParams.java          |   23 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java                       |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java          |   22 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/CheckObjDto.java                    |   39 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java      |    4 
 rsf-admin/src/i18n/zh.js                                                                           |    4 
 rsf-admin/.env                                                                                     |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java                   |    2 
 rsf-server/src/main/resources/mapper/manager/IsptHistoriesMapper.xml                               |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java      |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/IsptHistoriesService.java          |    8 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java        |   12 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java                     |   10 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java               |   42 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java                  |  202 +++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectDetlDto.java                 |   28 +
 /dev/null                                                                                          |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java       |    7 
 rsf-admin/src/page/task/TaskList.jsx                                                               |    8 
 rsf-admin/src/page/taskItem/TaskItemPanel.jsx                                                      |   12 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/IsptHistoriesController.java    |  110 +++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/IsptHistoriesServiceImpl.java |   12 
 rsf-admin/src/page/taskItem/TaskItemEdit.jsx                                                       |   14 
 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/controller/TaskController.java             |    7 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectItemDto.java                 |   31 ++
 31 files changed, 758 insertions(+), 87 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..75359a8 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=192.168.4.13
 # VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 06efe6e..e06766b 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -679,8 +679,8 @@
             },
             task: {
                 taskCode: "浠诲姟鍙�",
-                taskStatus: "浠诲姟鐘舵��",
-                taskType: "浠诲姟绫诲瀷",
+                taskStatus: "鐘舵��",
+                taskType: "绫诲瀷",
                 orgLoc: "婧愬簱浣�",
                 orgSite: "婧愮珯鐐�",
                 targLoc: "鐩爣搴撲綅",
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index c46301c..5cd8e66 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -78,7 +78,6 @@
     <TextInput source="expCode" label="table.field.task.expCode" />,
     <DateInput source="startTime" label="table.field.task.startTime" />,
     <DateInput source="endTime" label="table.field.task.endTime" />,
-
     <TextInput label="common.field.memo" source="memo" />,
     <SelectInput
         label="common.field.status"
@@ -132,8 +131,8 @@
                 >
                     <NumberField source="id" />
                     <TextField source="taskCode" label="table.field.task.taskCode" />
-                    <NumberField source="taskStatus" label="table.field.task.taskStatus" />
-                    <NumberField source="taskType" label="table.field.task.taskType" />
+                    <NumberField source="taskStatus$" label="table.field.task.taskStatus" />
+                    <NumberField source="taskType$" label="table.field.task.taskType" />
                     <TextField source="orgLoc" label="table.field.task.orgLoc" />
                     <TextField source="orgSite" label="table.field.task.orgSite" />
                     <TextField source="targLoc" label="table.field.task.targLoc" />
@@ -144,9 +143,6 @@
                     <TextField source="expDesc" label="table.field.task.expDesc" />
                     <NumberField source="sort" label="table.field.task.sort" />
                     <TextField source="expCode" label="table.field.task.expCode" />
-                    <DateField source="startTime" label="table.field.task.startTime" showTime />
-                    <DateField source="endTime" label="table.field.task.endTime" showTime />
-
                     <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                         <TextField source="nickname" />
                     </ReferenceField>
diff --git a/rsf-admin/src/page/taskItem/TaskItemCreate.jsx b/rsf-admin/src/page/taskItem/TaskItemCreate.jsx
index 315e6d9..02bdbd1 100644
--- a/rsf-admin/src/page/taskItem/TaskItemCreate.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemCreate.jsx
@@ -110,13 +110,6 @@
                                     />
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.taskItem.sourceCode"
-                                        source="sourceCode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
                                     <NumberInput
                                         label="table.field.taskItem.matnrId"
                                         source="matnrId"
@@ -170,13 +163,7 @@
                                         parse={v => v}
                                     />
                                 </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.taskItem.fieldsIndex"
-                                        source="fieldsIndex"
-                                        parse={v => v}
-                                    />
-                                </Grid>
+
 
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <StatusSelectInput />
diff --git a/rsf-admin/src/page/taskItem/TaskItemEdit.jsx b/rsf-admin/src/page/taskItem/TaskItemEdit.jsx
index 7157484..df2b7b6 100644
--- a/rsf-admin/src/page/taskItem/TaskItemEdit.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemEdit.jsx
@@ -89,13 +89,6 @@
                             />
                         </Stack>
                         <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.taskItem.sourceCode"
-                                source="sourceCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
                             <NumberInput
                                 label="table.field.taskItem.matnrId"
                                 source="matnrId"
@@ -146,13 +139,6 @@
                             <TextInput
                                 label="table.field.taskItem.model"
                                 source="model"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.taskItem.fieldsIndex"
-                                source="fieldsIndex"
                                 parse={v => v}
                             />
                         </Stack>
diff --git a/rsf-admin/src/page/taskItem/TaskItemList.jsx b/rsf-admin/src/page/taskItem/TaskItemList.jsx
index 6e1217a..e92a6b7 100644
--- a/rsf-admin/src/page/taskItem/TaskItemList.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemList.jsx
@@ -62,12 +62,10 @@
     <SearchInput source="condition" alwaysOn />,
     <DateInput label='common.time.after' source="timeStart" alwaysOn />,
     <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
     <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
     <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
     <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
     <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
-    <TextInput source="sourceCode" label="table.field.taskItem.sourceCode" />,
     <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />,
     <TextInput source="maktx" label="table.field.taskItem.maktx" />,
     <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />,
@@ -76,8 +74,6 @@
     <TextInput source="batch" label="table.field.taskItem.batch" />,
     <TextInput source="spec" label="table.field.taskItem.spec" />,
     <TextInput source="model" label="table.field.taskItem.model" />,
-    <TextInput source="fieldsIndex" label="table.field.taskItem.fieldsIndex" />,
-
     <TextInput label="common.field.memo" source="memo" />,
     <SelectInput
         label="common.field.status"
@@ -134,7 +130,6 @@
                     <NumberField source="orderId" label="table.field.taskItem.orderId" />
                     <NumberField source="orderType" label="table.field.taskItem.orderType" />
                     <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />
-                    <TextField source="sourceCode" label="table.field.taskItem.sourceCode" />
                     <NumberField source="matnrId" label="table.field.taskItem.matnrId" />
                     <TextField source="maktx" label="table.field.taskItem.maktx" />
                     <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />
@@ -143,7 +138,6 @@
                     <TextField source="batch" label="table.field.taskItem.batch" />
                     <TextField source="spec" label="table.field.taskItem.spec" />
                     <TextField source="model" label="table.field.taskItem.model" />
-                    <TextField source="fieldsIndex" label="table.field.taskItem.fieldsIndex" />
 
                     <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                         <TextField source="nickname" />
diff --git a/rsf-admin/src/page/taskItem/TaskItemPanel.jsx b/rsf-admin/src/page/taskItem/TaskItemPanel.jsx
index 52f58c1..9bc1f7a 100644
--- a/rsf-admin/src/page/taskItem/TaskItemPanel.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemPanel.jsx
@@ -66,12 +66,6 @@
                         </Grid>
                         <Grid item xs={6}>
                             <PanelTypography
-                                title="table.field.taskItem.sourceCode" 
-                                property={record.sourceCode}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
                                 title="table.field.taskItem.matnrId" 
                                 property={record.matnrId}
                             />
@@ -116,12 +110,6 @@
                             <PanelTypography
                                 title="table.field.taskItem.model" 
                                 property={record.model}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.taskItem.fieldsIndex" 
-                                property={record.fieldsIndex}
                             />
                         </Grid>
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index bfa87a9..ac02aaa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -3,11 +3,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.controller.params.CheckObjParams;
 import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
 import com.vincent.rsf.server.api.controller.params.ReceiptParams;
 import com.vincent.rsf.server.api.service.MobileService;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
 import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 import com.vincent.rsf.server.system.controller.BaseController;
 import com.vincent.rsf.server.system.controller.param.LoginParam;
 import io.swagger.annotations.Api;
@@ -132,7 +134,6 @@
         return mobileService.getDeltByCode(code);
     }
 
-
     @PreAuthorize("hasAuthority('manager:waitPakin:update')")
     @ApiOperation("缁勬嫋")
     @PostMapping("/waitPakin/merge")
@@ -163,7 +164,44 @@
             return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�");
         }
         return R.ok(mobileService.unBind(param));
-
     }
 
+    @ApiOperation("鎶ユ")
+    @GetMapping("/asnOrder/inspect/{code}")
+    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
+    public R getAsnOdrers(@PathVariable String code) {
+        if (Objects.isNull(code)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.inspect(code, getLoginUserId());
+    }
+
+    @ApiOperation("鎻愪氦鎶ユ")
+    @GetMapping("/inspect/confirm/{id}")
+    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
+    public R confirmInspect(@PathVariable String id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛�");
+        }
+        return  mobileService.confirmIspt(id);
+    }
+
+    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
+    @PostMapping("/inspect/query")
+    public R checkObjs(@RequestBody CheckObjParams params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.checkObjs(params);
+    }
+
+
+    @PreAuthorize("hasAuthority('manager:qlyInspect:update')")
+    @PostMapping("/inspect/check/update")
+    public R checkUpdate(@RequestBody QlyIsptItem params) {
+        if (Objects.isNull(params)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.checkUpdate(params);
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/CheckObjParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/CheckObjParams.java
new file mode 100644
index 0000000..7476746
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/CheckObjParams.java
@@ -0,0 +1,23 @@
+package com.vincent.rsf.server.api.controller.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CheckObjParams", description = "鑾峰彇璐ㄦ淇℃伅")
+public class CheckObjParams implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("璐ㄦ鍗�")
+    private String isptCode;
+
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String matnrCode;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/CheckObjDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/CheckObjDto.java
new file mode 100644
index 0000000..ead8f00
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/CheckObjDto.java
@@ -0,0 +1,39 @@
+package com.vincent.rsf.server.api.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CheckObjDto", description = "PDA璐ㄦ淇℃伅")
+public class CheckObjDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("璐ㄦ鍗�")
+    private String isptCode;
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String matnrCode;
+    @ApiModelProperty("鐗╂枡鍚嶇О")
+    private String maktx;
+    @ApiModelProperty("鍗曞彿")
+    private String asnCode;
+    @ApiModelProperty("渚涘簲鍟嗗悕绉�")
+    private String splrName;
+    @ApiModelProperty("渚涘簲鍟嗘壒娆�")
+    private String splrBatch;
+    @ApiModelProperty("鏀惰揣鏁伴噺")
+    private Double rcptQty;
+    @ApiModelProperty("鍚堟牸鏁伴噺")
+    private Double safeQty;
+    @ApiModelProperty("涓嶅悎鏍兼暟閲�")
+    private Double disQty;
+    @ApiModelProperty("鍥剧墖璺緞")
+    private String picPath;
+    @ApiModelProperty("澶囨敞")
+    private String memo;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectDetlDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectDetlDto.java
new file mode 100644
index 0000000..bd1f5ad
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectDetlDto.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.server.api.entity.dto;
+
+import com.vincent.rsf.server.manager.entity.IsptHistories;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "InspectDetlDto", description = "涓婃姤鏄庣粏")
+public class InspectDetlDto {
+    @ApiModelProperty("鍗曞彿")
+    private String code;
+    @ApiModelProperty("鍗曞彿ID")
+    private Long id;
+    @ApiModelProperty("PO鍗曞彿")
+    private String poCode;
+    @ApiModelProperty("鏄庣粏")
+    private List<InspectItemDto> items;
+    @ApiModelProperty("涓婃姤鍘嗗彶")
+    private List<IsptHistories> histories;
+}
+
+
+
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectItemDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectItemDto.java
new file mode 100644
index 0000000..f164f33
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectItemDto.java
@@ -0,0 +1,31 @@
+package com.vincent.rsf.server.api.entity.dto;
+
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "InspectItemDto", description = "PDA鎶ユ鏄庣粏")
+public class InspectItemDto {
+
+    @ApiModelProperty("鐗╂枡鍚嶇О")
+    private String maktx;
+    @ApiModelProperty("鍒嗙粍缂栫爜")
+    private String groupCode;
+    @ApiModelProperty("鍒嗙粍鍚嶇О")
+    private String group;
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String matnrCode;
+    @ApiModelProperty("閲囪喘鍗曚綅")
+    private String purUnit;
+    @ApiModelProperty("閲囪喘鏁伴噺")
+    private Double purQty;
+    @ApiModelProperty("渚涘簲鍟嗗悕绉�")
+    private String suplierName;
+    @ApiModelProperty("渚涘簲鍟嗙紪鐮�")
+    private String suplierCode;
+}
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 e5a383f..dbd980b 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
@@ -46,6 +46,9 @@
     @ApiModelProperty("鏈�澶у簱瀛�")
     private Double maxQty;
 
+    @ApiModelProperty("宸叉敹璐ф暟閲�")
+    private Double qty;
+
     @ApiModelProperty("骞冲彴琛屽彿")
     private String platformId;
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
index 6475f1c..173025d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -1,10 +1,12 @@
 package com.vincent.rsf.server.api.service;
 
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.params.CheckObjParams;
 import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
 import com.vincent.rsf.server.api.controller.params.ReceiptParams;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
 import com.vincent.rsf.server.manager.entity.AsnOrder;
+import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 import com.vincent.rsf.server.manager.entity.WaitPakin;
 import com.vincent.rsf.server.system.controller.param.LoginParam;
 import com.vincent.rsf.server.system.entity.Fields;
@@ -40,4 +42,12 @@
     WaitPakin mergeItems(WaitPakinParam waitPakin);
 
     WaitPakin unBind(WaitPakinParam param);
+
+    R inspect(String code, Long loginUserId);
+
+    R confirmIspt(String id);
+
+    R checkObjs(CheckObjParams params);
+
+    R checkUpdate(QlyIsptItem params);
 }
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 a43f68a..e53bd94 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
@@ -4,8 +4,12 @@
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.controller.params.CheckObjParams;
 import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
 import com.vincent.rsf.server.api.controller.params.ReceiptParams;
+import com.vincent.rsf.server.api.entity.dto.CheckObjDto;
+import com.vincent.rsf.server.api.entity.dto.InspectDetlDto;
+import com.vincent.rsf.server.api.entity.dto.InspectItemDto;
 import com.vincent.rsf.server.api.entity.dto.ReceiptDetlsDto;
 import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
 import com.vincent.rsf.server.api.service.MobileService;
@@ -14,6 +18,7 @@
 import com.vincent.rsf.server.common.security.JwtSubject;
 import com.vincent.rsf.server.common.utils.CommonUtil;
 import com.vincent.rsf.server.common.utils.JwtUtil;
+import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.mapper.*;
@@ -70,18 +75,22 @@
     private WarehouseAreasService warehouseAreasService;
     @Resource
     private AsnOrderItemMapper asnOrderItemMapper;
-    @Resource
-    private AsnOrderMapper asnOrderMapper;
+    @Autowired
+    private AsnOrderService asnOrderMapper;
     @Resource
     private MatnrMapper matnrMapper;
     @Resource
     private QlyInspectMapper qlyInspectMapper;
+    @Autowired
+    private QlyIsptItemService qlyIsptItemService;
     @Resource
     private StockItemMapper stockItemMapper;
     @Resource
     private PurchaseItemMapper purchaseItemMapper;
     @Resource
     private FieldsMapper fieldsMapper;
+    @Autowired
+    private IsptHistoriesMapper isptHistoriesMapper;
 
     @Autowired
     private AsnOrderLogService asnOrderLogService;
@@ -188,14 +197,14 @@
 
         String asnCode = receipts.stream().findFirst().get().getAsnCode();
 
-        AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>()
+        AsnOrder asnOrder = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
                 .eq(AsnOrder::getCode, asnCode));
         if (Objects.isNull(asnOrder)) {
             throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
         }
         asnOrder.setQty(receiptQty);
 
-        if (asnOrderMapper.updateById(asnOrder) < 1) {
+        if (!asnOrderMapper.updateById(asnOrder)) {
             throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
         }
 
@@ -308,7 +317,7 @@
      * @time 2025/3/19 19:53
      */
     private void operateOrderLogs(AsnOrder asnOrder) {
-        if (asnOrderMapper.deleteById(asnOrder.getId()) < 1) {
+        if (!asnOrderMapper.removeById(asnOrder.getId())) {
             throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
         }
 
@@ -370,7 +379,7 @@
      */
     @Override
     public List<AsnOrder> getAllAsnOrders() {
-        List<AsnOrder> asnOrders = asnOrderMapper.selectList(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
+        List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
         return asnOrders;
     }
 
@@ -421,6 +430,132 @@
     }
 
     /**
+     * 鎶ユ鍔熻兘
+     * @param code
+     * @param loginUserId
+     * @return
+     */
+    @Override
+    public R inspect(String code, Long loginUserId) {
+        AsnOrder asnOrders = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, code));
+        if (Objects.isNull(asnOrders)) {
+            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        InspectDetlDto detlDto = new InspectDetlDto();
+        detlDto.setCode(asnOrders.getCode()).setId(asnOrders.getId()).setPoCode(asnOrders.getPoCode());
+        List<AsnOrderItem> orderItems = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnCode, code));
+        if (orderItems.isEmpty()) {
+            detlDto.setItems(new ArrayList<>());
+        } else {
+            List<InspectItemDto> itemDtos = new ArrayList<>();
+            orderItems.forEach(dto -> {
+                InspectItemDto itemDto = new InspectItemDto();
+                if (!Objects.isNull(dto.getMatnrCode())) {
+                    Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, dto.getMatnrCode()));
+                    itemDto.setGroup(matnr.getGroupCode());
+                }
+                itemDto.setMaktx(dto.getMaktx())
+                        .setMatnrCode(dto.getMatnrCode())
+                        .setPurUnit(dto.getPurUnit())
+                        .setSuplierCode(dto.getSplrCode())
+                        .setSuplierName(dto.getSplrName())
+                        .setPurQty(dto.getPurQty());
+                itemDtos.add(itemDto);
+            });
+            detlDto.setItems(itemDtos);
+        }
+
+        List<IsptHistories> histories = isptHistoriesMapper.selectList(new LambdaQueryWrapper<IsptHistories>().eq(IsptHistories::getAsnId, asnOrders.getId()));
+        detlDto.setHistories(histories);
+        return R.ok(detlDto);
+    }
+
+    /**
+     * @author Ryan
+     * @description 鎻愪氦鎶ユ
+     * @param
+     * @return
+     * @time 2025/4/1 16:47
+     */
+    @Override
+    public R confirmIspt(String id) {
+        if (org.apache.commons.lang3.StringUtils.isBlank(id)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        AsnOrder asnOrder = asnOrderMapper.getById(id);
+        if (Objects.isNull(asnOrder)) {
+            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        List<AsnOrder> orders = new ArrayList<>();
+        orders.add(asnOrder);
+        if (asnOrderMapper.notifyInspect(orders)) {
+           return R.ok("涓婃姤鎴愬姛锛侊紒");
+        }else {
+            return R.error("涓婃姤澶辫触锛侊紒");
+        }
+    }
+
+    /**
+     * 閫氳繃鐗╂枡锛岃川妫�鍗曡幏鍙栭渶瑕佽川妫�鍗曟嵁
+     * @param params
+     * @return
+     */
+    @Override
+    public R checkObjs(CheckObjParams params) {
+        if (Objects.isNull(params.getIsptCode())) {
+            throw new CoolException("璐ㄦ鍗曚笉鑳戒负绌�");
+        }
+        if (Objects.isNull(params.getMatnrCode())) {
+            throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛�");
+        }
+        QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode()));
+        if (Objects.isNull(inspect)) {
+            throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒!");
+        }
+        QlyIsptItem isptItem = qlyIsptItemService.getOne(new LambdaQueryWrapper<QlyIsptItem>()
+                .eq(QlyIsptItem::getMatnrCode, params.getMatnrCode())
+                .eq(QlyIsptItem::getIspectId, inspect.getId()));
+        if (Objects.isNull(isptItem)) {
+            throw new CoolException("璐ㄦ鍗曟槑缁嗕笉瀛樺湪锛侊紒");
+        }
+
+        CheckObjDto objDto = new CheckObjDto();
+        objDto.setIsptCode(inspect.getCode())
+                .setAsnCode(inspect.getAsnCode())
+                .setMatnrCode(isptItem.getMatnrCode())
+                .setMaktx(isptItem.getMaktx())
+                .setDisQty(isptItem.getDisQty())
+                .setRcptQty(isptItem.getRcptQty())
+                .setSplrBatch(isptItem.getSplrBatch())
+                .setSplrName(isptItem.getSplrName())
+                .setPicPath(isptItem.getPicPath())
+                .setMemo(isptItem.getMemo())
+                .setSafeQty(isptItem.getSafeQty());
+        return R.ok(objDto);
+    }
+
+    /**
+     * 蹇�熻川妫�
+     * @param params
+     * @return
+     */
+    @Override
+    public R checkUpdate(QlyIsptItem params) {
+        if (Objects.isNull(params.getId()) || Objects.isNull(params.getIspectId())) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        IsptItemsParams itemsParams = new IsptItemsParams();
+        List<QlyIsptItem> items = new ArrayList<>();
+        items.add(params);
+        itemsParams.setIsptItem(items).setType("0");
+        if (qlyIsptItemService.batchUpdate(itemsParams)) {
+            return R.ok();
+        } else {
+            return R.error("淇濆瓨澶辫触锛侊紒");
+        }
+    }
+
+    /**
      * 鑾峰彇ReceiptDetlsDtos
      */
     private R getAsnOrderItem(List<AsnOrderItem> items) {
@@ -431,6 +566,7 @@
             detlsDto.setAsnCode(asnOrderItem.getAsnCode())
                     .setMaktx(asnOrderItem.getMaktx())
                     .setBarcode(asnOrderItem.getTrackCode())
+                    .setQty(asnOrderItem.getQty())
                     .setPoCode(asnOrderItem.getPoCode())
                     .setAnfme(asnOrderItem.getAnfme())
                     .setPurQty(asnOrderItem.getPurQty())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
new file mode 100644
index 0000000..9f88a5c
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
@@ -0,0 +1,49 @@
+package com.vincent.rsf.server.common;
+
+
+import com.vincent.rsf.framework.generators.ReactGenerator;
+import com.vincent.rsf.framework.generators.constant.SqlOsType;
+
+/**
+ * Created by vincent on 2019-06-04
+ */
+public class CodeBuilder {
+
+    public static void main(String[] args) throws Exception {
+        ReactGenerator generator = new ReactGenerator();
+        generator.backendPrefixPath = "rsf-server/";
+        generator.frontendPrefixPath = "rsf-admin/";
+
+        generator.sqlOsType = SqlOsType.MYSQL;
+        generator.url="192.168.4.24:3306/rsf";
+        generator.username="root";
+        generator.password="34821015";
+//        generator.url="47.97.1.152:51433;databasename=jkasrs";
+//        generator.username="sa";
+//        generator.password="Zoneyung@zy56$";
+
+        generator.table="man_ispt_histories";
+        generator.tableDesc="浠诲姟宸ヤ綔妗�";
+        generator.packagePath="com.vincent.rsf.server.manager";
+
+        generator.build();
+    }
+/*
+ CREATE TABLE `man_tablename` (
+ `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `code` VARCHAR(255) DEFAULT NULL COMMENT '缂栧彿',
+ `name` VARCHAR(255) DEFAULT NULL COMMENT '鍚嶇О(*)',
+ `status` INT(1) NOT NULL DEFAULT '1' COMMENT '鐘舵�亄1:姝e父,0:鍐荤粨}',
+ `deleted` INT(1) NOT NULL DEFAULT '0' COMMENT '鏄惁鍒犻櫎{1:鏄�,0:鍚',
+ `tenant_id` INT(11) DEFAULT NULL COMMENT '绉熸埛[sys_tenant]',
+ `create_by` BIGINT(20) DEFAULT NULL COMMENT '娣诲姞浜哄憳[sys_user]',
+ `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '娣诲姞鏃堕棿',
+ `update_by` BIGINT(20) DEFAULT NULL COMMENT '淇敼浜哄憳[sys_user]',
+ `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '淇敼鏃堕棿',
+ `memo` VARCHAR(255) DEFAULT NULL COMMENT '澶囨敞',
+ PRIMARY KEY (`id`)
+ ) ENGINE=INNODB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+ */
+
+}
+
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/IsptHistoriesController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/IsptHistoriesController.java
new file mode 100644
index 0000000..d8ca91c
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/IsptHistoriesController.java
@@ -0,0 +1,110 @@
+package com.vincent.rsf.server.manager.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.common.utils.ExcelUtil;
+import com.vincent.rsf.server.common.annotation.OperationLog;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.KeyValVo;
+import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.entity.IsptHistories;
+import com.vincent.rsf.server.manager.service.IsptHistoriesService;
+import com.vincent.rsf.server.system.controller.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+@RestController
+public class IsptHistoriesController extends BaseController {
+
+    @Autowired
+    private IsptHistoriesService isptHistoriesService;
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
+    @PostMapping("/isptHistories/page")
+    public R page(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<IsptHistories, BaseParam> pageParam = new PageParam<>(baseParam, IsptHistories.class);
+        return R.ok().add(isptHistoriesService.page(pageParam, pageParam.buildWrapper(true)));
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
+    @PostMapping("/isptHistories/list")
+    public R list(@RequestBody Map<String, Object> map) {
+        return R.ok().add(isptHistoriesService.list());
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
+    @PostMapping({"/isptHistories/many/{ids}", "/isptHistoriess/many/{ids}"})
+    public R many(@PathVariable Long[] ids) {
+        return R.ok().add(isptHistoriesService.listByIds(Arrays.asList(ids)));
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
+    @GetMapping("/isptHistories/{id}")
+    public R get(@PathVariable("id") Long id) {
+        return R.ok().add(isptHistoriesService.getById(id));
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:save')")
+    @OperationLog("Create 浠诲姟宸ヤ綔妗�")
+    @PostMapping("/isptHistories/save")
+    public R save(@RequestBody IsptHistories isptHistories) {
+        isptHistories.setCreateBy(getLoginUserId());
+        isptHistories.setCreateTime(new Date());
+        isptHistories.setUpdateBy(getLoginUserId());
+        isptHistories.setUpdateTime(new Date());
+        if (!isptHistoriesService.save(isptHistories)) {
+            return R.error("Save Fail");
+        }
+        return R.ok("Save Success").add(isptHistories);
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:update')")
+    @OperationLog("Update 浠诲姟宸ヤ綔妗�")
+    @PostMapping("/isptHistories/update")
+    public R update(@RequestBody IsptHistories isptHistories) {
+        isptHistories.setUpdateBy(getLoginUserId());
+        isptHistories.setUpdateTime(new Date());
+        if (!isptHistoriesService.updateById(isptHistories)) {
+            return R.error("Update Fail");
+        }
+        return R.ok("Update Success").add(isptHistories);
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:remove')")
+    @OperationLog("Delete 浠诲姟宸ヤ綔妗�")
+    @PostMapping("/isptHistories/remove/{ids}")
+    public R remove(@PathVariable Long[] ids) {
+        if (!isptHistoriesService.removeByIds(Arrays.asList(ids))) {
+            return R.error("Delete Fail");
+        }
+        return R.ok("Delete Success").add(ids);
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
+    @PostMapping("/isptHistories/query")
+    public R query(@RequestParam(required = false) String condition) {
+        List<KeyValVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<IsptHistories> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(IsptHistories::getName, condition);
+        }
+        isptHistoriesService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+                item -> vos.add(new KeyValVo(item.getId(), item.getName()))
+        );
+        return R.ok().add(vos);
+    }
+
+    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
+    @PostMapping("/isptHistories/export")
+    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+        ExcelUtil.build(ExcelUtil.create(isptHistoriesService.list(), IsptHistories.class), response);
+    }
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
index bf03f2b..57d0e20 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
@@ -126,6 +126,13 @@
     @OperationLog("Delete 璐ㄦ淇℃伅")
     @PostMapping("/qlyInspect/remove/{ids}")
     public R remove(@PathVariable Long[] ids) {
+        if (Objects.isNull(ids) || ids.length < 1) {
+            return R.error("鑳芥暟涓嶈兘涓虹┖锛侊紒");
+        }
+        List<QlyInspect> qlyInspects = qlyInspectService.list(new LambdaQueryWrapper<QlyInspect>().in(QlyInspect::getId, ids));
+        if (!qlyInspects.isEmpty()) {
+            return R.error("鏈夋槑缁嗗垪琛ㄥ瓨鍦紒锛�");
+        }
         if (!qlyInspectService.removeByIds(Arrays.asList(ids))) {
             return R.error("Delete Fail");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
index 0c8d681..bcc3337 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
@@ -114,7 +114,7 @@
     }
 
     @PreAuthorize("hasAuthority('manager:qlyIsptItem:update')")
-    @ApiOperation("鎵归噺淇敼")
+    @ApiOperation("蹇�熻川妫�")
     @PostMapping("/qlyIsptItem/batch/update")
     public R batchUpdate(@RequestBody IsptItemsParams params) {
         if (Objects.isNull(params)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
index a9fae5a..2805e07 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -91,11 +91,12 @@
         if (Objects.isNull(ids) || ids.length < 1) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
+        List<TaskItem> list = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, ids));
+        if (!list.isEmpty()) {
+            return R.error("鏈夋槑缁嗗垪琛ㄥ瓨鍦� 锛侊紒");
+        }
         if (!taskService.removeByIds(Arrays.asList(ids))) {
             return R.error("Delete Fail");
-        }
-        if (!taskItemService.remove(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, ids))) {
-            return R.error("鍒犻櫎澶辫触锛侊紒");
         }
         return R.ok("Delete Success").add(ids);
     }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
index 9bc3c5d..0c29bfe 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
@@ -12,7 +12,9 @@
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
 import com.vincent.rsf.server.manager.entity.WaitPakin;
+import com.vincent.rsf.server.manager.entity.WaitPakinItem;
 import com.vincent.rsf.server.manager.service.TaskService;
+import com.vincent.rsf.server.manager.service.WaitPakinItemService;
 import com.vincent.rsf.server.manager.service.WaitPakinService;
 import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -31,6 +33,9 @@
 
     @Autowired
     private WaitPakinService waitPakinService;
+
+    @Autowired
+    private WaitPakinItemService waitPakinItemService;
 
     @Autowired
     private TaskService taskService;
@@ -96,6 +101,11 @@
     @OperationLog("Delete 缁勬嫋妗�")
     @PostMapping("/waitPakin/remove/{ids}")
     public R remove(@PathVariable Long[] ids) {
+        List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
+                .in(WaitPakinItem::getPakinId, ids));
+        if (!pakinItems.isEmpty()) {
+            return R.error("缁勬嫋妗f湁鏄庣粏浠诲姟");
+        }
         if (!waitPakinService.removeByIds(Arrays.asList(ids))) {
             return R.error("Delete Fail");
         }
@@ -130,7 +140,7 @@
         if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        return  taskService.generateTasks(waitPakin);
+        return  taskService.generateTasks(waitPakin, getLoginUserId());
     }
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java
new file mode 100644
index 0000000..950d111
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java
@@ -0,0 +1,202 @@
+package com.vincent.rsf.server.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.SpringUtils;
+import com.vincent.rsf.server.system.service.UserService;
+import com.vincent.rsf.server.system.entity.User;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("man_ispt_histories")
+public class IsptHistories implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鍗曞彿
+     */
+    @ApiModelProperty(value= "鍗曞彿")
+    private String code;
+
+    /**
+     * 涓婃姤浜哄憳
+     */
+    @ApiModelProperty(value= "涓婃姤浜哄憳")
+    private String operator;
+
+    /**
+     * 鍗曟嵁ID
+     */
+    @ApiModelProperty(value= "鍗曟嵁ID")
+    private Long asnId;
+
+    /**
+     * 鍚嶇О
+     */
+    @ApiModelProperty(value= "鍚嶇О")
+    private String name;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 鍐荤粨  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
+    private Integer status;
+
+    /**
+     * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
+    @TableLogic
+    private Integer deleted;
+
+    /**
+     * 绉熸埛
+     */
+    @ApiModelProperty(value= "绉熸埛")
+    private Integer tenantId;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public IsptHistories() {}
+
+    public IsptHistories(String code,String operator,Long asnId,String name,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+        this.code = code;
+        this.operator = operator;
+        this.asnId = asnId;
+        this.name = name;
+        this.status = status;
+        this.deleted = deleted;
+        this.tenantId = tenantId;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    IsptHistories isptHistories = new IsptHistories(
+//            null,    // 鍗曞彿
+//            null,    // 涓婃姤浜哄憳
+//            null,    // 鍗曟嵁ID
+//            null,    // 鍚嶇О
+//            null,    // 鐘舵�乕闈炵┖]
+//            null,    // 鏄惁鍒犻櫎[闈炵┖]
+//            null,    // 绉熸埛
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿[闈炵┖]
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿[闈炵┖]
+//            null    // 澶囨敞
+//    );
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "鍐荤粨";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+
+
+    public Boolean getStatusBool(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return true;
+            case 0:
+                return false;
+            default:
+                return null;
+        }
+    }
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
index 87aeffc..5e36040 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -55,9 +55,8 @@
     @ApiModelProperty(value= "鐗╂枡鍚嶇О")
     private String maktx;
 
-
     @ApiModelProperty("婧愮紪鐮�")
-    private String sourceCode;
+    private Long source;
 
     @ApiModelProperty("鍗曟嵁ID")
     private Long orderId;
@@ -119,7 +118,6 @@
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
     @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
-    @TableLogic
     private Integer deleted;
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/IsptHistoriesMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/IsptHistoriesMapper.java
new file mode 100644
index 0000000..4309713
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/IsptHistoriesMapper.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.server.manager.mapper;
+
+import com.vincent.rsf.server.manager.entity.IsptHistories;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface IsptHistoriesMapper extends BaseMapper<IsptHistories> {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/IsptHistoriesService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/IsptHistoriesService.java
new file mode 100644
index 0000000..1c58150
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/IsptHistoriesService.java
@@ -0,0 +1,8 @@
+package com.vincent.rsf.server.manager.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.server.manager.entity.IsptHistories;
+
+public interface IsptHistoriesService extends IService<IsptHistories> {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
index c48d0e6..8051c06 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -9,5 +9,5 @@
 
 public interface TaskService extends IService<Task> {
 
-    R generateTasks(List<WaitPakin> waitPakin);
+    R generateTasks(List<WaitPakin> waitPakin, Long loginUserId);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index d5f0293..b385eed 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -59,6 +59,9 @@
             throw new CoolException("ASN鍗曟嵁涓嶈兘涓虹┖锛侊紒");
         }
         List<PoItemsDto> items = purchaseMapper.poList(asnIds);
+        if (items.isEmpty()) {
+            throw new CoolException("鐗╂枡鎵�灞為噰璐崟鎹笉瀛樺湪锛侊紒");
+        }
         if (reportMsgService.reportInspectNotify(items)) {
             return true;
         } else {
@@ -74,7 +77,6 @@
         List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
                 .like(!Objects.isNull(params.get("maktx")), AsnOrderItem::getMaktx, params.get("maktx"))
                 .eq(!Objects.isNull(params.get("matnrCode")), AsnOrderItem::getMatnrCode, params.get("matnrCode")));
-
         if (orderItems.isEmpty()) {
             return new ArrayList<>();
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/IsptHistoriesServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/IsptHistoriesServiceImpl.java
new file mode 100644
index 0000000..f16c760
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/IsptHistoriesServiceImpl.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.server.manager.service.impl;
+
+import com.vincent.rsf.server.manager.mapper.IsptHistoriesMapper;
+import com.vincent.rsf.server.manager.entity.IsptHistories;
+import com.vincent.rsf.server.manager.service.IsptHistoriesService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("isptHistoriesService")
+public class IsptHistoriesServiceImpl extends ServiceImpl<IsptHistoriesMapper, IsptHistories> implements IsptHistoriesService {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 1d9dab4..cd40c71 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -1,7 +1,6 @@
 package com.vincent.rsf.server.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.vincent.rsf.framework.common.SpringUtils;
 import com.vincent.rsf.server.api.entity.enums.OrderType;
 import com.vincent.rsf.server.api.entity.enums.TaskStsType;
 import com.vincent.rsf.framework.common.R;
@@ -13,7 +12,6 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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;
@@ -30,22 +28,23 @@
 
     @Autowired
     private WaitPakinService waitPakinService;
-
     @Autowired
     private TaskItemService taskItemService;
-
     @Autowired
     private WaitPakinItemService waitPakinItemService;
 
+
+
     /**
+     * @param
+     * @param loginUserId
+     * @return
      * @author Ryan
      * @description 鐢熸垚浠诲姟鍒楄〃
-     * @param
-     * @return
      * @time 2025/3/29 15:59
      */
     @Override
-    public R generateTasks(List<WaitPakin> waitPakin) {
+    public R generateTasks(List<WaitPakin> waitPakin, Long loginUserId) {
         if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
@@ -67,6 +66,8 @@
                     .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
                     .setTargLoc(LocManageUtil.getTargetLoc())
                     .setBarcode(pakin.getBarcode())
+                    .setCreateBy(loginUserId)
+                    .setUpdateBy(loginUserId)
                     .setTargSite(LocManageUtil.getTargetSite());
 
             if (!this.save(task)) {
@@ -82,7 +83,9 @@
                 BeanUtils.copyProperties(item, taskItem);
                 taskItem.setTaskId(task.getId())
                         .setOrderType(OrderType.ORDER_RECEIPT.type)
-                        .setSourceCode(item.getAsnCode())
+                        .setSource(item.getId())
+                        .setCreateBy(loginUserId)
+                        .setUpdateBy(loginUserId)
                         .setOrderId(item.getAsnId())
                         .setOrderItemId(item.getAsnItemId());
                 taskItems.add(taskItem);
@@ -90,6 +93,9 @@
             if (!taskItemService.saveBatch(taskItems)) {
                 throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
             }
+
+
+
         });
         //TODO 浠诲姟鐢熸垚瀹屾垚闇�淇敼浠诲姟ASN璁㈠崟鐘舵�佷负鎵ц涓紝缁勬嫋鍒犻櫎闇�鍒ゆ柇鏄惁鏈夊瓙浠诲姟鍦ㄦ墽琛�
 
diff --git a/rsf-server/src/main/resources/mapper/test/LocAreaMatMapper.xml b/rsf-server/src/main/resources/mapper/manager/IsptHistoriesMapper.xml
similarity index 66%
rename from rsf-server/src/main/resources/mapper/test/LocAreaMatMapper.xml
rename to rsf-server/src/main/resources/mapper/manager/IsptHistoriesMapper.xml
index 086c947..04366fd 100644
--- a/rsf-server/src/main/resources/mapper/test/LocAreaMatMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/IsptHistoriesMapper.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.vincent.rsf.server.test.mapper.LocAreaMatMapper">
+<mapper namespace="com.vincent.rsf.server.manager.mapper.IsptHistoriesMapper">
 
 </mapper>
diff --git a/rsf-server/src/main/resources/mapper/test/LocAreaMatRelaMapper.xml b/rsf-server/src/main/resources/mapper/test/LocAreaMatRelaMapper.xml
deleted file mode 100644
index 577aba2..0000000
--- a/rsf-server/src/main/resources/mapper/test/LocAreaMatRelaMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.vincent.rsf.server.test.mapper.LocAreaMatRelaMapper">
-
-</mapper>
diff --git a/rsf-server/src/main/resources/mapper/test/LocMapper.xml b/rsf-server/src/main/resources/mapper/test/LocMapper.xml
deleted file mode 100644
index 638ae43..0000000
--- a/rsf-server/src/main/resources/mapper/test/LocMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.vincent.rsf.server.test.mapper.LocMapper">
-
-</mapper>
diff --git a/rsf-server/src/main/resources/mapper/test/QlyInspectMapper.xml b/rsf-server/src/main/resources/mapper/test/QlyInspectMapper.xml
deleted file mode 100644
index c40f619..0000000
--- a/rsf-server/src/main/resources/mapper/test/QlyInspectMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.vincent.rsf.server.test.mapper.QlyInspectMapper">
-
-</mapper>

--
Gitblit v1.9.1