package fi.er.opplugin; import com.alibaba.druid.util.StringUtils; import fi.cas.common.SettlementStatusEnum; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.args.BeginOperationTransactionArgs; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import java.math.BigDecimal; //预付借款单 public class PrePayBillOpPlugin extends AbstractOperationServicePlugIn { @Override public void beginOperationTransaction(BeginOperationTransactionArgs e) { //获取预付借款单据信息 DynamicObject[] dynamicObjects = e.getDataEntities(); for (int i = 0; i < dynamicObjects.length; i++) { if (StringUtils.equals(e.getOperationKey(),"audit")) { //当前单头数据包 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName()); BigDecimal totalUnsettleamount = BigDecimal.ZERO; //循环预付借款信息分录 for (DynamicObject entryentity : info.getDynamicObjectCollection("expenseentryentity")) { //取当前循环预付借款信息分录的核定金额 BigDecimal expeapproveamount = entryentity.getBigDecimal("expeapproveamount"); //未结算金额=核定金额 entryentity.set("nckd_unsettleamount_et",expeapproveamount); entryentity.set("nckd_settleamount_et",BigDecimal.ZERO); totalUnsettleamount = totalUnsettleamount.add(expeapproveamount); } info.set("nckd_unsettleamount",totalUnsettleamount); info.set("nckd_settleamount",BigDecimal.ZERO); info.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue()); SaveServiceHelper.save(new DynamicObject[]{info}); } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) { //当前单头数据包 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName()); BigDecimal totalUnsettleamount = BigDecimal.ZERO; //循环预付借款信息分录 for (DynamicObject entryentity : info.getDynamicObjectCollection("expenseentryentity")) { //反审核,未结算金额置为0 entryentity.set("nckd_unsettleamount_et",BigDecimal.ZERO); } info.set("nckd_unsettleamount",BigDecimal.ZERO); info.set("nckd_settlestatus", null); SaveServiceHelper.save(new DynamicObject[]{info}); } } } }