From bb923868d80b31d1057424a28b4bd7709c5a6648 Mon Sep 17 00:00:00 2001
From: lixiangyu <lixiangyu@xalxzn.com>
Date: 星期四, 11 九月 2025 17:57:57 +0800
Subject: [PATCH] feat(cms): - 在`CuttingInventoryServiceImpl`中添加了批量更新库存状态的方法,并添加了事务注解。 - 在`CuttingReceive`实体类中添加了领用单对库存状态变化功能 - 在`CuttingReceiveController`中添加了提交领用单的方法,并优化了部分方法的参数和逻辑。 - 在`CuttingReceiveDetailMapper.xml`中添加了库存ID字段,以让数据库能正常获取库存id。 - 在`CuttingReceiveServiceImpl`中实现了提交领用单的逻辑,并添加了日志记录。- 在`ICuttingInventoryService`接口中添加了批量更新库存状态的方法。 - 在`ICuttingReceiveService`接口中添加了提交领用单的方法。

---
 src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java |   81 ++++++++++++++++++----------------------
 1 files changed, 37 insertions(+), 44 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 a1be185..35302fe 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java
@@ -3,6 +3,7 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -12,6 +13,7 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import io.micrometer.core.annotation.Timed;
 import liquibase.pro.packaged.G;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -43,10 +45,10 @@
 import org.jeecg.common.aspect.annotation.AutoLog;
 
 /**
- * @Description: 鍒�鍏烽鐢ㄥ崟
- * @Author: jeecg-boot
- * @Date: 2025-07-28
- * @Version: V1.0
+ * &#064;Description:  鍒�鍏烽鐢ㄥ崟
+ * &#064;Author:  jeecg-boot
+ * &#064;Date:  2025-07-28
+ * &#064;Version:  V1.0
  */
 @Api(tags = "鍒�鍏烽鐢ㄥ崟")
 @RestController
@@ -58,14 +60,12 @@
 
     @Autowired
     private ICuttingReceiveDetailService cuttingReceiveDetailService;
+
+    @Autowired
+    private ICuttingInventoryService cuttingInventoryService;
+
     /**
      * 鍒嗛〉鍒楄〃鏌ヨ
-     *
-     * @param cuttingReceive
-     * @param pageNo
-     * @param pageSize
-     * @param req
-     * @return
      */
     //@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
     @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ", notes = "鍒�鍏烽鐢ㄥ崟-鍒嗛〉鍒楄〃鏌ヨ")
@@ -75,16 +75,13 @@
                                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                        HttpServletRequest req) {
         QueryWrapper<CuttingReceive> queryWrapper = QueryGenerator.initQueryWrapper(cuttingReceive, req.getParameterMap());
-        Page<CuttingReceive> page = new Page<CuttingReceive>(pageNo, pageSize);
+        Page<CuttingReceive> page = new Page<>(pageNo, pageSize);
         IPage<CuttingReceive> pageList = cuttingReceiveService.page(page, queryWrapper);
         return Result.OK(pageList);
     }
 
     /**
      * 娣诲姞
-     *
-     * @param jSONObject
-     * @return
      */
     @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-娣诲姞")
     @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-娣诲姞", notes = "鍒�鍏烽鐢ㄥ崟-娣诲姞")
@@ -99,23 +96,32 @@
         // 鍒犻櫎鍘熸湁鍏宠仈鐨勬槑缁嗘暟鎹�
         List<CuttingReceiveDetail> cuttingReceiveDetailList = cuttingReceiveDetailService.lambdaQuery().eq(CuttingReceiveDetail::getOrderId, cuttingReceive.getId()).list();
         cuttingReceiveDetailService.removeBatchByIds(cuttingReceiveDetailList);
-
         // 閲嶆柊娣诲姞鏂扮殑鏄庣粏鏁版嵁
         JSONArray jsonArray = jSONObject.getJSONArray("detailData");
         List<CuttingReceiveDetail> list = jsonArray.toJavaList(CuttingReceiveDetail.class);
