异构系统业务单据传入星瀚后自动拆行微服务

一、案例需求描述
作为库存管理人员,我希望星瀚下发至异构系统中的库存单据,在异构系统中通过某个维度进行分录明细行拆分后再次回传至星翰中时,星翰中对应的单据能依据回传单据自动拆行并对数量、金额等字段自动重算。
所以需要参照系统标准的拆行功能,提供一个二开拆行处理微服务接口。能解决星瀚下发异构系统业务单据回传拆行的痛点。
本案例以采购入库单为例说明。
关联实践案例如下:
实践案例 | 医药零售行业库存管理与WMS集成应用案例:
https://vip.kingdee.com/link/s/lQDbv
二、解决方案
【温馨提示:因企业业务场景存在不同程度的差异,此案例仅供参考,请根据现场实际业务情况探讨最优解决方案,并在上线前进行充分验证。】
异构系统根据拆分行服务接口构建拆分行数据参数,通过集成云调用拆分行微服务。
拆分行微服务接受拆分行数据,使用多叉树的数据结构存储和检索数据,根据分录行的行序号进行拆分,根据所传的明细行数量字段值进行金额及价税合计等字段的重算。
拆分行微服务会返回拆分是否成功的布尔值,如若拆分失败可在monitor日志中查看错误信息。
三、实现步骤
步骤1
根据拆分行微服务接口参数封装数据,封装的每个SpiltRowEntity实体对应着异构系统每行数据。
/**
* 拆分行单据实体
*/
public class SpiltRowEntity implements Serializable{
// 单据id
private final long billId;
// 行号
private final String lineSeq;
// 分录字段集合:Map<字段标识, 字段值>
private final Map<String, Object> fieldMap;
public SpiltRowEntity(long billId, String lineSeq, Map<String, Object> fieldMap) {
this.billId = billId;
this.lineSeq = lineSeq;
this.fieldMap = fieldMap;
}
public String getLineSeq() {
return lineSeq;
}
public long getBillId() {
return billId;
}
public Map<String, Object> getFieldMap() {
return fieldMap;
}
}步骤2
现场二开可以根据现场拆分行需求在服务接口中添加额外的字段处理逻辑以及金额类字段的重算逻辑。(源代码可在附件中下载)。
特殊逻辑字段处理:
Map<String, Object> faFieldMap = fatherNode.getValue().getFieldMap();
for (Map.Entry<String, Object> entry : faFieldMap.entrySet()) {
String fieldKey = entry.getKey();
Object fieldValue = entry.getValue();
//TODO: 单据体所有异构系统业务单据传入星瀚后自动拆行微服务
一、案例需求描述 作为库存管理人员,我希望星瀚下发至异构系统中的库存单据,在异构系统中通过某个维度进行分录明细行拆分后再次回...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



