skyouc
2 天以前 f84b3af27f34be7e22990c54612f3110559c7710
盘点单、入库单、出库单同步接口
1个文件已删除
3个文件已修改
2个文件已添加
200 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
@@ -1,11 +1,13 @@
package com.vincent.rsf.server.api.controller.erp;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.controller.erp.params.CheckDiffParams;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.erp.params.OrderParams;
import com.vincent.rsf.server.api.controller.erp.params.SyncOrderParams;
import com.vincent.rsf.server.api.service.ReceiveMsgService;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,11 +20,12 @@
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@RestController
@RequestMapping("/order")
@Api(tags = "单据")
public class SyncOrderController {
public class SyncOrderController extends BaseController {
    @Autowired
    private ReceiveMsgService receiveMsgService;
@@ -87,11 +90,13 @@
     * @description: 同步盘点单据
     * @version 1.0
     */
    @ApiOperation("同步盘点单")
    @ApiOperation("同步单据")
    @PostMapping("/sync/checks")
    public R syncCheckResult(@RequestBody List<CheckDiffParams> checkDiffs) {
        return R.ok();
    public R syncCheckResult(@RequestBody SyncOrderParams syncOrders) {
        if (Objects.isNull(syncOrders)) {
            throw new CoolException("参数不能为空!!");
        }
        return receiveMsgService.syncCheckOrder(syncOrders, getLoginUserId());
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java
File was deleted
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java
New file
@@ -0,0 +1,23 @@
package com.vincent.rsf.server.api.controller.erp.params;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
@Data
@Accessors(chain = true)
@ApiModel(value = "SyncOrderParams", description = "单据同步参数")
public class SyncOrderParams implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("单据类型{in: 收货入库单, out:出库单,check: 盘点单,  }")
    private String type;
    @ApiModelProperty("单据明细信息")
    private List<SyncOrdersItem> items;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java
New file
@@ -0,0 +1,78 @@
package com.vincent.rsf.server.api.controller.erp.params;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.experimental.Accessors;
import lombok.Data;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@ApiModel(value = "SyncOrdersParams", description = "同步盘点参数")
public class SyncOrdersItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("盘点单明细ID")
    private Long id;
    @ApiModelProperty("订单ID")
    private Long orderId;
    @ApiModelProperty("订单状态{in: 入库单, out: 出库单, check: 盘点单}")
    private String orderType;
    @ApiModelProperty("业务类型")
    private String wkType;
    @ApiModelProperty("ASN单号")
    private String orderCode;
    @ApiModelProperty("物料标识")
    private Long matnrId;
    @ApiModelProperty("物料编码")
    private String matnrCode;
    @ApiModelProperty("物料名称")
    private String maktx;
    @ApiModelProperty("客单号")
    private String platOrderCode;
    @ApiModelProperty("平台标识(行号)")
    private String platItemId;
    @ApiModelProperty("工单号")
    private String platWorkCode;
    @ApiModelProperty("项目号")
    private String projectCode;
    @ApiModelProperty("字段索引")
    private String fieldsIndex;
    @ApiModelProperty("规格")
    private String spec;
    @ApiModelProperty("型号")
    private String model;
    @ApiModelProperty("送货数量")
    private Double anfme;
    @ApiModelProperty("库存单位")
    private String unit;
    @ApiModelProperty("库存批次")
    private String batch;
    @ApiModelProperty("已收数量")
    private Double qty;
    @ApiModelProperty("条形码")
    private String barcode;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
@@ -89,4 +89,12 @@
     * @version 1.0
     */
    R syncCompanies(List<CompaniesParam> companyParams);
    /**
     * @author Ryan
     * @date 2025/8/19
     * @description: 单据同步--收货通知单/出库单/盘点单
     * @version 1.0
     */
    R syncCheckOrder(SyncOrderParams syncOrders, Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -14,8 +14,8 @@
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.enums.OrderWorkType;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocAreaServiceImpl;
import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.Fields;
@@ -30,6 +30,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author Ryan
@@ -72,6 +73,7 @@
    private WarehouseService warehouseService;
    @Autowired
    private CompanysService companysService;
    /**
     * @author Ryan
@@ -354,4 +356,59 @@
        return R.ok();
    }
    @Override
    @Transactional(timeout = 60, rollbackFor = Exception.class)
    public R syncCheckOrder(SyncOrderParams syncOrders, Long loginUserId) {
        List<SyncOrdersItem> ordersItems = syncOrders.getItems();
        Map<String, List<SyncOrdersItem>> listMap = ordersItems.stream().collect(Collectors.groupingBy(SyncOrdersItem::getOrderCode));
        listMap.keySet().forEach(orderCode -> {
            WkOrder wkOrder = new WkOrder();
            String ruleCode = null;
            if (syncOrders.getType().equals(OrderType.ORDER_CHECK.type)) {
                 ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_CHECK_RULE_CODE, null);
            } else if (syncOrders.getType().equals(OrderType.ORDER_IN.type)) {
                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, null);
            } else if (syncOrders.getType().equals(OrderType.ORDER_OUT.type)) {
                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, null);
            }  else if (syncOrders.getType().equals(OrderType.ORDER_REVISE.type)) {
                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LOC_REVISE_CODE, null);
            } else if (syncOrders.getType().equals(OrderType.ORDER_TRANSFER.type)) {
                ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TRANSFER_ORDER_CODE, null);
            }
            SyncOrdersItem ordersItem = listMap.get(orderCode).stream().findFirst().get();
            Double anfmes = listMap.get(orderCode).stream().mapToDouble(SyncOrdersItem::getAnfme).sum();
            wkOrder.setType(syncOrders.getType())
                    .setWkType(OrderWorkType.getWorkType(ordersItem.getWkType()))
                    .setAnfme(anfmes)
                    .setPoCode(orderCode)
                    .setPoId(ordersItem.getId())
                    .setCode(ruleCode)
                    .setId(null)
                    .setCreateTime(new Date())
                    .setUpdateTime(new Date())
                    .setCreateBy(loginUserId)
                    .setUpdateBy(loginUserId);
            if (!asnOrderService.save(wkOrder)) {
                throw new CoolException("单据保存失败!!");
            }
            listMap.get(orderCode).forEach(order -> {
                WkOrderItem wkOrderItem = new WkOrderItem();
                BeanUtils.copyProperties(order, wkOrderItem);
                wkOrderItem.setOrderCode(wkOrder.getCode())
                        .setOrderId(wkOrder.getId())
                        .setId(null);
                if (!asnOrderItemService.save(wkOrderItem)) {
                    throw new CoolException("单据明细保存失败!!");
                }
            });
        });
        return R.ok();
    }
}