-        for (int i = 0; i < list.size(); i++) {
-            CuttingReceiveDetail temp = list.get(i);
+        for (CuttingReceiveDetail temp : list) {
             temp.setOrderId(cuttingReceive.getId());
             cuttingReceiveDetailService.save(temp);
         }
+        // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"宸插嚭搴�"
+        if (!list.isEmpty()) {
+            // 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID
+            List<String> inventoryIds = list.stream()
+                    .map(CuttingReceiveDetail::getInventoryId) // 鍋囪CuttingReceiveDetail涓湁inventoryId瀛楁
+                    .filter(id -> id != null && !id.isEmpty())
+                    .collect(Collectors.toList());
+
+            if (!inventoryIds.isEmpty()) {
+                // 鏇存柊搴撳瓨鐘舵�佷负"宸插嚭搴�"
+                cuttingInventoryService.updateStatus(inventoryIds, "寰呭嚭搴�");
+            }
+        }
+
         return Result.OK("娣诲姞鎴愬姛锛�");
     }
 
     /**
      * 缂栬緫
-     *
-     * @param cuttingReceive
-     * @return
      */
     @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-缂栬緫")
     @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-缂栬緫", notes = "鍒�鍏烽鐢ㄥ崟-缂栬緫")
@@ -128,44 +134,35 @@
 
     /**
      * 閫氳繃id鍒犻櫎
-     *
-     * @param id
-     * @return
      */
     @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
     @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎", notes = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鍒犻櫎")
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete")
     @DeleteMapping(value = "/delete")
-    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+    public Result<String> delete(@RequestParam(name = "id") String id) {
         cuttingReceiveService.removeById(id);
         return Result.OK("鍒犻櫎鎴愬姛!");
     }
 
     /**
      * 鎵归噺鍒犻櫎
-     *
-     * @param ids
-     * @return
      */
     @AutoLog(value = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
     @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎", notes = "鍒�鍏烽鐢ㄥ崟-鎵归噺鍒犻櫎")
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:deleteBatch")
     @DeleteMapping(value = "/deleteBatch")
-    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+    public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) {
         this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(",")));
         return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
     }
 
     /**
      * 閫氳繃id鏌ヨ
-     *
-     * @param id
-     * @return
      */
     //@AutoLog(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
     @ApiOperation(value = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ", notes = "鍒�鍏烽鐢ㄥ崟-閫氳繃id鏌ヨ")
     @GetMapping(value = "/queryById")
-    public Result<CuttingReceive> queryById(@RequestParam(name = "id", required = true) String id) {
+    public Result<CuttingReceive> queryById(@RequestParam(name = "id") String id) {
         CuttingReceive cuttingReceive = cuttingReceiveService.getById(id);
         if (cuttingReceive == null) {
             return Result.error("鏈壘鍒板搴旀暟鎹�");
@@ -175,9 +172,6 @@
 
     /**
      * 瀵煎嚭excel
-     *
-     * @param request
-     * @param cuttingReceive
      */
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:exportXls")
     @RequestMapping(value = "/exportXls")
@@ -187,10 +181,6 @@
 
     /**
      * 閫氳繃excel瀵煎叆鏁版嵁
-     *
-     * @param request
-     * @param response
-     * @return
      */
     //@RequiresPermissions("cms_cutting_receive:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
@@ -200,9 +190,6 @@
 
     /**
      * 鏍规嵁棰嗙敤id鏌ヨ棰嗙敤鏄庣粏
-     *
-     * @param orderId
-     * @return
      */
     @GetMapping("/detailList")
     public Result<?> detailList(@RequestParam("orderId") String orderId) {
@@ -212,8 +199,6 @@
 
     /**
      * 閫夋嫨搴撳瓨鍒�鍏风殑鍒楄〃
-     *
-     * @return
      */
     @GetMapping("/getInventoryToolList")
     public Result<?> getInventoryToolList(@RequestParam("pageNo") Integer pageNo,
@@ -222,4 +207,12 @@
         IPage<Map<String, Object>> inventoryTooList = cuttingReceiveService.getInventoryToolList(pageNo, pageSize, params);
         return Result.ok(inventoryTooList);
     }
+
+    @GetMapping("/submit")
+    @Timed(value = "cutting.inbound.submit", description = "鍒�鍏峰叆搴撴彁浜よ�楁椂")
+    public Result<?> submit(@RequestParam("orderId") String orderId) {
+        return cuttingReceiveService.submit(orderId);
+    }
+
+    //TODO: @GetMapping("/handleBack")
 }

--
Gitblit v1.9.3