工程量清单成本预算列表插件:调整操作逻辑修改
This commit is contained in:
parent
72297999fa
commit
734761f095
|
@ -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<String, Object> 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<Long> 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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue