skyouc
20 小时以前 5ec18e799f11c021f343e7593701e54f920a6072
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -11,9 +11,12 @@
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.StockItemServiceImpl;
import com.vincent.rsf.server.manager.service.impl.StockServiceImpl;
import com.vincent.rsf.server.system.entity.User;
import com.vincent.rsf.server.system.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -46,14 +49,15 @@
    private AsnOrderLogService asnOrderLogService;
    @Autowired
    private AsnOrderItemLogService asnOrderItemLogService;
    @Autowired
    private TransferOrderService transferOrderService;
    @Autowired
    private TransferService transferService;
    @Autowired
    private UserService userService;
    @Autowired
    private ReportMsgService reportMsgService;
    /**
     * @param
@@ -80,7 +84,6 @@
        }
    }
    /**
     * @param
     * @return
@@ -106,91 +109,7 @@
        }
    }
    /**
     * @author Ryan
     * @date 2025/10/28
     * @description: 上传已完成订单至ERP平台
     * @version 1.0
     */
    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()) {
                throw new CoolException("订据明细不存在!!");
            }
            List<ReportDataParam> reportData = new ArrayList<>();
            orderItems.forEach(orderItem -> {
                ReportDataParam param = new ReportDataParam();
                User user = userService.getById(order.getUpdateBy());
                String nickName = null;
                if (!Objects.isNull(user)) {
                    nickName = user.getNickname();
                }
                Map<String, String> fields = FieldsUtils.getFields(orderItem.getFieldsIndex());
                //设置通用参数
                param.setWMSNO(order.getCode())
                        .setPONO(order.getPoCode())
                        .setOrderNO(order.getPoCode())
                        .setOrderDate(order.getCreateTime())
                        .setItemCode(orderItem.getMatnrCode())
                        .setEditUser(nickName)
                        .setEditDate(order.getUpdateTime())
                        .setGoodsNO(fields.get("crushNo"))
                        .setMemoDtl(order.getMemo());
                if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type)) {
                    //采购入库单
                    params.setOrderType("PO_Instock").setAction("Update");
                    //获取指定查询字段CrushNo 票号
                    param.setInQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type)) {
                    //采购退货
                    params.setOrderType("PR_Outstock").setAction("Update");
                    param.setOutQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD.type)) {
                    //生产入库单
//                params.setOrderType("WO_Outstock").setAction("Update");
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type)) {
                    //生产退料
                    params.setOrderType("WR_Instock").setAction("Update");
                    param.setInQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
                    //生产领料
                    params.setOrderType("WO_Outstock").setAction("Update");
                    param.setOutQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD_ADDITION.type)) {
                    //生产补料
                    params.setOrderType("WR_Instock_BL").setAction("Update");
                    param.setOutQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_FIX_OUT.type)) {
                    params.setOrderType("WO_Outstock_WR").setAction("Update");
                    param.setOutQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
                    //其它入库单/手动入库单
                    params.setOrderType("In_Instock").setAction("Update");
                    param.setInQty(orderItem.getQty());
                } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
                    //其它出库单/手动出库单
                    params.setOrderType("Io_Outstock").setAction("Update");
                    param.setOutQty(orderItem.getQty());
                }
                reportData.add(param);
            });
            params.setData(reportData);
            try {
                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);
            }
    }
    /**
@@ -198,7 +117,7 @@
     * @param type
     * @return
     * @author Ryan
     * @description 添加历史单据,产上报ERP
     * @description 添加历史单据, 产上报ERP
     * @time 2025/6/16 08:56
     */
    @Transactional(rollbackFor = Exception.class)
@@ -211,18 +130,20 @@
        }
        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() +  ",单据上传次数修改失败!!");
            if (order.getType().equals(OrderType.ORDER_OUT.type)) {
                try {
                    //上报次数限定
                    if (order.getReportOnce() < 4) {
                        //上报已完成订单至ERP、MES等三方系统
                        reportMsgService.reportOrders(order);
                        order.setReportOnce(order.getReportOnce() + 1);
                        if (!asnOrderService.updateById(order)) {
                            log.error(order.getCode() + ",单据上传次数修改失败!!");
                        }
                    }
                } catch (Exception e) {
                    log.error(e.getMessage());
                }
            } catch (Exception e) {
                log.error(e.getMessage());
            }
            if (order.getNtyStatus().equals(OrderReportStatus.ORDER_REPORT_STATUS_ALL.val)) {
                AsnOrderLog one = asnOrderLogService.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getCode, order.getCode()), false);
@@ -314,12 +235,6 @@
                }
                if (!this.asnOrderService.removeById(order.getId())) {
                    throw new CoolException("原单据删除失败!!");
                }
                try {
                    //休眠3秒
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }