From c731084698d89c12c23180f57598d521abb97a23 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 12 五月 2025 14:15:32 +0800
Subject: [PATCH] 质检功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java    |   37 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java                   |    2 
 rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml                               |   26 ++++
 rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx                                            |   10 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java          |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java         |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java |  179 +++++++++++++----------------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java            |    7 +
 rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java             |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java          |   10 +
 rsf-admin/src/i18n/zh.js                                                                         |    2 
 rsf-admin/.env                                                                                   |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java                 |   60 +++++----
 rsf-server/src/main/resources/application-dev.yml                                                |    2 
 14 files changed, 202 insertions(+), 146 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a0bb09f..6801446 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.50
+VITE_BASE_IP=192.168.4.56
 # 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 df68657..ac97dbf 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -482,7 +482,7 @@
                 dlyQty: "閫佽揣鏁伴噺",
                 disQty: "涓嶅悎鏁伴噺",
                 safeQty: "鍚堟牸鏁伴噺",
-                anfme: '鏁伴噺',
+                anfme: '宸叉鏁伴噺',
                 picPath: "鍥剧墖璺緞",
                 trackCode: "鏉″舰鐮�",
             },
diff --git a/rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx b/rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx
index 627a035..260b97e 100644
--- a/rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx
@@ -80,7 +80,7 @@
 
 
     const getData = async () => {
-        const res = await request.post(`/qlyIsptItem/page`, { ispectId, isptStatus: '0' });
+        const res = await request.post(`/qlyIsptItem/ispts/page`, { ispectId });
         if (res?.data?.code === 200) {
             const data = res.data.data.records.map(item => {
                 return {
@@ -221,10 +221,10 @@
             ),
         },
 
-        {
-            field: 'isptResult', headerName: translate('table.field.qlyIsptItem.isptResult'), width: 150, type: 'singleSelect',
-            editable: true, valueOptions: [{ value: '1', label: '鍚堟牸' }, { value: '2', label: '涓嶅悎鏍�' }, { value: '3', label: '寰呭畾' }, { value: '4', label: '閮ㄥ垎鍚堟牸' }],
-        },
+        // {
+        //     field: 'isptResult', headerName: translate('table.field.qlyIsptItem.isptResult'), width: 150, type: 'singleSelect',
+        //     editable: true, valueOptions: [{ value: '1', label: '鍚堟牸' }, { value: '2', label: '涓嶅悎鏍�' }, { value: '3', label: '寰呭畾' }, { value: '4', label: '閮ㄥ垎鍚堟牸' }],
+        // },
     ])
 
     const processRowUpdate = (newRow, oldRow) => {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java
index 0c8f53a..5ef37c3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java
@@ -225,7 +225,7 @@
         if (Objects.isNull(params) || params.isEmpty()) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        return mobileService.checkUpdate(params);
+        return mobileService.checkUpdate(params, getLoginUserId());
     }
 
     @ApiOperation("鑾峰彇涓婃灦淇℃伅")
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 b76d370..5d45a84 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
@@ -49,7 +49,7 @@
 
     R checkObjs(CheckObjParams params);
 
-    R checkUpdate(List<QlyIsptItem> params);
+    R checkUpdate(List<QlyIsptItem> params, Long loginUserId);
 
     R operateToStock(OpStockParams 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 d97176c..70094d9 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
@@ -2,7 +2,6 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
@@ -630,16 +629,17 @@
      * 蹇�熻川妫�
      *
      * @param params
+     * @param loginUserId
      * @return
      */
     @Override
-    public R checkUpdate(List<QlyIsptItem> params) {
+    public R checkUpdate(List<QlyIsptItem> params, Long loginUserId) {
         if (Objects.isNull(params) || params.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
         IsptItemsParams itemsParams = new IsptItemsParams();
         itemsParams.setIsptItem(params).setType("0");
-        if (qlyIsptItemService.batchUpdate(itemsParams)) {
+        if (qlyIsptItemService.batchUpdate(itemsParams, loginUserId)) {
             return R.ok();
         } else {
             return R.error("淇濆瓨澶辫触锛侊紒");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
index 4c16acb..eac0cb9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
@@ -48,7 +48,8 @@
                         "sys_user_role",
                         "sys_role_menu",
                         "sys_menu",
-                        "man_loc_type_rela"
+                        "man_loc_type_rela",
+                        "man_qly_inspect_result"
                 ).contains(tableName);
             }
         };
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 9c71c5c..c9b90c3 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
@@ -1,6 +1,8 @@
 package com.vincent.rsf.server.manager.controller;
 
 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.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
@@ -12,8 +14,6 @@
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.common.utils.FieldsUtils;
 import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
-import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
-import com.vincent.rsf.server.manager.entity.AsnOrderItem;
 import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 import com.vincent.rsf.server.manager.service.QlyIsptItemService;
 import com.vincent.rsf.server.system.controller.BaseController;
@@ -38,9 +38,9 @@
     public R page(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class);
-
+        QueryWrapper<QlyIsptItem> queryWrapper = pageParam.buildWrapper(true);
         /**鎷兼帴鎵╁睍瀛楁*/
-        PageParam<QlyIsptItem, BaseParam> page = qlyIsptItemService.page(pageParam, pageParam.buildWrapper(true));
+        PageParam<QlyIsptItem, BaseParam> page = qlyIsptItemService.page(pageParam, queryWrapper);
         List<QlyIsptItem> records = page.getRecords();
         for (QlyIsptItem record : records) {
             if (!Objects.isNull(record.getFieldsIndex())) {
@@ -51,6 +51,33 @@
         page.setRecords(records);
 
         return R.ok(page);
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/5/12
+     * @description: 鑾峰彇璐ㄦ淇℃伅淇敼
+     * @version 1.0
+     */
+    @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
+    @PostMapping("/qlyIsptItem/ispts/page")
+    public R getQlyList(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class);
+        QueryWrapper<QlyIsptItem> queryWrapper = pageParam.buildWrapper(true);
+        IPage<QlyIsptItem> page = qlyIsptItemService.pageByWrapper(pageParam, queryWrapper);
+        List<QlyIsptItem> records = page.getRecords();
+        for (QlyIsptItem record : records) {
+            if (!Objects.isNull(record.getFieldsIndex())) {
+                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
+                record.setExtendFields(fields);
+            }
+        }
+        page.setRecords(records);
+
+        return R.ok(page);
+
+
     }
 
     @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
@@ -134,7 +161,7 @@
         if (Objects.isNull(params)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        if (qlyIsptItemService.batchUpdate(params)) {
+        if (qlyIsptItemService.batchUpdate(params, getLoginUserId())) {
             return R.ok("淇敼鎴愬姛锛侊紒");
         } else  {
             return R.error("淇敼澶辫触锛侊紒");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
index b871cc7..2f6b32b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
@@ -9,14 +9,16 @@
  */
 public enum OrderWorkType {
     //璁㈠崟绫诲瀷
-    ORDER_WORK_TYPE_DONE_IN("1", "瀹屽伐鍏ュ簱鍗�"),
-    ORDER_WORK_TYPE_PROD("2", "鐢熶骇棰嗘枡鍗�"),
-    ORDER_WORK_TYPE_PURCHASE("3", "澶栬喘鏀惰揣"),
-    ORDER_WORK_TYPE_SALE("4", "閿�鍞鍗�"),
-    ORDER_WORK_TYPE_RETURN("5", "鐢熶骇閫�鏂欏崟"),
-    ORDER_WORK_TYPE_SUPPLIER("6", "閫�璐т緵搴斿晢鍑鸿揣鍗�"),
-    ORDER_WORK_TYPE_RETURN_ORDER("7", "閿�鍞��璐у叆搴撳崟")
-    ;
+    ORDER_WORK_TYPE_DONE_IN("1", "閲囪喘鍏ュ簱鍗�"),
+    ORDER_WORK_TYPE_PROD("2", "鐢熶骇鍏ュ簱鍗�"),
+    ORDER_WORK_TYPE_PURCHASE("3", "棰嗘枡閫�鍥炲叆搴撳崟"),
+    ORDER_WORK_TYPE_SALE("4", "閿�鍞��鍥炲叆搴撳崟"),
+    ORDER_WORK_TYPE_RETURN("5", "鍏跺畠鍏ュ簱鍗�"),
+    ORDER_WORK_TYPE_SUPPLIER("11", "閿�鍞嚭搴撳崟"),
+    ORDER_WORK_TYPE_RETURN_ORDER("12", "棰嗘枡鍑哄簱鍗�"),
+    ORDER_WORK_TYPE_PURCHASE_RETURN("13", "閲囪喘閫�鍥炲嚭搴撳崟"),
+    ORDER_WORK_TYPE_OTHER("14", "鍏跺畠鍑哄簱鍗�");
+
 
     OrderWorkType(String type, String desc) {
         this.type = type;
@@ -27,22 +29,26 @@
     public String desc;
 
     public static String getWorkType(String desc) {
-            if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type;
-            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PROD.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_PROD.type;
-            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
-            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
-            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_RETURN.type;
-            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type;
-            }else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc)) {
-                return OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type;
-            }
-            return null;
+        if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PROD.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_PROD.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_RETURN.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_OTHER.type;
+        }
+        return null;
     }
 
     public static String getWorkDesc(String type) {
@@ -58,8 +64,12 @@
             return OrderWorkType.ORDER_WORK_TYPE_RETURN.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type)) {
             return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc;
-        }else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
+        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
             return OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc;
+        }else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type)) {
+            return OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.desc;
+        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
+            return OrderWorkType.ORDER_WORK_TYPE_OTHER.desc;
         }
         return null;
     }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java
index 909aebf..c57c2c9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java
@@ -1,12 +1,19 @@
 package com.vincent.rsf.server.manager.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 @Mapper
 @Repository
 public interface QlyIsptItemMapper extends BaseMapper<QlyIsptItem> {
 
+    IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, @Param(Constants.WRAPPER) QueryWrapper<QlyIsptItem> queryWrapper);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
index 16fbb26..14be580 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
@@ -1,12 +1,16 @@
 package com.vincent.rsf.server.manager.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
-import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
 import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 
 public interface QlyIsptItemService extends IService<QlyIsptItem> {
 
-    boolean batchUpdate(IsptItemsParams params);
+    boolean batchUpdate(IsptItemsParams params, Long loginUserId);
+
+    IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
index 287576c..cfcbd2c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
@@ -1,16 +1,16 @@
 package com.vincent.rsf.server.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.vincent.rsf.framework.common.R;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.domain.BaseParam;
+import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
-import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
-import com.vincent.rsf.server.manager.entity.AsnOrderItem;
 import com.vincent.rsf.server.manager.entity.QlyInspect;
 import com.vincent.rsf.server.manager.entity.QlyInspectResult;
 import com.vincent.rsf.server.manager.enums.QlyIsptResult;
-import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
 import com.vincent.rsf.server.manager.mapper.QlyIsptItemMapper;
 import com.vincent.rsf.server.manager.entity.QlyIsptItem;
 import com.vincent.rsf.server.manager.service.AsnOrderItemService;
@@ -23,10 +23,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service("qlyIsptItemService")
@@ -39,9 +38,12 @@
 
     @Autowired
     private QlyInspectResultService qlyInspectResultService;
+    @Autowired
+    private QlyIsptItemService qlyIsptItemService;
 
     /**
      * @param
+     * @param loginUserId
      * @return
      * @author Ryan
      * @description 鎵归噺淇敼
@@ -49,7 +51,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean batchUpdate(IsptItemsParams params) {
+    public boolean batchUpdate(IsptItemsParams params, Long loginUserId) {
         if (Objects.isNull(params.getIsptItem()) || params.getIsptItem().isEmpty()) {
             throw new CoolException("ID涓嶈兘涓虹┖锛侊紒");
         }
@@ -61,111 +63,90 @@
             throw new CoolException("鏁版嵁閿欒锛氭槑缁嗕笉瀛樺湪锛侊紒");
         }
 
-        for (QlyIsptItem item : isptItems) {
+        for (QlyIsptItem item : isptItem) {
             List<QlyInspectResult> results = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>()
                     .eq(QlyInspectResult::getIsptId, item.getIspectId())
                     .eq(QlyInspectResult::getIsptItemId, item.getId()));
             if (!results.isEmpty()) {
-                //涓嶄负绌哄仛鏇存柊鎿嶄綔
-
-
-            } else {
-                //涓虹┖鍋氭柊澧炴搷浣�
-                QlyInspectResult result = new QlyInspectResult();
-                result.setIsptId(item.getIspectId())
-                        .setAnfme(item.getSafeQty())
-                        .setIsptItemId(item.getId());
-                if (item.getDisQty().compareTo(0.00) < 1) {
-                    continue;
-                }
-                result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val);
-                result.setAnfme(item.getDisQty());
-
-                if (!qlyInspectResultService.save(result)) {
-                    throw new CoolException("璐ㄦ缁撹淇濆瓨澶辫触锛侊紒");
-                }
-
-                if (item.getSafeQty().compareTo(0.00) < 1) {
-                    continue;
-                }
-                result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val)
-                        .setAnfme(item.getSafeQty());
-
-                if (!qlyInspectResultService.save(result)) {
-                    throw new CoolException("璐ㄦ缁撹淇濆瓨澶辫触锛侊紒");
+                if (!qlyInspectResultService.remove(new LambdaUpdateWrapper<QlyInspectResult>()
+                        .eq(QlyInspectResult::getIsptItemId, item.getId()))) {
+                    throw new CoolException("鍘嗗彶璐ㄦ缁撴灉绉诲嚭澶辫触锛侊紒");
                 }
             }
 
-        }
+            QlyInspectResult result = new QlyInspectResult();
+            result.setIsptId(item.getIspectId())
+                    .setIsptItemId(item.getId());
+            if (!Objects.isNull(item.getDisQty()) && item.getDisQty().compareTo(0.00) > 0) {
+                result.setAnfme(item.getDisQty())
+                        .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val);
+                qlyInspectResultService.saveOrUpdate(result);
+            }
 
+            result = new QlyInspectResult();
+            result.setIsptId(item.getIspectId())
+                    .setIsptItemId(item.getId());
+            if (!Objects.isNull(item.getSafeQty()) && item.getSafeQty().compareTo(0.00) > 0) {
+                result.setAnfme(item.getSafeQty())
+                        .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val);
+                qlyInspectResultService.saveOrUpdate(result);
+            }
 
-        if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val || Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) {
-            //1锛氬悎鏍硷紝 2锛氫笉鍚堟牸, 0: 鍏跺畠锛堥粯璁わ級
-            isptItem.forEach(item -> {
-                if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) {
-                    //TODO 鍏堟崱鍚庢敹涓洪�佽揣鏁伴噺锛屽厛鏀跺悗鎹′负鏀惰揣鏁伴噺
-//                    item.setSafeQty(item.getDlyQty());
-//                    item.setDisQty(0.0);
-                } else {
-//                    item.setSafeQty(0.0);
-//                    item.setDisQty(item.getDlyQty());
-                }
-                if (!this.update(new LambdaUpdateWrapper<QlyIsptItem>()
-//                        .set(QlyIsptItem::getSafeQty, item.getSafeQty())
-                        .set(QlyIsptItem::getIsptResult, Short.parseShort(params.getType()))
-//                        .set(QlyIsptItem::getDisQty, item.getDisQty())
-                        .in(QlyIsptItem::getId, item.getId()))) {
-                    throw new CoolException("淇敼澶辫触锛侊紒");
-                }
-            });
-        } else {
-            if (!this.updateBatchById(isptItem)) {
-                throw new CoolException("鏄庣粏淇敼澶辫触");
+            List<QlyInspectResult> isptRelt = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>()
+                    .eq(QlyInspectResult::getIsptId, item.getIspectId())
+                    .eq(QlyInspectResult::getIsptItemId, item.getId()));
+
+            Double isptQty = isptRelt.stream().mapToDouble(QlyInspectResult::getAnfme).sum();
+
+            if (!qlyIsptItemService.update(new LambdaUpdateWrapper<QlyIsptItem>()
+                    .set(QlyIsptItem::getUpdateBy, loginUserId)
+                    .set(QlyIsptItem::getAnfme, isptQty)
+                    .eq(QlyIsptItem::getId, item.getId()))) {
+                throw new CoolException("鍗曟嵁鏄庣粏鏁伴噺淇敼澶辫触锛侊紒");
             }
         }
 
-        Map<Long, List<QlyIsptItem>> listMap = isptItems.stream().collect(Collectors.groupingBy(QlyIsptItem::getIspectId));
-        for (Long key : listMap.keySet()) {
-            QlyInspect inspect = qlyInspectService.getById(key);
-            List<QlyIsptItem> items = listMap.get(key);
-            items.forEach(qlyIsptItem -> {
-                AsnOrderItem orderItem = asnOrderItemService.getById(qlyIsptItem.getAsnItemId());
-//                if (qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) >= 0.00) {
-//                    orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val)
-//                            .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
-//                } else if (qlyIsptItem.getSafeQty().compareTo(0.00) > 0.00 && qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) < 0.00) {
-//                    orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val);
-//                    if (Double.compare(qlyIsptItem.getSafeQty() + qlyIsptItem.getDisQty(), orderItem.getAnfme()) >= 0.00 ) {
-//                        orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
-//                    } else {
-//                        orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val);
-//                    }
-//                } else {
-//                    orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val)
-//                            .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
-//                }
-
-                if (!asnOrderItemService.updateById(orderItem)) {
-                    throw new CoolException("鏀惰揣鍗曟槑缁嗕慨鏀瑰け璐ワ紒锛�");
-                }
-            });
-//            Double safeQty = items.stream().mapToDouble(QlyIsptItem::getSafeQty).sum();
-//            Double disQty = items.stream().mapToDouble(QlyIsptItem::getDisQty).sum();
-//            Double qlyQty = safeQty + disQty;
-//            //瀹夊叏鏁伴噺锛岃川妫�鏁伴噺
-//            inspect.setSafeQty(safeQty)
-//                    .setIsptQty(qlyQty);
-//            if (Double.compare(disQty, 0) > 0) {
-//                inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val);
-//            }
-//            if (Double.compare(safeQty, inspect.getDlyQty()) == 0) {
-////                inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
-//                inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val);
-//            }
-            if (!qlyInspectService.updateById(inspect)) {
-                throw new CoolException("璐ㄦ鏁伴噺淇敼澶辫触锛侊紒");
-            }
+        Set<Long> isptIds = isptItem.stream().map(QlyIsptItem::getIspectId).collect(Collectors.toSet());
+        List<QlyInspectResult> items = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>().in(QlyInspectResult::getIsptId, isptIds));
+        Double sum = items.stream().mapToDouble(QlyInspectResult::getAnfme).sum();
+        if (sum.compareTo(0.00) > 0) {
+            qlyInspectService.update(new LambdaUpdateWrapper<QlyInspect>()
+                    .set(QlyInspect::getIsptQty, sum)
+                    .set(QlyInspect::getUpdateBy, loginUserId)
+                    .eq(QlyInspect::getId, isptItem.stream().findFirst().get().getIspectId()));
         }
+
         return true;
     }
+
+    /**
+     * @author Ryan
+     * @date 2025/5/12
+     * @description: 鑾峰彇鑷畾涔塒age
+     * @version 1.0
+     */
+    @Override
+    public IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper) {
+        IPage<QlyIsptItem> page = this.page(pageParam, queryWrapper);
+        if (!page.getRecords().isEmpty()) {
+            List<QlyIsptItem> records = page.getRecords();
+            for (int i = 0; i < records.size(); i++) {
+                List<QlyInspectResult> results = qlyInspectResultService.list(new QueryWrapper<QlyInspectResult>()
+                        .select("id, ispt_result, SUM(anfme) anfme, ispt_item_id, ispt_id")
+                        .lambda()
+                        .eq(QlyInspectResult::getIsptItemId, records.get(i).getId()).groupBy(QlyInspectResult::getIsptResult));
+                if (!results.isEmpty()) {
+                    for (QlyInspectResult result : results) {
+                        if (result.getIsptResult() == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) {
+                            records.get(i).setSafeQty(result.getAnfme());
+                        } else {
+                            records.get(i).setDisQty(result.getAnfme());
+                        }
+                    }
+                }
+            }
+            page.setRecords(records);
+        }
+        return page;
+    }
 }
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 279bc21..efd3d05 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
     driver-class-name: com.mysql.jdbc.Driver
 #    url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
-    url: jdbc:mysql://192.168.4.56:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #    username: rsf
     password: 34821015
     type: com.alibaba.druid.pool.DruidDataSource
diff --git a/rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml
index 8aae843..c7f7e4e 100644
--- a/rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml
@@ -2,4 +2,30 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vincent.rsf.server.manager.mapper.QlyIsptItemMapper">
 
+    <select id="pageByWrapper" resultType="com.vincent.rsf.server.manager.entity.QlyIsptItem">
+        SELECT *
+        FROM (SELECT qii.id,
+                     ispect_id,
+                     asn_item_id,
+                     matnr_code,
+                     maktx,
+                     splr_name,
+                     splr_batch,
+                     qir.anfme,
+                     qir.ispt_result,
+                     rcpt_qty,
+                     dly_qty,
+                     track_code,
+                     pic_path,
+                     `status`,
+                     deleted,
+                     tenant_id,
+                     create_by,
+                     create_time,
+                     update_by,
+                     update_time,
+                     memo
+              FROM man_qly_ispt_item qii
+                       LEFT JOIN man_qly_inspect_result qir ON qii.id = qir.ispt_item_id) t ${ew.customSqlSegment}
+    </select>
 </mapper>

--
Gitblit v1.9.1