自动化立体仓库 - WMS系统
pang.jiabao
2024-09-05 15d33ed37d1c8b12659716ee806d3f6ace4317a4
订单上报mes修改
4个文件已修改
175 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/GhjtScheduler.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -74,25 +74,25 @@
            // 出库订单重新整理明细
            DocType docType = docTypeService.selectById(order.getDocType());
            if (null != docType && docType.getPakout() == 1) {
                if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
                    throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
                }
                List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
                for (WrkDetl wrkDetl : wrkDetls) {
                    OrderDetl orderDetl = new OrderDetl();
                    orderDetl.sync(wrkDetl);
                    orderDetl.setQty(orderDetl.getAnfme());
                    orderDetl.setOrderId(order.getId());
                    orderDetl.setOrderNo(orderNo);
                    orderDetl.setStatus(1);
                    orderDetl.setCreateTime(order.getCreateTime());
                    orderDetl.setCreateBy(order.getCreateBy());
                    orderDetl.setUpdateTime(order.getUpdateTime());
                    orderDetl.setUpdateBy(order.getUpdateBy());
                    if (!orderDetlService.insert(orderDetl)) {
                        throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
                    }
                }
//                if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
//                    throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
//                }
//                List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
//                for (WrkDetl wrkDetl : wrkDetls) {
//                    OrderDetl orderDetl = new OrderDetl();
//                    orderDetl.sync(wrkDetl);
//                    orderDetl.setQty(orderDetl.getAnfme());
//                    orderDetl.setOrderId(order.getId());
//                    orderDetl.setOrderNo(orderNo);
//                    orderDetl.setStatus(1);
//                    orderDetl.setCreateTime(order.getCreateTime());
//                    orderDetl.setCreateBy(order.getCreateBy());
//                    orderDetl.setUpdateTime(order.getUpdateTime());
//                    orderDetl.setUpdateBy(order.getUpdateBy());
//                    if (!orderDetlService.insert(orderDetl)) {
//                        throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
//                    }
//                }
            }
            if (!this.updateSettle(order.getId(), 4L, null)) {
src/main/java/com/zy/asrs/task/GhjtScheduler.java
@@ -6,6 +6,8 @@
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.task.handler.GhjtHandler;
import com.zy.system.entity.Config;
import com.zy.system.mapper.ConfigMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -31,6 +33,25 @@
    @Resource
    private OrderMapper orderMapper;
    @Resource
    private ConfigMapper configMapper;
    // 备货(根据出库单,把要出的货提前放到靠近出库口位置)
//    @Scheduled(cron = "0/4 * * * * ? ")
    public void stockUp() {
        // 查询待出库订单
        List<Order> orderList = orderMapper.selectList(new EntityWrapper<Order>().eq("settle", 1));
//        ghjtHandler.stockUp();
        List<Order> orders = orderMapper.selectComplete();
        for (Order order : orders) {
            try {
//                ghjtHandler.OutBoundCompleteReport(order);
            } catch (Exception e) {
                log.error("出库订单完成则上报MES失败,异常信息:" + e);
            }
        }
    }
    // 下发出库任务给GWCS(从出库码头到出库口)
    @Scheduled(cron = "0/2 * * * * ? ")
    public void ckrwPushGwcs() {
@@ -45,17 +66,22 @@
        }
    }
    // 出库订单完成则上报MES
//    @Scheduled(cron = "0/4 * * * * ? ")
    public void OutBoundCompleteReport() {
        // 查询出库订单状态为4.已完成
        List<Order> orders = orderMapper.selectComplete();
        for (Order order : orders) {
            try {
                ghjtHandler.OutBoundCompleteReport(order);
            } catch (Exception e) {
                log.error("出库订单完成则上报MES失败,异常信息:" + e);
            }
    // 空闲理货
    @Scheduled(cron = "0/5 * * * * ? ")
    public void autoTallyGoods() {
        // 系统配置界面启用
        Config config = configMapper.selectConfigByCode("auto_tally_goods");
        if (config == null || config.getStatus() == 0) {
            return;
        }
        // 四个换盘点,两个组盘点
        // 先查任务目标站为 3045/3044和3041/3040的换盘组 如果有为空的组则可以出,有一个或两个都不能出
        // todo 需新增两个入库路径 3046/3042
        // 寻找两个能组盘的库位,库位状态为F,满足组盘条件
        // 出库怎么出,才能把组好的盘一次出出去
        // gwcs怎么保证两个都拆完了才请求组盘完成
    }
}
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -4,9 +4,9 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.ApiLogService;
@@ -45,6 +45,9 @@
    @Resource
    private WrkDetlService wrkDetlService;
    @Resource
    private OrderDetlMapper orderDetlMapper;
    @Transactional
    public void startCkrwPushGwcs(WrkMast wrkMast) {
@@ -155,54 +158,4 @@
        return flag;
    }
    @Transactional
    public void OutBoundCompleteReport(Order order) {
        // 获取请求头
        Map<String, Object> headers = new HashMap<>();
        headers.put("Content-Type", "application/json;charset=UTF-8");
        // 构造请求体
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("orderNo", order.getOrderNo());
        jsonObject.put("complete", 1); // 订单完成为1,其他...
        String body = jsonObject.toJSONString();
        boolean success = false;
        String response = "";
        try {
            response = new HttpHandler.Builder()
                    .setUri(MesConstant.URL)
                    .setPath(MesConstant.PAKIN_URL)
                    .setHeaders(headers)
                    .setJson(body)
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
                order.setSettle(6L);
                orderMapper.updateById(order);
                success = true;
            } else {
                log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
                throw new CoolException("下发出库任务给GWCS(从出库码头到出库口)失败");
            }
        } catch (Exception e) {
            log.error("出库订单完成上报MES异常,工作号:{},{}", order.getOrderNo(), e.getMessage());
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "出库订单完成上报MES",
                        MesConstant.URL + MesConstant.PAKIN_URL,
                        null,
                        "127.0.0.1",
                        jsonObject.toJSONString(),
                        response,
                        success
                );
            } catch (Exception e) {
                log.error("接口日志保存异常", e);
            }
        }
    }
}
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -457,22 +457,26 @@
                    }
                    for (WrkDetl wrkDetl : wrkDetls111) {
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (orderDetl == null) {
                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                            // 更新订单完成数量
                            orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand());
                        }
                        try {
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
//                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore) {
                        }
//                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
//                        if (orderDetl == null) {
//                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
//                        }
//                        try {
//                            if (!Cools.isEmpty(orderDetl)) {
//                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
//                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
////                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
////                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                    return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                                }
//                            }
//                        } catch (Exception ignore) {
//                        }
                    }
                    break;
                default: