From c7e3186fdb0ca50967d4189a62c1462c3b2ad343 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <17621308561@163.com> Date: Tue, 10 Dec 2024 18:17:40 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=8A=A5=E9=94=80=E5=8D=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=202.=E5=8F=B0=E8=B4=A6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/DailyloanbillExpAccPlugin.java | 198 +++++++++++++ .../form/DailyreimbursExpAccPlugin.java | 197 +++++++++++++ ...ava => DailyreimbursVisitCheckPlugin.java} | 277 +----------------- .../plugin/form/PrepaybillContractPlugin.java | 87 ++++++ .../plugin/form/PrepaybillExpAccPlugin.java | 198 +++++++++++++ ...a => PublicreimbursebillExpAccPlugin.java} | 119 +------- .../report/BudgetActuRptQueryPlugin.java | 18 +- .../report/FeeDeductionRptListPlugin.java | 13 + 8 files changed, 727 insertions(+), 380 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyloanbillExpAccPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursExpAccPlugin.java rename code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/{DailyreimbursPlugin.java => DailyreimbursVisitCheckPlugin.java} (53%) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PrepaybillContractPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PrepaybillExpAccPlugin.java rename code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/{PublicreimbursebillPlugin.java => PublicreimbursebillExpAccPlugin.java} (58%) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyloanbillExpAccPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyloanbillExpAccPlugin.java new file mode 100644 index 0000000..2d9bf3a --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyloanbillExpAccPlugin.java @@ -0,0 +1,198 @@ +package zcgj.zcdev.zcdev.fs.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.CloneUtils; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.CloseCallBack; +import kd.bos.form.ShowFormHelper; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.events.AfterF7SelectEvent; +import kd.bos.form.field.events.AfterF7SelectListener; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.list.ListShowParameter; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; + +/** + * 借款单会计科目与费用项目关联插件 + */ +public class DailyloanbillExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener { + + private static final Log log = LogFactory.getLog(DailyloanbillExpAccPlugin.class); + //开发商标识 + private static final String prefix ="zcgj"; + + //界面回调标识(自定义) + private final static String ACTION_ID="accountview_form"; + private final static String ACTION_ID_EXPENSE="expenseitem_form"; + + //借款单的预付信息标识 + private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity"; + + //会计科目与费用项目映射表分录 + private final static String MAP_TABLE = "zcgj_accountsitemsmap"; + //会计科目与费用项目映射表分录标识 + private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity"; + + //借款单中的费用项目标识 + private final static String EXPENSE_ITEM ="expenseitem"; + //借款单中的会计科目标识 + private final static String ACCOUNT_ITEM ="zcgj_account_item"; + + //分录值改变的行号 + private static Integer selectRow = null; + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM); + fieldEdit.addBeforeF7SelectListener(this); + fieldEdit.addAfterF7SelectListener(this); + + BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM); + fieldEditExpense.addBeforeF7SelectListener(this); + fieldEditExpense.addAfterF7SelectListener(this); + + } + + @Override + public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) { + String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey(); + if(ACCOUNT_ITEM.equals(name)){ + Long id = null; + // 获取选中行 + ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow(); + Object inputValue = afterF7SelectEvent.getInputValue(); + if(selectRowList != null){//弹框选择 + id = (Long) selectRowList.getPrimaryKeyValue(); + }else if(inputValue != null){//模糊查询 + id=Long.valueOf(inputValue.toString()); + } + if(id!=null){ + QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,id); + DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); + DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow); + boolean isEx = false; + if(dynamicObject2!=null){ + isEx = dynamicObject2.get(EXPENSE_ITEM) == null; + } + if(isEx && dynamicObject1!=null&&selectRow!=null){ + DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); + if(zcgjEntryentity!=null){ + DynamicObject dynamicObject = zcgjEntryentity.get(0); + DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); + long aLong = itemDynamicObject.getLong("id"); + System.out.println(); + this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow); + } + } + } + }else if(EXPENSE_ITEM.equals(name)){ + Object inputValue = afterF7SelectEvent.getInputValue(); + if(inputValue!=null){ + String id = String.valueOf(inputValue) ; + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id)); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow); + if(value==null && load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + long aLong = dynamicObject.getLong("zcgj_accounts_id"); + this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow); + } + } + } + + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent arg0) { + String name = arg0.getProperty().getName(); + if(name.equals(ACCOUNT_ITEM)){ + selectRow = arg0.getRow(); + if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ + selectRow = arg0.getRow(); + ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); + } + }else if(name.equals(EXPENSE_ITEM)){ + if("click".equals(arg0.getSourceMethod())){ + arg0.setCancel(true); + ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true); + showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE)); + this.getView().showForm(showParameter); + }else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ + selectRow = arg0.getRow(); + ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); + } + } + } + + @Override + public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { + super.closedCallBack(closedCallBackEvent); + String actionId = closedCallBackEvent.getActionId(); + Object returnData = closedCallBackEvent.getReturnData(); + boolean current= true; + if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){ + //获取选中的索引 + int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); + //操作的行数据,获取之前的数据 + DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index); + //克隆新的行 + DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow); + ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData(); + + for (ListSelectedRow listSelectedRow : listSelectedRows) { + if(current){ + //选择行进行更改,其他行进行插入 + Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); + //给费用项目赋值 + this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index); + if(accountItem==null){ + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + if(load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + long aLong = dynamicObject.getLong("zcgj_accounts_id"); + this.getModel().setValue(ACCOUNT_ITEM,aLong,index); + }else{ + this.getModel().setValue(ACCOUNT_ITEM,null,index); + } + } + current = false; + }else{ + //Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); + //if(accountItem == null){ + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + if(load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts"); + if(zcgjAccounts!=null){ + //会计科目 + insertRow.set(ACCOUNT_ITEM,zcgjAccounts); + } + }else{ + insertRow.set(ACCOUNT_ITEM,null); + } + //} + //费用项目科目 + QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); + insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem); + this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursExpAccPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursExpAccPlugin.java new file mode 100644 index 0000000..45b8efe --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursExpAccPlugin.java @@ -0,0 +1,197 @@ +package zcgj.zcdev.zcdev.fs.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.CloneUtils; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.CloseCallBack; +import kd.bos.form.ShowFormHelper; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.events.AfterF7SelectEvent; +import kd.bos.form.field.events.AfterF7SelectListener; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.list.ListShowParameter; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; + +/** + * 费用报销单会计科目与费用项目关联插件 + */ +public class DailyreimbursExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener { + private static final Log log = LogFactory.getLog(DailyreimbursExpAccPlugin.class); + //开发商标识 + private static final String prefix ="zcgj"; + + //界面回调标识(自定义) + private final static String ACTION_ID="accountview_form"; + private final static String ACTION_ID_EXPENSE="expenseitem_form"; + //费用报销单的费用明细标识 + private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity"; + //会计科目与费用项目映射表分录 + private final static String MAP_TABLE = "zcgj_accountsitemsmap"; + //会计科目与费用项目映射表分录标识 + private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity"; + + //费用报销中的费用项目标识 + private final static String EXPENSE_ITEM ="expenseitem"; + //费用报销中的会计科目标识 + private final static String ACCOUNT_ITEM ="zcgj_account_item"; + + //分录值改变的行号 + private static Integer selectRow = null; + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM); + fieldEdit.addBeforeF7SelectListener(this); + fieldEdit.addAfterF7SelectListener(this); + + BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM); + fieldEditExpense.addBeforeF7SelectListener(this); + fieldEditExpense.addAfterF7SelectListener(this); + } + + @Override + public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) { + String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey(); + if(ACCOUNT_ITEM.equals(name)){ + Long id = null; + // 获取选中行 + ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow(); + Object inputValue = afterF7SelectEvent.getInputValue(); + if(selectRowList != null){//弹框选择 + id = (Long) selectRowList.getPrimaryKeyValue(); + }else if(inputValue != null){//模糊查询 + id=Long.valueOf(inputValue.toString()); + } + if(id!=null){ + QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,id); + DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); + DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow); + boolean isEx = false; + if(dynamicObject2!=null){ + isEx = dynamicObject2.get(EXPENSE_ITEM) == null; + } + if(isEx && dynamicObject1!=null&&selectRow!=null){ + DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); + if(zcgjEntryentity!=null){ + DynamicObject dynamicObject = zcgjEntryentity.get(0); + DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); + long aLong = itemDynamicObject.getLong("id"); + System.out.println(); + this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow); + } + } + } + }else if(EXPENSE_ITEM.equals(name)){ + Object inputValue = afterF7SelectEvent.getInputValue(); + if(inputValue!=null){ + String id = String.valueOf(inputValue) ; + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id)); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow); + if(value==null && load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + long aLong = dynamicObject.getLong("zcgj_accounts_id"); + this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow); + } + } + } + + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent arg0) { + String name = arg0.getProperty().getName(); + if(name.equals(ACCOUNT_ITEM)){ + selectRow = arg0.getRow(); + if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ + selectRow = arg0.getRow(); + ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); + } + }else if(name.equals(EXPENSE_ITEM)){ + if("click".equals(arg0.getSourceMethod())){ + arg0.setCancel(true); + ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true); + showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE)); + this.getView().showForm(showParameter); + }else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ + selectRow = arg0.getRow(); + ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); + } + + } + } + + @Override + public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { + super.closedCallBack(closedCallBackEvent); + String actionId = closedCallBackEvent.getActionId(); + Object returnData = closedCallBackEvent.getReturnData(); + boolean current= true; + if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){ + //获取选中的索引 + int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); + //操作的行数据,获取之前的数据 + DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index); + //克隆新的行 + DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow); + ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData(); + + for (ListSelectedRow listSelectedRow : listSelectedRows) { + if(current){ + //选择行进行更改,其他行进行插入 + Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); + //给费用项目赋值 + this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index); + if(accountItem==null){ + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + if(load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + long aLong = dynamicObject.getLong("zcgj_accounts_id"); + this.getModel().setValue(ACCOUNT_ITEM,aLong,index); + }else{ + this.getModel().setValue(ACCOUNT_ITEM,null,index); + } + } + current = false; + }else{ + //Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); + //if(accountItem == null){ + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + if(load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts"); + if(zcgjAccounts!=null){ + //会计科目 + insertRow.set(ACCOUNT_ITEM,zcgjAccounts); + } + }else{ + insertRow.set(ACCOUNT_ITEM,null); + } + //} + //费用项目科目 + QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); + insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem); + this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); + + } + } + } + } + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java similarity index 53% rename from code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursPlugin.java rename to code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java index 8ac8db3..fbac9d8 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/DailyreimbursVisitCheckPlugin.java @@ -3,31 +3,16 @@ package zcgj.zcdev.zcdev.fs.plugin.form; import kd.bos.algo.DataSet; import kd.bos.algo.Row; import kd.bos.bill.AbstractBillPlugIn; -import kd.bos.dataentity.entity.CloneUtils; import kd.bos.dataentity.entity.DynamicObject; -import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.IDataModel; -import kd.bos.entity.datamodel.ListSelectedRow; -import kd.bos.entity.datamodel.ListSelectedRowCollection; -import kd.bos.entity.datamodel.events.ChangeData; -import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.entity.operate.Submit; -import kd.bos.form.CloseCallBack; -import kd.bos.form.ShowFormHelper; import kd.bos.form.events.BeforeDoOperationEventArgs; -import kd.bos.form.events.ClosedCallBackEvent; -import kd.bos.form.field.BasedataEdit; -import kd.bos.form.field.events.*; -import kd.bos.list.ListFilterParameter; -import kd.bos.list.ListShowParameter; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; -import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import kd.sdk.plugin.Plugin; -import org.apache.commons.lang3.StringUtils; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -37,35 +22,16 @@ import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.Date; -import java.util.EventObject; import java.util.List; /** * 费用报销单探亲检查插件 */ -public class DailyreimbursPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener { - private static final Log log = LogFactory.getLog(DailyreimbursPlugin.class); +public class DailyreimbursVisitCheckPlugin extends AbstractBillPlugIn implements Plugin{ + private static final Log log = LogFactory.getLog(DailyreimbursVisitCheckPlugin.class); //开发商标识 private static final String prefix ="zcgj"; - //界面回调标识(自定义) - private final static String ACTION_ID="accountview_form"; - private final static String ACTION_ID_EXPENSE="expenseitem_form"; - //费用报销单的费用明细标识 - private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity"; - //会计科目与费用项目映射表分录 - private final static String MAP_TABLE = "zcgj_accountsitemsmap"; - //会计科目与费用项目映射表分录标识 - private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity"; - - //费用报销中的费用项目标识 - private final static String EXPENSE_ITEM ="expenseitem"; - //费用报销中的会计科目标识 - private final static String ACCOUNT_ITEM ="zcgj_account_item"; - - //分录值改变的行号 - private static Integer selectRow = null; - @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { try{ @@ -195,13 +161,22 @@ public class DailyreimbursPlugin extends AbstractBillPlugIn implements Plugin, LocalDate firstDayYearsAgo = getFirstDayYearsAgo(dateToLocalDate(startTime), visitYear); Date lastDayOfYear = getLastDayOfYear(startTime); + List billStatuslist = new ArrayList<>(); + billStatuslist.add("B"); + billStatuslist.add("C"); + billStatuslist.add("D"); + billStatuslist.add("E"); + billStatuslist.add("F"); + billStatuslist.add("G"); // 查询条件 - QFilter[] filterArray = new QFilter[4]; + QFilter[] filterArray = new QFilter[5]; //查询申请人下的今年的探亲差旅单据 filterArray[0] = new QFilter(prefix+"_holiday_start_time", QCP.large_equals, firstDayOfYear); filterArray[1] = new QFilter(prefix+"_holiday_start_time", QCP.less_equals, lastDayOfYear); filterArray[2] = new QFilter("applier", QCP.equals, applierId); filterArray[3] = new QFilter(prefix+"_is_visit", QCP.equals, true); + filterArray[4] = new QFilter("billstatus", QCP.in, billStatuslist); + DataSet dateSet = QueryServiceHelper.queryDataSet( this.getClass().getName(), "er_dailyreimbursebill", @@ -300,234 +275,6 @@ public class DailyreimbursPlugin extends AbstractBillPlugIn implements Plugin, } } - @Override - public void registerListener(EventObject e) { - super.registerListener(e); - BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM); - fieldEdit.addBeforeF7SelectListener(this); - fieldEdit.addAfterF7SelectListener(this); - - BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM); - fieldEditExpense.addBeforeF7SelectListener(this); - fieldEditExpense.addAfterF7SelectListener(this); - - } - - @Override - public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) { - String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey(); - if(ACCOUNT_ITEM.equals(name)){ - Long id = null; - // 获取选中行 - ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow(); - Object inputValue = afterF7SelectEvent.getInputValue(); - if(selectRowList != null){//弹框选择 - id = (Long) selectRowList.getPrimaryKeyValue(); - }else if(inputValue != null){//模糊查询 - id=Long.valueOf(inputValue.toString()); - } - if(id!=null){ - QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,id); - DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); - DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow); - boolean isEx = false; - if(dynamicObject2!=null){ - isEx = dynamicObject2.get(EXPENSE_ITEM) == null; - } - if(isEx && dynamicObject1!=null&&selectRow!=null){ - DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); - if(zcgjEntryentity!=null){ - DynamicObject dynamicObject = zcgjEntryentity.get(0); - DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); - long aLong = itemDynamicObject.getLong("id"); - System.out.println(); - this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow); - } - } - } - }else if(EXPENSE_ITEM.equals(name)){ - Object inputValue = afterF7SelectEvent.getInputValue(); - if(inputValue!=null){ - String id = String.valueOf(inputValue) ; - QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id)); - DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); - Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow); - if(value==null && load!=null && load.length>0){ - DynamicObject dynamicObject = load[0]; - long aLong = dynamicObject.getLong("zcgj_accounts_id"); - this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow); - } - } - } - - } - - - @Override - public void beforeF7Select(BeforeF7SelectEvent arg0) { - String name = arg0.getProperty().getName(); - if(name.equals(ACCOUNT_ITEM)){ - selectRow = arg0.getRow(); - /* List qFilterList = new ArrayList(); - qFilterList.add(new QFilter("number", QCP.like,"Sups%")); - arg0.setCustomQFilters(qFilterList);*/ - - /*if("click".equals(arg0.getSourceMethod())){ - arg0.setCancel(true); - Object value = this.getModel().getValue("zcgj_accounttable_number"); - DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany"); - long costcompanyId = costcompany.getLong("id"); - //设置自定义F7弹框,增加过滤条件 - List qFilterList = new ArrayList(); - qFilterList.add(new QFilter("accounttable.number", QCP.equals,value)); - //qFilterList.add(new QFilter("createorg", QCP.equals,Long.parseLong(costcompanyId+""))); - - ListFilterParameter listFilterParameter =new ListFilterParameter(qFilterList,null); - ListShowParameter showParameter = ShowFormHelper.createShowListForm("bd_accountview", true); - showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID)); - showParameter.setListFilterParameter(listFilterParameter); - this.getView().showForm(showParameter); - }else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ - selectRow = arg0.getRow(); - ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); - }*/ - if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ - selectRow = arg0.getRow(); - ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); - } - }else if(name.equals(EXPENSE_ITEM)){ - if("click".equals(arg0.getSourceMethod())){ - arg0.setCancel(true); - ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true); - showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE)); - this.getView().showForm(showParameter); - }else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ - selectRow = arg0.getRow(); - ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); - } - - } - } - - @Override - public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { - super.closedCallBack(closedCallBackEvent); - String actionId = closedCallBackEvent.getActionId(); - Object returnData = closedCallBackEvent.getReturnData(); - boolean current= true; - - /*if(returnData!=null && actionId.equals(ACTION_ID)){ - //获取选中的索引 - int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); - //操作的行数据,获取之前的数据 - DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index); - //克隆新的行 - DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow); - ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData(); - - for (ListSelectedRow listSelectedRow : listSelectedRows) { - if(current){ - //选择行进行更改,其他行进行插入 - //给会计科目赋值 - this.getModel().setValue(ACCOUNT_ITEM,listSelectedRow.getPrimaryKeyValue(),index); - Object expense = this.getModel().getValue(EXPENSE_ITEM, index); - if(expense == null){ - QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); - if(dynamicObject1!=null){ - DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); - if(zcgjEntryentity!=null){ - DynamicObject dynamicObject = zcgjEntryentity.get(0); - DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); - long aLong = itemDynamicObject.getLong("id"); - this.getModel().setValue(EXPENSE_ITEM,aLong,index); - }else{ - this.getModel().setValue(EXPENSE_ITEM,null,index); - } - }else{ - this.getModel().setValue(EXPENSE_ITEM,null,index); - } - } - current = false; - }else{ - Object expense = this.getModel().getValue(EXPENSE_ITEM, index); - if(expense==null){ - QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); - if(dynamicObject1!=null){ - DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); - if(zcgjEntryentity!=null){ - DynamicObject dynamicObject = zcgjEntryentity.get(0); - DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); - //费用项目 - insertRow.set(EXPENSE_ITEM,itemDynamicObject); - } - }else{ - insertRow.set(EXPENSE_ITEM,null); - } - } - //会计科目 - QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("bd_accountview", "number,name", new QFilter[]{nameQFilterAccItem}); - insertRow.set(ACCOUNT_ITEM,dynamicObjectAccItem); - this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); - } - } - }else */ - if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){ - //获取选中的索引 - int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); - //操作的行数据,获取之前的数据 - DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index); - //克隆新的行 - DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow); - ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData(); - - for (ListSelectedRow listSelectedRow : listSelectedRows) { - if(current){ - //选择行进行更改,其他行进行插入 - Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); - //给费用项目赋值 - this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index); - if(accountItem==null){ - QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); - if(load!=null && load.length>0){ - DynamicObject dynamicObject = load[0]; - long aLong = dynamicObject.getLong("zcgj_accounts_id"); - this.getModel().setValue(ACCOUNT_ITEM,aLong,index); - }else{ - this.getModel().setValue(ACCOUNT_ITEM,null,index); - } - } - current = false; - }else{ - //Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); - //if(accountItem == null){ - QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); - if(load!=null && load.length>0){ - DynamicObject dynamicObject = load[0]; - DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts"); - if(zcgjAccounts!=null){ - //会计科目 - insertRow.set(ACCOUNT_ITEM,zcgjAccounts); - } - }else{ - insertRow.set(ACCOUNT_ITEM,null); - } - //} - //费用项目科目 - QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); - insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem); - this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); - - } - } - } - } - /** * 将 java.util.Date 转换为 java.time.LocalDate * @param date java.util.Date diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PrepaybillContractPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PrepaybillContractPlugin.java new file mode 100644 index 0000000..96d5a9a --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PrepaybillContractPlugin.java @@ -0,0 +1,87 @@ +package zcgj.zcdev.zcdev.fs.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.CloneUtils; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.entity.operate.Submit; +import kd.bos.form.CloseCallBack; +import kd.bos.form.ShowFormHelper; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.events.AfterF7SelectEvent; +import kd.bos.form.field.events.AfterF7SelectListener; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.list.ListShowParameter; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.Date; +import java.util.EventObject; + +/** + * 预付单去年合同提醒插件 + */ +public class PrepaybillContractPlugin extends AbstractBillPlugIn implements Plugin{ + + private static final Log log = LogFactory.getLog(PrepaybillContractPlugin.class); + //开发商标识 + private static final String prefix ="zcgj"; + + //预付单的关联合同标识 + private final static String CONTRACT_ENTRY_ENTITY = "contractentry"; + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + + if((args.getSource() instanceof Submit) ) { + Submit source = (Submit) args.getSource(); + if (source.getOperateKey().equals("submit")) { + //获取当前页面的数据包 + DynamicObject dataEntity = this.getModel().getDataEntity(true); + //获取单据体数据的集合 + DynamicObjectCollection goodsEntities=dataEntity.getDynamicObjectCollection(CONTRACT_ENTRY_ENTITY); + boolean isMsg = false; + for (DynamicObject entryObj : goodsEntities) { + //获取合同签订日期 + Date signdate = entryObj.getDate("signdate"); + LocalDate localDate = dateToLocalDate(signdate); + int signdateYear = localDate.getYear(); + int currentYear = LocalDate.now().getYear(); + if(signdateYear0){ + DynamicObject dynamicObject = load[0]; + long aLong = dynamicObject.getLong("zcgj_accounts_id"); + this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow); + } + } + } + + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent arg0) { + String name = arg0.getProperty().getName(); + if(name.equals(ACCOUNT_ITEM)){ + selectRow = arg0.getRow(); + if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ + selectRow = arg0.getRow(); + ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); + } + }else if(name.equals(EXPENSE_ITEM)){ + if("click".equals(arg0.getSourceMethod())){ + arg0.setCancel(true); + ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true); + showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE)); + this.getView().showForm(showParameter); + }else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ + selectRow = arg0.getRow(); + ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); + } + } + } + + @Override + public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { + super.closedCallBack(closedCallBackEvent); + String actionId = closedCallBackEvent.getActionId(); + Object returnData = closedCallBackEvent.getReturnData(); + boolean current= true; + if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){ + //获取选中的索引 + int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); + //操作的行数据,获取之前的数据 + DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index); + //克隆新的行 + DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow); + ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData(); + + for (ListSelectedRow listSelectedRow : listSelectedRows) { + if(current){ + //选择行进行更改,其他行进行插入 + Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); + //给费用项目赋值 + this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index); + if(accountItem==null){ + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + if(load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + long aLong = dynamicObject.getLong("zcgj_accounts_id"); + this.getModel().setValue(ACCOUNT_ITEM,aLong,index); + }else{ + this.getModel().setValue(ACCOUNT_ITEM,null,index); + } + } + current = false; + }else{ + //Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index); + //if(accountItem == null){ + QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter}); + if(load!=null && load.length>0){ + DynamicObject dynamicObject = load[0]; + DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts"); + if(zcgjAccounts!=null){ + //会计科目 + insertRow.set(ACCOUNT_ITEM,zcgjAccounts); + } + }else{ + insertRow.set(ACCOUNT_ITEM,null); + } + //} + //费用项目科目 + QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue()); + DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); + insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem); + this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillExpAccPlugin.java similarity index 58% rename from code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillPlugin.java rename to code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillExpAccPlugin.java index f32e2da..b4bf7d3 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillExpAccPlugin.java @@ -6,8 +6,6 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.ListSelectedRow; import kd.bos.entity.datamodel.ListSelectedRowCollection; -import kd.bos.entity.datamodel.events.ChangeData; -import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.CloseCallBack; import kd.bos.form.ShowFormHelper; import kd.bos.form.events.ClosedCallBackEvent; @@ -16,27 +14,22 @@ import kd.bos.form.field.events.AfterF7SelectEvent; import kd.bos.form.field.events.AfterF7SelectListener; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; -import kd.bos.list.ListFilterParameter; import kd.bos.list.ListShowParameter; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.tree.TreeFilterParameter; import kd.sdk.plugin.Plugin; -import org.apache.commons.lang3.StringUtils; -import java.util.ArrayList; import java.util.EventObject; -import java.util.List; /** - * 对公报销单插件 + * 对公报销单会计科目与费用项目关联插件 */ -public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener { +public class PublicreimbursebillExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener { - private static final Log log = LogFactory.getLog(PublicreimbursebillPlugin.class); + private static final Log log = LogFactory.getLog(PublicreimbursebillExpAccPlugin.class); //开发商标识 private static final String prefix ="zcgj"; @@ -70,19 +63,7 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM); fieldEditExpense.addBeforeF7SelectListener(this); fieldEditExpense.addAfterF7SelectListener(this); - } - @Override - public void propertyChanged(PropertyChangedArgs e) { - super.propertyChanged(e); - String name = e.getProperty().getName(); - if(name.equals(ACCOUNT_ITEM)){ - ChangeData[] changeSet = e.getChangeSet(); - DynamicObject dynamicObject = (DynamicObject)changeSet[0].getNewValue(); - System.out.println(); - //Object fh = String.valueOf(dynamicObject.get(8)); - //this.getModel().setValue("ooo0_remark",fh); - } } @Override @@ -99,9 +80,9 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu id=Long.valueOf(inputValue.toString()); } if(id!=null){ - QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,id); + QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,id); DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); - DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity").get(selectRow); + DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow); boolean isEx = false; if(dynamicObject2!=null){ isEx = dynamicObject2.get(EXPENSE_ITEM) == null; @@ -130,7 +111,6 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow); } } - } } @@ -140,32 +120,6 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu String name = arg0.getProperty().getName(); if(name.equals(ACCOUNT_ITEM)){ selectRow = arg0.getRow(); - /*if("click".equals(arg0.getSourceMethod())){ - arg0.setCancel(true); - Object value = this.getModel().getValue("zcgj_accounttable_number"); - DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany"); - long costcompanyId = costcompany.getLong("id"); - //((ListShowParameter)beforeF7SelectEvent.getFormShowParameter()).getTreeFilterParameter().getQFilters().add(new QFilter("name", "=", "长度")) - //设置自定义F7弹框,增加过滤条件 - List qFilterList = new ArrayList(); - qFilterList.add(new QFilter("accounttable.number", QCP.equals,value)); - //qFilterList.add(new QFilter("createorg", QCP.equals,Long.parseLong(costcompanyId+""))); - ListFilterParameter listFilterParameter =new ListFilterParameter(qFilterList,null); - ListShowParameter showParameter = ShowFormHelper.createShowListForm("bd_accountview", true); - showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID)); - showParameter.setListFilterParameter(listFilterParameter); - - List qFilterList1 = new ArrayList(); - qFilterList1.add(new QFilter("accounttable.number", QCP.equals,value)); - TreeFilterParameter treeFilterParameter = new TreeFilterParameter(); - treeFilterParameter.setQFilters(qFilterList1); - showParameter.setTreeFilterParameter(treeFilterParameter); - - this.getView().showForm(showParameter); - }else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ - selectRow = arg0.getRow(); - ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); - }*/ if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){ selectRow = arg0.getRow(); ((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this); @@ -189,67 +143,6 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu String actionId = closedCallBackEvent.getActionId(); Object returnData = closedCallBackEvent.getReturnData(); boolean current= true; - - /*if(returnData!=null && actionId.equals(ACTION_ID)){ - //获取选中的索引 - int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); - //操作的行数据,获取之前的数据 - DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index); - //克隆新的行 - DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow); - ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData(); - - for (ListSelectedRow listSelectedRow : listSelectedRows) { - if(current){ - //选择行进行更改,其他行进行插入 - //给会计科目赋值 - Object expense = this.getModel().getValue(EXPENSE_ITEM, index); - this.getModel().setValue(ACCOUNT_ITEM,listSelectedRow.getPrimaryKeyValue(),index); - if(expense==null){ - QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); - if(dynamicObject1!=null){ - DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); - if(zcgjEntryentity!=null){ - DynamicObject dynamicObject = zcgjEntryentity.get(0); - DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); - long aLong = itemDynamicObject.getLong("id"); - this.getModel().setValue(EXPENSE_ITEM,aLong,index); - }else{ - this.getModel().setValue(EXPENSE_ITEM,null,index); - } - }else{ - this.getModel().setValue(EXPENSE_ITEM,null,index); - } - } - - current = false; - }else{ - Object expense = this.getModel().getValue(EXPENSE_ITEM, index); - if(expense==null){ - QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter}); - if(dynamicObject1!=null){ - DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY); - if(zcgjEntryentity!=null){ - DynamicObject dynamicObject = zcgjEntryentity.get(0); - DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items"); - //费用项目 - insertRow.set(EXPENSE_ITEM,itemDynamicObject); - } - }else{ - insertRow.set(EXPENSE_ITEM,null); - } - } - //会计科目 - QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue()); - DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("bd_accountview", "number,name", new QFilter[]{nameQFilterAccItem}); - insertRow.set(ACCOUNT_ITEM,dynamicObjectAccItem); - this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); - - } - } - }else*/ if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){ //获取选中的索引 int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY); @@ -298,10 +191,8 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem}); insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem); this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow); - } } } } - } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/BudgetActuRptQueryPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/BudgetActuRptQueryPlugin.java index b066ccd..ea40d6f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/BudgetActuRptQueryPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/BudgetActuRptQueryPlugin.java @@ -131,7 +131,22 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin { } //年份-(预算&实际)/项目/金额 Map> countMap = new HashMap<>(); + + List searchFilterList1 = new ArrayList<>(); + //searchFilterList.add(new QFilter(DEV_KEY+"_year", QCP.equals, getFirstDayOfYear(year))); + DataSet queryUserDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName() + Bill_ANNUAL_BUDGET, + Bill_ANNUAL_BUDGET, selectSettlementFields.toString(), searchFilterList1.toArray(new QFilter [] {}), null).orderBy(new String[]{DEV_KEY+"_user",DEV_KEY+"_year"}); + + Set userSet = new HashSet<>(); + for (Row row : queryUserDataSet) { + Long aLong = row.getLong(DEV_KEY + "_user"); + userSet.add(aLong); + } + for (Long userId : allUsersOfOrg) { + if(!userSet.contains(userId)){ + continue; + } Map userInfoByID = UserServiceHelper.getUserInfoByID(userId); //预算金额 start String username = String.valueOf(userInfoByID.get("name")); @@ -197,7 +212,6 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin { userYearMapData.put(formatYear,d1); } } - for (Integer year : yearList) { Object [] tempData = new Object [FIELDS.length]; tempData[0] = userId; @@ -363,6 +377,8 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin { countMap.put(year+"b",m); } } + //关闭dataset + settlementDataSet.close(); } if(countMap.isEmpty()){ return resultDataSet; diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptListPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptListPlugin.java index 9f8ddd8..6d369d0 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptListPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/FeeDeductionRptListPlugin.java @@ -1,6 +1,8 @@ package zcgj.zcdev.zcdev.fs.plugin.report; import kd.bos.entity.datamodel.events.PackageDataEvent; +import kd.bos.entity.report.FilterInfo; +import kd.bos.entity.report.ReportQueryParam; import kd.bos.report.events.CellStyleRule; import kd.bos.report.plugin.AbstractReportFormPlugin; import kd.sdk.plugin.Plugin; @@ -33,6 +35,17 @@ public class FeeDeductionRptListPlugin extends AbstractReportFormPlugin implemen super.packageData(packageDataEvent); } + @Override + public boolean verifyQuery(ReportQueryParam queryParam) { + FilterInfo filter = queryParam.getFilter(); + StringBuilder sb = new StringBuilder(); + if (filter.getValue("zcgj_query_org") == null){ + this.getView().showTipNotification("请选择查询组织!"); + return false; + } + return true; + } + @Override public void setCellStyleRules(List cellStyleRules) {