skyouc
17 小时以前 a5abbaea5e8a35e77df3a06a88b8b96bebbf79b4
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -1,11 +1,14 @@
package com.vincent.rsf.server.api.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.erp.params.*;
@@ -14,6 +17,7 @@
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.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.controller.dto.LocStockDto;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.*;
@@ -221,8 +225,8 @@
    @Override
    public R queryOrderStatus(QueryOrderParam queryParams) {
        WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                .in(WkOrder::getCode, queryParams.getOrderNo())
                .eq(WkOrder::getType, queryParams.getType()));
                .eq(WkOrder::getCode, queryParams.getOrderNo())
                .eq(StringUtils.isNotBlank(queryParams.getType()), WkOrder::getType, queryParams.getType()));
        if (Objects.isNull(wkOrders)) {
            throw new CoolException("单据不存在!!");
        }
@@ -273,7 +277,7 @@
    /**
     * @author Ryan
     * @date 2025/8/18
     * @description: 物料信息同步
     * @description: 物料分组信息同步
     * @version 1.0
     */
    @Override
@@ -396,10 +400,32 @@
                if (Objects.isNull(one)) {
                    throw new CoolException("单据:" + syncOrder.getOrderNo() + ", 业务类型不存在!!");
                }
                wkOrder.setType(OrderWorkType.getOrderType(syncOrder.getWkType()))
                WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                        .eq(!Objects.isNull(syncOrder.getOrderId()), WkOrder::getPoId, syncOrder.getOrderId())
                        .eq(WkOrder::getPoCode, syncOrder.getOrderNo()));
                if (!Objects.isNull(order)) {
                    if (order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val) ||
                            order.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)) {
                        /**删除单据明细*/
                        asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
                        /**删除主单*/
                        asnOrderService.removeById(order.getId());
                    } else {
                        throw new CoolException("单据已添加,不可执行修改或添加操作!!");
                    }
                }
                String rule = SerialRuleCode.SYS_ASN_ORDER;
                if (syncOrder.getType().equals(OrderType.ORDER_OUT.type)) {
                    rule = SerialRuleCode.SYS_OUT_STOCK_CODE;
                }
                String ruleCode = SerialRuleUtils.generateRuleCode(rule, null);
                wkOrder.setType(syncOrder.getType())
                        .setWkType(OrderWorkType.getWorkType(syncOrder.getWkType()))
                        .setAnfme(syncOrder.getAnfme())
                        .setCode(syncOrder.getOrderNo())
                        .setPoCode(syncOrder.getOrderNo())
                        .setPoId(syncOrder.getOrderId())
                        .setCode(ruleCode)
                        .setArrTime(syncOrder.getArrTime())
                        .setId(null)
                        .setCreateTime(new Date())
@@ -409,17 +435,25 @@
                if (!asnOrderService.save(wkOrder)) {
                    throw new CoolException("单据保存失败!!");
                }
                List<SyncOrdersItem> ordersItems = syncOrder.getOrdersItems();
                ordersItems.forEach(item -> {
                    WkOrderItem wkOrderItem = new WkOrderItem();
                    BeanUtils.copyProperties(item, wkOrderItem);
                    wkOrderItem.setOrderCode(wkOrder.getCode())
                            .setOrderId(wkOrder.getId())
                            .setId(null);
                    if (!asnOrderItemService.save(wkOrderItem)) {
                        throw new CoolException("单据明细保存失败!!");
                syncOrder.getOrdersItems().forEach(orderItem -> {
                    Map<String, Object> map = new ObjectMapper().convertValue(orderItem, Map.class);
                    map.put("orderId", wkOrder.getId());
                    map.put("poId", wkOrder.getPoId());
                    map.put("poCode", wkOrder.getPoCode());
                    map.put("order_code", wkOrder.getCode());
                    if (!asnOrderItemService.fieldsSave(map, loginUserId)) {
                        throw new CoolException("明细保存失败!!");
                    }
                });
                List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                        .eq(WkOrderItem::getOrderId, wkOrder.getId()));
                double sum = orderItems.stream().mapToDouble(WkOrderItem::getAnfme).sum();
                wkOrder.setAnfme(sum);
                if (!asnOrderService.updateById(wkOrder)) {
                    throw new CoolException("计划收货数量修改失败!!");
                }
            });
        }
        return R.ok();
