From 6d6a16f4728d04026fca8669f2918fb04d622112 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Tue, 17 Jun 2025 15:04:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AE=9E=E7=89=A9=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=87=B3=E8=AE=BE=E5=A4=87=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/EquipmentCardListPlugin.java | 34 +-------------- .../pr/plugin/form/MaintenanceBillPlugin.java | 31 ++++++++++++++ .../plugin/form/QueryInstancesFromPlugin.java | 40 ++++++++++-------- .../pr/plugin/operate/MaintenanceAckOp.java | 13 ++++++ .../operate/MaintenanceAckValidator.java | 41 +++++++++++++++++++ .../operate/MaintenanceBillValidator.java | 29 +++++++++++++ 6 files changed, 139 insertions(+), 49 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceBillPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckValidator.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillValidator.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 index 1df660f..d115076 100644 --- 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 @@ -130,40 +130,8 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi OperationResult result = OperationServiceHelper.executeOperate("save", "eceq_equipment_card", new DynamicObject[]{equipmentcard}, null); System.out.println(); } - DynamicObject eceq_equipment= BusinessDataServiceHelper.loadSingle("eceq_equipinfo", new QFilter[]{new QFilter("number", QCP.equals, number)}); - if(eceq_equipment!=null){ - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM"); //设置格式 - String ym =sd.format(date); - DynamicObjectCollection entrys = eceq_equipment.getDynamicObjectCollection("zcgj_entryentity"); - QFilter qf = new QFilter("realcard.number", QCP.in, number); - if (entrys.size()>0){//若分录行数大于0 则取上月的 - qf.and(new QFilter("billno", QCP.in, ym)); - for (int i = 0; i < entrys.size(); i++) { - DynamicObject entry = entrys.get(i); - String zcgjDebillno = entry.getString("zcgj_debillno"); - entrys.removeIf(record -> isLastMonth(zcgjDebillno));//若属于上个月那就删除重新塞入 - } - } - DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); - for (DynamicObject depresplitdetail : depresplitdetails) { - String billno = depresplitdetail.getString("billno"); - DynamicObject period = depresplitdetail.getDynamicObject("period");//折旧区间 - DynamicObject splitdept = depresplitdetail.getDynamicObject("splitdept");//使用部门 - DynamicObjectCollection assentry = depresplitdetail.getDynamicObjectCollection("assentry"); - DynamicObject costcentrer = assentry.get(0).getDynamicObject("costcentrer");//成本中心 - BigDecimal splitamount = assentry.get(0).getBigDecimal("splitamount");//分摊金额 - DynamicObject addNew = entrys.addNew(); - addNew.set("zcgj_debillno",billno); - addNew.set("zcgj_assperiod",period); - addNew.set("zcgj_headusedept",splitdept); - addNew.set("zcgj_entrybillno",number); - addNew.set("zcgj_entryname",assetname); - addNew.set("zcgj_costcenter",costcentrer); - addNew.set("zcgj_shareamount",splitamount); - } - SaveServiceHelper.update(eceq_equipment); - } } + this.getView().showMessage("同步操作成功。"); } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceBillPlugin.java new file mode 100644 index 0000000..375c1c1 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceBillPlugin.java @@ -0,0 +1,31 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +public class MaintenanceBillPlugin extends AbstractBillPlugIn implements Plugin { + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + if (name.equals("zcgj_project")){ + Object zcgj_project = this.getModel().getValue("zcgj_project"); + if(zcgj_project!=null){ + DynamicObject project = (DynamicObject) zcgj_project; + DynamicObject projectinfo = BusinessDataServiceHelper.loadSingle("ec_project_f7", new QFilter[]{new QFilter("id", QCP.equals, project.getLong("id"))}); + DynamicObject fiaccountorg = projectinfo.getDynamicObject("fiaccountorg"); + this.getModel().setValue("zcgj_accountorg",fiaccountorg); + this.getView().setEnable(false,"zcgj_accountorg"); + }else { + this.getModel().setValue("zcgj_accountorg",null); + this.getView().setEnable(true,"zcgj_accountorg"); + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java index 2592b35..6ecbdd4 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java @@ -69,25 +69,33 @@ public class QueryInstancesFromPlugin extends AbstractFormPlugin implements Cell // String type = ""; if (!fieldKey.equals("0")) { int row = cellClickEvent.getRow(); - Object number = getModel().getValue("zcgj_billno", row); Object type = getModel().getValue("zcgj_type", row); - if (number != null) { + if(fieldKey.equals("zcgj_billno")){ + Object number = getModel().getValue("zcgj_billno", row); + contract = BusinessDataServiceHelper.loadSingle(type.toString(), "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); + } else if (fieldKey.equals("zcgj_renewalnum")) { + Object number = getModel().getValue("zcgj_renewalnum", row); contract = BusinessDataServiceHelper.loadSingle(type.toString(), "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); - if (contract != null) { -// Qtype = "ec_in_contract"; -// } else { -// contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); -// type = "ec_out_contract"; -// } - } - if (fieldKey.equals("zcgj_billno") || fieldKey.equals("zcgj_renewalnum")) { - BillShowParameter formShowParameter = new BillShowParameter(); - formShowParameter.setFormId(type.toString()); - formShowParameter.setPkId(contract.getLong("id")); - formShowParameter.getOpenStyle().setShowType(ShowType.Modal); - getView().showForm(formShowParameter); - } } + BillShowParameter formShowParameter = new BillShowParameter(); + formShowParameter.setFormId(type.toString()); + formShowParameter.setPkId(contract.getLong("id")); + formShowParameter.getOpenStyle().setShowType(ShowType.Modal); + getView().showForm(formShowParameter); + + +// if (number != null) { +// if (contract != null) { +//// Qtype = "ec_in_contract"; +//// } else { +//// contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); +//// type = "ec_out_contract"; +//// } +// } +// if (fieldKey.equals("zcgj_billno") || fieldKey.equals("zcgj_renewalnum")) { +// +// } +// } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckOp.java new file mode 100644 index 0000000..00787a7 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckOp.java @@ -0,0 +1,13 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; + +public class MaintenanceAckOp extends AbstractOperationServicePlugIn { + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.getValidators().add(0, new MaintenanceAckValidator()); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckValidator.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckValidator.java new file mode 100644 index 0000000..23a8f5b --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceAckValidator.java @@ -0,0 +1,41 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.math.BigDecimal; + +public class MaintenanceAckValidator extends AbstractValidator { + @Override + public void validate() { + String operateKey = this.getOperateKey(); + if (operateKey.equals("submit")){ + ExtendedDataEntity[] maintenancebills = this.getDataEntities(); + for (ExtendedDataEntity maintenancebill : maintenancebills) { + DynamicObject maintenanceinfo = maintenancebill.getDataEntity(); +// QFilter contractIdFilter = new QFilter("id", QCP.equals,billNo); +// DynamicObject maintenanceinfo = BusinessDataServiceHelper.loadSingle("zcgj_maintenancebill", new QFilter[]{contractIdFilter}); + DynamicObjectCollection entrys = maintenanceinfo.getDynamicObjectCollection("entryentity"); + if (entrys.size()<=0){ + this.addErrorMessage(maintenancebill, ResManager.loadKDString("设备维修确认分录不能为空!", "MaintenanceBillValidator", "ec-eceq-opplugin", new Object[0])); + } + DynamicObjectCollection entryentitys = maintenanceinfo.getDynamicObjectCollection("zcgj_entryentity"); + BigDecimal toactualamount = maintenanceinfo.getBigDecimal("zcgj_toactualamount"); + BigDecimal invoiceAmount = BigDecimal.ZERO; + for (DynamicObject entryentity : entryentitys) { + BigDecimal oftaxinvoiceamount = entryentity.getBigDecimal("zcgj_oftaxinvoiceamount"); + invoiceAmount = invoiceAmount.add(oftaxinvoiceamount); + } + if(toactualamount.compareTo(invoiceAmount)!=0){ + this.addErrorMessage(maintenancebill, ResManager.loadKDString("实际总维修费用应等于发票总金额,请检查!", "MaintenanceBillValidator", "ec-eceq-opplugin", new Object[0])); + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillValidator.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillValidator.java new file mode 100644 index 0000000..29232ca --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillValidator.java @@ -0,0 +1,29 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +public class MaintenanceBillValidator extends AbstractValidator { + @Override + public void validate() { + String operateKey = this.getOperateKey(); + if (operateKey.equals("submit")){ + ExtendedDataEntity[] maintenancebills = this.getDataEntities(); + for (ExtendedDataEntity maintenancebill : maintenancebills) { + DynamicObject maintenanceinfo = maintenancebill.getDataEntity(); +// QFilter contractIdFilter = new QFilter("id", QCP.equals,billNo); +// DynamicObject maintenanceinfo = BusinessDataServiceHelper.loadSingle("zcgj_maintenancebill", new QFilter[]{contractIdFilter}); + DynamicObjectCollection entrys = maintenanceinfo.getDynamicObjectCollection("entryentity"); + if (entrys.size()<=0){ + this.addErrorMessage(maintenancebill, ResManager.loadKDString("设备维修申请分录不能为空!", "MaintenanceBillValidator", "ec-eceq-opplugin", new Object[0])); + } + } + } + } +} From 663baefb2c1addbd9ae205e52db9cc70f613fbd9 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Tue, 17 Jun 2025 15:06:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=B4=E4=BF=AE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E7=95=8C=E9=9D=A2=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/operate/MaintenanceBillOp.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillOp.java new file mode 100644 index 0000000..468dc0f --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaintenanceBillOp.java @@ -0,0 +1,41 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.util.ArrayList; +import java.util.List; + +public class MaintenanceBillOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); +// List fieldKeys = e.getFieldKeys(); +// String billno = ""; +// List objects = new ArrayList<>(); +// for (Object id : e.getIds()) { +// QFilter filter = new QFilter("id", QCP.equals,Long.valueOf(id.toString())); +// DynamicObject[] contracts = BusinessDataServiceHelper.load("ec_in_contract", "*", new QFilter[]{filter}); +// for (DynamicObject contract : contracts) { +// billno = contract.getString("billno"); +// } +// QFilter qf = new QFilter("zcgj_renewal", QCP.in,billno); +// DynamicObject[] recontracts = BusinessDataServiceHelper.load("ec_in_contract", "*", new QFilter[]{filter}); +// for (DynamicObject recontract : recontracts) { +// objects.add( recontract.getString("billno")); +// } +// } + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.getValidators().add(0, new MaintenanceBillValidator()); + } +}