售票登记-收款处理单据转换
This commit is contained in:
parent
fefd6e772e
commit
37788ee807
|
|
@ -0,0 +1,174 @@
|
|||
package shjh.jhzj7.fi.fi.plugin.convert;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
|
||||
import kd.bos.entity.botp.plugin.args.AfterBuildQueryParemeterEventArgs;
|
||||
import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs;
|
||||
import kd.bos.entity.botp.runtime.ConvertConst;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 单据转换插件
|
||||
* 收票登记-收款处理,付款人携带
|
||||
*/
|
||||
public class RecPayerConvertPlugin extends AbstractConvertPlugIn implements Plugin {
|
||||
|
||||
private final static Log logger = LogFactory.getLog(RecPayerConvertPlugin.class);
|
||||
|
||||
@Override
|
||||
public void afterBuildQueryParemeter(AfterBuildQueryParemeterEventArgs e) {
|
||||
//对方户名
|
||||
e.addSrcField("delivername");
|
||||
//资金组织
|
||||
e.addSrcField("company");
|
||||
//交票人类型
|
||||
e.addSrcField("payeetype");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConvert(AfterConvertEventArgs e) {
|
||||
logger.info("进入 afterConvert 方法,开始处理售票登记-收款处理单据转换逻辑...");
|
||||
|
||||
try {
|
||||
// 获取源单字段
|
||||
Map<String, DynamicProperty> fldProperties = e.getFldProperties();
|
||||
|
||||
ExtendedDataEntity[] extendedDataEntities = e.getTargetExtDataEntitySet().FindByEntityKey("cas_recbill");
|
||||
for (ExtendedDataEntity billEntity : extendedDataEntities) {
|
||||
// 获取单据数据包
|
||||
DynamicObject bill = billEntity.getDataEntity();
|
||||
String payeetype = (String) this.getSourceData(billEntity, fldProperties, "payeetype");
|
||||
if ("cdm_receivablebill".equals(bill.getString("sourcebilltype"))&&"bd_customer".equals(payeetype)){
|
||||
this.carryCustomerRule(bill,billEntity,fldProperties);
|
||||
}
|
||||
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
logger.error("售票登记-收款处理单据转换出错"+ex.getMessage());
|
||||
}
|
||||
logger.info("afterConvert 方法执行完毕。");
|
||||
}
|
||||
|
||||
|
||||
private void carryCustomerRule(DynamicObject bill, ExtendedDataEntity billEntity, Map<String, DynamicProperty> fldProperties) {
|
||||
//对方户名
|
||||
String accountName = (String) this.getSourceData(billEntity, fldProperties, "delivername");
|
||||
if (accountName==null){
|
||||
logger.error("未获取源单户名,转换终止!");
|
||||
return;
|
||||
}
|
||||
//资金组织
|
||||
Long companyId = (Long) this.getSourceData(billEntity, fldProperties, "company");
|
||||
if (companyId==null){
|
||||
logger.error("未获取源单资金组织,转换终止!");
|
||||
return;
|
||||
}
|
||||
DynamicObject company = BusinessDataServiceHelper.loadSingle(companyId, "bos_org");
|
||||
QFilter qFilter = new QFilter("shjh_dfhm", QCP.equals, accountName);
|
||||
//新增收款入账中心-资金组织&&映射表组织过滤
|
||||
qFilter.and(new QFilter("shjh_org.id", QCP.equals, companyId));
|
||||
qFilter.and(new QFilter("enable", QCP.equals, "1"));
|
||||
//1.对方户名与客户名称映射表 shjh_dfhmcust
|
||||
DynamicObject shjhDfhmcust = BusinessDataServiceHelper.loadSingle("shjh_dfhmcust", qFilter.toArray());
|
||||
if (null != shjhDfhmcust) {
|
||||
DynamicObject shjhCustomer = shjhDfhmcust.getDynamicObject("shjh_customer");
|
||||
if (null != shjhCustomer) {
|
||||
bill.set("payer", shjhCustomer.getPkValue()); //付款人id
|
||||
bill.set("payernumber", shjhCustomer.getString("number")); //付款人编码
|
||||
bill.set("payername", shjhCustomer.getString("name")); //付款人名称
|
||||
}
|
||||
} else {
|
||||
//2.规则生单未配置客户——>取收款入账中心客户
|
||||
QFilter customerFilter = new QFilter("name", QCP.equals, accountName);
|
||||
customerFilter.and(new QFilter("group.name", QCP.not_equals, "员工"));
|
||||
//可用状态
|
||||
customerFilter.and(new QFilter("enable", QCP.equals, "1"));
|
||||
DynamicObject[] bd_customer = BusinessDataServiceHelper.load("bd_customer", "id,name", customerFilter.toArray());
|
||||
boolean exitCustomerArray = false;
|
||||
if (null != bd_customer && bd_customer.length != 0) {
|
||||
if (bd_customer.length == 1) {
|
||||
bill.set("payer", bd_customer[0].getPkValue()); //付款人id
|
||||
bill.set("payernumber", bd_customer[0].getString("number")); //付款人编码
|
||||
bill.set("payername", bd_customer[0].getString("name")); //付款人名称
|
||||
exitCustomerArray = true;
|
||||
} else {
|
||||
//存在多个客户,判断组织编码companyNumber是否在客户基础资料客户组5分录中的销售公司编码中配置
|
||||
List<DynamicObject> matchingCustomers = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < bd_customer.length; i++) {
|
||||
Set<String> numberSet = new HashSet<>();
|
||||
DynamicObject customer = BusinessDataServiceHelper.loadSingle(bd_customer[i].getPkValue(), "bd_customer");
|
||||
if (customer != null) {
|
||||
DynamicObjectCollection dynamicObjectCollection = customer.getDynamicObjectCollection("shjh_entry_five");
|
||||
if (dynamicObjectCollection != null && dynamicObjectCollection.size() != 0) {
|
||||
for (DynamicObject item : dynamicObjectCollection) {
|
||||
String saleCompanyNum = item.getString("shjh_salecompanynum");
|
||||
if (saleCompanyNum != null && !"".equals(saleCompanyNum)) {
|
||||
numberSet.add(saleCompanyNum);
|
||||
}
|
||||
}
|
||||
if (numberSet.contains(company.getString("number"))) {
|
||||
matchingCustomers.add(bd_customer[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 处理匹配结果
|
||||
if (matchingCustomers.size() == 1) {
|
||||
// 只有一个客户匹配,使用该客户
|
||||
bill.set("payer", matchingCustomers.get(0).getPkValue());
|
||||
bill.set("payernumber", matchingCustomers.get(0).getString("number"));
|
||||
bill.set("payername", matchingCustomers.get(0).getString("name"));
|
||||
exitCustomerArray = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!exitCustomerArray) {
|
||||
//4.规则生单未配置客户——>默认不确定客户
|
||||
QFilter qFilter1 = new QFilter("number", QCP.equals, "1042086"); //4000042
|
||||
DynamicObject bdCustomer = BusinessDataServiceHelper.loadSingle("bd_customer", qFilter1.toArray());
|
||||
if (null != bdCustomer) {
|
||||
bill.set("payer", bdCustomer.getPkValue()); //付款人id
|
||||
bill.set("payernumber", bdCustomer.getString("number")); //付款人编码
|
||||
bill.set("payername", bdCustomer.getString("name")); //付款人名称
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
bill.set("shjh_xdgzkh", true);//设置收款单标记位 从规则携带客户等信息 为true
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取源单字段数据
|
||||
*
|
||||
* @param billEntity 源单数据包
|
||||
* @param fldProperties 源单字段
|
||||
* @param name 字段标识
|
||||
* @return
|
||||
*/
|
||||
private Object getSourceData(ExtendedDataEntity billEntity, Map<String, DynamicProperty> fldProperties, String name) {
|
||||
List<DynamicObject> sourceRows = (List<DynamicObject>) billEntity.getValue(ConvertConst.ConvExtDataKey_SourceRows);
|
||||
if (sourceRows == null || sourceRows.isEmpty()) {
|
||||
logger.warn("未获取到源单行数据,跳过处理。");
|
||||
return null;
|
||||
}
|
||||
DynamicObject srcRow = sourceRows.get(0);
|
||||
// 获取源单 ID
|
||||
DynamicProperty idProperty = fldProperties.get(name);
|
||||
if (idProperty == null) {
|
||||
logger.warn("未获取到源单 ID 属性,跳过处理。");
|
||||
return null;
|
||||
}
|
||||
return idProperty.getValue(srcRow);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue