|
@@ -4,8 +4,10 @@ import kd.bos.bill.AbstractBillPlugIn;
|
|
|
import kd.bos.bill.BillShowParameter;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.dataentity.resource.ResManager;
|
|
|
import kd.bos.entity.datamodel.events.BizDataEventArgs;
|
|
|
import kd.bos.entity.property.BasedataProp;
|
|
|
+import kd.bos.exception.KDBizException;
|
|
|
import kd.bos.ext.fi.plugin.ArApConvert.util.EmptyUtils;
|
|
|
import kd.bos.form.field.BasedataEdit;
|
|
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
|
@@ -39,6 +41,12 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
|
|
|
|
|
|
BasedataEdit expenseitemF7ext = (BasedataEdit) this.getControl("nckd_expenseitem");
|
|
|
expenseitemF7ext.addBeforeF7SelectListener(this);
|
|
|
+
|
|
|
+ BasedataEdit projectF7ext = (BasedataEdit) this.getControl("nckd_project");
|
|
|
+ projectF7ext.addBeforeF7SelectListener(this);
|
|
|
+
|
|
|
+ BasedataEdit acctitemF7ext = (BasedataEdit) this.getControl("nckd_acctitem");
|
|
|
+ acctitemF7ext.addBeforeF7SelectListener(this);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -47,13 +55,14 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
|
|
|
String entityId = ((BasedataProp) evt.getProperty()).getBaseEntityId();
|
|
|
int curRowIndex = evt.getRow();
|
|
|
|
|
|
- if("expenseitem".equals(property) || "nckd_expenseitem".equals(property)) {
|
|
|
- ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter();
|
|
|
- ListFilterParameter filterParam = showParameter.getListFilterParameter();
|
|
|
- List<QFilter> qFilters = filterParam.getQFilters();
|
|
|
+ Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
|
|
|
+ ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter();
|
|
|
+ ListFilterParameter filterParam = showParameter.getListFilterParameter();
|
|
|
+ List<QFilter> qFilters = filterParam.getQFilters();
|
|
|
|
|
|
- Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
|
|
|
+ DynamicObject expenseItem = (DynamicObject)this.getModel().getValue("nckd_expenseitem");
|
|
|
|
|
|
+ if("expenseitem".equals(property) || "nckd_expenseitem".equals(property)) {
|
|
|
if(customParams.get("nckd_viewTypeFilter") != null){
|
|
|
QFilter viewTypeFilter = QFilter.fromSerializedString(customParams.get("nckd_viewTypeFilter").toString());
|
|
|
|
|
@@ -68,9 +77,48 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
|
|
|
|
|
|
qFilters.add(viewTypeFilter);
|
|
|
}
|
|
|
+ } else if("nckd_project".equals(property)){//项目
|
|
|
+ if(expenseItem == null){
|
|
|
+ throw new KDBizException(ResManager.loadKDString("请先维护费用类型!", "PublicReimburseBillFormPlugin_12", "em-formplugin", new Object[0]));
|
|
|
+ }
|
|
|
+
|
|
|
+ expenseItem = BusinessDataServiceHelper.loadSingle(expenseItem.getPkValue(), expenseItem.getDynamicObjectType().getName());
|
|
|
+ DynamicObjectCollection projectKinds = expenseItem.getDynamicObjectCollection("nckd_projectkind");
|
|
|
+ List<Long> idList = (List)projectKinds.stream().mapToLong((x) -> {
|
|
|
+ return x.getLong("fbasedataid_id");
|
|
|
+ }).boxed().collect(Collectors.toList());
|
|
|
+
|
|
|
+ QFilter filter = new QFilter("group.id", QCP.in, idList);
|
|
|
+
|
|
|
+ qFilters.add(filter);
|
|
|
+ } else if("nckd_acctitem".equals(property)){//核算项目
|
|
|
+ if(expenseItem == null){
|
|
|
+ throw new KDBizException(ResManager.loadKDString("请先维护费用类型!", "PublicReimburseBillFormPlugin_12", "em-formplugin", new Object[0]));
|
|
|
+ }
|
|
|
+
|
|
|
+ expenseItem = getLevelExpenseItemInfo(expenseItem);
|
|
|
+
|
|
|
+ QFilter filter = new QFilter("nckd_expenseitem.id", QCP.in, expenseItem.getLong("id"));
|
|
|
+
|
|
|
+ qFilters.add(filter);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查找一级费用项目
|
|
|
+ * @param expenseItem
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private DynamicObject getLevelExpenseItemInfo(DynamicObject expenseItem){
|
|
|
+ if(expenseItem.getDynamicObject("parent") != null){
|
|
|
+ DynamicObject parentInfo = BusinessDataServiceHelper.loadSingle(expenseItem.getDynamicObject("parent").getPkValue(), expenseItem.getDynamicObjectType().getName());
|
|
|
+
|
|
|
+ expenseItem = getLevelExpenseItemInfo(parentInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ return expenseItem;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void afterCreateNewData(EventObject e) {
|
|
|
super.afterCreateNewData(e);
|
|
@@ -102,19 +150,6 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
|
|
|
//页面类型多选赋值
|
|
|
this.getModel().setValue("nckd_payviewtypemul", basedataIds);
|
|
|
|
|
|
- //根据页面类型找到费用类型,专项费用和培训申请时候自动填充费用类型 刘志华增加
|
|
|
- String viewtNumber=viewTypeCols[0].getString("number");
|
|
|
- if(viewtNumber.equals("1004")||viewtNumber.equals("1005")){
|
|
|
- //根据页面类型查找费用类型
|
|
|
- QFilter expenseitemFilter = new QFilter("nckd_payviewtype", QCP.equals, viewTypeCols[0].getLong("id"));
|
|
|
- expenseitemFilter.and("isleaf",QCP.equals,true);
|
|
|
- DynamicObject[] expenseitemCols = BusinessDataServiceHelper.load("er_expenseitemedit", "id, number,name,fullname", expenseitemFilter.toArray());
|
|
|
- //费用项目赋值
|
|
|
- this.getModel().setValue("nckd_expenseitem", expenseitemCols[0]);
|
|
|
- //费用明细中的费用项目
|
|
|
- this.getModel().setValue("expenseitem", expenseitemCols[0]);
|
|
|
- }
|
|
|
-
|
|
|
/***
|
|
|
* 当页面类型为 资金类时,往来类型为 内部公司
|
|
|
* turborao 2025/05/15
|
|
@@ -124,6 +159,25 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
|
|
|
this.getModel().setValue("billpayertype", "bos_org");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //根据页面类型找到费用类型,专项费用和培训申请时候自动填充费用类型 刘志华增加
|
|
|
+ String viewtNumber = viewTypeCols[0].getString("number");
|
|
|
+ if(viewtNumber.equals("1004")||viewtNumber.equals("1009")){
|
|
|
+ //根据页面类型查找费用类型
|
|
|
+ QFilter numberFilter = new QFilter("number", QCP.equals, viewtNumber);
|
|
|
+ DynamicObject payViewType = BusinessDataServiceHelper.loadSingle("nckd_payviewtype", numberFilter.toArray());
|
|
|
+ if(payViewType != null && payViewType.getDynamicObject("nckd_expenseitem") != null){
|
|
|
+ //费用项目赋值
|
|
|
+ this.getModel().setValue("nckd_expenseitem", payViewType.getDynamicObject("nckd_expenseitem"));
|
|
|
+
|
|
|
+
|
|
|
+ //费用明细中的费用项目
|
|
|
+ DynamicObjectCollection expenseentryentity = this.getModel().getEntryEntity("expenseentryentity");
|
|
|
+ if(expenseentryentity != null && expenseentryentity.size() > 0) {
|
|
|
+ this.getModel().setValue("expenseitem", payViewType.getDynamicObject("nckd_expenseitem"), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|