diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCommandBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCommandBillPlugin.java index a08cd34..2d5629f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCommandBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCommandBillPlugin.java @@ -3,6 +3,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.entity.datamodel.ListSelectedRow; import kd.bos.entity.datamodel.ListSelectedRowCollection; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; @@ -10,6 +11,8 @@ 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.isc.util.misc.StringUtil; @@ -27,14 +30,15 @@ import java.util.List; /* * 设备调令单表单插件 * 说明:1:设备编码带出资产编码;2:过滤设备编码字段;3:调出调入项目带出调出调入负责人;4:自动带出所属组织和部门 - * 5:调入调出组织过滤逻辑 + * 5:调入调出组织过滤逻辑;6:设备管理组织赋值逻辑和设备编码选择逻辑 */ -public class EquipmentCommandBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { +public class EquipmentCommandBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener, AfterF7SelectListener { @Override public void registerListener(EventObject e) { super.registerListener(e); BasedataEdit realCard = this.getControl("zcgj_realcard"); //设备编码 realCard.addBeforeF7SelectListener(this); + realCard.addAfterF7SelectListener(this); BasedataEdit outProject = this.getControl("zcgj_outproject"); //调出项目 outProject.addBeforeF7SelectListener(this); BasedataEdit inProject = this.getControl("zcgj_inproject"); //调入项目 @@ -49,6 +53,89 @@ public class EquipmentCommandBillPlugin extends AbstractBillPlugIn implements Be zcgj_inorg.addBeforeF7SelectListener(this); } + @Override + public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) { + ListSelectedRowCollection listSelectedRowCollection = afterF7SelectEvent.getListSelectedRowCollection(); + DynamicObjectCollection dispatchEntryCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_dispatchentry");//设备调令单分录 + + // 收集当前选择的设备的组织ID + List selectedOrgIds = new ArrayList<>(); + for (int i = 0; i < listSelectedRowCollection.size(); i++) { + ListSelectedRow listSelectedRow = listSelectedRowCollection.get(i); + QFilter[] qFilters = new QFilter[]{new QFilter("id", QCP.equals, listSelectedRow.getPrimaryKeyValue())}; + DynamicObject eceq_equipment_info = BusinessDataServiceHelper.loadSingle("eceq_equipment_info", "org", qFilters);//设备台账F7 + if (eceq_equipment_info != null) { + DynamicObject org = eceq_equipment_info.getDynamicObject("org");//设备台账F7-管理组织 + if (org != null) { + Long orgId = (Long) org.getPkValue(); + if (!selectedOrgIds.contains(orgId)) { + selectedOrgIds.add(orgId); + } + } + } + } + + // 检查现有分录中的设备组织 + List existingOrgIds = new ArrayList<>(); + for (int i = 0; i < dispatchEntryCollection.size(); i++) { + DynamicObject dispatchEntry = dispatchEntryCollection.get(i); + DynamicObject realCard = dispatchEntry.getDynamicObject("zcgj_realcard");//分录-设备编码 + if (realCard != null) { + QFilter[] qFilters = new QFilter[]{new QFilter("id", QCP.equals, realCard.getPkValue())}; + DynamicObject eceq_equipment_info = BusinessDataServiceHelper.loadSingle("eceq_equipment_info", "org", qFilters);//设备台账F7 + if (eceq_equipment_info != null) { + DynamicObject org = eceq_equipment_info.getDynamicObject("org");//设备台账F7-管理组织 + if (org != null) { + Long orgId = (Long) org.getPkValue(); + if (!existingOrgIds.contains(orgId)) { + existingOrgIds.add(orgId); + } + } + } + } + } + + // 合并所有组织ID + List allOrgIds = new ArrayList<>(); + allOrgIds.addAll(selectedOrgIds); + for (Long orgId : existingOrgIds) { + if (!allOrgIds.contains(orgId)) { + allOrgIds.add(orgId); + } + } + + // 如果存在多个不同组织 + if (allOrgIds.size() > 1) { + // 删除当前新增的行(即刚选择的设备对应的行) + // 从后往前删除,避免索引变化问题 + for (int i = dispatchEntryCollection.size() - 1; i >= 0; i--) { + DynamicObject dispatchEntry = dispatchEntryCollection.get(i); + DynamicObject realCard = dispatchEntry.getDynamicObject("zcgj_realcard");//分录-设备编码 + if (realCard != null) { + // 检查这个设备是否是当前选择的设备 + boolean isCurrentSelected = false; + for (ListSelectedRow selectedRow : listSelectedRowCollection) { + if (realCard.getPkValue().equals(selectedRow.getPrimaryKeyValue())) { + isCurrentSelected = true; + break; + } + } + + // 如果是当前选择的设备,则删除该行 + if (isCurrentSelected) { + this.getModel().deleteEntryRow("zcgj_dispatchentry", i);//删除分录 + } + } + } + + this.getView().updateView("zcgj_dispatchentry"); // 刷新分录 + this.getView().showErrorNotification("选择的设备属于不同组织,请重新选择同一组织下的设备!"); + BasedataEdit fieldEdit = this.getView().getControl("zcgj_realcard");//设备编码 + fieldEdit.click(); + } + } + + @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); @@ -80,6 +167,16 @@ public class EquipmentCommandBillPlugin extends AbstractBillPlugIn implements Be } else { this.getModel().setValue("zcgj_realcardsw", null, rowIndex);//资产编码 } + DynamicObjectCollection dispatchEntryCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_dispatchentry");//分录 + if (dispatchEntryCollection != null && dispatchEntryCollection.size() > 0) { + DynamicObject dispatchEntry = dispatchEntryCollection.get(0); + DynamicObject zcgj_realcard = dispatchEntry.getDynamicObject("zcgj_realcard");//分录-设备编码 + if (zcgj_realcard != null) { + this.getModel().setValue("zcgj_devicemanager", zcgj_realcard.getDynamicObject("org"));//设备管理组织 + } + } else { + this.getModel().setValue("zcgj_devicemanager", null);//设备管理组织 + } } else if (StringUtil.equals(key, "zcgj_outorg") || StringUtil.equals(key, "zcgj_inorg")) { //调出组织,调入组织 ChangeData[] changeSet = e.getChangeSet();