skyouc
昨天 6e2dd9a7b6f87d39bdc682e164403be6a7e1ec0f
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -2,7 +2,12 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.erp.params.ReportDataParam;
import com.vincent.rsf.server.api.controller.erp.params.ReportParams;
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;
@@ -10,16 +15,16 @@
import com.vincent.rsf.server.manager.enums.POExceStatus;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl;
import com.vincent.rsf.server.system.entity.User;
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.service.impl.UserServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -48,6 +53,10 @@
    private TransferOrderService transferOrderService;
    @Autowired
    private TransferService transferService;
    @Autowired
    private UserService userService;
    @Autowired
    private ReportMsgService reportMsgService;
    /**
     * @param
@@ -98,6 +107,91 @@
        }
    }
    /**
     * @author Ryan
     * @date 2025/10/28
     * @description: 上传已完成订单至ERP平台
     * @version 1.0
     */
    @Transactional(rollbackFor = Exception.class)
    public void reportOrders(List<WkOrder> orders) {
        orders.forEach(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())
                        .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_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);
            R reported = reportMsgService.reportOrders(params);
            if (reported.get("code").equals(200)) {
               order.setNtyStatus(1);
               if (!asnOrderService.updateById(order)) {
                   throw new CoolException("上报状态修改失败!!");
               }
            }
        });
    }
    /**
     * @param
@@ -109,6 +203,9 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public void moveOrderToLog(List<WkOrder> wkOrders, String type) {
        //上报已完成订单至ERP、MES等三方系统
        reportOrders(wkOrders);
        Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet());
        List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                .in(WkOrderItem::getOrderId, longSet));
@@ -169,11 +266,11 @@
//                        if (!this.asnOrderService.removeByIds(orderIds)) {
//                            throw new CoolException("原单据删除失败!!");
//                        }
                          if (!transferService.update(new LambdaUpdateWrapper<Transfer>()
                                  .eq(Transfer::getId, order.getPoId())
                                  .set(Transfer::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val))) {
                              throw new CoolException("调拔单状态修改失败!!");
                          }
                        if (!transferService.update(new LambdaUpdateWrapper<Transfer>()
                                .eq(Transfer::getId, order.getPoId())
                                .set(Transfer::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val))) {
                            throw new CoolException("调拔单状态修改失败!!");
                        }
                        return;
                    } else {
                        if (!Objects.isNull(order.getPoId())) {