From 83931a9dc5443fd27a8a5bf97e08b1c46df970a2 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Tue, 17 Jun 2025 17:32:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=B4=E4=BF=AE=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=88=86=E5=BD=95=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/MaintenanceAckBillPlugin.java | 212 +++++++++++------- .../form/RepairSelectionFromPlugin.java | 97 ++++++++ 2 files changed, 232 insertions(+), 77 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RepairSelectionFromPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceAckBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceAckBillPlugin.java index 717ef4d..656bac0 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceAckBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaintenanceAckBillPlugin.java @@ -11,6 +11,7 @@ import kd.bos.entity.datamodel.ListSelectedRow; import kd.bos.entity.datamodel.ListSelectedRowCollection; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.CloseCallBack; +import kd.bos.form.FormShowParameter; import kd.bos.form.ShowFormHelper; import kd.bos.form.ShowType; import kd.bos.form.control.EntryGrid; @@ -38,35 +39,39 @@ import java.util.*; import java.util.stream.Collectors; public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plugin { - private static final Log log = LogFactory.getLog(MaintenanceAckBillPlugin.class); + private static final Log log = LogFactory.getLog(MaintenanceAckBillPlugin.class); - @Override - public void beforeDoOperation(BeforeDoOperationEventArgs args) { + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); - FormOperate operate = (FormOperate)args.getSource(); + FormOperate operate = (FormOperate) args.getSource(); String key = operate.getOperateKey(); if (StringUtils.equals(key, "newsubentry")) { //选择发票 this.beforeNewSubEntry(args); - } else if (StringUtils.equals(key, "selectinvoice")) { //导入发票 + } else if (StringUtils.equals(key, "selectinvoice")) { //导入发票 this.showInvoiceImport(args); - }else if (key.equals("deletesubentry")) { + } else if (key.equals("deletesubentry")) { this.beforeDeleteSubEntry(args); + } else if (key.equals("addnewentry")) { + this.beforeAddNewEntry(args); } } - public void closedCallBack(ClosedCallBackEvent event) { + public void closedCallBack(ClosedCallBackEvent event) { super.closedCallBack(event);//selectInvoice_2220454955754478592 String actionId = event.getActionId(); Object returnData = event.getReturnData(); if (actionId.toLowerCase().startsWith("zcgj_entryentity") && returnData != null) { this.invoiceCloseCallBack(event); - } else if (actionId.toLowerCase().startsWith("selectinvoice") && returnData != null) { + } else if (actionId.toLowerCase().startsWith("selectinvoice") && returnData != null) { this.importInvoiceCallBack(returnData); + } else if (actionId.toLowerCase().startsWith("tb_new") && returnData != null) { + this.importMaintenanceCallBack(returnData); } } - //选择发票 开始 - protected void beforeNewSubEntry(BeforeDoOperationEventArgs args) { + //选择发票 开始 + protected void beforeNewSubEntry(BeforeDoOperationEventArgs args) { String billId = this.getModel().getDataEntity().getPkValue().toString(); if (!billId.equals("0") && "A".equals(this.getModel().getValue("billstatus"))) { this.showInvoice("zcgj_entryentity"); @@ -76,9 +81,9 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug } } - private void showInvoice(String entryType) { - long currencyId = ((DynamicObject)this.getModel().getValue("zcgj_currency")).getLong("id"); - long orgId = ((DynamicObject)this.getModel().getValue("zcgj_accountorg")).getLong("id"); + private void showInvoice(String entryType) { + long currencyId = ((DynamicObject) this.getModel().getValue("zcgj_currency")).getLong("id"); + long orgId = ((DynamicObject) this.getModel().getValue("zcgj_accountorg")).getLong("id"); QFilter filter = new QFilter("org", "=", orgId); filter.and(new QFilter("isclaimed", "=", false)); filter.and(new QFilter("billstatus", "=", "C")); @@ -91,34 +96,34 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug // if (contract != null) { // long contractId = contract.getLong("id"); // filter1.and(new QFilter("contract", "=", contractId)); - filter1.and(new QFilter("unapplyamount", ">", BigDecimal.ZERO)); - DynamicObjectCollection contInvEntryCol = this.getModel().getEntryEntity("zcgj_entryentity"); - if (contInvEntryCol.size() > 0) { - List selectedInvIds = new ArrayList(8); + filter1.and(new QFilter("unapplyamount", ">", BigDecimal.ZERO)); + DynamicObjectCollection contInvEntryCol = this.getModel().getEntryEntity("zcgj_entryentity"); + if (contInvEntryCol.size() > 0) { + List selectedInvIds = new ArrayList(8); - for(DynamicObject contInvEntryObj : contInvEntryCol) { - DynamicObject invoice = contInvEntryObj.getDynamicObject("zcgj_invoice"); - selectedInvIds.add(invoice.getLong("id")); - } - - filter1.and(new QFilter("id", "not in", selectedInvIds)); + for (DynamicObject contInvEntryObj : contInvEntryCol) { + DynamicObject invoice = contInvEntryObj.getDynamicObject("zcgj_invoice"); + selectedInvIds.add(invoice.getLong("id")); } - ListShowParameter param = ShowFormHelper.createShowListForm("ec_in_invoice_f7", true); - param.getListFilterParameter().setFilter(filter.or(filter1)); - param.setMultiSelect(true); - param.setCloseCallBack(new CloseCallBack(this, entryType)); - param.getOpenStyle().setShowType(ShowType.Modal); - this.getView().showForm(param); + filter1.and(new QFilter("id", "not in", selectedInvIds)); + } + + ListShowParameter param = ShowFormHelper.createShowListForm("ec_in_invoice_f7", true); + param.getListFilterParameter().setFilter(filter.or(filter1)); + param.setMultiSelect(true); + param.setCloseCallBack(new CloseCallBack(this, entryType)); + param.getOpenStyle().setShowType(ShowType.Modal); + this.getView().showForm(param); // } } - protected void invoiceCloseCallBack(ClosedCallBackEvent event) { - ListSelectedRowCollection rows = (ListSelectedRowCollection)event.getReturnData(); + protected void invoiceCloseCallBack(ClosedCallBackEvent event) { + ListSelectedRowCollection rows = (ListSelectedRowCollection) event.getReturnData(); DynamicObject[] invArr = new DynamicObject[rows.size()]; int index = 0; // DynamicObject upContract = (DynamicObject)this.getModel().getValue("zcgj_contract"); - for(ListSelectedRow row : rows) { + for (ListSelectedRow row : rows) { Object invoicePk = row.getPrimaryKeyValue().toString(); int rowIndex = this.getModel().createNewEntryRow("zcgj_entryentity"); this.getModel().setValue("zcgj_invoice", invoicePk.toString(), rowIndex); @@ -133,29 +138,29 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug invArr[index++] = invoice; invoice.set("isclaimed", true); // invoice.set("contract", upContract); - invoice.set("project", (DynamicObject)this.getModel().getValue("zcgj_project")); + invoice.set("project", (DynamicObject) this.getModel().getValue("zcgj_project")); invoice.set("connecttype", "contract"); } SaveServiceHelper.save(invArr); this.getView().invokeOperation("invoicesave"); } - protected BigDecimal getSum(String entryId, String columnId) { + protected BigDecimal getSum(String entryId, String columnId) { int rowCount = this.getModel().getEntryRowCount(entryId); BigDecimal totalAmount = BigDecimal.ZERO; - for(int i = 0; i < rowCount; ++i) { - BigDecimal amount = (BigDecimal)this.getModel().getValue(columnId, i); + for (int i = 0; i < rowCount; ++i) { + BigDecimal amount = (BigDecimal) this.getModel().getValue(columnId, i); amount = amount == null ? BigDecimal.ZERO : amount; totalAmount = totalAmount.add(amount); } return totalAmount; } - //选择发票 结束 + //选择发票 结束 - //导入发票 开始 - protected void showInvoiceImport(BeforeDoOperationEventArgs args) { + //导入发票 开始 + protected void showInvoiceImport(BeforeDoOperationEventArgs args) { String billId = this.getModel().getDataEntity().getPkValue().toString(); if (!billId.equals("0") && "A".equals(this.getModel().getValue("billstatus"))) { if (this.getModel().getValue("zcgj_accountorg") == null) { @@ -165,7 +170,7 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug if (!ImportInvoiceUtils.isXhInvoiceCloud()) { args.setCancel(true); ImportInvoiceUtils.showImportView(this); - }else{ + } else { args.setCancel(true); DynamicObject org = (DynamicObject) this.getModel().getValue("zcgj_accountorg"); InvoiceCollectHelper.showSelectInvoice(this, org); @@ -177,25 +182,25 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug } } - protected void importInvoiceCallBack(Object returnData) { - DynamicObject org = (DynamicObject)this.getModel().getValue("zcgj_accountorg"); + protected void importInvoiceCallBack(Object returnData) { + DynamicObject org = (DynamicObject) this.getModel().getValue("zcgj_accountorg"); //List invoiceVOList = InvoiceDataHandleHelper.parseXhInvoiceCloudReturnData(returnData); List invoiceVOList = CustomInvoiceDataHandleHelper.parseXhInvoiceCloudReturnData(returnData); Map> invoiceMap = InvoiceDataHandleHelper.processInvoiceVO(invoiceVOList, RequestContext.get().getCurrUserId(), - org.getLong("id"), new Date(), "ec_in_invoice", (DynamicObject)this.getModel().getValue("zcgj_currency"), true); + org.getLong("id"), new Date(), "ec_in_invoice", (DynamicObject) this.getModel().getValue("zcgj_currency"), true); ImportInvoiceUtils invoiceUtils = new ImportInvoiceUtils(this.getView(), this.getPageCache()); this.addInvoiceToEntry(invoiceUtils, invoiceMap); } - protected void addInvoiceToEntry(ImportInvoiceUtils invoiceUtils, Map> invoiceMap) { + protected void addInvoiceToEntry(ImportInvoiceUtils invoiceUtils, Map> invoiceMap) { if (invoiceMap.isEmpty()) { this.getView().showTipNotification(ResManager.loadKDString("导入发票为空。", "PaymentApplyEditUI_19", "ec-contract-formplugin", new Object[0])); } else { - long orgId = (Long)((DynamicObject)this.getModel().getValue("zcgj_accountorg")).getPkValue(); - Set newInvoices = (Set)invoiceMap.get(Boolean.TRUE); - Set existInvoices = (Set)invoiceMap.get(Boolean.FALSE); + long orgId = (Long) ((DynamicObject) this.getModel().getValue("zcgj_accountorg")).getPkValue(); + Set newInvoices = (Set) invoiceMap.get(Boolean.TRUE); + Set existInvoices = (Set) invoiceMap.get(Boolean.FALSE); if (newInvoices != null && !newInvoices.isEmpty()) { - for(DynamicObject newInvoice : newInvoices) { + for (DynamicObject newInvoice : newInvoices) { DynamicObject buyerOrg = newInvoice.getDynamicObject("buyer"); if (buyerOrg != null && buyerOrg.getLong("id") != orgId) { this.getView().showErrorNotification(ResManager.loadKDString("导入失败:当前发票购买方不为当前财务记账组织,请确认信息。", "PaymentApplyEditUI_20", "ec-contract-formplugin", new Object[0])); @@ -206,31 +211,31 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug this.saveInvoiceData(invoiceUtils, newInvoices, existInvoices); } else if (existInvoices != null) { DynamicObjectCollection contInvEntryCol = this.getModel().getEntryEntity("zcgj_entryentity"); - Map entryMap = (Map)contInvEntryCol.stream().collect(Collectors.toMap(this::getInvoicePK, this::getInvoicePK)); + Map entryMap = (Map) contInvEntryCol.stream().collect(Collectors.toMap(this::getInvoicePK, this::getInvoicePK)); this.initSubEntryEntity(existInvoices, entryMap); } } } - protected void saveInvoiceData(ImportInvoiceUtils invoiceUtils, Set newInvoices, Set existInvoices) { + protected void saveInvoiceData(ImportInvoiceUtils invoiceUtils, Set newInvoices, Set existInvoices) { invoiceUtils.saveInvoiceAndGiveTips(newInvoices, existInvoices); if (newInvoices != null && existInvoices != null) { newInvoices.addAll(existInvoices); } - this.initSubEntryEntity(newInvoices, (Map)null); + this.initSubEntryEntity(newInvoices, (Map) null); } - protected void initSubEntryEntity(Set invoices, Map entryMap) { + protected void initSubEntryEntity(Set invoices, Map entryMap) { if (invoices != null) { List invArr = new ArrayList(invoices.size()); - for(DynamicObject invoice : invoices) { + for (DynamicObject invoice : invoices) { if (entryMap != null && entryMap.get(invoice.getPkValue()) != null) { this.getView().showTipNotification(String.format(ResManager.loadKDString("发票号码%s,已存在分录行", "PaymentApplyEditUI_22", "ec-contract-formplugin", new Object[0]), invoice.getString("invoiceno"))); } else { BigDecimal unApplyAmount = invoice.getBigDecimal("unapplyamount"); - if (unApplyAmount != null && unApplyAmount.doubleValue() <= (double)0.0F) { + if (unApplyAmount != null && unApplyAmount.doubleValue() <= (double) 0.0F) { this.getView().showTipNotification(String.format(ResManager.loadKDString("发票号码%s,金额已经被关联完毕,不可重复使用", "PaymentApplyEditUI_23", "ec-contract-formplugin", new Object[0]), invoice.getString("invoiceno"))); } else { // DynamicObject upContract = (DynamicObject)this.getModel().getValue("zcgj_contract"); @@ -245,7 +250,7 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug this.getModel().setValue("zcgj_applyinvoftaxamt", invoice.getBigDecimal("unapplyamount"), rowIndex); invoice.set("isclaimed", true); // invoice.set("contract", upContract); - invoice.set("project", (DynamicObject)this.getModel().getValue("zcgj_project")); + invoice.set("project", (DynamicObject) this.getModel().getValue("zcgj_project")); invoice.set("connecttype", "contract"); invArr.add(invoice); } @@ -253,20 +258,20 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug } if (invArr.size() > 0) { - SaveServiceHelper.save((DynamicObject[])invArr.toArray(new DynamicObject[invoices.size()])); + SaveServiceHelper.save((DynamicObject[]) invArr.toArray(new DynamicObject[invoices.size()])); } this.getView().invokeOperation("invoicesave"); } } - protected Object getInvoicePK(DynamicObject object) { + protected Object getInvoicePK(DynamicObject object) { return object.getDynamicObject("invoice").getPkValue(); } - //导入发票 结束 + //导入发票 结束 - //删除发票 开始 - protected void beforeDeleteSubEntry(BeforeDoOperationEventArgs args) { - EntryGrid subGrid = (EntryGrid)this.getControl("zcgj_entryentity"); + //删除发票 开始 + protected void beforeDeleteSubEntry(BeforeDoOperationEventArgs args) { + EntryGrid subGrid = (EntryGrid) this.getControl("zcgj_entryentity"); int[] selRows = subGrid.getEntryState().getSelectedRows(); if (selRows.length == 0) { this.getView().showMessage(ResManager.loadKDString("请选择发票。", "PaymentApplyEditUI_3", "ec-contract-formplugin", new Object[0])); @@ -276,11 +281,11 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug Set updateInvoicePks = new HashSet(selRows.length); DynamicObjectCollection subEntryEntityCol = this.getModel().getEntryEntity("zcgj_entryentity"); - for(int i = selRows.length - 1; i >= 0; --i) { + for (int i = selRows.length - 1; i >= 0; --i) { int rowIndex = selRows[i]; - DynamicObject invoice = (DynamicObject)this.getModel().getValue("zcgj_invoice", rowIndex); + DynamicObject invoice = (DynamicObject) this.getModel().getValue("zcgj_invoice", rowIndex); updateInvoicePks.add(invoice.getPkValue()); - delPks[i] = ((DynamicObject)subEntryEntityCol.get(selRows[i])).getPkValue(); + delPks[i] = ((DynamicObject) subEntryEntityCol.get(selRows[i])).getPkValue(); this.getModel().deleteEntryRow("zcgj_entryentity", rowIndex); } @@ -292,7 +297,7 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug filter.and("id", "!=", this.getModel().getDataEntity().getPkValue()); DynamicObjectCollection invoiceApplyEntries = QueryServiceHelper.query("zcgj_ec_out_finaceconfirm", "zcgj_entryentity.zcgj_invoice", new QFilter[]{filter}); if (invoiceApplyEntries != null && !invoiceApplyEntries.isEmpty()) { - for(DynamicObject subEntry : invoiceApplyEntries) { + for (DynamicObject subEntry : invoiceApplyEntries) { updateInvoicePks.remove(subEntry.get("zcgj_entryentity.zcgj_invoice")); } } @@ -301,11 +306,11 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug DynamicObject[] invoices = BusinessDataServiceHelper.load("ec_in_invoice", "isinvoiceclaim,isclaimed,contract,project,connecttype", new QFilter[]{new QFilter("id", "in", updateInvoicePks)}); - for(DynamicObject invoice : invoices) { + for (DynamicObject invoice : invoices) { if (!invoice.getBoolean("isinvoiceclaim")) { invoice.set("isclaimed", false); - invoice.set("contract", (Object)null); - invoice.set("project", (Object)null); + invoice.set("contract", (Object) null); + invoice.set("project", (Object) null); invoice.set("connecttype", "null"); } } @@ -318,15 +323,68 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug //this.setEnableByInvoice(); } } - //删除发票 结束 + //删除发票 结束 + + protected void beforeAddNewEntry(BeforeDoOperationEventArgs args) { + Object value = this.getModel().getValue("zcgj_maintenance"); + if (value != null) { + DynamicObject maintenance = (DynamicObject) value; + QFilter filter = new QFilter("zcgj_maintenance.id", QCP.equals, maintenance.getLong("id")); + DynamicObject[] maintenanceackbill = BusinessDataServiceHelper.load("zcgj_maintenanceackbill", "entryentity.zcgj_sourceid", new QFilter[]{filter}); + Set set = new HashSet(); + set.add("9999999"); + for (DynamicObject dynamicObject : maintenanceackbill) { + for (DynamicObject object : dynamicObject.getDynamicObjectCollection("entryentity")) { + set.add(object.getString("zcgj_sourceid")); + } + } + DynamicObjectCollection entryentity = (DynamicObjectCollection) getModel().getEntryEntity("entryentity"); + for (DynamicObject dynamicObject : entryentity) { + String sourceid = dynamicObject.getString("zcgj_sourceid"); + set.add(sourceid); + } + FormShowParameter formShowParameter = new FormShowParameter(); + // 弹窗案例-动态表单 页面标识 + formShowParameter.setFormId("zcgj_repairselection"); + // 自定义传参,把当前单据的文本字段传过去 + formShowParameter.setCustomParam("set", set); + formShowParameter.setCustomParam("id", maintenance.getLong("id")); + // 设置回调事件,回调插件为当前插件,标识为zcgj_ + formShowParameter.setCloseCallBack(new CloseCallBack(this, "tb_new")); + // 设置打开类型为模态框(不设置的话指令参数缺失,没办法打开页面) + formShowParameter.getOpenStyle().setShowType(ShowType.Modal); + // 当前页面发送showform指令。注意也可以从其他页面发送指令,后续有文章介绍 + this.getView().showForm(formShowParameter); + }else{ + this.getView().showErrorNotification("请先选择关联维修申请单!"); + args.setCancel(true); + } + } + + protected void importMaintenanceCallBack(Object returnData) { + if (returnData!=null){ + DynamicObjectCollection data = (DynamicObjectCollection) returnData; + for (DynamicObject datum : data) { + int i = this.getModel().createNewEntryRow("entryentity"); + this.getModel().setValue("zcgj_equipment", datum.getDynamicObject("zcgj_equipment"), i); + this.getModel().setValue("zcgj_fault", datum.getString("zcgj_fault"), i); + this.getModel().setValue("zcgj_faultreason", datum.getString("zcgj_faultreason"), i); + this.getModel().setValue("zcgj_amount", datum.getBigDecimal("zcgj_amount"), i); + this.getModel().setValue("zcgj_contacts", datum.getString("zcgj_contacts"), i); + this.getModel().setValue("zcgj_supplier", datum.getDynamicObject("zcgj_supplier"), i); + this.getModel().setValue("zcgj_sourceid", datum.getString("zcgj_sourceid"), i); + } + + } + } @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String name = e.getProperty().getName(); - if (name.equals("zcgj_maintenance")){ + if (name.equals("zcgj_maintenance")) { Object value = this.getModel().getValue("zcgj_maintenance"); - if (value!=null){ + if (value != null) { DynamicObject maintenance = (DynamicObject) value; QFilter filter = new QFilter("zcgj_maintenance.id", QCP.equals, maintenance.getLong("id")); DynamicObject[] maintenanceackbill = BusinessDataServiceHelper.load("zcgj_maintenanceackbill", "entryentity.zcgj_sourceid", new QFilter[]{filter}); @@ -338,16 +396,16 @@ public class MaintenanceAckBillPlugin extends AbstractBillPlugIn implements Plug } } QFilter qf = new QFilter("id", QCP.equals, maintenance.getLong("id")); - DynamicObject maintenancebill = BusinessDataServiceHelper.loadSingle("zcgj_maintenancebill", new QFilter[]{qf}); - this.getModel().setValue("zcgj_project",maintenancebill.getDynamicObject("zcgj_project"));//项目 - this.getModel().setValue("zcgj_accountorg",maintenancebill.getDynamicObject("zcgj_accountorg"));//财务记账组织 - this.getModel().setValue("zcgj_totalamount",maintenancebill.getBigDecimal("zcgj_totalamount"));//预估维修金额 - this.getModel().setValue("zcgj_currency",maintenancebill.getDynamicObject("zcgj_currency"));//币别 + DynamicObject maintenancebill = BusinessDataServiceHelper.loadSingle("zcgj_maintenancebill", new QFilter[]{qf}); + this.getModel().setValue("zcgj_project", maintenancebill.getDynamicObject("zcgj_project"));//项目 + this.getModel().setValue("zcgj_accountorg", maintenancebill.getDynamicObject("zcgj_accountorg"));//财务记账组织 + this.getModel().setValue("zcgj_totalamount", maintenancebill.getBigDecimal("zcgj_totalamount"));//预估维修金额 + this.getModel().setValue("zcgj_currency", maintenancebill.getDynamicObject("zcgj_currency"));//币别 DynamicObjectCollection entrys = (DynamicObjectCollection) getModel().getValue("entryentity"); DynamicObjectCollection maintenanceentry = maintenancebill.getDynamicObjectCollection("entryentity"); maintenanceentry.removeIf(entry -> set.contains(entry.getString("id")));//去除之前单据已有的数据 entrys.clear(); - for (int i = 0; i customParams = this.getView().getFormShowParameter().getCustomParams(); + Object set = customParams.get("set"); + Object id = customParams.get("id"); + if (set != null) { + Set source = new HashSet(); + JSONArray objects = JSONArray.parseArray(set.toString()); + for (Object object : objects) { + source.add(object); + } + QFilter qf = new QFilter("id", QCP.equals, Long.valueOf(id.toString())); + DynamicObject maintenancebill = BusinessDataServiceHelper.loadSingle("zcgj_maintenancebill", new QFilter[]{qf}); + DynamicObjectCollection maintenanceentry = maintenancebill.getDynamicObjectCollection("entryentity"); + maintenanceentry.removeIf(entry -> source.contains(entry.getString("id")));//去除之前单据已有的数据 + DynamicObjectCollection entryentity = (DynamicObjectCollection) getModel().getValue("zcgj_entryentity"); + entryentity.clear(); + for (int i = 0; i < maintenanceentry.size(); i++) { + DynamicObject object = maintenanceentry.get(i); + i = this.getModel().createNewEntryRow("zcgj_entryentity"); + this.getModel().setValue("zcgj_equipment", object.getDynamicObject("zcgj_equipment"), i); + this.getModel().setValue("zcgj_fault", object.getString("zcgj_fault"), i); + this.getModel().setValue("zcgj_faultreason", object.getString("zcgj_faultreason"), i); + this.getModel().setValue("zcgj_amount", object.getBigDecimal("zcgj_amount"), i); + this.getModel().setValue("zcgj_contacts", object.getString("zcgj_contacts"), i); + this.getModel().setValue("zcgj_supplier", object.getDynamicObject("zcgj_supplier"), i); + this.getModel().setValue("zcgj_sourceid", object.getString("id"), i); + } + } + } + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + Button btnok = this.getControl("btnok");//确定 + btnok.addClickListener(this); + } + + @Override + public void click(EventObject evt) { + super.click(evt); + Control source = (Control) evt.getSource(); + String key = source.getKey(); + if(key.equals("btnok")){ + EntryGrid entryGrid = this.getControl("zcgj_entryentity"); + int[] selectRows = entryGrid.getSelectRows(); + int count = selectRows.length; + //分录行数只有一条的时候才能通过接下来两个if + if (count == 0) { + this.getView().showErrorNotification("请选择至少一条维修申请信息!"); + return; + } + DynamicObjectCollection qeug_entryentity = getModel().getEntryEntity("zcgj_entryentity");//分录 + DynamicObjectCollection collection = new DynamicObjectCollection(); + for (int selectRow : selectRows) { + collection.add(qeug_entryentity.get(selectRow)); + } + this.getView().returnDataToParent(collection); + this.getView().close(); + } else if (key.equals("btncancel")) { + this.getView().close(); + } + } +}