rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/phyz/Order.java
@@ -75,4 +75,24 @@ private String saleUserId; // 销售员名称 private String saleUserName; public void setType(String type) { if (type == null) { this.type = type; } else { switch (type) { case "1": this.type = "out"; break; case "2": this.type = "in"; break; case "3": this.type = "check"; break; default: this.type = type; } } } } rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java
@@ -18,14 +18,42 @@ private static final long serialVersionUID = 1L; /* * 业务类型,待ERP补充,以下为示例: * 入库:收料通知单(PUR_ReceiveBill)、 * 采购入库单(STK_InStock)、 * 退料申请单(PUR_MRAPP)、 * 采购退料单(PUR_MRB)、 * 退货通知单(SAL_RETURNNOTICE)、 * 销售退货单(SAL_RETURNSTOCK)、 * 生产退料单(PRD_ReturnMtrl)、 * 生产入库单(PRD_INSTOCK)/ * 生产汇报单(PRD_MORPT)、 * 其他入库单(STK_MISCELLANEOUS) * 出库:发货通知单(SAL_DELIVERYNOTICE)、 * 销售出库单(SAL_OUTSTOCK)、 * 出库申请单(STK_OutStockApply)、 * 生产领料单(PRD_PickMtrl)、 * 生产补料单(PRD_FeedMtrl)、 * 其他出库单(STK_MisDelivery)调拨: * 调拨申请单(STK_TRANSFERAPPLY)、 * 直接调拨单(STK_TransferDirect) * */ @ApiModelProperty("业务类型") private String wkType; /* * 订单类型,1 出库单;2 入库单;3 调拨单; * */ @ApiModelProperty("单据类型") private String type; @ApiModelProperty("单号") private String orderNo; @ApiModelProperty("单据内码,唯一标识") private Long orderInternalCode; @ApiModelProperty("订单ID") private Long orderId; @@ -33,10 +61,70 @@ @ApiModelProperty("数量") private Double anfme; @ApiModelProperty("客户编码") private String customerId; @ApiModelProperty("客户名称") private String customerName; @ApiModelProperty("供应商编码") private String supplierId; @ApiModelProperty("供应商名称") private String supplierName; @DateTimeFormat(pattern = "yyyy-MM-dd HH:ss:mm") @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm") private Date arrTime; @ApiModelProperty("创建日期,时间戳,精确到秒") private Long createTime; @ApiModelProperty("业务日期,对账使用,时间戳,精确到秒") private Long businessTime; @ApiModelProperty("单据明细信息") private List<SyncOrdersItem> orderItems; @ApiModelProperty("收料/发货组织") private String stockOrgId; @ApiModelProperty("收料/发货组织名称") private String stockOrgName; @ApiModelProperty("采购组织") private String purchaseOrgId; @ApiModelProperty("采购组织名称") private String purchaseOrgName; @ApiModelProperty("采购员") private String purchaseUserId; @ApiModelProperty("采购员名称") private String purchaseUserName; @ApiModelProperty("生产组织") private String prdOrgId; @ApiModelProperty("生产组织名称") private String prdOrgName; @ApiModelProperty("销售组织") private String saleOrgId; @ApiModelProperty("销售组织名称") private String saleOrgName; @ApiModelProperty("销售员") private String saleUserId; @ApiModelProperty("销售员名称") private String saleUserName; @ApiModelProperty("库存方向") private String stockDirect; @ApiModelProperty("出入库接驳站点,出库时将物料出库后运输至该站点,入库时从该站点将物料运回库中") private String stationId; } rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java
@@ -66,4 +66,64 @@ @ApiModelProperty("现金票号") private String crushNo; @ApiModelProperty("计划跟踪号") private String planNo; @ApiModelProperty("行内码,唯一标识") private String lineId; @ApiModelProperty("物料编码") private String matNr; @ApiModelProperty("物料名称") private String makTx; @ApiModelProperty("规格") private String specs; @ApiModelProperty("基本单位") private String baseUnitId; @ApiModelProperty("托盘码,半成品/成品入库ERP需要传,非则ERP不需要传") private String palletId; @ApiModelProperty("计价单位") private String priceUnitId; @ApiModelProperty("建议目标仓库") private String targetWareHouseId; @ApiModelProperty("调出仓") private String sourceWareHouseId; @ApiModelProperty("入库类型") private String inStockType; @ApiModelProperty("货主类型") private String ownerTypeId; @ApiModelProperty("货主") private String ownerId; @ApiModelProperty("货主名称") private String ownerName; @ApiModelProperty("保管者类型") private String keeperTypeId; @ApiModelProperty("保管者") private String keeperId; @ApiModelProperty("保管者名称") private String keeperName; public void setMatNr(String matNr) { this.matNr = matNr; this.matnr = matNr; } public void setMakTx(String makTx) { this.makTx = makTx; this.maktx = makTx; } } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -44,6 +44,8 @@ import java.util.*; import java.util.stream.Collectors; import static com.vincent.rsf.server.system.utils.SerialRuleUtils.objectToMap; /** * @author Ryan * @version 1.0 @@ -405,13 +407,13 @@ public R syncCheckOrder(List<SyncOrderParams> syncOrders, Long loginUserId) { if (!syncOrders.isEmpty()) { syncOrders.forEach(syncOrder -> { WkOrder wkOrder = new WkOrder(); WkOrder wkOrder = new WkOrder(syncOrder); DictData one = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE) .eq(DictData::getValue, syncOrder.getWkType()), false); if (Objects.isNull(one)) { throw new CoolException("单据:" + syncOrder.getOrderNo() + ", 业务类型不存在!!"); } WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() 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)) { @@ -430,14 +432,21 @@ rule = SerialRuleCode.SYS_OUT_STOCK_CODE; } String ruleCode = SerialRuleUtils.generateRuleCode(rule, null); //银座特供 String orderNs = null; if (rule.equals(SerialRuleCode.SYS_ASN_ORDER) || rule.equals(SerialRuleCode.SYS_OUT_STOCK_CODE) ){ StringBuffer buffer = new StringBuffer(); Object poCode = syncOrder.getOrderNo(); orderNs = poCode == null ? "" : buffer.append(poCode).toString(); } String ruleCode = orderNs; wkOrder.setType(syncOrder.getType()) .setWkType(one.getValue()) .setAnfme(syncOrder.getAnfme()) .setPoCode(syncOrder.getOrderNo()) .setWorkQty(0.0) .setQty(0.0) .setPoId(syncOrder.getOrderId()) .setPoId(syncOrder.getOrderInternalCode()) .setCode(ruleCode) .setArrTime(syncOrder.getArrTime()) .setId(null) rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
@@ -185,7 +185,10 @@ } } } else { saveFields(params, params.get("index").toString()); Object index = params.get("index"); if (!Cools.isEmpty(index)) { saveFields(params, params.get("index").toString()); } } }