二开系统插件标识
This commit is contained in:
parent
81165f2e07
commit
fb120d58c8
|
@ -0,0 +1,236 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package zcgj.zcdev.zcdev.pr.plugin.operate;
|
||||
|
||||
import ec.ecco.validators.AimCostReviewValidator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.ec.basedata.business.model.ecco.AimCostBoqSplitModelConstant;
|
||||
import kd.ec.basedata.business.model.ecco.AimCostReviewConstant;
|
||||
import kd.ec.basedata.business.model.ecco.AimcostcbsConstant;
|
||||
import kd.ec.basedata.common.enums.DefaultEnum;
|
||||
import kd.ec.cost.common.enums.CostReviewFromTypeEnum;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
public class AimCostReviewOpExt extends AbstractOperationServicePlugIn {
|
||||
public AimCostReviewOpExt() {
|
||||
}
|
||||
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
super.onAddValidators(e);
|
||||
e.getValidators().add(new AimCostReviewValidator());
|
||||
}
|
||||
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
e.getFieldKeys().add("project");
|
||||
e.getFieldKeys().add("vatentryentity");
|
||||
e.getFieldKeys().add("vatfromid");
|
||||
e.getFieldKeys().add("costfrom");
|
||||
e.getFieldKeys().add("costfromid");
|
||||
e.getFieldKeys().add("result");
|
||||
e.getFieldKeys().add("vatexecutable");
|
||||
e.getFieldKeys().add("costexecutable");
|
||||
}
|
||||
|
||||
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
||||
String operationKey = e.getOperationKey();
|
||||
DynamicObject[] dataEntities = e.getDataEntities();
|
||||
if (StringUtils.equals(operationKey, "audit")) {
|
||||
this.doAudit(dataEntities);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void doAudit(DynamicObject[] dataEntities) {
|
||||
DynamicObject[] var2 = dataEntities;
|
||||
int var3 = dataEntities.length;
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
DynamicObject dataEntity = var2[var4];
|
||||
String result = dataEntity.getString("result");
|
||||
if (DefaultEnum.YES.getValue().equals(result)) {
|
||||
this.rewriteVatCalBill(dataEntity);
|
||||
DynamicObjectCollection costEntryEntity = dataEntity.getDynamicObjectCollection("costentryentity");
|
||||
Map<String, List<DynamicObject>> fromMap = (Map)costEntryEntity.stream().collect(Collectors.groupingBy((costEntryRow) -> {
|
||||
return costEntryRow.getString("costfrom");
|
||||
}));
|
||||
List<DynamicObject> cbsCostEntry = (List)fromMap.get(CostReviewFromTypeEnum.CBS.getValue());
|
||||
this.rewriteCBSCostBill(cbsCostEntry);
|
||||
List<DynamicObject> boqCostEntry = (List)fromMap.get(CostReviewFromTypeEnum.BOQ.getValue());
|
||||
this.rewriteBOQCostBill(boqCostEntry);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void rewriteVatCalBill(DynamicObject dataEntity) {
|
||||
DynamicObjectCollection vatEntryEntity = dataEntity.getDynamicObjectCollection("vatentryentity");
|
||||
if (!CollectionUtils.isEmpty(vatEntryEntity)) {
|
||||
DynamicObject vatEntryRow = (DynamicObject)vatEntryEntity.get(0);
|
||||
long pkId = vatEntryRow.getLong("vatfromid");
|
||||
if (pkId != 0L) {
|
||||
DynamicObject vatEntity = BusinessDataServiceHelper.loadSingle(pkId, "ecco_vat_calculate");
|
||||
vatEntity.set("executable", true);
|
||||
SaveServiceHelper.save(new DynamicObject[]{vatEntity});
|
||||
long preId = vatEntity.getLong("pre");
|
||||
if (preId != 0L) {
|
||||
DynamicObject preVatEntity = BusinessDataServiceHelper.loadSingle(preId, "ecco_vat_calculate");
|
||||
preVatEntity.set("executable", false);
|
||||
SaveServiceHelper.save(new DynamicObject[]{preVatEntity});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void rewriteCBSCostBill(List<DynamicObject> cbsCostEntry) {
|
||||
if (!CollectionUtils.isEmpty(cbsCostEntry)) {
|
||||
Set<Long> cbsCostIds = (Set)cbsCostEntry.stream().map((row) -> {
|
||||
return row.getLong("costfromid");
|
||||
}).collect(Collectors.toSet());
|
||||
QFilter idFilter = new QFilter(AimcostcbsConstant.ID_ENTITY_PK, "in", cbsCostIds);
|
||||
DynamicObject[] cbsCostEntities = BusinessDataServiceHelper.load("ecco_aimcostbillcbs", "project,unitproject,isenable,versionno", new QFilter[]{idFilter});
|
||||
this.invokeCbsCostAudit(cbsCostEntities);
|
||||
}
|
||||
}
|
||||
|
||||
protected void invokeCbsCostAudit(DynamicObject[] cbsCostEntry) {
|
||||
Set<DynamicObject> updateBills = new HashSet();
|
||||
DynamicObject[] var3 = cbsCostEntry;
|
||||
int var4 = cbsCostEntry.length;
|
||||
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
DynamicObject bill = var3[var5];
|
||||
DynamicObject project = bill.getDynamicObject("project");
|
||||
boolean isNeedReview = project.getBoolean("istargetcost");
|
||||
if (isNeedReview) {
|
||||
bill.set("isenable", true);
|
||||
QFilter filter = new QFilter("versionno", "!=", bill.get("versionno"));
|
||||
filter.and(new QFilter("project", "=", project.getPkValue()));
|
||||
if (bill.get("unitproject") != null) {
|
||||
filter.and(new QFilter("unitproject", "=", bill.getDynamicObject("unitproject").getPkValue()));
|
||||
} else {
|
||||
filter.and(new QFilter("unitproject", "=", 0));
|
||||
}
|
||||
|
||||
filter.and(new QFilter("isenable", "=", true));
|
||||
filter.and(new QFilter(AimcostcbsConstant.ID_ENTITY_PK, "!=", bill.getPkValue()));
|
||||
DynamicObject[] enableBills = BusinessDataServiceHelper.load("ecco_aimcostbillcbs", "id,isenable", new QFilter[]{filter});
|
||||
if (enableBills != null && enableBills.length > 0) {
|
||||
for(int i = 0; i < enableBills.length; ++i) {
|
||||
enableBills[i].set("isenable", false);
|
||||
updateBills.add(enableBills[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!updateBills.isEmpty()) {
|
||||
SaveServiceHelper.update((DynamicObject[])updateBills.toArray(new DynamicObject[0]));
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(cbsCostEntry);
|
||||
}
|
||||
|
||||
protected void rewriteBOQCostBill(List<DynamicObject> boqCostEntry) {
|
||||
if (!CollectionUtils.isEmpty(boqCostEntry)) {
|
||||
Set<Long> boqCostIds = (Set)boqCostEntry.stream().map((row) -> {
|
||||
return row.getLong("costfromid");
|
||||
}).collect(Collectors.toSet());
|
||||
QFilter idFilter = new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "in", boqCostIds);
|
||||
DynamicObject[] boqCostEntities = BusinessDataServiceHelper.load("ecco_aimcostboqsplitmodel", "project,unitproject,iseffective", new QFilter[]{idFilter});
|
||||
this.invokeBOQCostAudit(boqCostEntities);
|
||||
}
|
||||
}
|
||||
|
||||
protected void invokeBOQCostAudit(DynamicObject[] boqCostEntities) {
|
||||
Set<DynamicObject> updateBills = new HashSet();
|
||||
DynamicObject[] var3 = boqCostEntities;
|
||||
int var4 = boqCostEntities.length;
|
||||
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
DynamicObject bill = var3[var5];
|
||||
DynamicObject project = bill.getDynamicObject("project");
|
||||
boolean isNeedReview = project.getBoolean("istargetcost");
|
||||
if (isNeedReview) {
|
||||
bill.set("iseffective", true);
|
||||
DynamicObject unitProject = bill.getDynamicObject("unitproject");
|
||||
QFilter filter = new QFilter("project", "=", project.getPkValue());
|
||||
if (unitProject != null) {
|
||||
filter.and(new QFilter("unitproject", "=", unitProject.getPkValue()));
|
||||
}
|
||||
|
||||
filter.and(new QFilter("iseffective", "=", "1"));
|
||||
filter.and(new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "!=", bill.getPkValue()));
|
||||
DynamicObject[] boqBills = BusinessDataServiceHelper.load("ecco_aimcostboqsplitmodel", AimCostReviewConstant.ID_ENTITY_PK + "," + "iseffective", new QFilter[]{filter});
|
||||
if (boqBills != null && boqBills.length > 0) {
|
||||
DynamicObject[] var12 = boqBills;
|
||||
int var13 = boqBills.length;
|
||||
|
||||
for(int var14 = 0; var14 < var13; ++var14) {
|
||||
DynamicObject boqBill = var12[var14];
|
||||
boqBill.set("iseffective", "0");
|
||||
updateBills.add(boqBill);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!updateBills.isEmpty()) {
|
||||
SaveServiceHelper.save((DynamicObject[])updateBills.toArray(new DynamicObject[0]));
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(boqCostEntities);
|
||||
}
|
||||
|
||||
protected void rewriteResourceCostBill(List<DynamicObject> resourceCostEntry) {
|
||||
if (!CollectionUtils.isEmpty(resourceCostEntry)) {
|
||||
Set<Long> resourceCostIds = (Set)resourceCostEntry.stream().map((row) -> {
|
||||
return row.getLong("costfromid");
|
||||
}).collect(Collectors.toSet());
|
||||
QFilter idFilter = new QFilter(AimCostBoqSplitModelConstant.ID_ENTITY_PK, "in", resourceCostIds);
|
||||
DynamicObject[] resourceCostEntities = BusinessDataServiceHelper.load("ecma_totalrequireplan", "project,unitproject,isvalid,parentbill,version", new QFilter[]{idFilter});
|
||||
this.invokeResourceCostAudit(resourceCostEntities);
|
||||
}
|
||||
}
|
||||
|
||||
protected void invokeResourceCostAudit(DynamicObject[] resourceCostEntities) {
|
||||
ArrayList<DynamicObject> list = new ArrayList();
|
||||
ArrayList<DynamicObject> parentList = new ArrayList();
|
||||
DynamicObject[] var4 = resourceCostEntities;
|
||||
int var5 = resourceCostEntities.length;
|
||||
|
||||
for(int var6 = 0; var6 < var5; ++var6) {
|
||||
DynamicObject bill = var4[var6];
|
||||
String version = (String)bill.get("version");
|
||||
String parentBillId = (String)bill.get("parentbill");
|
||||
if (!kd.bos.dataentity.utils.StringUtils.equalsIgnoreCase(version, "V1.0") && !parentBillId.trim().isEmpty()) {
|
||||
DynamicObject parentDynamicObject = BusinessDataServiceHelper.loadSingle(parentBillId, "ecma_totalrequireplan");
|
||||
parentDynamicObject.set("isvalid", Boolean.FALSE);
|
||||
parentList.add(parentDynamicObject);
|
||||
}
|
||||
|
||||
bill.set("isvalid", Boolean.TRUE);
|
||||
list.add(bill);
|
||||
}
|
||||
|
||||
SaveServiceHelper.save((DynamicObject[])list.toArray(new DynamicObject[0]));
|
||||
SaveServiceHelper.save((DynamicObject[])parentList.toArray(new DynamicObject[0]));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue