skyouc
16 小时以前 5b976ae793a2a068427fdb9c7d80fdf4ea6a96a5
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -9,17 +9,16 @@
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.erp.params.*;
import com.vincent.rsf.server.api.controller.erp.params.dto.CheckDiffDto;
import com.vincent.rsf.server.api.controller.erp.params.dto.TransferInfoDto;
import com.vincent.rsf.server.api.controller.erp.params.dto.WkOrderDto;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.controller.dto.LocStockDto;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.enums.OrderSourceType;
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.enums.OrderWorkType;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl;
import com.vincent.rsf.server.manager.service.impl.TransferItemServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.Fields;
import com.vincent.rsf.server.system.service.FieldsItemService;
@@ -53,8 +52,6 @@
    @Autowired
    private FieldsService fieldsService;
    @Autowired
    private FieldsItemService fieldsItemService;
    @Autowired
    private MatnrGroupService matnrGroupService;
    @Autowired
    private MatnrServiceImpl matnrService;
@@ -68,8 +65,6 @@
    private DeliveryItemService deliveryItemService;
    @Autowired
    private LocService locService;
    @Autowired
    private LocItemService locItemService;
    @Autowired
    private WarehouseAreasService warehouseAreasService;
    @Autowired
@@ -86,6 +81,10 @@
    private ReviseLogService reviseLogService;
    @Autowired
    private ReviseLogItemService reviseLogItemService;
    @Autowired
    private CheckDiffService checkDiffService;
    @Autowired
    private CheckDiffItemService checkDiffItemService;
    /**
@@ -95,7 +94,7 @@
     * @version 1.0
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    @Transactional(timeout = 60, rollbackFor = Exception.class)
    public boolean syncPurchasee(List<OrderParams> orders) {
        if (orders.isEmpty()) {
            throw new CoolException("单据内容不能为空!!");
@@ -177,6 +176,7 @@
     * @param matnrs
     */
    @Override
    @Transactional(timeout = 60, rollbackFor = Exception.class)
    public void syncMatnrs(List<BaseMatParms> matnrs) {
        List<Matnr> syncMatnrs = new ArrayList<>();
        if (!matnrs.isEmpty()) {
@@ -546,6 +546,7 @@
        if (orders.getType().equals(OrderType.ORDER_IN.type)) {
            orders.getItems().forEach(orderItem -> {
                WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                        .eq(WkOrder::getType, OrderType.ORDER_IN.type)
                        .eq(WkOrder::getCode, orderItem.getOrderCode()));
                if (Objects.isNull(order)) {
                    throw new CoolException("单据不存在!!");
@@ -571,7 +572,6 @@
                if (!asnOrderService.updateById(order)) {
                    throw new CoolException("单据修改失败!!");
                }
                //TODO 添加操作日志
            });
        } else {
@@ -579,4 +579,87 @@
        return null;
    }
    /**
     * @author Ryan
     * @date 2025/8/21
     * @description: 删除单据
     * @version 1.0
     */
    @Override
    @Transactional(timeout = 60, rollbackFor = Exception.class)
    public R syncOrderDelete(List<SyncOrderParams> orders) {
        orders.forEach(order -> {
            order.getItems().forEach(orderItem -> {
                WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                        .eq(WkOrder::getType, order.getType())
                        .in(WkOrder::getExceStatus, Arrays.asList(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val))
                        .eq(WkOrder::getId, orderItem.getOrderId()));
                if (Objects.isNull(wkOrder)) {
                    throw new CoolException("订单:" + orderItem.getOrderCode() + ",当前状态,不可执行删除操作!!");
                }
                if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
                        .eq(WkOrderItem::getMatnrId, orderItem.getMatnrId())
                        .eq(WkOrderItem::getSplrBatch, orderItem.getBatch())
                        .eq(WkOrderItem::getOrderCode, orderItem.getOrderCode()))) {
                    throw new CoolException("单据明细删除失败!!");
                }
                List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, orderItem.getOrderId()));
                if (orderItems.isEmpty()) {
                    if (!asnOrderService.removeById(orderItem.getOrderId())) {
                        throw new CoolException("单据删除失败!!");
                    }
                }
            });
        });
        return R.ok();
    }
    /**
     * @author Ryan
     * @date 2025/8/21
     * @description: 调拔单明细查询
     * @version 1.0
     */
    @Override
    public R queryTransfer(QueryOrderParam queryParams) {
        Transfer transfer = transferService.getOne(new LambdaQueryWrapper<Transfer>()
                .in(Transfer::getCode, queryParams.getOrderNo()));
        if (Objects.isNull(transfer)) {
            throw new CoolException("单据不存在!!");
        }
        List<TransferItem> orderItems = transferItemService.list(new LambdaQueryWrapper<TransferItem>()
                .eq(TransferItem::getTransferId, transfer.getId()));
        TransferInfoDto wkorderDto = new TransferInfoDto();
        wkorderDto.setTransfer(transfer).setItems(orderItems);
        return R.ok().add(wkorderDto);
    }
    /**
     * @author Ryan
     * @date 2025/8/22
     * @description: 盘点差异单同步
     * @version 1.0
     */
    @Override
    @Transactional(timeout = 60, rollbackFor = Exception.class)
    public R syncCheckDiffs(SyncCheckDiffParams syncParams) {
        List<CheckDiff> diffs = checkDiffService.list(new LambdaQueryWrapper<CheckDiff>()
                .eq(CheckDiff::getExceStatus, CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val)
                .in(CheckDiff::getOrderCode, syncParams.getDiffCode()));
        if (diffs.isEmpty()) {
            return R.ok();
        }
        List<CheckDiffDto> dtos = new ArrayList<>();
        diffs.forEach(check -> {
            CheckDiffDto checkDto = new CheckDiffDto();
            CheckDiff checkDiff = new CheckDiff();
            BeanUtils.copyProperties(check, checkDiff);
            List<CheckDiffItem> items = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getCheckId, check.getId()));
            checkDto.setItems(items)
                    .setCheckDiff(checkDiff);
            dtos.add(checkDto);
        });
        return R.ok().add(dtos);
    }
}