skyouc
昨天 f40b951cf2e8c761e8d501cc6e404c8bf3139103
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -9,10 +9,7 @@
import com.vincent.rsf.server.api.service.ReportMsgService;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.enums.OrderWorkType;
import com.vincent.rsf.server.manager.enums.POExceStatus;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.entity.User;
import com.vincent.rsf.server.system.service.UserService;
@@ -115,11 +112,7 @@
     * @description: 上传已完成订单至ERP平台
     * @version 1.0
     */
    public void reportOrders(List<WkOrder> orders) {
        for (WkOrder order : orders) {
            if (order.getReportOnce() > 4 || order.getNtyStatus() == 1) {
                continue;
            }
    public void reportOrders(WkOrder order) {
            ReportParams params = new ReportParams();
            List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
            if (orderItems.isEmpty()) {
@@ -188,23 +181,15 @@
                reportData.add(param);
            });
            params.setData(reportData);
            R reported = reportMsgService.uploadReportOrders(params);
            order.setReportOnce(order.getReportOnce() + 1);
            if (!asnOrderService.updateById(order)) {
                throw new CoolException("单据上传次数修改失败!!");
            }
//            if (reported.get("code").equals(200)) {
//                if (!asnOrderService.updateById(order)) {
//                    throw new CoolException("上报状态修改失败!!");
//                }
//            }
            try {
                //休眠3秒
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
                R reported = reportMsgService.uploadReportOrders(params);
                if (reported.get("code").equals("200")) {
                    order.setNtyStatus(OrderReportStatus.ORDER_REPORT_STATUS_ALL.val);
                    asnOrderService.updateById(order);
                }
            } catch (Exception e) {
                log.error("<UNK>", e);
            }
        }
    }
@@ -218,25 +203,28 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void moveOrderToLog(List<WkOrder> wkOrders, String type) {
        boolean moveOrder = true;
        //上报已完成订单至ERP、MES等三方系统
        try {
            reportOrders(wkOrders);
        } catch (Exception e) {
            log.error(e.getMessage());
            moveOrder = false;
        Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet());
        List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                .in(WkOrderItem::getOrderId, longSet));
        if (orderItems.isEmpty()) {
            throw new CoolException("收货明细为空!!");
        }
        //判断是否抛出异常,抛异常不做移出动作
        if (moveOrder) {
            Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet());
            List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                    .in(WkOrderItem::getOrderId, longSet));
            if (orderItems.isEmpty()) {
                throw new CoolException("收货明细为空!!");
        for (WkOrder order : wkOrders) {
            try {
                //上报次数限定
                if (order.getReportOnce() < 4 ) {
                    //上报已完成订单至ERP、MES等三方系统
                    reportOrders(order);
                    order.setReportOnce(order.getReportOnce() + 1);
                    if (!asnOrderService.updateById(order)) {
                        log.error(order.getCode() +  ",单据上传次数修改失败!!");
                    }
                }
            } catch (Exception e) {
                log.error(e.getMessage());
            }
            for (WkOrder order : wkOrders) {
            if (order.getNtyStatus().equals(OrderReportStatus.ORDER_REPORT_STATUS_ALL.val)) {
                AsnOrderLog one = asnOrderLogService.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getCode, order.getCode()), false);
                if (Objects.isNull(one)) {
                    AsnOrderLog orderLog = new AsnOrderLog();
@@ -327,10 +315,13 @@
                if (!this.asnOrderService.removeById(order.getId())) {
                    throw new CoolException("原单据删除失败!!");
                }
                try {
                    //休眠3秒
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}