skyouc
2025-08-06 a27159c9906fa19f1e0126c87d5550434826e718
库存调整功能优化
2个文件已删除
5个文件已修改
1个文件已添加
195 ■■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/ReviseLogItemController.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/ReviseLogItemParams.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLogItem.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/ReviseLogItemService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogItemServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/locRevise.sql 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/transferOrder.sql 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/ReviseLogItemParams.java
New file
@@ -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("调整单历史ID")
    private Long reviseLogId;
    @ApiModelProperty("调整单明细")
    private List<ReviseLogItem> items;
}
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;
    /**
     * 类型
     */
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 {
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);
}
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;
    }
}
rsf-server/src/main/java/locRevise.sql
File was deleted
rsf-server/src/main/java/transferOrder.sql
File was deleted