c9ece26e4c13b973a49e1639c9262aa054ba32c0..8308e0c162deafb0855f2a20bad3de923ae6a87f
2026-02-04 chen.lin
库位编号
8308e0 对比 | 目录
2026-02-04 chen.lin
bug3, 调整库存报错 locId为空
e74b57 对比 | 目录
2026-02-04 chen.lin
bug2, 启动注入异常
7a079b 对比 | 目录
3个文件已修改
51 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
@@ -53,7 +53,7 @@
 * @create 2025/3/12 17:08
 */
@Slf4j
@Service
@Service("reportMsgService")
public class ReportMsgServiceImpl implements ReportMsgService {
    @Autowired
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.common.utils.Utils;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
@@ -133,6 +134,7 @@
                for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
                    // 获取库位号
                    String locNo = locStar +  String.format("%d", r) + String.format("-%d", b) + String.format("-%d", l);
//                    String locNo = Utils.zeroFill("A1", 2) + String.format("%03d", r) + String.format("%03d", b) + String.format("%02d", l);
                    Loc loc = new Loc();
                    loc.setCode(locNo)
                            .setUseStatus("O")
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
@@ -122,24 +122,49 @@
        if (logItems.isEmpty()) {
            throw new CoolException("调整明细为空!!");
        }
        Map<Long, List<ReviseLogItem>> listMap = logItems.stream().collect(Collectors.groupingBy(ReviseLogItem::getLocId));
        listMap.keySet().forEach(items -> {
            Loc loc = locService.getById(items);
        // 按库位ID分组,如果locId为null则按locCode分组
        Map<String, List<ReviseLogItem>> listMap = logItems.stream()
                .filter(item -> item.getLocCode() != null && !item.getLocCode().isEmpty())
                .collect(Collectors.groupingBy(item -> {
                    // 优先使用locId,如果为null则使用locCode作为key
                    return item.getLocId() != null ? String.valueOf(item.getLocId()) : item.getLocCode();
                }));
        listMap.keySet().forEach(key -> {
            List<ReviseLogItem> reviseItems = listMap.get(key);
            if (Objects.isNull(reviseItems) || reviseItems.isEmpty()) {
                throw new CoolException("调整明细为空!!");
            }
            // 获取第一个明细的库位信息
            ReviseLogItem firstItem = reviseItems.get(0);
            String locCode = firstItem.getLocCode();
            Long locId = firstItem.getLocId();
            // 查询库位:优先使用locId,如果为null则使用locCode
            Loc loc = null;
            if (locId != null) {
                loc = locService.getById(locId);
            }
            if (loc == null && locCode != null && !locCode.isEmpty()) {
                loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locCode).eq(Loc::getDeleted, 0));
            }
            if (Objects.isNull(loc)) {
                throw new CoolException("库位不存在!!");
                throw new CoolException("库位不存在!库位编码:" + locCode + ", 库位ID:" + locId);
            }
            List<LocItem> list = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
            if (list.isEmpty()) {
                throw new CoolException("库位:" + loc.getCode() + ", 调整信息为空!!");
            }
            // 删除原库位的库存明细(如果存在)
            locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
            listMap.get(items).forEach(logItem -> {
            Loc finalLoc = loc;
            reviseItems.forEach(logItem -> {
                LocItem locDetl = new LocItem();
                BeanUtils.copyProperties(logItem, locDetl);
                locDetl.setLocId(loc.getId())
                locDetl.setLocId(finalLoc.getId())
                        .setType(OrderType.ORDER_REVISE.type)
                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type))
                        .setLocCode(loc.getCode())
                        .setLocCode(finalLoc.getCode())
                        .setAnfme(logItem.getReviseQty())
                        .setUpdateBy(loginUserId)
                        .setId(null)