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