From f99e7de6d1ed98913398fc5a725ba83b1c5a007d Mon Sep 17 00:00:00 2001
From: lixiangyu <lixiangyu@xalxzn.com>
Date: 星期一, 15 九月 2025 18:06:46 +0800
Subject: [PATCH] feat(cms): 更新刀具库存状态管理

---
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java |   51 ++++++++++++++++-
 src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java                |    3 +
 src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java              |    1 
 src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java        |   29 +++++++++
 src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java             |    5 +
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java     |    9 +++
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml             |   17 +++++
 src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java      |   24 +++++++-
 src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java         |    2 
 src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java                      |    1 
 10 files changed, 135 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
index 5789c83..8c93b00 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
@@ -103,7 +103,7 @@
             temp.setOrderId(cuttingReceive.getId());
             cuttingReceiveDetailService.save(temp);
         }
-        // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"宸插嚭搴�"
+        // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"寰呭嚭搴�"
         if (!list.isEmpty()) {
             // 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID
             List<String> inventoryIds = list.stream()
@@ -112,7 +112,7 @@
                     .collect(Collectors.toList());
 
             if (!inventoryIds.isEmpty()) {
-                // 鏇存柊搴撳瓨鐘舵�佷负"宸插嚭搴�"
+                // 鏇存柊搴撳瓨鐘舵�佷负"寰呭嚭搴�"
                 cuttingInventoryService.updateStatus(inventoryIds, "寰呭嚭搴�");
             }
         }
@@ -140,7 +140,25 @@
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete")
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name = "id") String id) {
+        // 鍏堟煡璇㈠嚭棰嗙敤鍗曟槑缁嗭紝鑾峰彇鐩稿叧鐨勫簱瀛業D
+        List<CuttingReceiveDetail> detailList = cuttingReceiveDetailService.lambdaQuery()
+                .eq(CuttingReceiveDetail::getOrderId, id)
+                .list();
+        // 鍒犻櫎棰嗙敤鍗曚富琛ㄥ拰鏄庣粏琛ㄦ暟鎹�
         cuttingReceiveService.removeById(id);
+        cuttingReceiveDetailService.removeById(id);
+
+        // 鑾峰彇搴撳瓨ID鍒楄〃
+        List<String> inventoryIds = detailList.stream()
+                .map(CuttingReceiveDetail::getInventoryId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
+        // 灏嗙浉鍏冲垁鍏峰簱瀛樼姸鎬佹敼鍥炰箣鍓嶇殑鐘舵��
+        if (!inventoryIds.isEmpty()) {
+            cuttingInventoryService.restoreStatus(inventoryIds);
+        }
+
         return Result.OK("鍒犻櫎鎴愬姛!");
     }
 
@@ -153,6 +171,7 @@
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) {
         this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(",")));
+        //FIXME: 鎵归噺鍒犻櫎鏃讹紝搴撳瓨鐘舵�佹湭鎭㈠銆備篃闇�瑕佹壒閲忔仮澶嶅簱瀛樼姸鎬併��
         return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
     }
 
@@ -214,7 +233,6 @@
         return cuttingReceiveService.submit(orderId);
     }
 