@@ -542,7 +576,7 @@
            revise.getItems().forEach(reviseItem -> {
                ReviseLogItem logItem = new ReviseLogItem();
                BeanUtils.copyProperties(reviseItem, logItem);
                Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, reviseItem.getMatnrCode()));
                Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, reviseItem.getMatnr()));
                if (Objects.isNull(matnr)) {
                    throw new CoolException("物料不存在!!");
                }
@@ -587,13 +621,13 @@
            }
            order.getOrdersItems().forEach(orderItem -> {
                WkOrderItem wkOrderItem = asnOrderItemService.getOne(new LambdaUpdateWrapper<WkOrderItem>()
                        .eq(WkOrderItem::getMatnrCode, orderItem.getMatnrCode())
                        .eq(WkOrderItem::getMatnrCode, orderItem.getMatnr())
                        .eq(StringUtils.isNotEmpty(orderItem.getBatch()), WkOrderItem::getSplrBatch, orderItem.getBatch())
                        .eq(WkOrderItem::getOrderCode, wkOrder.getCode()));
                if (!Objects.isNull(wkOrderItem)) {
                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>()
                            .eq(WkOrderItem::getOrderCode, wkOrder.getCode())
                            .eq(WkOrderItem::getMatnrCode, orderItem.getMatnrCode())
                            .eq(WkOrderItem::getMatnrCode, orderItem.getMatnr())
                            .eq(StringUtils.isNotEmpty(orderItem.getBatch()), WkOrderItem::getSplrBatch, orderItem.getBatch())
                            .eq(StringUtils.isNotEmpty(orderItem.getPlatItemId()), WkOrderItem::getPlatItemId, orderItem.getPlatItemId())
                            .set(WkOrderItem::getAnfme, orderItem.getAnfme()))) {
@@ -637,7 +671,7 @@
            }
            order.getOrdersItems().forEach(orderItem -> {
                if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
                        .eq(WkOrderItem::getMatnrCode, orderItem.getMatnrCode())
                        .eq(WkOrderItem::getMatnrCode, orderItem.getMatnr())
                        .eq(StringUtils.isNotEmpty(orderItem.getBatch()), WkOrderItem::getSplrBatch, orderItem.getBatch())
                        .eq(StringUtils.isNotEmpty(orderItem.getPlatItemId()), WkOrderItem::getPlatItemId, orderItem.getPlatItemId())
                        .eq(WkOrderItem::getOrderCode, wkOrder.getCode()))) {
@@ -710,4 +744,53 @@
        return R.ok().add(dtos);
    }
    /**
     * 基础物料信息变更
     * @param baseMatParms
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R matUpdate(BaseMatParms baseMatParms) {
        if (StringUtils.isNotBlank(baseMatParms.getMatnr())) {
            throw new CoolException("基础信息变更失败!!");
        }
        Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, baseMatParms.getMatnr()));
        if (Objects.isNull(matnr)) {
            BeanUtils.copyProperties(baseMatParms, matnr);
            matnr.setCode(baseMatParms.getMatnr());
            matnr.setName(baseMatParms.getMaktx());
            if (!Objects.isNull(baseMatParms.getGroupName())) {
                MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>()
                        .eq(MatnrGroup::getName, baseMatParms.getGroupName()));
                if (Objects.isNull(matnrGroup)) {
                    matnr.setGroupCode(matnrGroup.getCode()).setGroupId(matnrGroup.getId());
                }
            }
            if (!matnrService.save(matnr)) {
                throw new CoolException("物料新增失败!!");
            }
        } else {
            if (!Objects.isNull(baseMatParms.getGroupName())) {
                MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>()
                        .eq(MatnrGroup::getName, baseMatParms.getGroupName()));
                if (Objects.isNull(matnrGroup)) {
                    matnr.setGroupCode(matnrGroup.getCode()).setGroupId(matnrGroup.getId());
                }
            }
            matnr.setName(baseMatParms.getMaktx())
                    .setColor(baseMatParms.getColor())
                    .setModel(baseMatParms.getModel())
                    .setSpec(baseMatParms.getSpec());
            if (!matnrService.updateById(matnr)) {
                throw new CoolException("物料更新失败!!");
            }
        }
        return R.ok();
    }
}