自动化立体仓库 - WMS系统
chen.llin
2026-01-01 817683f9935a6343e954ffe7fd0eeae46e55d29c
src/main/java/com/zy/asrs/controller/OrderPakoutLogController.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,14 +29,16 @@
    private WrkMastService wrkMastService;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private OrderTimeChangeLogService orderTimeChangeLogService;
    @RequestMapping(value = "/order/head/page/auth")
    @ManagerAuth
    public R head(@RequestParam(defaultValue = "1") Integer curr,
            @RequestParam(defaultValue = "10") Integer limit,
            @RequestParam(required = false) String orderByField,
            @RequestParam(required = false) String orderByType,
            @RequestParam Map<String, Object> param) {
                  @RequestParam(defaultValue = "10") Integer limit,
                  @RequestParam(required = false) String orderByField,
                  @RequestParam(required = false) String orderByType,
                  @RequestParam Map<String, Object> param) {
        EntityWrapper<OrderPakoutLog> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
@@ -44,7 +47,31 @@
        } else {
            wrapper.orderBy("create_time", false);
        }
        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
        Page<OrderPakoutLog> 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 (OrderPakoutLog order : page.getRecords()) {
                orderIds.add(order.getId());
            }
            if (!orderIds.isEmpty()) {
                EntityWrapper<OrderTimeChangeLog> logWrapper = new EntityWrapper<>();
                logWrapper.in("order_id", orderIds);
                logWrapper.eq("order_type", 2); // 2:出库
                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 (OrderPakoutLog order : page.getRecords()) {
                    order.setHasChangeLog(orderIdsWithLog.contains(order.getId()));
                }
            }
        }
        return R.ok(page);
    }
    @RequestMapping(value = "/order/detl/all/auth")
@@ -140,6 +167,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("参数不能为空");
        }
        OrderPakoutLog 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(2); // 2:出库
            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());