From a27159c9906fa19f1e0126c87d5550434826e718 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 06 八月 2025 14:09:15 +0800
Subject: [PATCH] 库存调整功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java                      |    3 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/ReviseLogItemParams.java |   26 ++++++++
 /dev/null                                                                                          |   24 --------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogItemService.java          |    4 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLogItem.java                  |    3 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogItemController.java    |   35 ++++++++---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java |   72 ++++++++++++++++++++++++
 7 files changed, 134 insertions(+), 33 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogItemController.java
index 606d4a6..a14eab1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogItemController.java
@@ -4,14 +4,17 @@
 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.framework.exception.CoolException;
 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.controller.params.ReviseLogItemParams;
 import com.vincent.rsf.server.manager.entity.ReviseLogItem;
 import com.vincent.rsf.server.manager.service.ReviseLogItemService;
 import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -19,13 +22,14 @@
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 
+@Api("搴撳瓨璋冩暣鍘嗗彶")
 @RestController
 public class ReviseLogItemController extends BaseController {
 
     @Autowired
     private ReviseLogItemService reviseLogItemService;
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:list')")
+    @PreAuthorize("hasAuthority('manager:locRevise:list')")
     @PostMapping("/reviseLogItem/page")
     public R page(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
@@ -33,25 +37,25 @@
         return R.ok().add(reviseLogItemService.page(pageParam, pageParam.buildWrapper(true)));
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:list')")
+    @PreAuthorize("hasAuthority('manager:locRevise:list')")
     @PostMapping("/reviseLogItem/list")
     public R list(@RequestBody Map<String, Object> map) {
         return R.ok().add(reviseLogItemService.list());
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:list')")
+    @PreAuthorize("hasAuthority('manager:locRevise:list')")
     @PostMapping({"/reviseLogItem/many/{ids}", "/reviseLogItems/many/{ids}"})
     public R many(@PathVariable Long[] ids) {
         return R.ok().add(reviseLogItemService.listByIds(Arrays.asList(ids)));
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:list')")
+    @PreAuthorize("hasAuthority('manager:locRevise:list')")
     @GetMapping("/reviseLogItem/{id}")
     public R get(@PathVariable("id") Long id) {
         return R.ok().add(reviseLogItemService.getById(id));
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:save')")
+    @PreAuthorize("hasAuthority('manager:locRevise:save')")
     @OperationLog("Create 搴撲綅璋冩暣鍘嗗彶")
     @PostMapping("/reviseLogItem/save")
     public R save(@RequestBody ReviseLogItem reviseLogItem) {
@@ -65,7 +69,20 @@
         return R.ok("Save Success").add(reviseLogItem);
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:update')")
+    @PreAuthorize("hasAuthority('manager:locRevise:save')")
+    @OperationLog("Create 搴撲綅璋冩暣鍘嗗彶")
+    @PostMapping("/reviseLogItem/items/save")
+    public R itemSave(@RequestBody ReviseLogItemParams reviseLogItem) {
+        if (Objects.isNull(reviseLogItem.getReviseLogId())) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(reviseLogItem.getItems()) || reviseLogItem.getItems().isEmpty()) {
+            throw new CoolException("鏄庣粏鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return R.ok().add(reviseLogItemService.itemSave(reviseLogItem, getLoginUserId()));
+    }
+
+    @PreAuthorize("hasAuthority('manager:locRevise:update')")
     @OperationLog("Update 搴撲綅璋冩暣鍘嗗彶")
     @PostMapping("/reviseLogItem/update")
     public R update(@RequestBody ReviseLogItem reviseLogItem) {
@@ -77,7 +94,7 @@
         return R.ok("Update Success").add(reviseLogItem);
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:remove')")
+    @PreAuthorize("hasAuthority('manager:locRevise:remove')")
     @OperationLog("Delete 搴撲綅璋冩暣鍘嗗彶")
     @PostMapping("/reviseLogItem/remove/{ids}")
     public R remove(@PathVariable Long[] ids) {
@@ -87,7 +104,7 @@
         return R.ok("Delete Success").add(ids);
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:list')")
+    @PreAuthorize("hasAuthority('manager:locRevise:list')")
     @PostMapping("/reviseLogItem/query")
     public R query(@RequestParam(required = false) String condition) {
         List<KeyValVo> vos = new ArrayList<>();
@@ -101,7 +118,7 @@
         return R.ok().add(vos);
     }
 
-    @PreAuthorize("hasAuthority('manager:reviseLogItem:list')")
+    @PreAuthorize("hasAuthority('manager:locRevise:list')")
     @PostMapping("/reviseLogItem/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
         ExcelUtil.build(ExcelUtil.create(reviseLogItemService.list(), ReviseLogItem.class), response);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/ReviseLogItemParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/ReviseLogItemParams.java
new file mode 100644
index 0000000..9dca821
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/ReviseLogItemParams.java
@@ -0,0 +1,26 @@
+package com.vincent.rsf.server.manager.controller.params;
+
+
+import com.vincent.rsf.server.manager.entity.ReviseLog;
+import com.vincent.rsf.server.manager.entity.ReviseLogItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "ReviseLogItemParams", description = "搴撳瓨璋冩暣鍙傛暟")
+public class ReviseLogItemParams implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("璋冩暣鍗曞巻鍙睮D")
+    private Long reviseLogId;
+
+    @ApiModelProperty("璋冩暣鍗曟槑缁�")
+    private List<ReviseLogItem> items;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java
index 0170594..0a57ae3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java
@@ -59,6 +59,9 @@
     @ApiModelProperty(value= "搴撳尯ID")
     private Long areaId;
 
+    @ApiModelProperty("搴撲綅")
+    private String locCode;
+
     /**
      * 绫诲瀷
      */
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLogItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLogItem.java
index 0c10f05..f81ca38 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLogItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLogItem.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+
+import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -22,6 +24,7 @@
 import java.util.Date;
 
 @Data
+@Accessors(chain = true)
 @TableName("man_revise_log_item")
 public class ReviseLogItem implements Serializable {
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogItemService.java
index 1141d9f..ca9e9f5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogItemService.java
@@ -1,8 +1,12 @@
 package com.vincent.rsf.server.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.server.manager.controller.params.ReviseLogItemParams;
 import com.vincent.rsf.server.manager.entity.ReviseLogItem;
+
+import java.util.List;
 
 public interface ReviseLogItemService extends IService<ReviseLogItem> {
 
+    List<ReviseLogItem> itemSave(ReviseLogItemParams reviseLogItem, Long userId);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java
index 14cb3b8..df9136e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java
@@ -1,12 +1,84 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.manager.controller.params.ReviseLogItemParams;
+import com.vincent.rsf.server.manager.entity.Loc;
+import com.vincent.rsf.server.manager.entity.LocItem;
+import com.vincent.rsf.server.manager.entity.ReviseLog;
 import com.vincent.rsf.server.manager.mapper.ReviseLogItemMapper;
 import com.vincent.rsf.server.manager.entity.ReviseLogItem;
+import com.vincent.rsf.server.manager.service.LocItemService;
+import com.vincent.rsf.server.manager.service.LocService;
 import com.vincent.rsf.server.manager.service.ReviseLogItemService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vincent.rsf.server.manager.service.ReviseLogService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Objects;
 
 @Service("reviseLogItemService")
 public class ReviseLogItemServiceImpl extends ServiceImpl<ReviseLogItemMapper, ReviseLogItem> implements ReviseLogItemService {
 
+    @Autowired
+    private  ReviseLogService reviseLogService;
+    @Autowired
+    private LocItemService locItemService;
+    @Autowired
+    private LocService locService;
+
+
+    /**
+     * 淇濆瓨搴撳瓨璋冩暣鍘嗗彶鍗曟槑缁�
+     * @param reviseLogItem
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<ReviseLogItem> itemSave(ReviseLogItemParams reviseLogItem, Long userId) {
+        ReviseLog reviseLog = reviseLogService.getById(reviseLogItem.getReviseLogId());
+        if (Objects.isNull(reviseLog)) {
+            throw new RuntimeException("搴撳瓨鍘嗗彶鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        Loc locItem = locService.getOne(new LambdaQueryWrapper<Loc>()
+                .eq(Loc::getCode, reviseLog.getLocCode()));
+        if (Objects.isNull(locItem)) {
+            throw new RuntimeException("搴撲綅搴撳瓨涓嶅瓨鍦紒锛�");
+        }
+        List<ReviseLogItem> items = reviseLogItem.getItems();
+        items.forEach(item -> {
+            ReviseLogItem logItem = new ReviseLogItem();
+            BeanUtils.copyProperties(item, logItem);
+            logItem.setReviseLogId(reviseLogItem.getReviseLogId())
+                    .setUpdateBy(userId)
+                    .setCreateBy(userId)
+                    .setLocId(locItem.getId())
+                    .setLocCode(locItem.getCode());
+            if (Objects.isNull(item.getAnfme())) {
+                item.setAnfme(0.0);
+            }
+            if (!this.save(logItem)) {
+                throw new RuntimeException("搴撳瓨鏄庣粏璋冩暣澶辫触");
+            }
+
+            LocItem one = locItemService.getOne(new LambdaQueryWrapper<LocItem>()
+                    .eq(LocItem::getMatnrId, logItem.getMatnrId())
+                    .eq(LocItem::getBatch, logItem.getBatch())
+                    .eq(LocItem::getFieldsIndex, logItem.getFieldsIndex())
+                    .eq(LocItem::getLocCode, logItem.getLocCode()));
+            if (Objects.isNull(one)) {
+                throw new RuntimeException("搴撳瓨鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+
+            one.setAnfme(logItem.getReviseQty());
+
+            if (!locItemService.updateById(one)) {
+                throw new RuntimeException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
+            }
+        });
+        return items;
+    }
 }
diff --git a/rsf-server/src/main/java/locRevise.sql b/rsf-server/src/main/java/locRevise.sql
deleted file mode 100644
index bd844af..0000000
--- a/rsf-server/src/main/java/locRevise.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- save locRevise record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.locRevise', '0', '/manager/locRevise', 'locRevise', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 搴撳瓨璋冩暣鍗�', '', '1', 'manager:locRevise:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 搴撳瓨璋冩暣鍗�', '', '1', 'manager:locRevise:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 搴撳瓨璋冩暣鍗�', '', '1', 'manager:locRevise:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 搴撳瓨璋冩暣鍗�', '', '1', 'manager:locRevise:remove', '3', '1', '1');
-
--- locale menu name
-locRevise: 'LocRevise',
-
--- locale field
-locRevise: {
-    code: "code",
-    type: "type",
-    anfme: "anfme",
-    reviseQty: "reviseQty",
-    exceStatus: "exceStatus",
-    orgAreaId: "orgAreaId",
-    orgAreaName: "orgAreaName",
-},
-
--- ResourceContent
-import locRevise from './locRevise';
-
-case 'locRevise':
-    return locRevise;
diff --git a/rsf-server/src/main/java/transferOrder.sql b/rsf-server/src/main/java/transferOrder.sql
deleted file mode 100644
index 67173ab..0000000
--- a/rsf-server/src/main/java/transferOrder.sql
+++ /dev/null
@@ -1,24 +0,0 @@
--- save transferOrder record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.transferOrder', '0', '/manager/transferOrder', 'transferOrder', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 璋冩嫈鍗曡鍗曞叧鑱旇〃', '', '1', 'manager:transferOrder:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 璋冩嫈鍗曡鍗曞叧鑱旇〃', '', '1', 'manager:transferOrder:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 璋冩嫈鍗曡鍗曞叧鑱旇〃', '', '1', 'manager:transferOrder:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 璋冩嫈鍗曡鍗曞叧鑱旇〃', '', '1', 'manager:transferOrder:remove', '3', '1', '1');
-
--- locale menu name
-transferOrder: 'TransferOrder',
-
--- locale field
-transferOrder: {
-    transferId: "transferId",
-    orderId: "orderId",
-    exceStatus: "exceStatus",
-},
-
--- ResourceContent
-import transferOrder from './transferOrder';
-
-case 'transferOrder':
-    return transferOrder;

--
Gitblit v1.9.1