-    //TODO: @GetMapping("/handleBack")
     @GetMapping("/handleBack")
     public Result<?> handleBack(@RequestParam("orderId") String orderId) {
         return cuttingReceiveService.handleBack(orderId);
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java
index 8c84412..1d4790b 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java
@@ -19,6 +19,7 @@
 import org.jeecg.modules.cms.entity.CuttingReceiveDetail;
 import org.jeecg.modules.cms.entity.CuttingScrap;
 import org.jeecg.modules.cms.entity.CuttingScrapDetail;
+import org.jeecg.modules.cms.service.ICuttingInventoryService;
 import org.jeecg.modules.cms.service.ICuttingScrapDetailService;
 import org.jeecg.modules.cms.service.ICuttingScrapService;
 
@@ -59,6 +60,9 @@
 
     @Autowired
     private ICuttingScrapDetailService cuttingScrapDetailService;
+
+    @Autowired
+    private ICuttingInventoryService cuttingInventoryService;
 
     /**
      * 鍒嗛〉鍒楄〃鏌ヨ
@@ -106,6 +110,20 @@
         for (CuttingScrapDetail temp : list) {
             temp.setOrderId(cuttingScrap.getId());
             cuttingScrapDetailService.save(temp);
+        }
+
+        // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"宸插嚭搴�"
+        if (!list.isEmpty()) {
+            // 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID
+            List<String> inventoryIds = list.stream()
+                    .map(CuttingScrapDetail::getInventoryId) // 鍋囪CuttingScrapDetail涓湁inventoryId瀛楁
+                    .filter(id -> id != null && !id.isEmpty())
+                    .collect(Collectors.toList());
+
+            if (!inventoryIds.isEmpty()) {
+                // 鏇存柊搴撳瓨鐘舵�佷负"宸插嚭搴�"
+                cuttingInventoryService.updateStatus(inventoryIds, "寰呮姤搴�");
+            }
         }
         return Result.OK("娣诲姞鎴愬姛锛�");
     }
@@ -209,4 +227,15 @@
         return Result.ok(list);
     }
 
+    /**
+     * 閫夋嫨鎶ュ簾鍒�鍏风殑鍒楄〃
+     */
+    @GetMapping("/getInventoryToolList")
+    public Result<?> getInventoryToolList(@RequestParam("pageNo") Integer pageNo,
+                                          @RequestParam("pageSize") Integer pageSize,
+                                          @RequestParam Map<String, Object> params) {
+        IPage<Map<String, Object>> inventoryTooList = cuttingScrapService.getInventoryToolList(pageNo, pageSize, params);
+        return Result.ok(inventoryTooList);
+    }
+
 }
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java
index 731e4d8..53bc04d 100644
--- a/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java
@@ -70,4 +70,5 @@
 	@Excel(name = "浣跨敤瀵垮懡", width = 15)
     @ApiModelProperty(value = "浣跨敤瀵垮懡")
     private Integer usedLife;
+
 }
diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java
index 8fff14a..8781d50 100644
--- a/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java
+++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java
@@ -61,6 +61,7 @@
 	/**鎶ュ簾鍗曠姸鎬�*/
 	@Excel(name = "鎶ュ簾鍗曠姸鎬�", width = 15)
     @ApiModelProperty(value = "鎶ュ簾鍗曠姸鎬�")
+    @Dict(dicCode = "order_status")
     private String orderStatus;
 	/**鐢宠浜�*/
 	@Excel(name = "鐢宠浜�", width = 15)
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java
index b79c998..af5ffee 100644
--- a/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java
@@ -1,7 +1,9 @@
 package org.jeecg.modules.cms.mapper;
 
 import java.util.List;
+import java.util.Map;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.cms.entity.CuttingScrap;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -14,4 +16,5 @@
  */
 public interface CuttingScrapMapper extends BaseMapper<CuttingScrap> {
 
+    IPage<Map<String, Object>> getInventoryToolList(IPage<Map> pageData, Map<String, Object> params);
 }
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml
index eacf082..1004efa 100644
--- a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml
@@ -2,4 +2,21 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.cms.mapper.CuttingScrapMapper">
 
+    <select id="getInventoryToolList" parameterType="Map" resultType="Map">
+        SELECT
+            t1.cutting_id cuttingId,
+            t1.id,
+            t1.cutting_barcode cuttingBarcode,
+            t1.current_life currentLife,
+            t2.cutting_code cuttingCode,
+            t2.cutting_name cuttingName,
+            t2.cutting_category,
+            t3.item_text cuttingCategory
+        FROM cms_cutting_inventory t1
+                 LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id
+                 LEFT JOIN (select * from v_sys_dict where dict_code = 'cutting_category') t3 on t3.item_value = t2.cutting_category
+        WHERE t1.inventory_status != '寰呮姤搴�'
+          AND t1.inventory_status != '宸叉姤搴�'
+          AND t2.del_flag = 0
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
index 875a21f..523402a 100644
--- a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
@@ -18,5 +18,5 @@
 
     IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page);
     void updateStatus(List<String> ids, String status);
