支出合同结算多出合同支付项bug调整(未完成)

This commit is contained in:
zhangzhiguo 2025-07-10 13:51:32 +08:00
parent 92a166b316
commit 8a588d1ad0
1 changed files with 83 additions and 0 deletions

View File

@ -1,16 +1,28 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.EntityMetadataCache;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.ec.basedata.business.model.BaseConstant;
import kd.ec.contract.opplugin.OutContractSettleOp;
import kd.ec.contract.opplugin.validator.OutContractSettleValidator;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class OutContractSettlementOp extends OutContractSettleOp {
private static final Log log = LogFactory.getLog(OutContractSettlementOp.class);
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
@ -18,6 +30,7 @@ public class OutContractSettlementOp extends OutContractSettleOp {
List<String> fields = e.getFieldKeys();
fields.add("zcgj_is_reversabillid");
fields.add("zcgj_is_invalid");
fields.add("zcgj_invalidbillid");
}
@Override
@ -38,4 +51,74 @@ public class OutContractSettlementOp extends OutContractSettleOp {
super.initializeOperationResult(result);
}
/**
* 计量清单反写
*/
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
/*long now = System.currentTimeMillis();
log.info("OutContractSettlementOp:afterExecuteOperationTransaction-start:"+now);
String operation = e.getOperationKey();
DynamicObject[] settleBills = e.getDataEntities();
List<DynamicObject> settleBillList = Arrays.asList(settleBills);
List<DynamicObject> listingEntrys = (List)settleBillList.stream().flatMap((settleBill) -> {
//生成的作废单id
String billId = ((DynamicObject)settleBillList.get(0)).getString("id");
//源单id
String invalidbillid = ((DynamicObject)settleBillList.get(0)).getString("zcgj_invalidbillid");
DynamicObject bill = BusinessDataServiceHelper.loadSingle(billId, EntityMetadataCache.getDataEntityType("ec_out_contract_settle"));
DynamicObject invalidbill = BusinessDataServiceHelper.loadSingle(invalidbillid, EntityMetadataCache.getDataEntityType("ec_out_contract_settle"));
boolean isInvalid = bill.getBoolean("zcgj_is_invalid");
log.info("OutContractSettlementOp:billId:"+billId+" type:"+bill.getString("zcgj_is_invalid"));
if (isInvalid) {
return invalidbill.getDynamicObjectCollection("listmodelentry").stream();
}else{
return null;
}
}).filter( data-> data !=null )
.flatMap((modelObj) -> modelObj.getDynamicObjectCollection("listentry").stream()).collect(Collectors.toList());
log.info("OutContractSettlementOp:listingEntrys.size:"+listingEntrys.size());
log.info("OutContractSettlementOp:operation:"+operation);
if ("audit".equals(operation)) {
log.info("OutContractSettlementOp:updateListing");
this.updateListing(listingEntrys, false);
}
log.info("OutContractSettlementOp:afterExecuteOperationTransaction-end:"+now);*/
}
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);
}
log.info("OutContractSettlementOp:coefficient:"+coefficient);
log.info("OutContractSettlementOp:forEach-start");
listingEntrys.forEach((obj) -> {
log.info("OutContractSettlementOp:forEach---");
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")));
log.info("OutContractSettlementOp:listingObj"+listingObj.get("lstsettleqty"));
log.info("OutContractSettlementOp:lstsettleoftaxamount"+listingObj.get("lstsettleoftaxamount"));
listingArr.add(listingObj);
log.info("OutContractSettlementOp:forEach---");
});
log.info("OutContractSettlementOp:forEach-end");
if (!listingArr.isEmpty()) {
SaveServiceHelper.save(((DynamicObject)listingArr.get(0)).getDataEntityType(), listingArr.toArray(new DynamicObject[0]));
}
}
}