自动化立体仓库 - WMS系统
chen.llin
2025-12-24 fecf9a8163a5563bc87f60405309eb4750a38504
src/main/java/com/zy/asrs/controller/OrderPakinLogController.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.ManagerAuth;
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.result.WrkTraceVo;
import com.zy.asrs.service.*;
@@ -28,6 +29,8 @@
    private WrkMastService wrkMastService;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private OrderTimeChangeLogService orderTimeChangeLogService;
    @RequestMapping(value = "/order/head/page/auth")
    @ManagerAuth
@@ -44,7 +47,31 @@
        } else {
            wrapper.orderBy("create_time", false);
        }
        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
        Page<OrderPakinLog> page = orderService.selectPage(new Page<>(curr, limit), wrapper);
        // 批量查询哪些订单有变更记录
        if (page.getRecords() != null && !page.getRecords().isEmpty()) {
            java.util.List<Long> orderIds = new java.util.ArrayList<>();
            for (OrderPakinLog order : page.getRecords()) {
                orderIds.add(order.getId());
            }
            if (!orderIds.isEmpty()) {
                EntityWrapper<OrderTimeChangeLog> logWrapper = new EntityWrapper<>();
                logWrapper.in("order_id", orderIds);
                logWrapper.eq("order_type", 1); // 1:入库
                java.util.List<OrderTimeChangeLog> changeLogs = orderTimeChangeLogService.selectList(logWrapper);
                java.util.Set<Long> orderIdsWithLog = new java.util.HashSet<>();
                if (changeLogs != null) {
                    for (OrderTimeChangeLog log : changeLogs) {
                        orderIdsWithLog.add(log.getOrderId());
                    }
                }
                // 设置是否有变更记录标识
                for (OrderPakinLog order : page.getRecords()) {
                    order.setHasChangeLog(orderIdsWithLog.contains(order.getId()));
                }
            }
        }
        return R.ok(page);
    }
    @RequestMapping(value = "/order/detl/all/auth")
@@ -135,6 +162,49 @@
        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
    }
    @PostMapping(value = "/order/update/orderTime/auth")
    @ManagerAuth(memo = "修改历史单据业务时间")
    public R updateOrderTime(@RequestParam Long id, @RequestParam String orderTime, @RequestParam(required = false) String memo) {
        if (Cools.isEmpty(id) || Cools.isEmpty(orderTime)) {
            return R.error("参数不能为空");
        }
        OrderPakinLog order = orderService.selectById(id);
        if (order == null) {
            return R.error("单据不存在");
        }
        // 检查是否已绑定月结单据,如果已绑定则禁止修改
        if (order.getMonthlySettleId() != null && order.getMonthlySettleId() > 0) {
            return R.error("该单据已绑定月结单据,不能修改业务时间");
        }
        // 获取原业务时间(在修改前获取)
        String oldOrderTime = order.getOrderTime();
        // 检查新旧时间是否相同
        if (oldOrderTime != null && oldOrderTime.equals(orderTime)) {
            return R.error("新业务时间与原业务时间相同,无需修改");
        }
        // 更新业务时间
        order.setOrderTime(orderTime);
        order.setUpdateBy(getUserId());
        order.setUpdateTime(new Date());
        if (!orderService.updateById(order)) {
            throw new CoolException("修改业务时间失败");
        }
        // 保存变更记录(只有时间不同时才保存)
        if (oldOrderTime != null && !oldOrderTime.equals(orderTime)) {
            OrderTimeChangeLog changeLog = new OrderTimeChangeLog();
            changeLog.setOrderId(order.getId());
            changeLog.setOrderNo(order.getOrderNo());
            changeLog.setOrderType(1); // 1:入库
            changeLog.setOldOrderTime(oldOrderTime);
            changeLog.setNewOrderTime(orderTime);
            changeLog.setMemo(memo);
            changeLog.setCreateBy(getUserId());
            changeLog.setCreateTime(new Date());
            orderTimeChangeLogService.insert(changeLog);
        }
        return R.ok("修改成功");
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String val = String.valueOf(entry.getValue());