-
+    void restoreStatus(List<String> ids);
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java
index 9faf974..02593f5 100644
--- a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java
@@ -1,7 +1,10 @@
 package org.jeecg.modules.cms.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.jeecg.modules.cms.entity.CuttingScrap;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
 
 /**
  * @Description: 鍒�鍏锋姤搴�
@@ -11,4 +14,6 @@
  */
 public interface ICuttingScrapService extends IService<CuttingScrap> {
 
+    IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params);
+
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
index 6443d88..7816739 100644
--- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
@@ -4,16 +4,21 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.cms.entity.CuttingInventory;
 import org.jeecg.modules.cms.mapper.CuttingInventoryMapper;
 import org.jeecg.modules.cms.service.ICuttingInventoryService;
 import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 鍒�鍏峰簱瀛�
@@ -32,11 +37,51 @@
     @Transactional(rollbackFor = Exception.class)
     public void updateStatus(List<String> ids, String status) {
         if (ids != null && !ids.isEmpty() && StringUtils.isNotBlank(status)) {
+//            UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>();
+//            updateWrapper.in("id", ids);
+//            updateWrapper.set("inventory_status", status); // 鏍规嵁瀹為檯鏁版嵁搴撳瓧娈靛悕璋冩暣
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            String username = "System"; // 榛樿鐢ㄦ埛鍚�
+            if (user != null) {
+                username = oConvertUtils.getString(user.getUsername(), "System");
+            }
             UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>();
             updateWrapper.in("id", ids);
-            updateWrapper.set("inventory_status", status); // 鏍规嵁瀹為檯鏁版嵁搴撳瓧娈靛悕璋冩暣
+            updateWrapper.set("inventory_status", status);
+            updateWrapper.set("update_time", new Date());
+            updateWrapper.set("update_by", username);
             this.update(updateWrapper);
         }
     }
 
+    @Override
+    public void restoreStatus(List<String> ids) {
+        if (ids != null && !ids.isEmpty()) {
+            // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            String username = "System"; // 榛樿鐢ㄦ埛鍚�
+            if (user != null) {
+                username = oConvertUtils.getString(user.getUsername(), "System");
+            }
+
+            // 鏂瑰紡1: 鏌ヨ褰撳墠鐘舵�佸苟鏍规嵁鐘舵�佸喅瀹氭仮澶嶅埌鍝釜鐘舵��
+            List<CuttingInventory> inventoryList = this.listByIds(ids);
+            List<String> toRestoreIds = inventoryList.stream()
+                    .filter(inv -> "寰呭嚭搴�".equals(inv.getInventoryStatus())) // 鍙鐞�"寰呭嚭搴�"鐘舵�佺殑
+                    .map(CuttingInventory::getId)
+                    .collect(Collectors.toList());
+            //FIXME:鍦ㄦ姤搴熷墠鏈夊涓姸鎬侊紝濡傛灉鎶ュ簾浣滃簾锛屽垁鍏峰簱瀛樼姸鎬佸浣曢��鍥炲師鏉ョ殑鐘舵�併��
+            if (!toRestoreIds.isEmpty()) {
+                UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.in("id", toRestoreIds);
+                updateWrapper.set("inventory_status", "姝e父");
+                updateWrapper.set("update_time", new Date());
+                updateWrapper.set("update_by", username);
+                this.update(updateWrapper);
+            }
+        }
+    }
+
+
+
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java
index e8f937a..7dd15e8 100644
--- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java
@@ -1,11 +1,15 @@
 package org.jeecg.modules.cms.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.cms.entity.CuttingScrap;
 import org.jeecg.modules.cms.mapper.CuttingScrapMapper;
 import org.jeecg.modules.cms.service.ICuttingScrapService;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.Map;
 
 /**
  * @Description: 鍒�鍏锋姤搴�
@@ -15,5 +19,10 @@
  */
 @Service
 public class CuttingScrapServiceImpl extends ServiceImpl<CuttingScrapMapper, CuttingScrap> implements ICuttingScrapService {
+    @Override
+    public IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params) {
+        IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
+        return super.getBaseMapper().getInventoryToolList(pageData,params);
+    }
 
 }

--
Gitblit v1.9.3