员工借款单提交操作插件:校验借款金额不可超过部门可用借款额度

This commit is contained in:
zengweihai 2024-05-21 17:00:50 +08:00
parent f2dd45b9fb
commit b425cea10c
1 changed files with 76 additions and 0 deletions

View File

@ -0,0 +1,76 @@
package shkd.fi.er.plugin.opplugin;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.form.control.Label;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.List;
/**
* 单据操作插件
* 员工借款单提交校验部门可用借款
*/
public class DailyLoanBillSubmitOrgAmountAvailableCheckPlugin extends AbstractOperationServicePlugIn implements Plugin {
/**
* 加载所有字段
* @param e
*/
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
List<String> fieldKeys = e.getFieldKeys();
fieldKeys.addAll(this.billEntityType.getAllFields().keySet());
}
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.addValidator(
new AbstractValidator(){
@Override
public void validate() {
String operateKey = this.getOperateKey();
ExtendedDataEntity[] dataEntities = this.getDataEntities();
for (ExtendedDataEntity extendedDataEntity : dataEntities) {
DynamicObject dynamicObject = extendedDataEntity.getDataEntity();//获取单据对象
BigDecimal loanAmount = dynamicObject.getBigDecimal("loanamount");
//1计算借款可用额度
BigDecimal bigDecimal = new BigDecimal(0);
//查询审批未放款的当前部门的数据(已提交审核中审核通过等待放款)
QFilter qf = new QFilter("billstatus", QCP.in, new String[]{"B", "C", "E", "F"});
DynamicObject[] bills = BusinessDataServiceHelper.load("er_dailyloanbill", "id.number,loanamount,balanceamount", qf.toArray());
for (DynamicObject bill : bills) {
BigDecimal loanamount = bill.getBigDecimal("loanamount");//获取借款金额
bigDecimal = bigDecimal.add(loanamount);
}
//查询审批已放款的当前部门的数据(已付款)
QFilter aqf = new QFilter("billstatus", QCP.in, new String[]{"G"});
DynamicObject[] abills = BusinessDataServiceHelper.load("er_dailyloanbill", "id.number,loanamount,balanceamount", aqf.toArray());
for (DynamicObject abill : abills) {
BigDecimal balanceamount = abill.getBigDecimal("balanceamount");//获取待还款金额
bigDecimal = bigDecimal.add(balanceamount);
}
// 计算可借款金额
BigDecimal bigDecimal1 = new BigDecimal(300000);
BigDecimal subtract = bigDecimal1.subtract(bigDecimal);
if(subtract.compareTo(loanAmount) < 0 ){
this.addMessage(extendedDataEntity, "部门借款可用额度不足,不允许提交");
}
}
}
}
);
}
}