From c1401be6b40d7e89a961b814b59a7383443cc67d Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Wed, 11 Jun 2025 16:47:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=85=B3=E8=81=94=E7=BB=B4=E4=BF=AE=E7=A1=AE=E8=AE=A4=20?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=97=B2=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/EquipmentCardListPlugin.java | 96 +++++++++++++++++++ .../form/PaymentApplySupplierPlugin.java | 18 ++++ 2 files changed, 114 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCardListPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCardListPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCardListPlugin.java new file mode 100644 index 0000000..1eeeaef --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCardListPlugin.java @@ -0,0 +1,96 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import com.greenpineyu.fel.common.NumberUtil; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.control.events.BeforeItemClickEvent; +import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.sdk.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +import java.util.EventObject; +import java.util.HashSet; +import java.util.Set; + +public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugin { + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + this.addItemClickListeners("tbmain");//监听按钮 + } + + @Override + public void itemClick(ItemClickEvent evt) { + super.itemClick(evt); + String itemKey = evt.getItemKey(); + if (itemKey.equals("zcgj_idle")){ + Set setIds = getSelectOrderIds(this.getSelectedRows()); + DynamicObject[] equipments = BusinessDataServiceHelper.load("eceq_equipment_card", "billno,billname,equipstatus", new QFilter[]{new QFilter("id", "in", setIds)}); + for (DynamicObject equipment : equipments) { + equipment.set("equipstatus","FREE"); + } + Object[] save = SaveServiceHelper.save(equipments); + System.out.println(); + this.getView().showMessage("闲置成功!"); + } + } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); +// FormOperate operate = (FormOperate) args.getSource(); +// String operateNo = operate.getOperateKey(); +// if(operateNo.equalsIgnoreCase("zcgj_idle")){ +// ListSelectedRowCollection listSelectedData = args.getListSelectedData(); +// for (ListSelectedRow listSelectedDatum : listSelectedData) { +// String billNo = listSelectedDatum.getBillNo(); +// QFilter qf = new QFilter("billno", QCP.equals,billNo); +// DynamicObject equipment = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{qf}); +// String equipstatus = equipment.getString("equipstatus"); +// if (!equipstatus.equals("USED")){ +// this.getView().showErrorNotification("只有在用状态下的设备才可置为闲置"); +// args.setCancel(true); +// return; +// } +// } +// +// } + } + + + @Override + public void beforeItemClick(BeforeItemClickEvent evt) { + super.beforeItemClick(evt); + String itemKey = evt.getItemKey(); + if(itemKey.equals("zcgj_idle")){ + Set setIds = getSelectOrderIds(this.getSelectedRows()); + DynamicObject[] equipments = BusinessDataServiceHelper.load("eceq_equipment_card", "billno,billname,equipstatus", new QFilter[]{new QFilter("id", "in", setIds)}); + for (DynamicObject equipment : equipments) { + String equipstatus = equipment.getString("equipstatus"); + if (!equipstatus.equals("USED")){ + this.getView().showErrorNotification("只有在用状态下的设备才可置为闲置"); + evt.setCancel(true); + return; + } + } + } + } + + @NotNull + private Set getSelectOrderIds(@NotNull ListSelectedRowCollection selectedRows) { + Set setIds = new HashSet<>(); + for (ListSelectedRow selectedRow : selectedRows) { + setIds.add(NumberUtil.toLong(selectedRow.getPrimaryKeyValue())); + } + return setIds; + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java index 9de0dc4..9f73486 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java @@ -163,6 +163,24 @@ public class PaymentApplySupplierPlugin extends AbstractBillPlugIn implements Pl // for (int i = 0; i < itementry.size(); i++) { // this.getModel().setValue("zcgj_supplier1", supplier, i); // } + }else if (propName.equals("zcgj_maintenance")) { + //关联设备维修 + Object value = this.getModel().getValue("zcgj_maintenance"); + if (value!=null){ + DynamicObject maintenance = (DynamicObject) value; + QFilter qf = new QFilter("id", QCP.equals, maintenance.getLong("id")); + DynamicObject maintenancebill = BusinessDataServiceHelper.loadSingle("zcgj_maintenanceackbill", new QFilter[]{qf}); + this.getModel().setValue("totalshouldpay",maintenancebill.getBigDecimal("zcgj_toactualamount")); + this.getModel().setValue("project",maintenancebill.getDynamicObject("zcgj_project")); + this.getModel().setValue("fiaccountorg",maintenancebill.getDynamicObject("zcgj_accountorg")); + DynamicObjectCollection maintenanceentry = maintenancebill.getDynamicObjectCollection("entryentity"); + for (int i = 0; i < maintenanceentry.size(); i++) { + DynamicObject object = maintenanceentry.get(i); + i = this.getModel().createNewEntryRow("itementry"); + this.getModel().setValue("zcgj_supplier1", object.getDynamicObject("zcgj_supplier"), i); + this.getModel().setValue("zcgj_requestedamount", object.getBigDecimal("zcgj_actualamount"), i); + } + } } } From 57e246fcbf9753746a70d1dcb8e483159f97abb6 Mon Sep 17 00:00:00 2001 From: zhangzhiguo Date: Wed, 11 Jun 2025 17:18:43 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/form/CommonFormPlugin.java | 61 +++++++++++++++++++ .../pr/plugin/form/CommonListPlugin.java | 32 ++++++++++ .../pr/plugin/form/RecAndPayInitPlugin.java | 29 ++++++++- 3 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonFormPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonListPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonFormPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonFormPlugin.java new file mode 100644 index 0000000..a621148 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonFormPlugin.java @@ -0,0 +1,61 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.form.FormShowParameter; +import kd.bos.form.plugin.AbstractFormPlugin; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.util.EventObject; +import java.util.Map; + +/** + * 表单插件公共方法
+ * 1.获取菜单参数配置的单据类型编码,菜单参数:
+ * key=billType,value=单据类型编码
+ * key=filedMark,value=单据类型字段标识
+ * 2.将单据类型编码转换为编辑界面单据类型字段的值 + */ +public class CommonFormPlugin extends AbstractFormPlugin { + private final static Log logger = LogFactory.getLog(CommonFormPlugin.class); + + + /** + * 初始化时,从获取参数类型,设置单据类型值 + * @param e + */ + @Override + public void afterCreateNewData(EventObject e) { + FormShowParameter formShowParameter = this.getView().getFormShowParameter(); + if(null!=formShowParameter){ + Map customParams = formShowParameter.getCustomParams(); + if(null!=customParams){ + //获取列表界面配置的参数:billType=单据类型编码 + Object billType = customParams.get("billType"); + //获取列表界面配置的参数:filedMark=单据类型字段标识 + Object filedMark = customParams.get("filedMark"); + if(null!=billType&&null!=filedMark){ + DynamicObject billTypeObj = (DynamicObject)this.getModel().getValue(filedMark.toString()); + if(null==billTypeObj){ + //单据类型为空,赋值 + QFilter q1 = new QFilter("number", "=", billType.toString()); + DynamicObject billTypeObject = BusinessDataServiceHelper.loadSingle("bos_billtype", new QFilter[]{q1}); + this.getModel().setValue(filedMark.toString(), billTypeObject); + }else if(!billTypeObj.getString("number").equals(billType.toString())){ + //单据类型和列表菜单参数一致,不再赋值 + QFilter q1 = new QFilter("number", "=", billType.toString()); + DynamicObject billTypeObject = BusinessDataServiceHelper.loadSingle("bos_billtype", new QFilter[]{q1}); + this.getModel().setValue(filedMark.toString(), billTypeObject); + } + + } + } + + } + + super.afterCreateNewData(e); + } + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonListPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonListPlugin.java new file mode 100644 index 0000000..d00f096 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CommonListPlugin.java @@ -0,0 +1,32 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.form.FormShowParameter; +import kd.bos.list.events.BeforeShowBillFormEvent; +import kd.bos.list.plugin.AbstractListPlugin; + +import java.util.Map; + +public class CommonListPlugin extends AbstractListPlugin { + + + + @Override + public void beforeShowBill(BeforeShowBillFormEvent e) { + FormShowParameter formShowParameter = this.getView().getFormShowParameter(); + if(null!=formShowParameter){ + Map customParams =formShowParameter.getCustomParams(); + if(null!=customParams){ + Object billtype = customParams.get("billType"); + Object filedMark = customParams.get("filedMark"); + if(null!=billtype&&null!=filedMark){ + customParams.putAll(e.getParameter().getCustomParams()); + customParams.put("billtype",billtype.toString()); + customParams.put("filedMark",filedMark.toString()); + customParams.put("formId","zcgj_zckstopublicbill"); + e.getParameter().setCustomParams(customParams); + } + } + } + super.beforeShowBill(e); + } +} \ No newline at end of file diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RecAndPayInitPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RecAndPayInitPlugin.java index 26a4b72..5236d70 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RecAndPayInitPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RecAndPayInitPlugin.java @@ -2,6 +2,7 @@ package zcgj.zcdev.zcdev.pr.plugin.form; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; @@ -36,8 +37,32 @@ public class RecAndPayInitPlugin extends AbstractBillPlugIn implements Plugin, B if(name.equals("zcgj_in_contract") || name.equals("zcgj_out_contract")){ DynamicObject project = (DynamicObject)this.getModel().getValue("zcgj_project"); List qFilterList = new ArrayList(); - qFilterList.add(new QFilter("project", QCP.equals,project.getLong("id"))); - arg0.setCustomQFilters(qFilterList); + if(project == null){ + this.getView().showErrorNotification("请选择项目!"); + arg0.setCancel(true); + }else{ + qFilterList.add(new QFilter("project", QCP.equals,project.getLong("id"))); + String entryKey = "zcgj_payable"; + String contractKey = "zcgj_out_contract"; + if(name.equals("zcgj_in_contract")){ + entryKey="zcgj_receivable"; + contractKey="zcgj_in_contract"; + } + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection(entryKey); + if(dynamicObjectCollection != null){ + List ids = new ArrayList<>(); + for (DynamicObject dynamicObject : dynamicObjectCollection) { + DynamicObject contract = dynamicObject.getDynamicObject(contractKey); + if(contract != null){ + long inContractId = contract.getLong("id"); + ids.add(inContractId); + } + } + qFilterList.add(new QFilter("id", QCP.not_in,ids)); + } + + arg0.setCustomQFilters(qFilterList); + } } } } From 5478714fb3a8fcaab1eab887b7da037541cca6af Mon Sep 17 00:00:00 2001 From: zhangzhiguo Date: Wed, 11 Jun 2025 17:21:27 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1.=E5=B7=AE=E6=97=85=E6=8A=A5=E9=94=80?= =?UTF-8?q?=E5=8D=95=E6=89=A3=E9=99=A4=E9=A4=90=E8=A1=A5=E5=A4=A9=E6=95=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86=202.=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E8=AE=A1=E7=AE=97=E9=97=AE=E9=A2=98=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/TriprAutoCalWorkingDaysPlugin.java | 32 +++++++++++-------- .../report/PositionFeesRptQueryPlugin.java | 8 +++-- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java index 32033ee..d152867 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java @@ -2,6 +2,8 @@ package zcgj.zcdev.zcdev.fs.plugin.form; import com.alibaba.druid.util.StringUtils; import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.bill.BillShowParameter; +import kd.bos.bill.OperationStatus; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -27,20 +29,24 @@ public class TriprAutoCalWorkingDaysPlugin extends AbstractBillPlugIn implements @Override public void afterBindData(EventObject e) { super.afterBindData(e); - //当前切换选择的组织 - Object company = this.getModel().getValue("costcompany");//核算组织(费用承担公司) - Long currentOrgId = RequestContext.get().getOrgId(); - if(company!=null){ - DynamicObject companyObj = (DynamicObject)company; - Long companyId = companyObj.getLong("id"); - if(OrgCheckUtils.isKS(companyId)){ - Set allSet = new HashSet<>(); - Set localDates1 = calHomeentityDay(); - Set localDates2 = calTripentryDay(); - allSet.addAll(localDates1); - allSet.addAll(localDates2); - this.getModel().setValue("zcgj_kccbdays",allSet.size()); + //如果是新增时 + BillShowParameter bsp=(BillShowParameter)this.getView().getFormShowParameter(); + if(bsp.getStatus()== OperationStatus.ADDNEW ){ + //当前切换选择的组织 + Object company = this.getModel().getValue("costcompany");//核算组织(费用承担公司) + Long currentOrgId = RequestContext.get().getOrgId(); + if(company!=null){ + DynamicObject companyObj = (DynamicObject)company; + Long companyId = companyObj.getLong("id"); + if(OrgCheckUtils.isKS(companyId)){ + Set allSet = new HashSet<>(); + Set localDates1 = calHomeentityDay(); + Set localDates2 = calTripentryDay(); + allSet.addAll(localDates1); + allSet.addAll(localDates2); + this.getModel().setValue("zcgj_kccbdays",allSet.size()); + } } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java index 7df155e..8725afb 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/report/PositionFeesRptQueryPlugin.java @@ -23,7 +23,7 @@ import java.util.*; import java.util.stream.Collectors; /** - * 职务消费休假台账 + * 职务消费台账 * 报表取数插件 */ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { @@ -133,6 +133,10 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { DynamicObjectCollection entrys = dynamicObject.getDynamicObjectCollection("expenseentryentity"); for (DynamicObject entry : entrys) { + DynamicObject zcgjCostmangerEntity = entry.getDynamicObject("zcgj_costmanger_entity"); + if(zcgjCostmangerEntity == null){ + continue; + } DynamicObject expenseitemObj = entry.getDynamicObject("expenseitem"); //费用项目 if(expenseitemObj == null){ continue; @@ -412,7 +416,7 @@ public class PositionFeesRptQueryPlugin extends AbstractReportListDataPlugin { searchFilterList.add(new QFilter("expenseentryentity.happendate", QCP.less_equals, lastDay)); searchFilterList.add(new QFilter("billstatus", QCP.in, billStatuslist));//增加过滤 DynamicObject[] load = BusinessDataServiceHelper.load("er_dailyreimbursebill", - "id,description,billno,expenseentryentity," + + "id,description,billno,expenseentryentity,zcgj_costmanger_entity," + DEV_KEY+"_is_business_foreign,"+ "expenseentryentity.happendate," + //费用发生日期 "expenseentryentity.expenseitem," + //费用项目