创建{bd}模块、添加抬头信息、生成核算维度
This commit is contained in:
parent
ac406666e1
commit
9394b44f78
@ -19,6 +19,9 @@ include(
|
||||
':yem-wm-es',
|
||||
':yem-wm-is',
|
||||
':yem-wm-ct',
|
||||
|
||||
|
||||
':yem-wm-bd',
|
||||
)
|
||||
|
||||
// -------------- 引入苍穹调试工程模块 --------------
|
||||
@ -43,3 +46,8 @@ project(':yem-wm-es').projectDir = new File('yem-wm/yem-wm-es')
|
||||
project(':yem-wm-is').projectDir = new File('yem-wm/yem-wm-is')
|
||||
// -------------- 引入wm云-ct应用模块 --------------
|
||||
project(':yem-wm-ct').projectDir = new File('yem-wm/yem-wm-ct')
|
||||
|
||||
|
||||
|
||||
// -------------- 引入wm云-bd应用模块 --------------
|
||||
project(':yem-wm-bd').projectDir = new File('yem-wm/yem-wm-bd')
|
||||
|
@ -0,0 +1,22 @@
|
||||
package yem.base.common.utils;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description 组织帮助类
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 11:13
|
||||
*/
|
||||
public class OrgUtil {
|
||||
public static List<Long> getOrgPattern(){
|
||||
DynamicObjectCollection typeColl = QueryServiceHelper.query("bos_org_pattern", "id,number",
|
||||
new QFilter[]{new QFilter("patterntype", "in", new String[]{"1", "2"})});
|
||||
List<Long> patternList = typeColl.stream().map(x -> x.getLong("id")).collect(Collectors.toList());
|
||||
return patternList;
|
||||
}
|
||||
}
|
@ -1,30 +1,34 @@
|
||||
/*
|
||||
* This is a kingdee cosmic template project that is automatically generated by the Kingdee cosmic development assistant plugin.
|
||||
* If there are any issues during the use process, you can provide feedback to the kingdee developer community website.
|
||||
* Website: https://developer.kingdee.com/developer?productLineId=29
|
||||
* Author: liebin.zheng
|
||||
* Generate Date: 2024-04-19 14:42:16
|
||||
*/
|
||||
|
||||
dependencies {
|
||||
|
||||
// 公共基础包
|
||||
implementation project(':yem-base-common')
|
||||
|
||||
// 引入wmc云 - ydn应用模块
|
||||
implementation project(':yem-wmc-ydn')
|
||||
// 引入wmc云 ca应用模块
|
||||
implementation project(':yem-wmc-ca')
|
||||
// 引入wmc云 imc应用模块
|
||||
implementation project(':yem-wmc-imc')
|
||||
|
||||
// 引入wm云 cm应用模块
|
||||
implementation project(':yem-wm-cm')
|
||||
// 引入wm云 es应用模块
|
||||
implementation project(':yem-wm-es')
|
||||
// 引入wm云 is应用模块
|
||||
implementation project(':yem-wm-is')
|
||||
// 引入wm云 ct应用模块
|
||||
implementation project(':yem-wm-ct')
|
||||
|
||||
/*
|
||||
* This is a kingdee cosmic template project that is automatically generated by the Kingdee cosmic development assistant plugin.
|
||||
* If there are any issues during the use process, you can provide feedback to the kingdee developer community website.
|
||||
* Website: https://developer.kingdee.com/developer?productLineId=29
|
||||
* Author: liebin.zheng
|
||||
* Generate Date: 2024-04-19 14:42:16
|
||||
*/
|
||||
|
||||
dependencies {
|
||||
|
||||
// 公共基础包
|
||||
implementation project(':yem-base-common')
|
||||
|
||||
// 引入wmc云 - ydn应用模块
|
||||
implementation project(':yem-wmc-ydn')
|
||||
// 引入wmc云 ca应用模块
|
||||
implementation project(':yem-wmc-ca')
|
||||
// 引入wmc云 imc应用模块
|
||||
implementation project(':yem-wmc-imc')
|
||||
|
||||
// 引入wm云 cm应用模块
|
||||
implementation project(':yem-wm-cm')
|
||||
// 引入wm云 es应用模块
|
||||
implementation project(':yem-wm-es')
|
||||
// 引入wm云 is应用模块
|
||||
implementation project(':yem-wm-is')
|
||||
// 引入wm云 ct应用模块
|
||||
implementation project(':yem-wm-ct')
|
||||
|
||||
|
||||
// 引入wm云 bd应用模块
|
||||
implementation project(':yem-wm-bd')
|
||||
|
||||
}
|
13
yem-wm/yem-wm-bd/build.gradle
Normal file
13
yem-wm/yem-wm-bd/build.gradle
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* This is a kingdee cosmic template project that is automatically generated by the Kingdee cosmic development assistant plugin.
|
||||
* If there are any issues during the use process, you can provide feedback to the kingdee developer community website.
|
||||
* Website: https://developer.kingdee.com/developer?productLineId=29
|
||||
* Author: liebin.zheng
|
||||
* Generate Date: 2025-02-07 11:06:50
|
||||
*/
|
||||
|
||||
dependencies {
|
||||
api project(':yem-base-common')
|
||||
}
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
16
yem-wm/yem-wm-bd/build/tmp/jar/MANIFEST.MF
Normal file
16
yem-wm/yem-wm-bd/build/tmp/jar/MANIFEST.MF
Normal file
@ -0,0 +1,16 @@
|
||||
Manifest-Version: 1.0
|
||||
Jar-Id:
|
||||
Project-Name: yem-wm-bd
|
||||
Build-Tool: Gradle 7.6.3
|
||||
Build-Date: 2025-02-15 10:49:38
|
||||
Built-By: Kingdee Cosmic Developer Tools
|
||||
Build-Num: 20250215104938457
|
||||
App-Name:
|
||||
Git-Branch: yem_goodday_zh
|
||||
Cloud-Name:
|
||||
Group-Name: yem.cosmic
|
||||
Bundle-Version: 1.0.0
|
||||
Git-Commit-Hash: 20330ae5e80eca3fd4d5412f4f4d9e814230fa0f
|
||||
Build-Image:
|
||||
Build-Jdk: 1.8.0_131
|
||||
|
2
yem-wm/yem-wm-bd/build/tmp/sourcesJar/MANIFEST.MF
Normal file
2
yem-wm/yem-wm-bd/build/tmp/sourcesJar/MANIFEST.MF
Normal file
@ -0,0 +1,2 @@
|
||||
Manifest-Version: 1.0
|
||||
|
@ -0,0 +1,157 @@
|
||||
package yem.wm.bd.addcompany.dynamic;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import yem.base.common.utils.OrgUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
import yem.wm.bd.util.BothCardHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 添加公司抬头--表单插件
|
||||
* 1、加载界面时,默认获取单据中的{抬头明细(隐藏)}中的公司抬头信息自动给界面赋值
|
||||
* 2、切换公司,重新加载公司的默认信息
|
||||
* 3、点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 10:14
|
||||
*/
|
||||
public class AddCompanyDynamicPlugin extends AbstractBillPlugIn {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
BothCardHelper.init(this);//加载父页面的信息携带到动态表单上
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
this.addClickListeners("yem_companybank", "yem_companylinkman");
|
||||
this.addClickListeners("btnok");
|
||||
this.initF7();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 对公司进行添加事件的注册以及过滤
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void initF7() {
|
||||
String orgtype = (String) this.getModel().getValue("yem_orgtype");//判断系统使用的是《业务单元》还是《公司抬头》
|
||||
if ("bos_org".equals(orgtype)) {
|
||||
BasedataEdit orgF7 = this.getControl("yem_org");//获取公司抬头控件
|
||||
orgF7.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
||||
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||
QFilter qFilter = new QFilter("orgpattern", "in", OrgUtil.getOrgPattern());
|
||||
showParameter.getListFilterParameter().setFilter(qFilter);//列表添加条件:判断公司《组织形态》中的【组织类型】是否是法人企业、法人分支机构
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
Control c = (Control) evt.getSource();
|
||||
String key = c.getKey().toLowerCase();
|
||||
switch (key) {
|
||||
case "yem_companylinkman"://联系人
|
||||
BothCardHelper.showChangePage(this, "yem_bd_companymaninfor");//跳转动态表单
|
||||
break;
|
||||
case "yem_companybank"://开户行
|
||||
BothCardHelper.showChangePage(this, "yem_bd_companybankinfor");//跳转动态表单
|
||||
break;
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定给父页面返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
String key = e.getProperty().getName();
|
||||
ChangeData[] changeData = e.getChangeSet();
|
||||
Object newValue = changeData[0].getNewValue();
|
||||
switch (key) {
|
||||
case "yem_org"://组织
|
||||
this.companyChanged(newValue);//切换组织,根据默认逻辑给公司信息赋值
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 切换公司组织,公司信息进行重新赋值
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void companyChanged(Object newValue) {
|
||||
DynamicObject company = (DynamicObject) newValue;
|
||||
if (company != null) {
|
||||
String orgtype = (String) this.getModel().getValue("yem_orgtype");//获取组织类型
|
||||
company = BusinessDataServiceHelper.loadSingleFromCache(company.getLong("id"), company.getDataEntityType().getName());
|
||||
DynamicObject org = null;
|
||||
|
||||
if ("bos_org".equals(orgtype)) {
|
||||
org = company;//判断是《业务单元》,默认取值为公司
|
||||
} else {
|
||||
org = company.getDynamicObject("yem_org");//判断是《公司抬头》,取值为《公司抬头》中的《组织》
|
||||
}
|
||||
|
||||
if (org != null) {
|
||||
BothCardHelper.fillCoInfo(this.getModel(), org);////默认给表单所有信息赋值
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
String id = e.getActionId();
|
||||
Object returnData = e.getReturnData();
|
||||
switch (id) {
|
||||
case "yem_bd_companymaninfor"://《公司联系人信息》表单标识
|
||||
BothCardHelper.setCompanyManInfor(this, returnData, null);//点击《公司联系人信息》之后,给父页面的信息赋值
|
||||
break;
|
||||
|
||||
case "yem_bd_companybankinfor"://《公司银行信息》表单标识
|
||||
BothCardHelper.setCompanyBankInfor(this, returnData);//点击《公司银行信息》之后,给父页面的信息赋值
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void btnOk() {
|
||||
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
BothCardHelper.btnOkParent(this);//将动态表单的信息返回给付页面
|
||||
String defaultInfor = this.getView().getPageCache().get("data");
|
||||
if (YEM.isNotEmpty(defaultInfor)) {
|
||||
parentModel.setValue("yem_isdefaultinfor", defaultInfor);//默认信息(公司)
|
||||
}
|
||||
|
||||
DynamicObject company = (DynamicObject) model.getValue("yem_org");
|
||||
String companyName = company != null ? company.getString("name") : "";
|
||||
parentModel.setValue("yem_companyname", companyName);//公司名称
|
||||
|
||||
view.sendFormAction(parentView);
|
||||
view.close();
|
||||
}
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
package yem.wm.bd.addcustomer.dynamic;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
|
||||
import yem.wm.bd.util.BothCardHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 添加客户
|
||||
* 1、加载界面时,默认获取单据中的{抬头明细(隐藏)}中的客户信息自动给界面赋值
|
||||
* 2、切换【客户】,重新加载【客户】的默认信息
|
||||
* 3、点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 15:15
|
||||
*/
|
||||
public class AddCustomerDynamicPlugin extends AbstractBillPlugIn {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
BothCardHelper.init(this);//加载父页面的信息携带到动态表单上
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("yem_customerbank", "yem_customerlinkman");
|
||||
this.addClickListeners("btnok");
|
||||
this.initF7();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 对客户进行添加事件的注册以及过滤
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
private void initF7() {
|
||||
IFormView parentView = this.getView().getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
DynamicObject org = (DynamicObject) parentModel.getValue("org");//获取父页面的【组织】
|
||||
BasedataEdit baseDataCtr = this.getControl("yem_customer");//获取【客户】字段控件
|
||||
baseDataCtr.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
||||
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||
if (org != null) {
|
||||
QFilter filter = BaseDataServiceHelper.getBaseDataFilter(showParameter.getBillFormId(), org.getLong("id"));//根据【组织】对【客户】字段进行过滤
|
||||
if (filter != null) {
|
||||
filter.and(new QFilter("status", "=", "C"));
|
||||
} else {
|
||||
filter = new QFilter("status", "=", "C");
|
||||
}
|
||||
showParameter.getListFilterParameter().getQFilters().add(filter);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param e
|
||||
* @return void
|
||||
* @Description: 切换字段发生只改变
|
||||
* @function 切换【客户】发生改变
|
||||
* @purposes 用途
|
||||
*/
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
String key = e.getProperty().getName();
|
||||
switch (key) {
|
||||
case "yem_customer"://客户
|
||||
BothCardHelper.setCustomerInfor(this);//切换客户,根据默认逻辑给客户信息赋值
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
Control c = (Control) evt.getSource();
|
||||
String key = c.getKey().toLowerCase();
|
||||
switch (key) {
|
||||
case "yem_customerbank":// 开户行
|
||||
BothCardHelper.showChangePage(this, "yem_bd_customerbankinfor");//跳转动态表单
|
||||
break;
|
||||
case "yem_customerlinkman":// 点击联系人
|
||||
BothCardHelper.showChangePage(this, "yem_bd_customermaninfor");//跳转动态表单
|
||||
break;
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定给父页面返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
private void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
BothCardHelper.btnOkParent(this);//将动态表单的信息返回给付页面
|
||||
DynamicObject customer = (DynamicObject) model.getValue("yem_customer");
|
||||
|
||||
String companyName = customer != null ? customer.getString("name") : "";
|
||||
parentModel.setValue("yem_customername", companyName);//客户名称
|
||||
|
||||
view.sendFormAction(parentView);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
String id = e.getActionId();
|
||||
Object returnData = e.getReturnData();
|
||||
switch (id) {
|
||||
case "yem_bd_customerbankinfor"://《客户银行信息》回填
|
||||
BothCardHelper.setCustBankInfor(this, returnData);//点击《客户银行信息》之后,给父页面的信息赋值
|
||||
break;
|
||||
case "yem_bd_customermaninfor"://《客户联系人信息》回填
|
||||
BothCardHelper.setCustManInfor(this, returnData);//点击《客户联系人信息》之后,给父页面的信息赋值
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
package yem.wm.bd.addsupplier.dynamic;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
|
||||
import yem.wm.bd.util.BothCardHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 添加供应商
|
||||
* 1、加载界面时,默认获取单据中的{抬头明细(隐藏)}中的供应商信息自动给界面赋值
|
||||
* 2、切换【供应商】,重新加载【供应商】的默认信息
|
||||
* 3、点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 16:32
|
||||
*/
|
||||
public class AddSupplierDynamicPlugin extends AbstractBillPlugIn {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
BothCardHelper.init(this);//加载父页面的信息携带到动态表单上
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("yem_supplierbank", "yem_supplierlinkman");
|
||||
this.addClickListeners("btnok");
|
||||
this.initF7();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 对供应商进行添加事件的注册以及过滤
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
private void initF7() {
|
||||
IFormView parentView = this.getView().getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
DynamicObject org = (DynamicObject) parentModel.getValue("org");//获取父页面的【组织】
|
||||
BasedataEdit baseDataCtr = this.getControl("yem_supplier");//获取【供应商】字段控件
|
||||
if (baseDataCtr == null) {
|
||||
return;
|
||||
}
|
||||
baseDataCtr.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
||||
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||
if (org != null) {
|
||||
QFilter filter = BaseDataServiceHelper.getBaseDataFilter(showParameter.getBillFormId(), org.getLong("id"));//根据【组织】对【供应商】字段进行过滤
|
||||
if (filter != null) {
|
||||
filter.and(new QFilter("status", "=", "C"));
|
||||
} else {
|
||||
filter = new QFilter("status", "=", "C");
|
||||
}
|
||||
showParameter.getListFilterParameter().getQFilters().add(filter);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param e
|
||||
* @return void
|
||||
* @Description: 切换字段发生只改变
|
||||
* @function 切换【供应商】发生改变
|
||||
* @purposes 用途
|
||||
*/
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
String key = e.getProperty().getName();
|
||||
switch (key) {
|
||||
case "yem_supplier"://供应商
|
||||
BothCardHelper.setSupplierInfor(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
Control c = (Control) evt.getSource();
|
||||
String key = c.getKey().toLowerCase();
|
||||
switch (key) {
|
||||
case "yem_supplierbank":// 开户行
|
||||
BothCardHelper.showChangePage(this, "yem_bd_supplierbankinfor");//跳转动态表单
|
||||
break;
|
||||
case "yem_supplierlinkman":// 点击联系人
|
||||
BothCardHelper.showChangePage(this, "yem_bd_suppliermaninfor");//跳转动态表单
|
||||
break;
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
private void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
BothCardHelper.btnOkParent(this);//将动态表单的信息返回给付页面
|
||||
DynamicObject supplier = (DynamicObject) model.getValue("yem_supplier");//获取供应商
|
||||
String companyName = supplier != null ? supplier.getString("name") : "";
|
||||
parentModel.setValue("yem_suppliername", companyName);//供应商名称
|
||||
|
||||
view.sendFormAction(parentView);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
String id = e.getActionId();
|
||||
Object returnData = e.getReturnData();
|
||||
switch (id) {
|
||||
case "yem_bd_supplierbankinfor":
|
||||
BothCardHelper.setSuppBankInfor(this, returnData);
|
||||
break;
|
||||
// 联系人信息回填
|
||||
case "yem_bd_suppliermaninfor":
|
||||
BothCardHelper.setCustManInfor(this, returnData);//点击《供应商联系人信息》之后,给父页面的信息赋值
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
package yem.wm.bd.bulkbilltpl.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import yem.base.common.utils.OrgUtil;
|
||||
import yem.wm.bd.util.BothCardHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 抬头信息加载功能
|
||||
* 1、在新增单据时,抬头信息根据【公司】加载公司的默认信息
|
||||
* 2、点击客户、供应商、公司面板弹动态表单,在动态表单上填写信息,然后回填到单据上
|
||||
* 3、在打开单据时以及动态表单回传单据时,给抬头信息中的标签默认赋值
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-07 18:20
|
||||
*/
|
||||
public class BulkbilltplFiDBillPlugin extends AbstractBillPlugIn {
|
||||
|
||||
/**
|
||||
* @param e
|
||||
* @return void
|
||||
* @Description: 在新增单据时,默认给{抬头明细(隐藏)}赋默认值
|
||||
* @function 根据【公司】默认赋值
|
||||
* @purposes
|
||||
*/
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
DynamicObject org = (DynamicObject) this.getModel().getValue("org");//公司
|
||||
if (org != null) {
|
||||
QFilter[] qFilters = new QFilter[]{new QFilter("orgpattern", "in", OrgUtil.getOrgPattern()),
|
||||
new QFilter("id", "=", org.getPkValue())};//添加公司的判断条件,在公司的条件下,判断公司《组织形态》中的【组织类型】是否是法人企业、法人分支机构
|
||||
if (QueryServiceHelper.exists("bos_org", qFilters)) {//判断业务单元的数据是否满足条件
|
||||
BothCardHelper.fillCoInfo(this.getModel(), org);//默认给{抬头明细(隐藏)}信息赋值
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param e
|
||||
* @return void
|
||||
* @Description: 打开单据默认给标签赋值
|
||||
* @function 在打开单据时,根据{抬头明细(隐藏)}信息中的字段数据默认给客户、供应商、公司标签赋默认值
|
||||
* @purposes 用途
|
||||
*/
|
||||
@Override
|
||||
public void afterBindData(EventObject e) {
|
||||
BothCardHelper.setCoLabel(this);//默认给公司的标签赋值
|
||||
BothCardHelper.setSupplierLabel(this);//默认给供应商的标签赋值
|
||||
BothCardHelper.setCustomerLabel(this);//默认给客户的标签赋值
|
||||
}
|
||||
|
||||
/**
|
||||
* @param e
|
||||
* @return void
|
||||
* @Description: 注册标签,添加事件
|
||||
* @function 功能
|
||||
* @purposes 在click中可以触发
|
||||
*/
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
this.addClickListeners("yem_card_addgys", "yem_addgys1", "yem_addgys2",
|
||||
"yem_card_addco", "yem_addco1", "yem_addco2",
|
||||
"yem_card_addkh", "yem_addpayer", "yem_addpayer1",
|
||||
"yem_changegys", "yem_changeco", "yem_changepayer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
String name = this.getModel().getDataEntityType().getName();
|
||||
switch (key) {
|
||||
case "yem_card_addco"://添加公司的图标
|
||||
case "yem_addco1"://添加公司的标签【+】
|
||||
case "yem_addco2"://添加公司的标签【添加】
|
||||
case "yem_changeco"://切换公司的标签【切换】
|
||||
BothCardHelper.showChangePage(this, "yem_bd_addcompany");//跳转动态表单
|
||||
break;
|
||||
|
||||
case "yem_card_addgys"://添加供应商的图标
|
||||
case "yem_addgys1"://添加供应商的标签【+】
|
||||
case "yem_addgys2"://添加供应商的标签【添加】
|
||||
case "yem_changegys"://切换供应商的标签【切换】
|
||||
BothCardHelper.showChangePage(this, "yem_bd_addsupplier");//跳转动态表单
|
||||
break;
|
||||
|
||||
case "yem_card_addkh"://添加客户的图标
|
||||
case "yem_addpayer"://添加客户的标签【+】
|
||||
case "yem_addpayer1"://添加客户的标签【添加】
|
||||
case "yem_changepayer"://切换客户的标签【切换】
|
||||
BothCardHelper.showChangePage(this, "yem_bd_addcustomer");//跳转动态表单
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
String id = e.getActionId();
|
||||
switch (id) {
|
||||
case "yem_bd_addcompany"://《添加公司抬头》动态表单标识
|
||||
BothCardHelper.setCoLabel(this);//默认给公司的标签赋值
|
||||
break;
|
||||
case "yem_bd_addsupplier"://《添加供应商》动态表单标识
|
||||
BothCardHelper.setSupplierLabel(this);//默认给供应商的标签赋值
|
||||
break;
|
||||
case "yem_bd_addcustomer"://《添加客户》动态表单标识
|
||||
BothCardHelper.setCustomerLabel(this);//默认给客户的标签赋值
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
package yem.wm.bd.companybankinfor.dynamic;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import yem.wm.bd.util.BothCardHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 公司银行信息
|
||||
* 1、加载界面时,默认获取《公司抬头》中的{银行信息}自动给单据体赋值
|
||||
* 2、选中行数据之后,点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 11:42
|
||||
*/
|
||||
public class CompanyBankInforDynamicPlugin extends AbstractBillPlugIn {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
DynamicObject company = (DynamicObject) parentModel.getValue("yem_org");//获取父页面的【公司抬头】
|
||||
if (company != null) {
|
||||
String orgtype = (String) parentModel.getValue("yem_orgtype");//获取父页面的【组织类型】
|
||||
DynamicObject org = null;
|
||||
if ("bos_org".equals(orgtype)) {
|
||||
org = BothCardHelper.queryCompany(company);//系统参数是《业务单元》,根据《业务单元》获取《公司抬头》
|
||||
} else {
|
||||
org = BusinessDataServiceHelper.loadSingleFromCache(company.getLong("id"), company.getDataEntityType().getName());
|
||||
}
|
||||
|
||||
DynamicObjectCollection banksentry = org.getDynamicObjectCollection("yem_banksentry");//获取《公司抬头》中的{银行信息}
|
||||
for (DynamicObject bank : banksentry) {
|
||||
int row = model.createNewEntryRow("yem_entryentity");//动态表单添加行
|
||||
model.setValue("yem_account", bank.get("yem_account"), row);//银行账号
|
||||
model.setValue("yem_accountnumber", bank.get("yem_accountnumber"), row);//银行账号
|
||||
model.setValue("yem_accountname", bank.get("yem_accountname"), row);//账户名称
|
||||
model.setValue("yem_bankaccount", bank.get("yem_bankaccount"), row);//开户银行
|
||||
model.setValue("yem_bankaddress", bank.get("yem_bankaddress"), row);//银行地址
|
||||
model.setValue("yem_swiftcode", bank.get("yem_swiftcode"), row);//swift code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "btnok"://点击确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
*/
|
||||
private void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
int selectRows = ((EntryGrid) view.getControl("yem_entryentity")).getEntryState().getFocusRow();//获取选中行的行数
|
||||
DynamicObject row = model.getEntryRowEntity("yem_entryentity", selectRows);//获取选中行的数据
|
||||
view.returnDataToParent(row);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("btnok");
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package yem.wm.bd.companyinfo.operation;
|
||||
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import yem.wm.bd.companyinfo.validator.CompanyInfoSaveValidator;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 公司抬头保存操作
|
||||
* 校验{银行信息}、{联系人信息}有且有唯一的默认值
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 17:05
|
||||
*/
|
||||
public class CompanyInfoSaveOpService extends AbstractOperationServicePlugIn {
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
List<String> fieldKeys = e.getFieldKeys();
|
||||
fieldKeys.add("yem_isdefaultbank");//{银行信息}--【默认】
|
||||
fieldKeys.add("yem_isdefaultlinkman");//{联系人信息}--【默认】
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
e.addValidator(new CompanyInfoSaveValidator());
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package yem.wm.bd.companyinfo.validator;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description 公司抬头保存校验
|
||||
* 校验{银行信息}、{联系人信息}有且有唯一的默认值
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 17:09
|
||||
*/
|
||||
public class CompanyInfoSaveValidator extends AbstractValidator {
|
||||
@Override
|
||||
public void validate() {
|
||||
for (ExtendedDataEntity extendedDataEntity : this.getDataEntities()) {
|
||||
checkDefault(extendedDataEntity);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 校验逻辑
|
||||
* @function 校验{银行信息}、{联系人信息}有且仅有唯一的默认值
|
||||
* @purposes 用途
|
||||
* @param extendedDataEntity
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public void checkDefault(ExtendedDataEntity extendedDataEntity) {
|
||||
DynamicObject dataEntity = extendedDataEntity.getDataEntity();//获取单据的实体
|
||||
|
||||
DynamicObjectCollection banksentry = dataEntity.getDynamicObjectCollection("yem_banksentry");//获取《公司抬头》--{银行信息}
|
||||
List<DynamicObject> isdefaultbank = banksentry.stream().filter(x -> x.getBoolean("yem_isdefaultbank") == true).collect(Collectors.toList());//获取《公司抬头》--{银行信息}中【默认】为是的集合
|
||||
if (banksentry.size() > 0 && (isdefaultbank.size() > 1 || isdefaultbank.size() == 0)) {
|
||||
this.addErrorMessage(extendedDataEntity, "银行信息中需要有一个默认。");
|
||||
}
|
||||
|
||||
DynamicObjectCollection linkmanentry = dataEntity.getDynamicObjectCollection("yem_linkmanentry");//获取《公司抬头》--{联系人信息}
|
||||
List<DynamicObject> isdefaultlinkman = linkmanentry.stream().filter(x -> x.getBoolean("yem_isdefaultlinkman") == true).collect(Collectors.toList());//获取《公司抬头》--{联系人信息}中【默认】为是的集合
|
||||
if (linkmanentry.size() > 0 && (isdefaultlinkman.size() > 1 || isdefaultlinkman.size() == 0)) {
|
||||
this.addErrorMessage(extendedDataEntity, "联系人信息中需要有一个默认的联系人。");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
package yem.wm.bd.companymaninfor.dynamic;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import yem.wm.bd.util.BothCardHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description 公司人员信息--表单插件
|
||||
* 1、加载界面时,默认获取《公司抬头》中的{联系人信息}自动给单据体赋值
|
||||
* 2、选中行数据之后,点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 14:39
|
||||
*/
|
||||
public class CompanyManInforDynamicPlugin extends AbstractFormPlugin {
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
IFormView view = this.getView();//动态表单的view视图
|
||||
IDataModel model = view.getModel();//动态表单的model模型
|
||||
|
||||
IFormView parentView = view.getParentView();//获取父页面的view视图
|
||||
IDataModel parentModel = parentView.getModel();//获取父页面的model模型
|
||||
|
||||
DynamicObject company = (DynamicObject) parentModel.getValue("yem_org");//获取父页面的【公司字段】
|
||||
if (company != null) {
|
||||
String orgtype = (String) parentModel.getValue("yem_orgtype");//获取父页面的【组织类型】
|
||||
DynamicObject org = null;
|
||||
if ("bos_org".equals(orgtype)) {
|
||||
org = BothCardHelper.queryCompany(company);//系统参数是《业务单元》,获取《公司抬头》
|
||||
} else {
|
||||
org = BusinessDataServiceHelper.loadSingleFromCache(company.getLong("id"), company.getDataEntityType().getName());
|
||||
}
|
||||
|
||||
if (org != null) {
|
||||
DynamicObjectCollection linkmanentry = org.getDynamicObjectCollection("yem_linkmanentry");//《公司抬头》信息中{联系人信息}
|
||||
for (DynamicObject linkman : linkmanentry) {
|
||||
int row = model.createNewEntryRow("yem_entryentity");//动态表单单据体添加行
|
||||
model.setValue("yem_companylinkman", linkman.get("yem_contactperson"), row);//人员
|
||||
model.setValue("yem_companytel", linkman.get("yem_phonenum"), row);//电话
|
||||
model.setValue("yem_companyemail", linkman.get("yem_addemail"), row);//E-Mail
|
||||
model.setValue("yem_companyvx", linkman.get("yem_suppliervx"), row);//微信
|
||||
model.setValue("yem_companyqq", linkman.get("yem_supplierqq"), row);//QQ
|
||||
model.setValue("yem_companyfax", org.get("yem_fax"), row);//传真
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @return void
|
||||
*/
|
||||
public void btnOk() {
|
||||
EntryGrid entryGrid = this.getView().getControl("yem_entryentity");//获取单据体控件
|
||||
int[] selectRows = entryGrid.getSelectRows();//获取选中的行数
|
||||
List<DynamicObject> list = new ArrayList<>();
|
||||
for (int rowIndex : selectRows) {
|
||||
DynamicObject entryRowEntity = this.getModel().getEntryRowEntity("yem_entryentity", rowIndex);
|
||||
list.add(entryRowEntity);
|
||||
}
|
||||
|
||||
List<DynamicObject> defaultInfor = list.stream().filter(x -> x.getBoolean("yem_default") == true).collect(Collectors.toList());//判断选中的行数中是否勾选了【默认】
|
||||
if (defaultInfor.size() == 0 || defaultInfor.size() > 1){
|
||||
this.getView().showErrorNotification("公司联系人信息中需要有勾选一个默认的联系人。");
|
||||
return;
|
||||
}
|
||||
this.getView().returnDataToParent(list);
|
||||
this.getView().close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("btnok");
|
||||
}
|
||||
}
|
@ -0,0 +1,284 @@
|
||||
package yem.wm.bd.createbasedata.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.dataentity.metadata.IDataEntityProperty;
|
||||
import kd.bos.dataentity.metadata.IDataEntityType;
|
||||
import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
|
||||
import kd.bos.dataentity.serialization.SerializationUtils;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.designer.botp.BillTreeBuildParameter;
|
||||
import kd.bos.designer.botp.EntityParseHelper;
|
||||
import kd.bos.designer.query.QueryEntityParseHelper;
|
||||
import kd.bos.designer.query.QueryEntityTreeBuildParameter;
|
||||
import kd.bos.entity.EntityType;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.botp.CRFormula;
|
||||
import kd.bos.entity.botp.plugin.args.LoadFuncTypesEventArgs;
|
||||
import kd.bos.entity.botp.runtime.ConvertFuncLoader;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.entity.function.FunctionTypes;
|
||||
import kd.bos.entity.property.AttachmentProp;
|
||||
import kd.bos.entity.property.IFieldHandle;
|
||||
import kd.bos.entity.tree.TreeNode;
|
||||
import kd.bos.form.CloseCallBack;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 字段映射配置-表单插件
|
||||
* 1、选择【目标实体】自动带出【目标实体】中的所有字段
|
||||
* 2、值改变清空【源单字段】、【计算公式】,自动清空与之对应的隐藏字段
|
||||
* 3、点击【源单字段】之后,跳转《选择单据字段》,然后在《选择单据字段》中点击确定之后,携带信息到表单上
|
||||
* 4、点击【计算公式】之后,跳转《表达式》,然后在《表达式》中点击确定之后,携带信息到单据上
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-13 14:19
|
||||
*/
|
||||
public class FieldMapBillPlugin extends AbstractBillPlugIn {
|
||||
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
String name = e.getProperty().getName();
|
||||
ChangeData[] changeSet = e.getChangeSet();
|
||||
Object newValue = changeSet[0].getNewValue();
|
||||
int rowIndex = changeSet[0].getRowIndex();
|
||||
switch (name) {
|
||||
case "yem_targetentity"://目标实体
|
||||
setTargetVAlue();//选择【目标实体】,自动带出【目标实体】对应的所有字段
|
||||
break;
|
||||
case "yem_sourcefield":
|
||||
if (YEM.isEmpty(newValue)) {
|
||||
this.getModel().setValue("yem_sourcekey", "", rowIndex);//清空【源单字段】,清空隐藏的【源单字段标识】
|
||||
}
|
||||
break;
|
||||
case "yem_formulas":
|
||||
if (YEM.isEmpty(newValue)) {
|
||||
this.getModel().setValue("yem_math", "", rowIndex);//清空【计算公式】,清空隐藏的【公式】
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @Description: 选择【目标实体】,自动带出【目标实体】对应的所有字段
|
||||
* @function
|
||||
* @purposes
|
||||
*/
|
||||
public void setTargetVAlue() {
|
||||
this.getModel().deleteEntryData("yem_fieldcontrast_e");//先清楚{字段对照}单据体所有数据
|
||||
DynamicObject targetentity = (DynamicObject) this.getModel().getValue("yem_targetentity");//获取【目标实体】
|
||||
if (targetentity == null) return;
|
||||
MainEntityType dataEntityType = MetadataServiceHelper.getDataEntityType(targetentity.getString("number"));//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
|
||||
for (EntityType entityType : dataEntityType.getAllEntities().values()) {//遍历字段类型
|
||||
for (IDataEntityProperty property : entityType.getFields().values()) {
|
||||
if (!(property instanceof IFieldHandle)) continue;
|
||||
int rowIndex = this.getModel().createNewEntryRow("yem_fieldcontrast_e");//{字段对照}添加行
|
||||
DynamicProperty field = (DynamicProperty) property;
|
||||
String targetFieldKey = field.getName();//获取字段标识
|
||||
String targetFieldName = buildPropFullCaption(property);//获取字段名称
|
||||
this.getModel().setValue("yem_targetkey", targetFieldKey, rowIndex);
|
||||
this.getModel().setValue("yem_targetfield", targetFieldName, rowIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 获取字段的名称
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @param property 字段实体属性
|
||||
* @return String 返回字段名称(包含单据体名称)
|
||||
*/
|
||||
public String buildPropFullCaption(IDataEntityProperty property) {
|
||||
List<String> captions = new ArrayList();
|
||||
IDataEntityType parentType = property.getParent(); //获取字段的上级控件
|
||||
LocaleString displayCaption;
|
||||
if (parentType instanceof MainEntityType) {//判断上级控件是实体
|
||||
captions.add("单据头");
|
||||
} else if (parentType instanceof EntityType) {//判断上级控件是单据体
|
||||
displayCaption = (parentType).getDisplayName();//获取单据体的名称
|
||||
captions.add(displayCaption == null ? "" : displayCaption.toString());
|
||||
}
|
||||
|
||||
if (property instanceof DynamicProperty) {
|
||||
displayCaption = property.getDisplayName();
|
||||
captions.add(displayCaption == null ? property.getName() : displayCaption.toString());
|
||||
} else {
|
||||
captions.add(property.getName());
|
||||
}
|
||||
|
||||
return StringUtils.join(captions.toArray(), ".");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
this.addClickListeners("yem_sourcefield", "yem_formulas");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "yem_sourcefield"://【源单字段】
|
||||
showSourceField();//点击【源单字段】,跳转《选择单据字段》
|
||||
break;
|
||||
case "yem_formulas"://【计算公式】
|
||||
showFormula();//点击【计算公式】,跳转《表达式》
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 跳转《表达式》
|
||||
* @function 创建树形结构,然后跳转《选择单据字段》携带参数
|
||||
* @purposes
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public void showFormula() {
|
||||
DynamicObject sourceentity = (DynamicObject) this.getModel().getValue("yem_sourceentity");//获取【源单实体】
|
||||
if (sourceentity == null) {
|
||||
this.getView().showErrorNotification("请先填写源单实体。");
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicObject targetentity = (DynamicObject) this.getModel().getValue("yem_targetentity");//获取【目标单实体】
|
||||
MainEntityType targeEntityType = MetadataServiceHelper.getDataEntityType(targetentity.getString("number"));//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
int row = this.getModel().getEntryCurrentRowIndex("yem_fieldcontrast_e");
|
||||
String targetPropName = (String) this.getModel().getValue("yem_targetkey", row);
|
||||
IDataEntityProperty targetProperty = targeEntityType.findProperty(targetPropName);
|
||||
if (targetProperty == null || (targetProperty instanceof AttachmentProp)) return;
|
||||
|
||||
MainEntityType sourceMainType = MetadataServiceHelper.getDataEntityType(sourceentity.getString("number"));//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
|
||||
BillTreeBuildParameter parameter = new BillTreeBuildParameter(sourceMainType);//创建树性结构的参数
|
||||
parameter.setIncludePKField(true);//是否包含单据id
|
||||
TreeNode billTreeNode = EntityParseHelper.buildBillTreeNodes(parameter);//创建树性结构
|
||||
String billNodeJson = SerializationUtils.toJsonString(billTreeNode);//序列化树形结构
|
||||
|
||||
String formula = (String) this.getModel().getValue("yem_math", row);//获取【计算公式】
|
||||
if (StringUtils.isBlank(formula)) {
|
||||
CRFormula crFormula = new CRFormula();
|
||||
formula = SerializationUtils.toJsonString(crFormula);//序列话计算公式
|
||||
}
|
||||
|
||||
FunctionTypes functionTypes = FunctionTypes.getCommonFuncs();//输出预置的公共函数
|
||||
FunctionTypes cloudFunc = ConvertFuncLoader.loadBizCloudFuncTypes();
|
||||
functionTypes.getFunctionGroups().addAll(cloudFunc.getFunctionGroups());//添加函数分组集合
|
||||
functionTypes.getFunctionTypes().addAll(cloudFunc.getFunctionTypes());//添加函数定义集合
|
||||
LoadFuncTypesEventArgs args = new LoadFuncTypesEventArgs(functionTypes);
|
||||
String funcsXML = FunctionTypes.serializeToXML(args.getFuncTypes());//对预置的函数进行序列化
|
||||
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setFormId("botp_formula");//跳转《表达式》
|
||||
showParameter.getCustomParams().put("formula", formula);//传参,计算公式的参数
|
||||
showParameter.getCustomParams().put("entitynumber", sourceentity.getString("number"));//传参, 单据标识
|
||||
showParameter.getCustomParams().put("treenodes", billNodeJson);//传参,序列化的树形结构
|
||||
|
||||
showParameter.getCustomParams().put("functiontypes", funcsXML);//传参,序列化的预置函数
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this, "yem_formulas"));
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 跳转《选择单据字段》
|
||||
* @function 创建树形结构,然后跳转《选择单据字段》携带参数
|
||||
* @purposes 用途
|
||||
* @return void
|
||||
*/
|
||||
public void showSourceField() {
|
||||
DynamicObject sourceentity = (DynamicObject) this.getModel().getValue("yem_sourceentity");//获取【源单实体】
|
||||
if (sourceentity == null) {
|
||||
this.getView().showErrorNotification("请先填写源单实体。");
|
||||
return;
|
||||
}
|
||||
|
||||
DynamicObject targetentity = (DynamicObject) this.getModel().getValue("yem_targetentity");//获取【目标单实体】
|
||||
MainEntityType targeEntityType = MetadataServiceHelper.getDataEntityType(targetentity.getString("number"));//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
|
||||
int row = this.getModel().getEntryCurrentRowIndex("yem_fieldcontrast_e");//获取当前焦点行
|
||||
String targetFieldValue = (String) this.getModel().getValue("yem_targetkey", row);//获取【目标字段】的标识
|
||||
|
||||
IDataEntityProperty targetProperty = targeEntityType.findProperty(targetFieldValue);///需要过滤显示的字段类型,根据【目标字段】进行过滤
|
||||
if (targetProperty == null) return;
|
||||
|
||||
MainEntityType sourceMainType = MetadataServiceHelper.getDataEntityType(sourceentity.getString("number"));//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
BillTreeBuildParameter parameter = new BillTreeBuildParameter(sourceMainType, null, targetProperty);//创建树性结构的参数,树形结构显示的字段类型和【目标字段】一致
|
||||
parameter.setIncludePKField(true);//是否包含单据id
|
||||
TreeNode billTreeNode = EntityParseHelper.buildBillTreeNodes(parameter);//创建树性结构
|
||||
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setFormId("botp_selectfield");
|
||||
String nodesJson = SerializationUtils.toJsonString(billTreeNode);//序列化
|
||||
showParameter.getCustomParams().put("treenodes", nodesJson);//传参
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this, "yem_sourcefield"));
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
String actionId = e.getActionId();
|
||||
Object returnData = e.getReturnData();
|
||||
switch (actionId) {
|
||||
case "yem_sourcefield"://【源单字段】
|
||||
setSourceInfor((String) returnData);//《选择单据字段》点击确定之后,将信息返回到单据上
|
||||
break;
|
||||
case "yem_formulas":
|
||||
setForMulas((String) returnData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 《表达式》点击确定之后,将信息返回到单据上
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @param returnData 《表达式》的返回值(序列化后的计算表达式)
|
||||
* @return void
|
||||
*/
|
||||
public void setForMulas(String returnData) {
|
||||
if (StringUtils.isNotBlank(returnData)) {
|
||||
CRFormula formula = SerializationUtils.fromJsonString(returnData, CRFormula.class);//将返回值转换成计算公式
|
||||
int row = this.getModel().getEntryCurrentRowIndex("yem_fieldcontrast_e");//获取选中的焦点行
|
||||
this.getModel().setValue("yem_math", returnData, row);//计算公式序列话后的数据
|
||||
this.getModel().setValue("yem_formulas", formula.getExprDesc(), row);//输出合并后的计算公式描述
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 《选择单据字段》点击确定之后,将信息返回到单据上
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @param returnData 《选择单据字段》的返回值(字段标识)
|
||||
* @return void
|
||||
*/
|
||||
public void setSourceInfor(String returnData) {
|
||||
DynamicObject sourceentity = (DynamicObject) this.getModel().getValue("yem_sourceentity");//获取【源单实体】
|
||||
MainEntityType sourceMainType = MetadataServiceHelper.getDataEntityType(sourceentity.getString("number"));//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
IDataEntityProperty property = null;
|
||||
for (EntityType entityType : sourceMainType.getAllEntities().values()) {
|
||||
if (!entityType.getFields().containsKey(returnData)) continue;//判断返回的字段标识是否存在
|
||||
property = entityType.getFields().get(returnData);
|
||||
}
|
||||
if (property == null) return;
|
||||
int rowIndex = this.getModel().getEntryCurrentRowIndex("yem_fieldcontrast_e");//获取选中的焦点行
|
||||
this.getModel().setValue("yem_sourcekey", returnData, rowIndex);//【源单字段标识】
|
||||
this.getModel().setValue("yem_sourcefield", buildPropFullCaption(property), rowIndex);//【源单字段】
|
||||
}
|
||||
}
|
@ -0,0 +1,110 @@
|
||||
package yem.wm.bd.createbasedata.operation;
|
||||
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.IDataEntityType;
|
||||
import kd.bos.dataentity.serialization.SerializationUtils;
|
||||
import kd.bos.entity.EntityType;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.botp.CRFormula;
|
||||
import kd.bos.entity.formula.BOSExpressionContext;
|
||||
import kd.bos.entity.formula.CalcExprParser;
|
||||
import kd.bos.entity.formula.RowDataModel;
|
||||
import kd.bos.entity.function.FunctionManage;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import yem.base.common.utils.DynamicObjectUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 审核生成合同资料
|
||||
* 1、第一次点击审核生成合同资料
|
||||
* 2、第二次点击审核以及合同变更更新合同资料
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-13 10:04
|
||||
*/
|
||||
public class CreateContractAuditOpPlugin extends AbstractOperationServicePlugIn {
|
||||
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
DynamicObject[] dataEntities = e.getDataEntities();
|
||||
for (DynamicObject dataEntity : dataEntities) {
|
||||
String name = dataEntity.getDataEntityType().getName();
|
||||
dataEntity = BusinessDataServiceHelper.loadSingleFromCache(dataEntity.getLong("id"), name);//变更方案确认之后,添加泵更更新的逻辑
|
||||
createDataBase(dataEntity, name);//生成以及跟新《合同资料》
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dataEntity 合同实体
|
||||
* @param name 合同标识
|
||||
* @return void
|
||||
* @Description: 生成以及更新《合同资料》
|
||||
* @function 审核时生成《合同资料》以及更新《合同资料》
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void createDataBase(DynamicObject dataEntity, String name) {
|
||||
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
|
||||
qFilters.add(new QFilter("yem_billkey", QCP.equals, name));//《合同资料》中【单据标识】条件
|
||||
qFilters.add(new QFilter("yem_billid", QCP.equals, dataEntity.getLong("id")));
|
||||
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_bd_contractinfor", false);
|
||||
DynamicObject baseData = BusinessDataServiceHelper.loadSingle("yem_bd_contractinfor", selectfields, qFilters.toArray(new QFilter[]{}));//根据条件查询《合同资料》
|
||||
|
||||
if (baseData == null) {//如果查询到的《合同资料》为空,则创建《合同资料》实体
|
||||
baseData = BusinessDataServiceHelper.newDynamicObject("yem_bd_contractinfor");
|
||||
}
|
||||
|
||||
qFilters.clear();
|
||||
qFilters.add(new QFilter("yem_sourceentity.number", QCP.equals, name));
|
||||
qFilters.add(new QFilter("yem_targetentity.number", QCP.equals, "yem_bd_contractinfor"));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_bd_fieldmap", false);
|
||||
selectfield = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_bd_fieldmap", "yem_fieldcontrast_e", false);
|
||||
DynamicObject fieldmap = BusinessDataServiceHelper.loadSingle("yem_bd_fieldmap", selectfield, qFilters.toArray(new QFilter[]{}));//查询《字段映射配置》表
|
||||
if (fieldmap != null) {
|
||||
DynamicObjectCollection fieldcontrastEntry = fieldmap.getDynamicObjectCollection("yem_fieldcontrast_e");//获取《字段映射》配置中的{字段对照}
|
||||
MainEntityType dataEntityType = MetadataServiceHelper.getDataEntityType(name);//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (DynamicObject entry : fieldcontrastEntry) {
|
||||
String sourcekey = entry.getString("yem_sourcekey");//获取《字段映射配置》中{字段对照}【源单标识】字段
|
||||
String math = entry.getString("yem_math");//获取《字段映射配置》中{字段对照}【计算公式】字段
|
||||
Object value = null;
|
||||
if (YEM.isNotEmpty(sourcekey)) {
|
||||
for (EntityType type : dataEntityType.getAllEntities().values()) {
|
||||
if (!(type instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!type.getFields().containsKey(sourcekey)) continue;;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
value = dataEntity.get(sourcekey);
|
||||
}
|
||||
|
||||
} else if (YEM.isNotEmpty(math)) {
|
||||
CRFormula formula = SerializationUtils.fromJsonString(math, CRFormula.class);//对【计算公式】进行序列话
|
||||
String expression = formula.getExpression();//获取计算公式的表达式
|
||||
//RowDataModel第一个入参要传入当前的实体名,如解析单据体的数据,则传入单据体标识
|
||||
RowDataModel rowDataModel = new RowDataModel(name, dataEntityType);
|
||||
rowDataModel.setRowContext(dataEntity);
|
||||
BOSExpressionContext bosExpressionContext = new BOSExpressionContext(rowDataModel);//创建表达式运行上下文对象
|
||||
value = CalcExprParser.getExpressionValue(expression, bosExpressionContext, FunctionManage.get());//根据表达式取值
|
||||
}
|
||||
//目标字段
|
||||
String targetfieidexp = entry.getString("yem_targetkey");
|
||||
MainEntityType dataTarEntityType = MetadataServiceHelper.getDataEntityType("yem_bd_contractinfor");//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (EntityType entityType : dataTarEntityType.getAllEntities().values()) {
|
||||
if (!(entityType instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!entityType.getFields().containsKey(targetfieidexp)) continue;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
baseData.set(targetfieidexp, value);
|
||||
}
|
||||
}
|
||||
OperationServiceHelper.executeOperate("save", "yem_bd_contractinfor", new DynamicObject[]{baseData}, OperateOption.create());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,108 @@
|
||||
package yem.wm.bd.createbasedata.operation;
|
||||
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.serialization.SerializationUtils;
|
||||
import kd.bos.entity.EntityType;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.botp.CRFormula;
|
||||
import kd.bos.entity.formula.BOSExpressionContext;
|
||||
import kd.bos.entity.formula.CalcExprParser;
|
||||
import kd.bos.entity.formula.RowDataModel;
|
||||
import kd.bos.entity.function.FunctionManage;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import yem.base.common.utils.DynamicObjectUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 审核生成协议资料
|
||||
* 1、第一次点击审核生成协议资料
|
||||
* 2、第二次点击审核以及合同变更更新协议资料
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-14 18:12
|
||||
*/
|
||||
public class CreateDealAuditOpPlugin extends AbstractOperationServicePlugIn {
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
DynamicObject[] dataEntities = e.getDataEntities();
|
||||
for (DynamicObject dataEntity : dataEntities) {
|
||||
String name = dataEntity.getDataEntityType().getName();
|
||||
dataEntity = BusinessDataServiceHelper.loadSingleFromCache(dataEntity.getLong("id"), name);//变更方案确认之后,添加泵更更新的逻辑
|
||||
createDataBase(dataEntity, name);//生成以及跟新《协议资料》
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dataEntity 合同实体
|
||||
* @param name 合同标识
|
||||
* @return void
|
||||
* @Description: 生成以及更新《协议资料》
|
||||
* @function 审核时生成《协议资料》以及更新《协议资料》
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void createDataBase(DynamicObject dataEntity, String name) {
|
||||
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
|
||||
qFilters.add(new QFilter("yem_billkey", QCP.equals, name));//《协议资料》中【单据标识】条件
|
||||
qFilters.add(new QFilter("yem_billid", QCP.equals, dataEntity.getLong("id")));
|
||||
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_bd_agreementinfo", false);
|
||||
DynamicObject baseData = BusinessDataServiceHelper.loadSingle("yem_bd_agreementinfo", selectfields, qFilters.toArray(new QFilter[]{}));//根据条件查询《协议资料》
|
||||
|
||||
if (baseData == null) {//如果查询到的《协议资料》为空,则创建《协议资料》实体
|
||||
baseData = BusinessDataServiceHelper.newDynamicObject("yem_bd_agreementinfo");
|
||||
}
|
||||
|
||||
qFilters.clear();
|
||||
qFilters.add(new QFilter("yem_sourceentity.number", QCP.equals, name));
|
||||
qFilters.add(new QFilter("yem_targetentity.number", QCP.equals, "yem_bd_agreementinfo"));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_bd_fieldmap", false);
|
||||
selectfield = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_bd_fieldmap", "yem_fieldcontrast_e", false);
|
||||
DynamicObject fieldmap = BusinessDataServiceHelper.loadSingle("yem_bd_fieldmap", selectfield, qFilters.toArray(new QFilter[]{}));//查询《字段映射配置》表
|
||||
if (fieldmap != null) {
|
||||
DynamicObjectCollection fieldcontrastEntry = fieldmap.getDynamicObjectCollection("yem_fieldcontrast_e");//获取《字段映射》配置中的{字段对照}
|
||||
MainEntityType dataEntityType = MetadataServiceHelper.getDataEntityType(name);//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (DynamicObject entry : fieldcontrastEntry) {
|
||||
String sourcekey = entry.getString("yem_sourcekey");//获取《字段映射配置》中{字段对照}【源单标识】字段
|
||||
String math = entry.getString("yem_math");//获取《字段映射配置》中{字段对照}【计算公式】字段
|
||||
Object value = null;
|
||||
if (YEM.isNotEmpty(sourcekey)) {
|
||||
for (EntityType type : dataEntityType.getAllEntities().values()) {
|
||||
if (!(type instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!type.getFields().containsKey(sourcekey)) continue;;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
value = dataEntity.get(sourcekey);
|
||||
}
|
||||
|
||||
} else if (YEM.isNotEmpty(math)) {
|
||||
CRFormula formula = SerializationUtils.fromJsonString(math, CRFormula.class);//对【计算公式】进行序列话
|
||||
String expression = formula.getExpression();//获取计算公式的表达式
|
||||
//RowDataModel第一个入参要传入当前的实体名,如解析单据体的数据,则传入单据体标识
|
||||
RowDataModel rowDataModel = new RowDataModel(name, dataEntityType);
|
||||
rowDataModel.setRowContext(dataEntity);
|
||||
BOSExpressionContext bosExpressionContext = new BOSExpressionContext(rowDataModel);//创建表达式运行上下文对象
|
||||
value = CalcExprParser.getExpressionValue(expression, bosExpressionContext, FunctionManage.get());//根据表达式取值
|
||||
}
|
||||
//目标字段
|
||||
String targetfieidexp = entry.getString("yem_targetkey");
|
||||
MainEntityType dataTarEntityType = MetadataServiceHelper.getDataEntityType("yem_bd_agreementinfo");//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (EntityType entityType : dataTarEntityType.getAllEntities().values()) {
|
||||
if (!(entityType instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!entityType.getFields().containsKey(targetfieidexp)) continue;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
baseData.set(targetfieidexp, value);
|
||||
}
|
||||
}
|
||||
OperationServiceHelper.executeOperate("save", "yem_bd_agreementinfo", new DynamicObject[]{baseData}, OperateOption.create());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,108 @@
|
||||
package yem.wm.bd.createbasedata.operation;
|
||||
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.serialization.SerializationUtils;
|
||||
import kd.bos.entity.EntityType;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.botp.CRFormula;
|
||||
import kd.bos.entity.formula.BOSExpressionContext;
|
||||
import kd.bos.entity.formula.CalcExprParser;
|
||||
import kd.bos.entity.formula.RowDataModel;
|
||||
import kd.bos.entity.function.FunctionManage;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import yem.base.common.utils.DynamicObjectUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 审核生成保险资料
|
||||
* 1、第一次点击审核生成保险资料
|
||||
* 2、第二次点击审核以及合同变更更新保险资料
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-14 18:20
|
||||
*/
|
||||
public class CreateInsuranceAuditOpPlugin extends AbstractOperationServicePlugIn {
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
DynamicObject[] dataEntities = e.getDataEntities();
|
||||
for (DynamicObject dataEntity : dataEntities) {
|
||||
String name = dataEntity.getDataEntityType().getName();
|
||||
dataEntity = BusinessDataServiceHelper.loadSingleFromCache(dataEntity.getLong("id"), name);//变更方案确认之后,添加泵更更新的逻辑
|
||||
createDataBase(dataEntity, name);//生成以及跟新《保险资料》
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dataEntity 合同实体
|
||||
* @param name 合同标识
|
||||
* @return void
|
||||
* @Description: 生成以及更新《保险资料》
|
||||
* @function 审核时生成《保险资料》以及更新《保险资料》
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void createDataBase(DynamicObject dataEntity, String name) {
|
||||
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
|
||||
qFilters.add(new QFilter("yem_billkey", QCP.equals, name));//《保险资料》中【单据标识】条件
|
||||
qFilters.add(new QFilter("yem_billid", QCP.equals, dataEntity.getLong("id")));
|
||||
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_bd_insuranceinfor", false);
|
||||
DynamicObject baseData = BusinessDataServiceHelper.loadSingle("yem_bd_insuranceinfor", selectfields, qFilters.toArray(new QFilter[]{}));//根据条件查询《保险资料》
|
||||
|
||||
if (baseData == null) {//如果查询到的《保险资料》为空,则创建《保险资料》实体
|
||||
baseData = BusinessDataServiceHelper.newDynamicObject("yem_bd_insuranceinfor");
|
||||
}
|
||||
|
||||
qFilters.clear();
|
||||
qFilters.add(new QFilter("yem_sourceentity.number", QCP.equals, name));
|
||||
qFilters.add(new QFilter("yem_targetentity.number", QCP.equals, "yem_bd_insuranceinfor"));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_bd_fieldmap", false);
|
||||
selectfield = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_bd_fieldmap", "yem_fieldcontrast_e", false);
|
||||
DynamicObject fieldmap = BusinessDataServiceHelper.loadSingle("yem_bd_fieldmap", selectfield, qFilters.toArray(new QFilter[]{}));//查询《字段映射配置》表
|
||||
if (fieldmap != null) {
|
||||
DynamicObjectCollection fieldcontrastEntry = fieldmap.getDynamicObjectCollection("yem_fieldcontrast_e");//获取《字段映射》配置中的{字段对照}
|
||||
MainEntityType dataEntityType = MetadataServiceHelper.getDataEntityType(name);//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (DynamicObject entry : fieldcontrastEntry) {
|
||||
String sourcekey = entry.getString("yem_sourcekey");//获取《字段映射配置》中{字段对照}【源单标识】字段
|
||||
String math = entry.getString("yem_math");//获取《字段映射配置》中{字段对照}【计算公式】字段
|
||||
Object value = null;
|
||||
if (YEM.isNotEmpty(sourcekey)) {
|
||||
for (EntityType type : dataEntityType.getAllEntities().values()) {
|
||||
if (!(type instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!type.getFields().containsKey(sourcekey)) continue;;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
value = dataEntity.get(sourcekey);
|
||||
}
|
||||
|
||||
} else if (YEM.isNotEmpty(math)) {
|
||||
CRFormula formula = SerializationUtils.fromJsonString(math, CRFormula.class);//对【计算公式】进行序列话
|
||||
String expression = formula.getExpression();//获取计算公式的表达式
|
||||
//RowDataModel第一个入参要传入当前的实体名,如解析单据体的数据,则传入单据体标识
|
||||
RowDataModel rowDataModel = new RowDataModel(name, dataEntityType);
|
||||
rowDataModel.setRowContext(dataEntity);
|
||||
BOSExpressionContext bosExpressionContext = new BOSExpressionContext(rowDataModel);//创建表达式运行上下文对象
|
||||
value = CalcExprParser.getExpressionValue(expression, bosExpressionContext, FunctionManage.get());//根据表达式取值
|
||||
}
|
||||
//目标字段
|
||||
String targetfieidexp = entry.getString("yem_targetkey");
|
||||
MainEntityType dataTarEntityType = MetadataServiceHelper.getDataEntityType("yem_bd_insuranceinfor");//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (EntityType entityType : dataTarEntityType.getAllEntities().values()) {
|
||||
if (!(entityType instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!entityType.getFields().containsKey(targetfieidexp)) continue;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
baseData.set(targetfieidexp, value);
|
||||
}
|
||||
}
|
||||
OperationServiceHelper.executeOperate("save", "yem_bd_insuranceinfor", new DynamicObject[]{baseData}, OperateOption.create());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
package yem.wm.bd.createbasedata.operation;
|
||||
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.serialization.SerializationUtils;
|
||||
import kd.bos.entity.EntityType;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.botp.CRFormula;
|
||||
import kd.bos.entity.formula.BOSExpressionContext;
|
||||
import kd.bos.entity.formula.CalcExprParser;
|
||||
import kd.bos.entity.formula.RowDataModel;
|
||||
import kd.bos.entity.function.FunctionManage;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import yem.base.common.utils.DynamicObjectUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 审核生成发票资料
|
||||
* 1、第一次点击审核生成发票资料
|
||||
* 2、第二次点击审核以及合同变更更新发票资料
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-14 18:06
|
||||
*/
|
||||
public class CreateInvoiceAuditOpPlugin extends AbstractOperationServicePlugIn {
|
||||
|
||||
@Override
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
DynamicObject[] dataEntities = e.getDataEntities();
|
||||
for (DynamicObject dataEntity : dataEntities) {
|
||||
String name = dataEntity.getDataEntityType().getName();
|
||||
dataEntity = BusinessDataServiceHelper.loadSingleFromCache(dataEntity.getLong("id"), name);//变更方案确认之后,添加泵更更新的逻辑
|
||||
createDataBase(dataEntity, name);//生成以及跟新《发票资料》
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dataEntity 合同实体
|
||||
* @param name 合同标识
|
||||
* @return void
|
||||
* @Description: 生成以及更新《发票资料》
|
||||
* @function 审核时生成《发票资料》以及更新《发票资料》
|
||||
* @purposes 用途
|
||||
*/
|
||||
public void createDataBase(DynamicObject dataEntity, String name) {
|
||||
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
|
||||
qFilters.add(new QFilter("yem_billkey", QCP.equals, name));//《发票资料》中【单据标识】条件
|
||||
qFilters.add(new QFilter("yem_billid", QCP.equals, dataEntity.getLong("id")));
|
||||
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_bd_invoiceinfor", false);
|
||||
DynamicObject baseData = BusinessDataServiceHelper.loadSingle("yem_bd_invoiceinfor", selectfields, qFilters.toArray(new QFilter[]{}));//根据条件查询《发票资料》
|
||||
|
||||
if (baseData == null) {//如果查询到的《发票资料》为空,则创建《发票资料》实体
|
||||
baseData = BusinessDataServiceHelper.newDynamicObject("yem_bd_invoiceinfor");
|
||||
}
|
||||
|
||||
qFilters.clear();
|
||||
qFilters.add(new QFilter("yem_sourceentity.number", QCP.equals, name));
|
||||
qFilters.add(new QFilter("yem_targetentity.number", QCP.equals, "yem_bd_invoiceinfor"));
|
||||
String selectfield = DynamicObjectUtil.getSelectfields("yem_bd_fieldmap", false);
|
||||
selectfield = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_bd_fieldmap", "yem_fieldcontrast_e", false);
|
||||
DynamicObject fieldmap = BusinessDataServiceHelper.loadSingle("yem_bd_fieldmap", selectfield, qFilters.toArray(new QFilter[]{}));//查询《字段映射配置》表
|
||||
if (fieldmap != null) {
|
||||
DynamicObjectCollection fieldcontrastEntry = fieldmap.getDynamicObjectCollection("yem_fieldcontrast_e");//获取《字段映射》配置中的{字段对照}
|
||||
MainEntityType dataEntityType = MetadataServiceHelper.getDataEntityType(name);//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (DynamicObject entry : fieldcontrastEntry) {
|
||||
String sourcekey = entry.getString("yem_sourcekey");//获取《字段映射配置》中{字段对照}【源单标识】字段
|
||||
String math = entry.getString("yem_math");//获取《字段映射配置》中{字段对照}【计算公式】字段
|
||||
Object value = null;
|
||||
if (YEM.isNotEmpty(sourcekey)) {
|
||||
for (EntityType type : dataEntityType.getAllEntities().values()) {
|
||||
if (!(type instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!type.getFields().containsKey(sourcekey)) continue;;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
value = dataEntity.get(sourcekey);
|
||||
}
|
||||
|
||||
} else if (YEM.isNotEmpty(math)) {
|
||||
CRFormula formula = SerializationUtils.fromJsonString(math, CRFormula.class);//对【计算公式】进行序列话
|
||||
String expression = formula.getExpression();//获取计算公式的表达式
|
||||
//RowDataModel第一个入参要传入当前的实体名,如解析单据体的数据,则传入单据体标识
|
||||
RowDataModel rowDataModel = new RowDataModel(name, dataEntityType);
|
||||
rowDataModel.setRowContext(dataEntity);
|
||||
BOSExpressionContext bosExpressionContext = new BOSExpressionContext(rowDataModel);//创建表达式运行上下文对象
|
||||
value = CalcExprParser.getExpressionValue(expression, bosExpressionContext, FunctionManage.get());//根据表达式取值
|
||||
}
|
||||
//目标字段
|
||||
String targetfieidexp = entry.getString("yem_targetkey");
|
||||
MainEntityType dataTarEntityType = MetadataServiceHelper.getDataEntityType("yem_bd_invoiceinfor");//获取元数据模型,主要用于读取字段类型和字段模型相关。
|
||||
for (EntityType entityType : dataTarEntityType.getAllEntities().values()) {
|
||||
if (!(entityType instanceof MainEntityType)) continue;//判断是否属于单据头,如果是单据体则跳出循环
|
||||
if (!entityType.getFields().containsKey(targetfieidexp)) continue;//判断源单字段是否是单据头字段,如果不是单据头字段,则跳出本次循环
|
||||
baseData.set(targetfieidexp, value);
|
||||
}
|
||||
}
|
||||
OperationServiceHelper.executeOperate("save", "yem_bd_invoiceinfor", new DynamicObject[]{baseData}, OperateOption.create());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package yem.wm.bd.createbasedata.operation;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.args.BeforeOperationArgs;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.DeleteServiceHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description 删除核算维度数据
|
||||
* 合同单据在点击删除时,同步删除核算维度资料
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-14 18:22
|
||||
*/
|
||||
public class DeleteInsuranceOpPlugin extends AbstractOperationServicePlugIn {
|
||||
|
||||
@Override
|
||||
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
|
||||
for (DynamicObject dataEntity : e.getDataEntities()) {
|
||||
//需要判断是否是变更单,如果是变更单据,则跳出
|
||||
String name = dataEntity.getDataEntityType().getName();
|
||||
dataEntity = BusinessDataServiceHelper.loadSingleFromCache(dataEntity.getLong("id"), name);
|
||||
|
||||
DynamicObject fieldmap = BusinessDataServiceHelper.loadSingle("yem_bd_fieldmap", "id,yem_targetentity", new QFilter[]{new QFilter("yem_sourceentity.number", QCP.equals, name)});//查询《核算维度字段映射配置》
|
||||
if (fieldmap != null) {
|
||||
List<QFilter> qFilters = new ArrayList<>();
|
||||
qFilters.add(new QFilter("yem_billkey", QCP.equals, name));
|
||||
qFilters.add(new QFilter("yem_billid", QCP.equals, dataEntity.getLong("id")));
|
||||
DeleteServiceHelper.delete(fieldmap.getDynamicObject("yem_targetentity").getString("number"), qFilters.toArray(new QFilter[]{}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package yem.wm.bd.customerbankinfor.dynamic;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 客户银行信息
|
||||
* 1、加载界面时,默认获取《客户》中的{银行信息}自动给单据体赋值
|
||||
* 2、选中行数据之后,点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 16:03
|
||||
*/
|
||||
public class CusBankDynamicPlugin extends AbstractFormPlugin {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
DynamicObject customer = (DynamicObject) parentModel.getValue("yem_customer");//获取父页面的【客户】字段
|
||||
if (customer != null) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getLong("id"), customer.getDataEntityType().getName());
|
||||
|
||||
DynamicObjectCollection banksentry = customer.getDynamicObjectCollection("entry_bank");//《客户》中的{银行信息}
|
||||
for (DynamicObject bank : banksentry) {
|
||||
int row = model.createNewEntryRow("yem_entryentity");//动态表单单据体添加行数
|
||||
model.setValue("yem_accountnumber", bank.get("bankaccount"), row);//银行账号
|
||||
model.setValue("yem_accountname", bank.get("accountname"), row);//账户名称
|
||||
model.setValue("yem_bankaccount", bank.get("bank"), row);//开户银行
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @return void
|
||||
*/
|
||||
private void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
int selectRows = ((EntryGrid) view.getControl("yem_entryentity")).getEntryState().getFocusRow();//获取选中行的行数
|
||||
DynamicObject row = model.getEntryRowEntity("yem_entryentity", selectRows);//获取选中行的数据
|
||||
view.returnDataToParent(row);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("btnok");
|
||||
}
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package yem.wm.bd.customermaninfor.dynamic;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 客户人员信息
|
||||
* 1、加载界面时,默认获取《客户》中的{联系人信息}以及{联系人信息}中【关联地值】属性【详细地址】、【微信】、【QQ】自动给单据体赋值
|
||||
* 2、选中行数据之后,点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 16:12
|
||||
*/
|
||||
public class CusManDynamicPlugin extends AbstractFormPlugin {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
DynamicObject customer = (DynamicObject) parentModel.getValue("yem_customer");//获取父页面的【客户】字段
|
||||
if (customer != null) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getLong("id"), customer.getDataEntityType().getName());
|
||||
|
||||
DynamicObjectCollection linkmanentry = customer.getDynamicObjectCollection("entry_linkman");//《客户》中的{联系人信息}
|
||||
for (DynamicObject linkman : linkmanentry) {
|
||||
int row = model.createNewEntryRow("yem_entryentity");//动态表单单据体添加行数
|
||||
model.setValue("yem_customeruser", linkman.get("contactperson"), row);//人员
|
||||
model.setValue("yem_customertel", linkman.get("phone"), row);//电话
|
||||
model.setValue("yem_customeremail", linkman.get("email"), row);//E-Mail
|
||||
model.setValue("yem_customerfax", linkman.get("fax"), row);//传真
|
||||
|
||||
DynamicObject associatedaddress = linkman.getDynamicObject("associatedaddress");//关联地址
|
||||
if (associatedaddress != null) {
|
||||
associatedaddress = BusinessDataServiceHelper.loadSingleFromCache(associatedaddress.getLong("id"), associatedaddress.getDataEntityType().getName());
|
||||
model.setValue("yem_customervx", associatedaddress.get("yem_suppliervx"), row);//微信(公司)--微信
|
||||
model.setValue("yem_customerqq", associatedaddress.get("yem_supplierqq"), row);//QQ(公司)--QQ
|
||||
model.setValue("yem_customeraddr", associatedaddress.get("detailaddress"), row);//地址(客户)--详细地址
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @return void
|
||||
*/
|
||||
public void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
int selectRows = ((EntryGrid) view.getControl("yem_entryentity")).getEntryState().getFocusRow();//获取选中行的行数
|
||||
DynamicObject row = model.getEntryRowEntity("yem_entryentity", selectRows);//获取选中行的数据
|
||||
view.returnDataToParent(row);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("btnok");
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package yem.wm.bd.qrcode.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.form.control.Control;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-15 15:43
|
||||
*/
|
||||
public class QRCodeFormPlugin extends AbstractBillPlugIn {
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
this.addClickListeners(new String[]{"yem_field"});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject e) {
|
||||
String key = ((Control) e.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "yem_field":
|
||||
showFiled();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void showFiled() {
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package yem.wm.bd.supplierbankinfor.dynamic;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 供应商银行信息-表单插件
|
||||
* 1、加载界面时,默认获取《供应商》中的{银行信息}自动给单据体赋值
|
||||
* 2、选中行数据之后,点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 16:52
|
||||
*/
|
||||
public class SupBankDynamicPlugin extends AbstractBillPlugIn {
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
DynamicObject supplier = (DynamicObject) parentModel.getValue("yem_supplier");//获取父页面的【供应商】字段
|
||||
if (supplier != null) {
|
||||
supplier = BusinessDataServiceHelper.loadSingleFromCache(supplier.getLong("id"), supplier.getDataEntityType().getName());
|
||||
|
||||
DynamicObjectCollection banksentry = supplier.getDynamicObjectCollection("entry_bank");//获取《供应商》中的{银行信息}
|
||||
for (DynamicObject bank : banksentry) {
|
||||
int row = model.createNewEntryRow("yem_entryentity");//动态表单单据体添加行数
|
||||
model.setValue("yem_accountnumber", bank.get("bankaccount"), row);//银行账号
|
||||
model.setValue("yem_accountname", bank.get("accountname"), row);//账户名称
|
||||
model.setValue("yem_bankaccount", bank.get("bank"), row);//开户银行
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @return void
|
||||
*/
|
||||
private void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
int selectRows = ((EntryGrid) view.getControl("yem_entryentity")).getEntryState().getFocusRow();//获取选中行的行数
|
||||
DynamicObject row = model.getEntryRowEntity("yem_entryentity", selectRows);//获取选中行的数据
|
||||
view.returnDataToParent(row);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("btnok");
|
||||
}
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package yem.wm.bd.suppliermaninfor.dynamic;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* @Description 供应商人员信息-表单插件
|
||||
* 1、加载界面时,默认获取《供应商》中的{人员信息}以及{人员信息}中【关联地址】属性【详细地址】、【微信】、【QQ】自动给单据体赋值
|
||||
* 2、选中行数据之后,点击确定给父页面返回数据
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-08 16:57
|
||||
*/
|
||||
public class SupManDynamicPlugin extends AbstractBillPlugIn {
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
|
||||
DynamicObject supplier = (DynamicObject) parentModel.getValue("yem_supplier");//获取父页面的【供应商】字段
|
||||
if (supplier != null) {
|
||||
supplier = BusinessDataServiceHelper.loadSingleFromCache(supplier.getLong("id"), supplier.getDataEntityType().getName());
|
||||
|
||||
DynamicObjectCollection linkmanentry = supplier.getDynamicObjectCollection("entry_linkman");//获取《供应商》中的{联系人信息}
|
||||
for (DynamicObject linkman : linkmanentry) {
|
||||
int row = model.createNewEntryRow("yem_entryentity");//动态表单单据体添加行数
|
||||
model.setValue("yem_supplieruser", linkman.get("contactperson"), row);//人员
|
||||
model.setValue("yem_suppliertel", linkman.get("phone"), row);//电话
|
||||
model.setValue("yem_supplieremail", linkman.get("email"), row);//E-Mail
|
||||
model.setValue("yem_supplierfax", linkman.get("fax"), row);//传真
|
||||
|
||||
DynamicObject associatedaddress = linkman.getDynamicObject("associatedaddress");//关联地址
|
||||
if (associatedaddress != null) {
|
||||
associatedaddress = BusinessDataServiceHelper.loadSingleFromCache(associatedaddress.getLong("id"), associatedaddress.getDataEntityType().getName());
|
||||
model.setValue("yem_suppliervx", associatedaddress.get("yem_suppliervx"), row);//微信(公司)--微信
|
||||
model.setValue("yem_supplierqq", associatedaddress.get("yem_supplierqq"), row);//QQ(公司)--QQ
|
||||
model.setValue("yem_supplieraddr", associatedaddress.get("detailaddress"), row);//地址(客户)--详细地址
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
super.click(evt);
|
||||
String key = ((Control) evt.getSource()).getKey();
|
||||
switch (key) {
|
||||
case "btnok"://确定按钮
|
||||
this.btnOk();//点击确定按钮返回数据
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 点击确定给父页面返回信息
|
||||
* @function 功能
|
||||
* @purposes 用途
|
||||
* @return void
|
||||
*/
|
||||
public void btnOk() {
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
int selectRows = ((EntryGrid) view.getControl("yem_entryentity")).getEntryState().getFocusRow();//获取选中行的行数
|
||||
DynamicObject row = model.getEntryRowEntity("yem_entryentity", selectRows);//获取选中行的数据
|
||||
view.returnDataToParent(row);
|
||||
view.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addClickListeners("btnok");
|
||||
}
|
||||
}
|
@ -0,0 +1,464 @@
|
||||
package yem.wm.bd.util;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.bill.OperationStatus;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.IDataEntityProperty;
|
||||
import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
|
||||
import kd.bos.dataentity.serialization.SerializationUtils;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.form.CloseCallBack;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.Label;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
|
||||
import yem.base.common.utils.DynamicObjectUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description 抬头信息帮助类
|
||||
* @Author: zhangh
|
||||
* @CreateTime: 2025-02-07 18:32
|
||||
*/
|
||||
public class BothCardHelper {
|
||||
|
||||
private static final String ADD_CO = "yem_flex_addco";
|
||||
private static final String INFO_CO = "yem_flex_coinfo";
|
||||
private static final String ADD_GYS = "yem_flex_addgys";
|
||||
private static final String INFO_GYS = "yem_flex_gysinfo1";
|
||||
private static final String ADD_KH = "yem_flex_addbuyer";
|
||||
private static final String INFO_KH = "yem_flex_buyerinfo1";
|
||||
|
||||
/**
|
||||
* @param form 基类类名
|
||||
* @param formId 跳转动态表单的标识
|
||||
* @Description: 跳转动态表单(无参数 , 没有给子页面传递任何参数)
|
||||
* @function
|
||||
* @purposes 多处调用,防止代码的重复型
|
||||
*/
|
||||
public static void showChangePage(AbstractBillPlugIn form, String formId) {
|
||||
IFormView view = form.getView();//获取单据的view视图
|
||||
FormShowParameter parameter = new FormShowParameter();
|
||||
parameter.getOpenStyle().setShowType(ShowType.Modal);//界面显示分格为弹窗,模态显示
|
||||
parameter.setFormId(formId);//添加跳转的动态表单标识
|
||||
parameter.setStatus(OperationStatus.ADDNEW);//打开表单的界面状态为新增
|
||||
parameter.setCloseCallBack(new CloseCallBack(form, formId));//回调
|
||||
view.showForm(parameter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param form 基类名称(AbstractBillPlugIn)
|
||||
* @Description: 公司抬头信息标签赋值
|
||||
* @function 根据{抬头信息}隐藏字段给标签赋值
|
||||
* @purposes 套打等可以使用
|
||||
*/
|
||||
public static void setCoLabel(AbstractBillPlugIn form) {
|
||||
IDataModel model = form.getView().getModel();//获取单据的model
|
||||
DynamicObject company = (DynamicObject) model.getValue("yem_org");//获取单据{抬头明细(隐藏)}中的【公司抬头】
|
||||
if (YEM.isEmpty(company)) {
|
||||
form.getView().setVisible(Boolean.TRUE, ADD_CO);//判断公司为空,显示添加公司的图标
|
||||
form.getView().setVisible(Boolean.FALSE, INFO_CO);//判断公司为空,隐藏编辑公司的图标
|
||||
} else {
|
||||
((Label) form.getControl("yem_conamelabel")).setText((String) model.getValue("yem_companyname"));//公司名称
|
||||
((Label) form.getControl("yem_cotin")).setText((String) model.getValue("yem_companytin"));//纳税人识别号(公司)
|
||||
((Label) form.getControl("yem_cobank")).setText((String) model.getValue("yem_companybank"));//开户行(公司)
|
||||
((Label) form.getControl("yem_coacct")).setText((String) model.getValue("yem_companyacct"));//账号(公司)
|
||||
((Label) form.getControl("yem_coaddr")).setText((String) model.getValue("yem_companyaddr"));//地址(公司)
|
||||
|
||||
String isdefaultinfor = (String) model.getValue("yem_isdefaultinfor");//获取默认信息(公司)
|
||||
JSONObject jsonObject = JSON.parseObject(isdefaultinfor);//将String类型转换成JSONObject
|
||||
|
||||
String colinkman = (String) (YEM.isEmpty(isdefaultinfor) ? model.getValue("yem_companylinkman") : jsonObject.get("yem_companylinkman"));//联系人
|
||||
((Label) form.getControl("yem_colinkman")).setText(colinkman);//联系人(公司)
|
||||
|
||||
String cotel = (String) (YEM.isEmpty(isdefaultinfor) ? model.getValue("yem_companytel") : jsonObject.get("yem_companytel"));//电话
|
||||
((Label) form.getControl("yem_cotel")).setText(cotel);//电话(公司)
|
||||
|
||||
String coemail = (String) (YEM.isEmpty(isdefaultinfor) ? model.getValue("yem_companyemail") : jsonObject.get("yem_companyemail"));//E-Mail
|
||||
((Label) form.getControl("yem_coemail")).setText(coemail);//E-Mail(公司)
|
||||
|
||||
String covx = (String) (YEM.isEmpty(isdefaultinfor) ? model.getValue("yem_companyvx") : jsonObject.get("yem_companyvx"));//微信
|
||||
((Label) form.getControl("yem_covx")).setText(covx);//微信(公司)
|
||||
|
||||
String coqq = (String) (YEM.isEmpty(isdefaultinfor) ? model.getValue("yem_companyqq") : jsonObject.get("yem_companyqq"));//QQ
|
||||
((Label) form.getControl("yem_coqq")).setText(coqq);//QQ(公司)
|
||||
|
||||
String cofax = (String) (YEM.isEmpty(isdefaultinfor) ? model.getValue("yem_companyfax") : jsonObject.get("yem_companyfax"));//传真
|
||||
((Label) form.getControl("yem_cofax")).setText(cofax);//传真(公司)
|
||||
form.getView().setVisible(Boolean.FALSE, ADD_CO);//判断公司不为空,隐藏添加公司的图标
|
||||
form.getView().setVisible(Boolean.TRUE, INFO_CO);//判断公司不为空,显示编辑公司的图标
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param form 基类名称
|
||||
* @Description: 供应商抬头信息标签赋值
|
||||
* @function 根据{抬头信息}隐藏字段给标签赋值
|
||||
* @purposes 套打等可以使用
|
||||
*/
|
||||
public static void setSupplierLabel(AbstractBillPlugIn form) {
|
||||
IDataModel model = form.getView().getModel();//获取view中的model
|
||||
DynamicObject supplier = (DynamicObject) model.getValue("yem_supplier");//获取单据{抬头明细(隐藏)}中的【供应商】
|
||||
if (YEM.isEmpty(supplier)) {
|
||||
form.getView().setVisible(Boolean.TRUE, ADD_GYS);//判断供应商为空,显示供应商添加的图标
|
||||
form.getView().setVisible(Boolean.FALSE, INFO_GYS);//判断供应商为空,隐藏供应商编辑的图标
|
||||
} else {
|
||||
((Label) form.getControl("yem_gysname")).setText((String) model.getValue("yem_suppliername"));//供应商名称
|
||||
((Label) form.getControl("yem_gystin")).setText((String) model.getValue("yem_suppliertin"));//纳税人识别号(供应商)
|
||||
((Label) form.getControl("yem_gysbank")).setText((String) model.getValue("yem_supplierbank"));//开户行(供应商)
|
||||
((Label) form.getControl("yem_gysacct")).setText((String) model.getValue("yem_supplieracct"));//账号(供应商)
|
||||
((Label) form.getControl("yem_gyslinkman")).setText((String) model.getValue("yem_supplierlinkman"));//联系人(供应商)
|
||||
((Label) form.getControl("yem_gystel")).setText((String) model.getValue("yem_suppliertel"));//电话(供应商)
|
||||
((Label) form.getControl("yem_gysaddr")).setText((String) model.getValue("yem_supplieraddr"));//地址(供应商)
|
||||
((Label) form.getControl("yem_gysemail")).setText((String) model.getValue("yem_supplieremail"));//E-Mail(供应商)
|
||||
((Label) form.getControl("yem_gysvx")).setText((String) model.getValue("yem_suppliervx"));//微信(供应商)
|
||||
((Label) form.getControl("yem_gysqq")).setText((String) model.getValue("yem_supplierqq"));//QQ(供应商)
|
||||
((Label) form.getControl("yem_gysfax")).setText((String) model.getValue("yem_supplierfax"));//传真(供应商)
|
||||
form.getView().setVisible(Boolean.FALSE, ADD_GYS);//判断供应商不为空,隐藏供应商添加的图标
|
||||
form.getView().setVisible(Boolean.TRUE, INFO_GYS);//判断供应商不为空,显示供应商编辑的图标
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param form 基类名称
|
||||
* @Description: 客户抬头信息标签赋值
|
||||
* @function 根据{抬头信息}隐藏字段给标签赋值
|
||||
* @purposes 套打等可以使用
|
||||
*/
|
||||
public static void setCustomerLabel(AbstractBillPlugIn form) {
|
||||
IDataModel model = form.getView().getModel();//获取view中的model
|
||||
DynamicObject customer = (DynamicObject) model.getValue("yem_customer");//获取单据{抬头明细(隐藏)}中的【客户】
|
||||
if (YEM.isEmpty(customer)) {
|
||||
form.getView().setVisible(Boolean.TRUE, ADD_KH);//判断客户为空,显示客户添加的图标
|
||||
form.getView().setVisible(Boolean.FALSE, INFO_KH);//判断客户为空,隐藏客户编辑的图标
|
||||
} else {
|
||||
((Label) form.getControl("yem_payername")).setText((String) model.getValue("yem_customername"));//客户名称
|
||||
((Label) form.getControl("yem_payertin")).setText((String) model.getValue("yem_customertin"));//纳税人识别号(客户)
|
||||
((Label) form.getControl("yem_payerbank")).setText((String) model.getValue("yem_customerbank"));//开户行(客户)
|
||||
((Label) form.getControl("yem_payeracct")).setText((String) model.getValue("yem_customeracct"));//账号(客户)
|
||||
((Label) form.getControl("yem_payerlinkman")).setText((String) model.getValue("yem_customerlinkman"));//联系人(客户)
|
||||
((Label) form.getControl("yem_payertel")).setText((String) model.getValue("yem_customertel"));//电话(客户)
|
||||
((Label) form.getControl("yem_payeraddr")).setText((String) model.getValue("yem_customeraddr"));//地址(客户)
|
||||
((Label) form.getControl("yem_payeremail")).setText((String) model.getValue("yem_customeremail"));//E-Mail(客户)
|
||||
((Label) form.getControl("yem_payervx")).setText((String) model.getValue("yem_customervx"));//微信(客户)
|
||||
((Label) form.getControl("yem_payerqq")).setText((String) model.getValue("yem_customerqq"));//QQ(客户)
|
||||
((Label) form.getControl("yem_payerfax")).setText((String) model.getValue("yem_customerfax"));//传真(客户)
|
||||
form.getView().setVisible(Boolean.FALSE, ADD_KH);//判断客户不为空,隐藏客户添加的图标
|
||||
form.getView().setVisible(Boolean.TRUE, INFO_KH);//判断客户不为空,显示客户编辑的图标
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 公司抬头信息实体赋值
|
||||
* @function 新增单据时,默认给{公司抬头}赋值
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void fillCoInfo(IDataModel model, DynamicObject org) {
|
||||
boolean viewBill = SystemParamServiceHelper.isViewBill("");//获取系统参数,后边进行调整
|
||||
String orgKey = viewBill ? "yem_bd_companyinfo" : "bos_org";//根据系统参数获取系统是使用《业务单元》还是《公司抬头》
|
||||
model.setValue("yem_orgtype", orgKey); //组织类型
|
||||
model.setValue("yem_org", org.getLong("id"));//公司抬头
|
||||
model.setValue("yem_companyname", org.getString("name"));//公司名称
|
||||
|
||||
DynamicObject companyinfo = queryCompany(org);//根据《业务单元》查询《公司抬头》
|
||||
if (companyinfo != null) {//判断《公司抬头》实体是否为空
|
||||
model.setValue("yem_companytin", companyinfo.get("yem_negocionum"));//纳税人识别号(公司)--纳税识别号
|
||||
model.setValue("yem_companyaddr", companyinfo.getString("yem_addresscn"));//地址(公司)--地址
|
||||
model.setValue("yem_companyfax", companyinfo.getString("yem_fax"));//传真(公司)--传真
|
||||
|
||||
DynamicObjectCollection banksentry = companyinfo.getDynamicObjectCollection("yem_banksentry");//《公司抬头》中的{银行信息}
|
||||
List<DynamicObject> banksentryDefault = banksentry.stream().filter(x -> x.getBoolean("yem_isdefaultbank") == true).collect(Collectors.toList());//获取《公司抬头》中{银行信息}中的默认数据
|
||||
if (banksentryDefault.size() > 0) {
|
||||
DynamicObject row = banksentryDefault.get(0);//《公司抬头》中的{银行信息}默认数据只有唯一一个
|
||||
String bankaccount = row.getDynamicObject("yem_bankaccount") != null ? row.getDynamicObject("yem_bankaccount").getString("name") : "";//获取开户银行
|
||||
model.setValue("yem_companybank", bankaccount);//开户行(公司)--开户银行
|
||||
model.setValue("yem_companyacct", row.get("yem_accountnumber"));//账号(公司)--银行账户
|
||||
}
|
||||
|
||||
DynamicObjectCollection linkmanentry = companyinfo.getDynamicObjectCollection("yem_linkmanentry");//《公司抬头》中的{联系人信息}
|
||||
List<DynamicObject> manentryDefault = linkmanentry.stream().filter(x -> x.getBoolean("yem_isdefaultlinkman") == true).collect(Collectors.toList());//获取《公司抬头》中{联系人信息}中的默认数据
|
||||
if (manentryDefault.size() > 0) {
|
||||
DynamicObject row = manentryDefault.get(0);//《公司抬头》中的{联系人信息}默认数据只有唯一一个
|
||||
model.setValue("yem_companylinkman", row.getString("yem_contactperson"));//联系人(公司)--名称
|
||||
model.setValue("yem_companytel", row.get("yem_phonenum"));//电话(公司)--联系电话
|
||||
model.setValue("yem_companyemail", row.get("yem_addemail"));//E-Mail(公司)--电子邮箱
|
||||
model.setValue("yem_companyvx", row.get("yem_suppliervx"));//微信(公司)--微信
|
||||
model.setValue("yem_companyqq", row.get("yem_supplierqq"));//QQ(公司)--QQ
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param org 《业务单元》实体
|
||||
* @return DynamicObject 返回的是《公司抬头》实体
|
||||
* @Description: 查询单据
|
||||
* @function 根据业务单元查询获取《公司抬头》
|
||||
* @purposes
|
||||
*/
|
||||
public static DynamicObject queryCompany(DynamicObject org) {
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_bd_companyinfo", false);//获取《公司抬头》表头字段标识
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_bd_companyinfo", "yem_banksentry", false);//获取《公司抬头》中{银行信息}分录所有字段标识
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_bd_companyinfo", "yem_linkmanentry", false);//获取《公司抬头》中{联系人信息}分录所有字段标识
|
||||
DynamicObject companyinfo = BusinessDataServiceHelper.loadSingle("yem_bd_companyinfo", selectfields, new QFilter[]{new QFilter("yem_org", QCP.equals, org.getLong("id"))});//根据公司条件查询《公司抬头》
|
||||
return companyinfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param form 基类类名
|
||||
* @Description: 加载动态表单的逻辑处理
|
||||
* @function 将父页面的信息携带到动态表单上
|
||||
* @purposes
|
||||
*/
|
||||
public static void init(AbstractFormPlugin form) {
|
||||
IFormView view = form.getView();//获取动态表单的view视图
|
||||
IDataModel model = view.getModel();//获取动态表单的模型model
|
||||
|
||||
IFormView parentView = view.getParentView();//获取父页面的view视图
|
||||
IDataModel parentModel = parentView.getModel();//获取父页面的模型model
|
||||
|
||||
DataEntityPropertyCollection properties = model.getDataEntityType().getProperties();//获取动态表单上的所有字段控件
|
||||
for (IDataEntityProperty property : properties) {
|
||||
String propName = property.getName();//获取字段控件的标识
|
||||
if (parentModel.getProperty(propName) != null) {//判断该字段标识在父页面中是否存在
|
||||
Object propValue = parentModel.getValue(propName);//如果存在获取在父页面中的值
|
||||
if (propValue instanceof DynamicObject) {//类型是实体
|
||||
DynamicObject obj = (DynamicObject) propValue;//获取实体id
|
||||
model.setValue(propName, obj.getPkValue());
|
||||
} else {
|
||||
model.setValue(propName, propValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 回填银行信息
|
||||
* @function :《公司银行信息》点击确定之后,回填公司银行信息
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setCompanyBankInfor(AbstractFormPlugin form, Object returnData) {
|
||||
DynamicObject data = (DynamicObject) returnData;
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
if (data != null) {
|
||||
DynamicObject bankaccount = data.getDynamicObject("yem_bankaccount");
|
||||
String bank = bankaccount != null ? bankaccount.getString("name") : "";
|
||||
model.setValue("yem_companybank", bank);//开户行
|
||||
model.setValue("yem_companyacct", data.getString("yem_accountnumber"));//账号
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 回填联系人信息
|
||||
* @function :《公司人员信息》点击确定之后,回填公司联系人信息
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setCompanyManInfor(AbstractFormPlugin form, Object returnData, DynamicObject isdefaultInfor) {
|
||||
List<DynamicObject> data = (List<DynamicObject>) returnData;
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
if (data != null && data.size() > 0) {
|
||||
DataEntityPropertyCollection properties = data.get(0).getDataEntityType().getProperties();//获取{联系人信息}单据体的所有字段
|
||||
|
||||
for (IDataEntityProperty property : properties) {//适用于实体字段给单据的表头字段赋值
|
||||
String name = property.getName();//获取实体字段的标识
|
||||
if (model.getProperty(name) != null) {
|
||||
List<String> linkman = data.stream().map(x -> x.getString(name)).collect(Collectors.toList());
|
||||
model.setValue(name, String.join(";", linkman));
|
||||
}
|
||||
}
|
||||
|
||||
List<DynamicObject> defaultManInfor = data.stream().filter(x -> x.getBoolean("yem_default") == true).collect(Collectors.toList());//获取《公司联系人信息》回填的默认信息
|
||||
if (defaultManInfor.size() > 0) {
|
||||
view.getPageCache().put("data", SerializationUtils.toJsonString(defaultManInfor.get(0)));//将默认信息放在缓存李,在回传的时候可以使用
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 切换【客户】,客户信息值改变
|
||||
* @function 切换【客户】之后,客户信息根据赋值逻辑重新赋值
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setCustomerInfor(AbstractFormPlugin form) {
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
DynamicObject customer = (DynamicObject) model.getValue("yem_customer");
|
||||
if (customer != null) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getLong("id"), customer.getDataEntityType().getName());
|
||||
|
||||
model.setValue("yem_customertin", customer.getString("societycreditcode"));//纳税人识别号(供应商)--纳税人识别号(供应商)
|
||||
|
||||
DynamicObjectCollection entry_bank = customer.getDynamicObjectCollection("entry_bank");//银行信息
|
||||
List<DynamicObject> bankentryDefault = entry_bank.stream().filter(x -> x.getBoolean("isdefault_bank") == true).collect(Collectors.toList());
|
||||
if (bankentryDefault.size() > 0) {
|
||||
DynamicObject row = bankentryDefault.get(0);
|
||||
String bank = row.getDynamicObject("bank") != null ? row.getDynamicObject("bank").getString("name") : "";
|
||||
model.setValue("yem_customerbank", bank);//开户行(公司)--开户银行
|
||||
model.setValue("yem_customeracct", row.get("bankaccount"));//账号(公司)--银行账户
|
||||
}
|
||||
|
||||
DynamicObjectCollection linkmanentry = customer.getDynamicObjectCollection("entry_linkman");//联系人信息
|
||||
List<DynamicObject> manentryDefault = linkmanentry.stream().filter(x -> x.getBoolean("isdefault_linkman") == true).collect(Collectors.toList());
|
||||
|
||||
if (manentryDefault.size() > 0) {
|
||||
DynamicObject row = manentryDefault.get(0);
|
||||
model.setValue("yem_customerlinkman", row.getString("contactperson"));//联系人(公司)--名称
|
||||
model.setValue("yem_customertel", row.get("phone"));//电话(公司)--联系电话
|
||||
model.setValue("yem_customeremail", row.get("email"));//E-Mail(公司)--电子邮箱
|
||||
model.setValue("yem_customerfax", row.get("fax"));//传真(公司)--传真
|
||||
|
||||
DynamicObject associatedaddress = row.getDynamicObject("associatedaddress");//关联地址
|
||||
if (associatedaddress != null) {
|
||||
associatedaddress = BusinessDataServiceHelper.loadSingleFromCache(associatedaddress.getLong("id"), associatedaddress.getDataEntityType().getName());
|
||||
model.setValue("yem_customervx", associatedaddress.get("yem_suppliervx"));//微信(公司)--微信
|
||||
model.setValue("yem_customerqq", associatedaddress.get("yem_supplierqq"));//QQ(公司)--QQ
|
||||
model.setValue("yem_customeraddr", associatedaddress.get("detailaddress"));//地址(客户)--详细地址
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 《客户银行信息》点击确定,返回值
|
||||
* @function 《客户银行信息》点击确定之后,给《添加客户》中的信息赋值
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setCustBankInfor(AbstractBillPlugIn form, Object returnData) {
|
||||
DynamicObject data = (DynamicObject) returnData;
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
if (data != null) {
|
||||
DynamicObject bankaccount = data.getDynamicObject("yem_bankaccount");//获取《客户银行信息》中的【开户行】
|
||||
String bank = bankaccount != null ? bankaccount.getString("name") : "";
|
||||
model.setValue("yem_customerbank", bank);//开户行
|
||||
model.setValue("yem_customeracct", data.getString("yem_accountnumber"));//账号
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 《客户人员信息》点击确定,返回值
|
||||
* @function 《客户人员信息》点击确定之后,给《添加客户》中的信息赋值
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setCustManInfor(AbstractBillPlugIn form, Object returnData) {
|
||||
DynamicObject data = (DynamicObject) returnData;
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
if (data != null) {
|
||||
DataEntityPropertyCollection properties = data.getDataEntityType().getProperties();//获取返回信息的所有字段标识(只有表头字段,没有单据体字段)
|
||||
for (IDataEntityProperty property : properties) {
|
||||
String name = property.getName();//获取字段标识
|
||||
if (model.getProperty(name) != null) {
|
||||
model.setValue(name, data.get(name));//进行赋值
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 切换【供应商】,重新赋值
|
||||
* @function 切换【供应商】之后,根据赋值逻辑,重新赋值
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setSupplierInfor(AbstractFormPlugin form) {
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
DynamicObject supplier = (DynamicObject) model.getValue("yem_supplier");//获取【供应商】字段
|
||||
if (supplier != null) {
|
||||
supplier = BusinessDataServiceHelper.loadSingleFromCache(supplier.getLong("id"), supplier.getDataEntityType().getName());
|
||||
|
||||
model.setValue("yem_suppliertin", supplier.getString("societycreditcode"));//纳税人识别号(供应商)--纳税人识别号(供应商)
|
||||
|
||||
DynamicObjectCollection entry_bank = supplier.getDynamicObjectCollection("entry_bank");//《供应商》--{银行信息}
|
||||
List<DynamicObject> bankentryDefault = entry_bank.stream().filter(x -> x.getBoolean("isdefault_bank") == true).collect(Collectors.toList());//获取《供应商》中{银行信息}的默认数据
|
||||
if (bankentryDefault.size() > 0) {
|
||||
DynamicObject row = bankentryDefault.get(0);
|
||||
String bank = row.getDynamicObject("bank") != null ? row.getDynamicObject("bank").getString("name") : "";//开户行
|
||||
model.setValue("yem_supplierbank", bank);//开户行(公司)--开户银行
|
||||
model.setValue("yem_supplieracct", row.get("bankaccount"));//账号(公司)--银行账户
|
||||
}
|
||||
|
||||
DynamicObjectCollection linkmanentry = supplier.getDynamicObjectCollection("entry_linkman");//《供应商》--联系人信息
|
||||
List<DynamicObject> manentryDefault = linkmanentry.stream().filter(x -> x.getBoolean("isdefault_linkman") == true).collect(Collectors.toList());//获取《供应商》中{联系人信息}的默认数据
|
||||
|
||||
if (manentryDefault.size() > 0) {
|
||||
DynamicObject row = manentryDefault.get(0);
|
||||
model.setValue("yem_supplierlinkman", row.getString("contactperson"));//联系人(公司)--名称
|
||||
model.setValue("yem_suppliertel", row.get("phone"));//电话(公司)--联系电话
|
||||
model.setValue("yem_supplieremail", row.get("email"));//E-Mail(公司)--电子邮箱
|
||||
model.setValue("yem_supplierfax", row.get("fax"));//传真(公司)--传真
|
||||
|
||||
DynamicObject associatedaddress = row.getDynamicObject("associatedaddress");//关联地址
|
||||
if (associatedaddress != null) {
|
||||
associatedaddress = BusinessDataServiceHelper.loadSingleFromCache(associatedaddress.getLong("id"), associatedaddress.getDataEntityType().getName());
|
||||
model.setValue("yem_suppliervx", associatedaddress.get("yem_suppliervx"));//微信(公司)--微信
|
||||
model.setValue("yem_supplierqq", associatedaddress.get("yem_supplierqq"));//QQ(公司)--QQ
|
||||
model.setValue("yem_supplieraddr", associatedaddress.get("detailaddress"));//地址(客户)--详细地址
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 《供应商银行信息》点击确定,返回值
|
||||
* @function 《供应商银行信息》点击确定之后,给《添加客户》中的信息赋值
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void setSuppBankInfor(AbstractBillPlugIn form, Object returnData) {
|
||||
DynamicObject data = (DynamicObject) returnData;
|
||||
IFormView view = form.getView();
|
||||
IDataModel model = view.getModel();
|
||||
|
||||
if (data != null) {
|
||||
DynamicObject bankaccount = data.getDynamicObject("yem_bankaccount");
|
||||
String bank = bankaccount != null ? bankaccount.getString("name") : "";
|
||||
model.setValue("yem_supplierbank", bank);//开户行
|
||||
model.setValue("yem_supplieracct", data.getString("yem_accountnumber"));//账号
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param form 基类类名
|
||||
* @return void
|
||||
* @Description: 将动态表单的信息返回给父页面
|
||||
* @function
|
||||
* @purposes 用途
|
||||
*/
|
||||
public static void btnOkParent(AbstractFormPlugin form) {
|
||||
IFormView view = form.getView();//获取动态表单view视图
|
||||
IDataModel model = view.getModel();//获取动态表单模型model
|
||||
IFormView parentView = view.getParentView();//获取父页面view视图
|
||||
IDataModel parentModel = parentView.getModel();//获取父页面莫得了模型
|
||||
DataEntityPropertyCollection properties = model.getDataEntityType().getProperties();//获取动态表单所有字段控件
|
||||
for (IDataEntityProperty property : properties) {
|
||||
String propName = property.getName();//获取字段标识
|
||||
if (parentModel.getProperty(propName) != null) {
|
||||
Object propValue = model.getValue(propName);//子啊动态表单上获取字段的值
|
||||
if (propValue instanceof DynamicObject) {//判断值类型是否是DynamicObject实体
|
||||
DynamicObject obj = (DynamicObject) propValue;
|
||||
parentModel.setValue(propName, obj.getPkValue());
|
||||
} else {
|
||||
parentModel.setValue(propName, propValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user