自动化立体仓库 - WMS系统
1
zhang
2 天以前 df115aec77ff63d19e74193478b46bcc6bbc4f09
1
5个文件已修改
1个文件已添加
91 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -495,7 +495,7 @@
    @PostMapping("/returnOrder/auth/v1")
    @AppAuth(memo = "退库单单据下发")
    public synchronized R returnOrder(@RequestHeader(required = false) String appkey,
                                            @RequestBody GroupOrderConfirmParam param,
                                            @RequestBody ReturnOrderConfirmParam param,
                                            HttpServletRequest request) {
        auth(appkey, param, request);
        openService.returnOrder(param);
src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
New file
@@ -0,0 +1,18 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.List;
@Data
public class ReturnOrderConfirmParam {
    private String orderNumber; //组货单号
    private String packageGroupNo; // 多个包装组号
    private List<VolumeNumber> volumeNumbers; // 多个包装组号
    @Data
    public static class VolumeNumber {
        private String volumeNumber;
    }
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -156,7 +156,7 @@
    R groupOrderConfirm(GroupOrderConfirmParam param);
    R returnOrder(GroupOrderConfirmParam param);
    R returnOrder(ReturnOrderConfirmParam param);
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2344,16 +2344,19 @@
    @Override
    @Transactional
    public R returnOrder(GroupOrderConfirmParam param) {
    public R returnOrder(ReturnOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("THCK" + snowflakeIdWorker.nextId() + "");
        }
        // 1. 查询单据是否存在
        Order order = orderMapper.selectOrderByOrderNo(param.getGroupOrderNumber());
        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (order == null) {
            // 1.1 不存在,新建单据
            order = new Order();
            order.setOrderNo(param.getGroupOrderNumber());
            order.setStatus(Integer.valueOf(param.getGroupStatus()));
            order.setOrderNo(param.getOrderNumber());
            order.setStatus(1);
            order.setOrderTime(sdf.format(new Date()));
            order.setCreateTime(new Date());
            order.setSettle(1L);
@@ -2361,34 +2364,31 @@
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
            order.setStatus(Integer.valueOf(param.getGroupStatus()));
            order.setStatus(1);
            orderMapper.updateById(order);
        }
        orderDetlMapper.delete(
                new EntityWrapper<OrderDetl>().eq("order_no", param.getGroupOrderNumber())
                new EntityWrapper<OrderDetl>().eq("order_no", param.getOrderNumber())
        );
        // 2. 一一对应遍历
        List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos();
        List<GroupOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        int size = Math.min(pkgList.size(), volList.size()); // 防止越界
        for (int i = 0; i < size; i++) {
            GroupOrderConfirmParam.PackageGroupNo pg = pkgList.get(i);
            GroupOrderConfirmParam.VolumeNumber vn = volList.get(i);
        for (int i = 0; i < volList.size(); i++) {
            ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
            // 查询是否已存在该 detl
            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
                    param.getGroupOrderNumber(), pg.getPackageGroupNo(), vn.getVolumeNumber()
                    param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
            );
            if (detl == null) {
                detl = new OrderDetl();
                detl.setOrderId(order.getId());
                detl.setOrderNo(param.getGroupOrderNumber());
                detl.setOrderNo(param.getOrderNumber());
                detl.setCreateTime(new Date());
                detl.setAnfme(1.0);
                detl.setBrand(pg.getPackageGroupNo());   // 包装组号
                detl.setBrand(param.getPackageGroupNo());   // 包装组号
                detl.setModel(vn.getVolumeNumber());     // 卷号
                orderDetlMapper.insert(detl);
            }
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -74,6 +74,29 @@
    }
    @Scheduled(cron = "0/9 * * * * ? ")
    @Async("orderThreadPool")
    public void completeAndReport2() {
        Config config = configMapper.selectConfigByCode("RETURN_REPORT");
        if (config == null || config.getStatus() == 0 || Cools.isEmpty(config.getValue())) {
            return;
        }
        List<Order> orders = orderService.selectComplete();
        for (Order order : orders) {
            try {
                ReturnT<String> result = orderSyncHandler.start(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                }
            } catch (Exception e) {
                log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                log.error("订单" + order + "处理失败,异常信息:" + e);
            }
        }
    }
    @Scheduled(cron = "0/30 * * * * ? ")
    public void complete() {
src/main/resources/mapper/OrderMapper.xml
@@ -85,6 +85,22 @@
            mo.create_time asc
    </select>
    <select id="selectComplete2" resultMap="BaseResultMap">
        select
            top 5 mo.*
        from
            man_order mo
                inner join man_doc_type mt on
                mo.doc_type = mt.doc_id
        where
            mt.pakout = 1
          and mo.settle = 5
          and mo.status = 1
          and mo.doc_type = 26
        order by
            mo.create_time asc
    </select>
    <insert id="addToLogTable">
        INSERT INTO man_order_log SELECT * FROM man_order WHERE id = #{id}
    </insert>