设备调令单表单插件逻辑优化:设备管理组织赋值逻辑和设备编码选择逻辑添加
This commit is contained in:
parent
475fc5965c
commit
29aecef694
|
@ -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<Long> 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<Long> 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<Long> 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();
|
||||
|
|
Loading…
Reference in New Issue