diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqListPluginExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqListPluginExt.java new file mode 100644 index 0000000..5590781 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/AimCostBoqListPluginExt.java @@ -0,0 +1,186 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import kd.bos.bill.BillOperationStatus; +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.resource.ResManager; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.EntityMetadataCache; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.CloseCallBack; +import kd.bos.form.FormShowParameter; +import kd.bos.form.ShowType; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.form.events.HyperLinkClickArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.list.BillList; +import kd.bos.list.events.BeforeShowBillFormEvent; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.mvc.list.ListView; +import kd.bos.orm.query.QFilter; +import kd.bos.permission.api.HasPermOrgResult; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.ec.basedata.common.permission.ProjectPermissionHelper; +import kd.ec.basedata.common.utils.MetaDataUtil; + +//二开系统插件 +//工程量清单成本预算列表插件:调整操作逻辑修改 + +public class AimCostBoqListPluginExt extends AbstractListPlugin { + public AimCostBoqListPluginExt() { + } + + public void billListHyperLinkClick(HyperLinkClickArgs args) { + String fieldName = args.getHyperLinkClickEvent().getFieldName(); + if (StringUtils.equals(fieldName, "project_name")) { + this.projectHyperLinkClick(args); + } + + } + + protected void projectHyperLinkClick(HyperLinkClickArgs args) { + args.setCancel(true); + ListView viewList = (ListView)this.getView(); + Object billId = viewList.getFocusRowPkId(); + DynamicObject bill = BusinessDataServiceHelper.loadSingle(billId, "ecco_aimcostboqsummodel", "project"); + DynamicObject project = bill.getDynamicObject("project"); + if (project != null) { + String proId = project.getString("id"); + Map map = new HashMap(); + map.put("formId", "ec_project"); + map.put("pkId", proId); + FormShowParameter parameter = FormShowParameter.createFormShowParameter(map); + parameter.setStatus(OperationStatus.VIEW); + parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); + this.getView().showForm(parameter); + } + + } + + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate operate = (FormOperate)args.getSource(); + ListSelectedRowCollection listSelectedData = args.getListSelectedData(); + DynamicObject unitProject; + if (StringUtils.equals("adjust", operate.getOperateKey())) { + if (listSelectedData.size() > 1) { + this.getView().showTipNotification(ResManager.loadKDString("调整操作不支持多选,请选中单条数据。", "AimCostBoqListPlugin_0", "ec-ecco-formplugin", new Object[0])); + args.setCancel(true); + } else { + DynamicObject[] bills = BusinessDataServiceHelper.load(listSelectedData.getPrimaryKeyValues(), EntityMetadataCache.getDataEntityType("ecco_aimcostboqsplitmodel")); + String billStatus = bills[0].getString("billstatus"); + if (!StringUtils.equals(billStatus, "C")) { + this.getView().showTipNotification(ResManager.loadKDString("只有已审核的数据才能调整,请重新选择。", "AimCostBoqListPlugin_1", "ec-ecco-formplugin", new Object[0])); + args.setCancel(true); + } + + DynamicObject project = bills[0].getDynamicObject("project"); + unitProject = bills[0].getDynamicObject("unitproject"); + BigDecimal vision = bills[0].getBigDecimal("vision"); + QFilter filter = new QFilter("project", "=", project.getPkValue()); + if (unitProject != null) { + filter.and(new QFilter("unitproject", "=", unitProject.getPkValue())); + } + + filter.and(new QFilter("vision", ">", vision)); + filter.and(new QFilter("zcgj_periodyear", "=",bills[0].get("zcgj_periodyear")));//年月(二开添加 + boolean isExist = QueryServiceHelper.exists("ecco_aimcostboqsplitmodel", new QFilter[]{filter}); + if (isExist) { + this.getView().showTipNotification(ResManager.loadKDString("请在最新的版本上进行调整与编辑。", "AimCostBoqListPlugin_2", "ec-ecco-formplugin", new Object[0])); + args.setCancel(true); + } + } + } else if (StringUtils.equals("summarynew", operate.getOperateKey())) { + BillShowParameter parameter = new BillShowParameter(); + parameter.setFormId("ecco_aimcostboqsummodel"); + parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); + parameter.setBillStatus(BillOperationStatus.ADDNEW); + parameter.setCloseCallBack(new CloseCallBack(this, "summarynew")); + this.getView().showForm(parameter); + } else if (StringUtils.equals("viewproaimboqsum", operate.getOperateKey())) { + ListSelectedRowCollection selectedRows = ((ListView)this.getView()).getSelectedRows(); + if (selectedRows == null || listSelectedData.size() == 0 || listSelectedData.size() > 1) { + this.getView().showTipNotification(ResManager.loadKDString("请选择单条预算后查看。", "AimCostBoqListPlugin_3", "ec-ecco-formplugin", new Object[0]), 3000); + return; + } + + ListSelectedRow listSelectedRow = listSelectedData.get(0); + Object pk = listSelectedRow.getPrimaryKeyValue(); + unitProject = BusinessDataServiceHelper.loadSingle(pk, "ecco_aimcostboqsplitmodel"); + DynamicObject project = unitProject.getDynamicObject("project"); + boolean isProOrgOrFiorgMember = false; + if (project != null) { + Long org = project.get("org") == null ? -1L : (Long)((DynamicObject)project.get("org")).getPkValue(); + Long fiOrg = project.get("fiaccountorg") == null ? -1L : (Long)((DynamicObject)project.get("fiaccountorg")).getPkValue(); + String appId = MetaDataUtil.getAppIdByEntityNum("ecco_aimcostboqsplitmodel"); + HasPermOrgResult permOrgResult = ProjectPermissionHelper.getAllPermOrg(RequestContext.get().getCurrUserId(), appId, "ecco_aimcostboqsplitmodel"); + List hasPermOrgs = permOrgResult.getHasPermOrgs(); + if (permOrgResult.hasAllOrgPerm() || hasPermOrgs != null && !hasPermOrgs.isEmpty() && (hasPermOrgs.contains(org) || hasPermOrgs.contains(fiOrg))) { + isProOrgOrFiorgMember = true; + } + } + + if (!isProOrgOrFiorgMember) { + this.getView().showTipNotification(ResManager.loadKDString("当前用户没有BOQ预算所属项目的项目组织或财务记账组织权限。", "AimCostBoqListPlugin_4", "ec-ecco-formplugin", new Object[0]), 3000); + return; + } + + FormShowParameter parameter = new FormShowParameter(); + parameter.setFormId("ecco_proaimcostboqsum"); + parameter.setCustomParam("projectId", project.getPkValue()); + parameter.getOpenStyle().setShowType(ShowType.Modal); + this.getView().showForm(parameter); + } + + } + + public void closedCallBack(ClosedCallBackEvent closedcallbackevent) { + super.closedCallBack(closedcallbackevent); + String actionId = closedcallbackevent.getActionId(); + if (StringUtils.equals(actionId, "summarynew")) { + this.getView().invokeOperation("refresh"); + } + + } + + public void beforeShowBill(BeforeShowBillFormEvent beforeshowbillformevent) { + super.beforeShowBill(beforeshowbillformevent); + BillShowParameter parameter = beforeshowbillformevent.getParameter(); + BillOperationStatus billStatus = parameter.getBillStatus(); + Boolean isCopy = (Boolean)parameter.getCustomParam("iscopy"); + if (billStatus != null && isCopy != null && isCopy && billStatus.compareTo(BillOperationStatus.ADDNEW) == 0) { + if (!this.isSpiltModel()) { + parameter.setFormId("ecco_aimcostboqsummodel"); + parameter.setCaption(String.valueOf(EntityMetadataCache.getDataEntityType("ecco_aimcostboqsummodel").getDisplayName())); + } + + parameter.setCustomParam("isadjust", 1); + } else if (parameter.getPkId() != null && Long.parseLong(parameter.getPkId().toString()) != 0L) { + Object pkId = parameter.getPkId(); + DynamicObject bill = BusinessDataServiceHelper.loadSingle(pkId, EntityMetadataCache.getDataEntityType("ecco_aimcostboqsplitmodel")); + String editModel = bill.getString("editmodel"); + if (StringUtils.equals("02", editModel)) { + parameter.setFormId("ecco_aimcostboqsummodel"); + } + } + + } + + protected boolean isSpiltModel() { + BillList billList = (BillList)this.getView().getControl("billlistap"); + Object[] primaryKeyValues = billList.getSelectedRows().getPrimaryKeyValues(); + DynamicObject[] bills = BusinessDataServiceHelper.load(primaryKeyValues, EntityMetadataCache.getDataEntityType("ecco_aimcostboqsplitmodel")); + String editModel = bills[0].getString("editmodel"); + return StringUtils.equals("01", editModel); + } +}