From 236b5f7abff20a76f60ca344b7e37bc8cbdaf1ce Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 5 Dec 2025 13:41:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E6=88=90=E6=9C=AC=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E6=B7=BB=E5=8A=A0=E6=88=90=E6=9C=AC=E9=A1=B9=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E5=88=97=E8=A1=A8=E8=BF=87=E6=BB=A4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/EntCostSplitBillPlugin.java | 98 ++++++++++++++++++- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java index 7ddb326..984d149 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java @@ -42,21 +42,65 @@ import java.util.*; * 企业成本核算表单插件 * 说明:1:点击自动取数按钮获取核算余额表 * 2:子分录成本分解结构跟随父分录成本分解结构赋值 - * 3:子分录成本分解结构过滤逻辑 - * 4:二级分类过滤逻辑 + * 3:子分录成本分解结构和二级分类和项目过滤逻辑 + * 4:成本项下拉列表过滤 * 工序即为成本分解结构 */ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener, Plugin { @Override public void registerListener(EventObject e) { super.registerListener(e); - BasedataEdit cbs = (BasedataEdit) this.getControl("zcgj_cbs"); + BasedataEdit cbs = (BasedataEdit) this.getControl("zcgj_cbs");//成本分解结构 cbs.addBeforeF7SelectListener(this); - BasedataEdit zcgj_sectypef7 = (BasedataEdit) this.getControl("zcgj_sectypef7"); + BasedataEdit zcgj_sectypef7 = (BasedataEdit) this.getControl("zcgj_sectypef7");//二级分类 zcgj_sectypef7.addBeforeF7SelectListener(this); + BasedataEdit project = (BasedataEdit) this.getControl("project");//项目 + project.addBeforeF7SelectListener(this); this.addItemClickListeners("advcontoolbarap"); } + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + DynamicObject period = (DynamicObject) this.getModel().getValue("period");//期间 + if (period != null) { + Date enddate = period.getDate("enddate");//结束日期 + Calendar cal = Calendar.getInstance(); + cal.set(2025, Calendar.NOVEMBER, 1, 0, 0, 0); + cal.set(Calendar.MILLISECOND, 0); + Date threshold = cal.getTime(); + + if (enddate != null && enddate.before(threshold)) { + setCostItemList(true); + } else { + setCostItemList(false); + } + } else { + setCostItemList(false); + } + } + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + DynamicObject period = (DynamicObject) this.getModel().getValue("period");//期间 + if (period != null) { + Date enddate = period.getDate("enddate");//结束日期 + Calendar cal = Calendar.getInstance(); + cal.set(2025, Calendar.NOVEMBER, 1, 0, 0, 0); + cal.set(Calendar.MILLISECOND, 0); + Date threshold = cal.getTime(); + + if (enddate != null && enddate.before(threshold)) { + setCostItemList(true); + } else { + setCostItemList(false); + } + } else { + setCostItemList(false); + } + } + @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); @@ -81,6 +125,29 @@ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements Before if (newValue == null || !newValue.equals(oldValue)) { this.getModel().setValue("zcgj_sectypef7", null, rowIndex);//二级分类 } + } else if ("period".equals(key)) { + //期间 + this.getModel().deleteEntryData("entryentity"); + this.getModel().deleteEntryData("zcgj_subentryentity"); + + ChangeData[] changeSet = e.getChangeSet(); + ChangeData changeData = changeSet[0]; + DynamicObject period = (DynamicObject) changeData.getNewValue();//新值 + if (period != null) { + Date enddate = period.getDate("enddate");//结束日期 + Calendar cal = Calendar.getInstance(); + cal.set(2025, Calendar.NOVEMBER, 1, 0, 0, 0); + cal.set(Calendar.MILLISECOND, 0); + Date threshold = cal.getTime(); + + if (enddate != null && enddate.before(threshold)) { + setCostItemList(true); + } else { + setCostItemList(false); + } + } else { + setCostItemList(false); + } } } @@ -116,6 +183,12 @@ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements Before return; } parameter.getListFilterParameter().setQFilters(qFilter); + } else if (StringUtils.equals(name, "project")) { + //项目 + List qFilter = new ArrayList<>(); + DynamicObject org = (DynamicObject) this.getModel().getValue("org");//所属组织 + qFilter.add(new QFilter("projectorg", QCP.equals, org.getPkValue())); + parameter.getListFilterParameter().setQFilters(qFilter); } } @@ -162,6 +235,23 @@ public class EntCostSplitBillPlugin extends AbstractBillPlugIn implements Before } } + private void setCostItemList(boolean isHistoryData) { + ComboEdit comboEdit = this.getControl("costtype"); + List data = new ArrayList<>(); + data.add(new ComboItem(new LocaleString("人工成本"), "10.")); + if (isHistoryData) { + data.add(new ComboItem(new LocaleString("材料成本"), "20.")); + data.add(new ComboItem(new LocaleString("机械设备"), "30.")); + data.add(new ComboItem(new LocaleString("合同成本"), "40.")); + } + data.add(new ComboItem(new LocaleString("安全支出"), "60.")); + data.add(new ComboItem(new LocaleString("期间费用"), "70.")); + data.add(new ComboItem(new LocaleString("税金及附加"), "80.")); + data.add(new ComboItem(new LocaleString("财务费用"), "90.")); + data.add(new ComboItem(new LocaleString("研发支出"), "100.")); + comboEdit.setComboItems(data); + } + /** * 自动取数处理方法 */