This commit is contained in:
parent
f53b4c987a
commit
70de408cfb
|
|
@ -0,0 +1,332 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package zcgj.zcdev.zcdev.pr.plugin.operate;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.EntityMetadataCache;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.ec.basedata.common.enums.ReferBillTypeEnum;
|
||||
import kd.ec.contract.opplugin.AbstractContractSettleOp;
|
||||
import kd.ec.contract.opplugin.validator.CheckSettleReferBillUsedValidator;
|
||||
import kd.ec.contract.opplugin.validator.OutContractSettleReferValidator;
|
||||
import kd.ec.contract.opplugin.validator.OutContractSettleTimeValidator;
|
||||
import kd.ec.contract.opplugin.validator.OutContractSettleValidator;
|
||||
|
||||
public class OutContractSettleOpExt extends AbstractContractSettleOp {
|
||||
public OutContractSettleOpExt() {
|
||||
}
|
||||
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
List<String> fields = e.getFieldKeys();
|
||||
fields.add("begindate");
|
||||
fields.add("enddate");
|
||||
fields.add("billstatus");
|
||||
fields.add("contract");
|
||||
fields.add("contattr");
|
||||
fields.add("period");
|
||||
fields.add("project");
|
||||
fields.add("listentry");
|
||||
fields.add("materialinentry");
|
||||
fields.add("issettlebymatin");
|
||||
fields.add("materialinbillid");
|
||||
fields.add("reconcentry");
|
||||
fields.add("issettlebyreconc");
|
||||
fields.add("reconcbillid");
|
||||
fields.add("iseqsettle");
|
||||
fields.add("eqsettleentry");
|
||||
fields.add("eqsettleid");
|
||||
fields.add("settleunitproject");
|
||||
fields.add("payitemdetailentry");
|
||||
fields.add("referbilltype");
|
||||
fields.add("referbillid");
|
||||
fields.add("referbillnumber");
|
||||
}
|
||||
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
boolean isUnaudit = false;
|
||||
List<AbstractValidator> validators = e.getValidators();
|
||||
Iterator var4 = validators.iterator();
|
||||
|
||||
while (var4.hasNext()) {
|
||||
AbstractValidator val = (AbstractValidator) var4.next();
|
||||
if ("unaudit".equals(val.getOperateKey())) {
|
||||
isUnaudit = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isUnaudit) {
|
||||
e.getValidators().add(new OutContractSettleValidator());
|
||||
e.getValidators().add(new CheckSettleReferBillUsedValidator());
|
||||
e.getValidators().add(new OutContractSettleTimeValidator());
|
||||
e.getValidators().add(new OutContractSettleReferValidator());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void reverseWritingToContract(boolean isAudit, DynamicObject settle) {
|
||||
DynamicObject contract = BusinessDataServiceHelper.loadSingle(settle.getDynamicObject("contract").getPkValue(), "ec_out_contract", (String) Stream.of("totalcalofamt", "totalcaloftaxamt", "totalnotcalofamt", "totalnotcaloftaxamt", "totalsettleamount", "totalsettleoftaxamount").collect(Collectors.joining(",")));
|
||||
BigDecimal totalSettleAmount = contract.getBigDecimal("totalsettleamount");
|
||||
BigDecimal totalSettleOfTaxAmount = contract.getBigDecimal("totalsettleoftaxamount");
|
||||
BigDecimal settleAmount = settle.getBigDecimal("settleamount");
|
||||
BigDecimal settleOfTaxAmount = settle.getBigDecimal("settleoftaxamount");
|
||||
if (isAudit) {
|
||||
contract.set("totalsettleamount", totalSettleAmount.add(settleAmount));
|
||||
contract.set("totalsettleoftaxamount", totalSettleOfTaxAmount.add(settleOfTaxAmount));
|
||||
contract.set("totalcalofamt", contract.getBigDecimal("totalcalofamt").add(settle.getBigDecimal("calofamt")));
|
||||
contract.set("totalcaloftaxamt", contract.getBigDecimal("totalcaloftaxamt").add(settle.getBigDecimal("caloftaxamt")));
|
||||
contract.set("totalnotcalofamt", contract.getBigDecimal("totalnotcalofamt").add(settle.getBigDecimal("notcalofamt")));
|
||||
contract.set("totalnotcaloftaxamt", contract.getBigDecimal("totalnotcaloftaxamt").add(settle.getBigDecimal("notcaloftaxamt")));
|
||||
} else {
|
||||
contract.set("totalsettleamount", totalSettleAmount.subtract(settleAmount));
|
||||
contract.set("totalsettleoftaxamount", totalSettleOfTaxAmount.subtract(settleOfTaxAmount));
|
||||
contract.set("totalcalofamt", contract.getBigDecimal("totalcalofamt").subtract(settle.getBigDecimal("calofamt")));
|
||||
contract.set("totalcaloftaxamt", contract.getBigDecimal("totalcaloftaxamt").subtract(settle.getBigDecimal("caloftaxamt")));
|
||||
contract.set("totalnotcalofamt", contract.getBigDecimal("totalnotcalofamt").subtract(settle.getBigDecimal("notcalofamt")));
|
||||
contract.set("totalnotcaloftaxamt", contract.getBigDecimal("totalnotcaloftaxamt").subtract(settle.getBigDecimal("notcaloftaxamt")));
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(new DynamicObject[]{contract});
|
||||
}
|
||||
|
||||
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
||||
super.beginOperationTransaction(e);
|
||||
String operationKey = e.getOperationKey();
|
||||
if (StringUtils.equals("audit", operationKey) || StringUtils.equals("unaudit", operationKey)) {
|
||||
DynamicObject[] dataArr = e.getDataEntities();
|
||||
|
||||
for (int i = 0; i < dataArr.length; ++i) {
|
||||
boolean isSettleByMatIn = dataArr[i].getBoolean("issettlebymatin");
|
||||
boolean isSettleByReconciliation = dataArr[i].getBoolean("issettlebyreconc");
|
||||
boolean isSettleByEquipment = dataArr[i].getBoolean("iseqsettle");
|
||||
Set<Long> materialInBillIds = new HashSet(16);
|
||||
Set<Long> reconciliationBillIds = new HashSet(16);
|
||||
Set<Long> equipmentBillIds = new HashSet(16);
|
||||
DynamicObjectCollection dynamicObjects;
|
||||
int j;
|
||||
Object eqSettleId;
|
||||
if (isSettleByReconciliation) {
|
||||
dynamicObjects = dataArr[i].getDynamicObjectCollection("reconcentry");
|
||||
|
||||
for (j = 0; j < dynamicObjects.size(); ++j) {
|
||||
eqSettleId = ((DynamicObject) dynamicObjects.get(j)).get("reconcbillid");
|
||||
if (StringUtils.isNotBlank(eqSettleId)) {
|
||||
reconciliationBillIds.add(Long.valueOf(eqSettleId.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObject[] reconcBills = BusinessDataServiceHelper.load(reconciliationBillIds.toArray(), EntityMetadataCache.getDataEntityType("ecma_reconciliation"));
|
||||
List<Long> matInBillIdList = (List) Arrays.stream(reconcBills).filter((d) -> {
|
||||
return StringUtils.isNotBlank(d.getString("materialinbills"));
|
||||
}).map((d) -> {
|
||||
return d.getString("materialinbills").split(";");
|
||||
}).flatMap((s) -> {
|
||||
return Arrays.stream(s);
|
||||
}).map((s) -> {
|
||||
return Long.valueOf(s);
|
||||
}).collect(Collectors.toList());
|
||||
materialInBillIds.addAll(matInBillIdList);
|
||||
}
|
||||
|
||||
if (isSettleByMatIn) {
|
||||
dynamicObjects = dataArr[i].getDynamicObjectCollection("materialinentry");
|
||||
|
||||
for (j = 0; j < dynamicObjects.size(); ++j) {
|
||||
eqSettleId = ((DynamicObject) dynamicObjects.get(j)).get("materialinbillid");
|
||||
if (StringUtils.isNotBlank(eqSettleId)) {
|
||||
materialInBillIds.add(Long.valueOf(eqSettleId.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isSettleByEquipment) {
|
||||
dynamicObjects = dataArr[i].getDynamicObjectCollection("eqsettleentry");
|
||||
|
||||
for (j = 0; j < dynamicObjects.size(); ++j) {
|
||||
eqSettleId = ((DynamicObject) dynamicObjects.get(j)).get("eqsettleid");
|
||||
if (StringUtils.isNotBlank(eqSettleId)) {
|
||||
equipmentBillIds.add(Long.valueOf(eqSettleId.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Set<Object> measureBillIds = new HashSet(16);
|
||||
DynamicObjectCollection detailEntries = dataArr[i].getDynamicObjectCollection("payitemdetailentry");
|
||||
if (detailEntries != null && !detailEntries.isEmpty()) {
|
||||
Iterator var27 = detailEntries.iterator();
|
||||
|
||||
while (var27.hasNext()) {
|
||||
DynamicObject detailEntry = (DynamicObject) var27.next();
|
||||
if (StringUtils.equals(detailEntry.getString("referbilltype"), ReferBillTypeEnum.MEASURE.getValue())) {
|
||||
measureBillIds.add(detailEntry.get("referbillid"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObject[] var15;
|
||||
int var16;
|
||||
int var17;
|
||||
DynamicObject bill;
|
||||
DynamicObject[] equipmentBill;
|
||||
QFilter filter;
|
||||
if (!measureBillIds.isEmpty()) {
|
||||
filter = new QFilter("id", "in", measureBillIds);
|
||||
filter.and("ismeasurebymatin", "=", "1");
|
||||
equipmentBill = BusinessDataServiceHelper.load("ec_outcontractmeasure", "materialinentry,materialinentry.materialinbillid", new QFilter[]{filter});
|
||||
if (equipmentBill != null && equipmentBill.length > 0) {
|
||||
var15 = equipmentBill;
|
||||
var16 = equipmentBill.length;
|
||||
|
||||
for (var17 = 0; var17 < var16; ++var17) {
|
||||
bill = var15[var17];
|
||||
DynamicObjectCollection materialInEntries = bill.getDynamicObjectCollection("materialinentry");
|
||||
if (materialInEntries != null && !materialInEntries.isEmpty()) {
|
||||
Iterator var20 = materialInEntries.iterator();
|
||||
|
||||
while (var20.hasNext()) {
|
||||
DynamicObject materialInEntry = (DynamicObject) var20.next();
|
||||
Object matInBillId = materialInEntry.get("materialinbillid");
|
||||
if (StringUtils.isNotBlank(matInBillId)) {
|
||||
materialInBillIds.add(Long.valueOf(matInBillId.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!materialInBillIds.isEmpty()) {
|
||||
filter = new QFilter("id", "in", materialInBillIds);
|
||||
equipmentBill = BusinessDataServiceHelper.load("ecma_materialinbill", "settlestatus", new QFilter[]{filter});
|
||||
if (equipmentBill == null || equipmentBill.length == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var15 = equipmentBill;
|
||||
var16 = equipmentBill.length;
|
||||
|
||||
for (var17 = 0; var17 < var16; ++var17) {
|
||||
bill = var15[var17];
|
||||
if (StringUtils.equals("audit", operationKey)) {
|
||||
bill.set("settlestatus", "1");
|
||||
} else {
|
||||
bill.set("settlestatus", "0");
|
||||
}
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(equipmentBill);
|
||||
}
|
||||
|
||||
if (!reconciliationBillIds.isEmpty()) {
|
||||
filter = new QFilter("id", "in", reconciliationBillIds);
|
||||
equipmentBill = BusinessDataServiceHelper.load("ecma_reconciliation", "issettled", new QFilter[]{filter});
|
||||
if (equipmentBill == null || equipmentBill.length == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var15 = equipmentBill;
|
||||
var16 = equipmentBill.length;
|
||||
|
||||
for (var17 = 0; var17 < var16; ++var17) {
|
||||
bill = var15[var17];
|
||||
if (StringUtils.equals("audit", operationKey)) {
|
||||
bill.set("issettled", "1");
|
||||
} else {
|
||||
bill.set("issettled", "0");
|
||||
}
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(equipmentBill);
|
||||
}
|
||||
|
||||
if (!equipmentBillIds.isEmpty()) {
|
||||
filter = new QFilter("id", "in", equipmentBillIds);
|
||||
equipmentBill = BusinessDataServiceHelper.load("eceq_settle", "issettle", new QFilter[]{filter});
|
||||
if (equipmentBill != null && equipmentBill.length != 0) {
|
||||
var15 = equipmentBill;
|
||||
var16 = equipmentBill.length;
|
||||
|
||||
for (var17 = 0; var17 < var16; ++var17) {
|
||||
bill = var15[var17];
|
||||
if (StringUtils.equals("audit", operationKey)) {
|
||||
bill.set("issettle", "1");
|
||||
} else {
|
||||
bill.set("issettle", "0");
|
||||
}
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(equipmentBill);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||
super.afterExecuteOperationTransaction(e);
|
||||
String operation = e.getOperationKey();
|
||||
DynamicObject[] settleBills = e.getDataEntities();
|
||||
List<DynamicObject> settleBillList = Arrays.asList(settleBills);
|
||||
List<DynamicObject> listingEntrys = (List) settleBillList.stream().flatMap((settleBill) -> {
|
||||
String billId = ((DynamicObject) settleBillList.get(0)).getString("id");
|
||||
DynamicObject bill = BusinessDataServiceHelper.loadSingle(billId, EntityMetadataCache.getDataEntityType("ec_out_contract_settle"));
|
||||
return bill.getDynamicObjectCollection("listmodelentry").stream();
|
||||
}).flatMap((modelObj) -> {
|
||||
return modelObj.getDynamicObjectCollection("listentry").stream();
|
||||
}).collect(Collectors.toList());
|
||||
if ("audit".equals(operation)) {
|
||||
this.updateListing(listingEntrys, true);
|
||||
} else if ("unaudit".equals(operation)) {
|
||||
this.updateListing(listingEntrys, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateListing(List<DynamicObject> listingEntrys, boolean isaudit) {
|
||||
List<DynamicObject> listingArr = new ArrayList();
|
||||
BigDecimal coefficient;
|
||||
if (isaudit) {
|
||||
coefficient = BigDecimal.ONE;
|
||||
} else {
|
||||
coefficient = BigDecimal.valueOf(-1L);
|
||||
}
|
||||
|
||||
listingEntrys.forEach((obj) -> {
|
||||
BigDecimal thisQty = coefficient.multiply(obj.getBigDecimal("thisqty"));
|
||||
BigDecimal thisOfTaxAmount = coefficient.multiply(obj.getBigDecimal("thisoftaxmount"));
|
||||
DynamicObject listing = obj.getDynamicObject("listing");
|
||||
String listingId = listing.getString("id");
|
||||
DynamicObject listingObj = BusinessDataServiceHelper.loadSingle(listingId, "ec_outtreelisting");
|
||||
listingObj.set("lstsettleqty", thisQty.add(listingObj.getBigDecimal("lstsettleqty")));
|
||||
listingObj.set("lstsettleoftaxamount", thisOfTaxAmount.add(listingObj.getBigDecimal("lstsettleoftaxamount")));
|
||||
listingArr.add(listingObj);
|
||||
});
|
||||
if (!listingArr.isEmpty()) {
|
||||
SaveServiceHelper.save(((DynamicObject) listingArr.get(0)).getDataEntityType(), listingArr.toArray(new DynamicObject[0]));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue