114 lines
7.0 KiB
Java
114 lines
7.0 KiB
Java
package shkd.repc.recon.opplugin;
|
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
import kd.bos.entity.ExtendedDataEntity;
|
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
|
import kd.bos.entity.validate.AbstractValidator;
|
|
import kd.bos.logging.Log;
|
|
import kd.bos.logging.LogFactory;
|
|
import kd.bos.orm.query.QCP;
|
|
import kd.bos.orm.query.QFilter;
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
|
|
public class ContractOPPlugin extends AbstractOperationServicePlugIn {
|
|
private static final Log logger = LogFactory.getLog(ContractOPPlugin.class);
|
|
|
|
@Override
|
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
|
super.onAddValidators(e);
|
|
e.addValidator(new AbstractValidator() {
|
|
@Override
|
|
public void validate() {
|
|
String operateKey = this.getOperateKey();
|
|
ExtendedDataEntity[] dataEntities1 = this.getDataEntities();
|
|
switch (operateKey) {
|
|
case "submit":
|
|
for (ExtendedDataEntity extendedDataEntity : dataEntities1) {
|
|
//保证金明细
|
|
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
|
DynamicObjectCollection qeugBondentrys;
|
|
try {
|
|
qeugBondentrys = dataEntity.getDynamicObjectCollection("qeug_bondentry");
|
|
}catch (Exception e){
|
|
dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(),"recon_contractbill");
|
|
qeugBondentrys = dataEntity.getDynamicObjectCollection("qeug_bondentry");
|
|
}
|
|
BigDecimal qeugMarginlevel = BigDecimal.ZERO;
|
|
if (!qeugBondentrys.isEmpty()) {
|
|
for (DynamicObject qeugBondentry : qeugBondentrys) {
|
|
qeugMarginlevel = qeugMarginlevel.add(qeugBondentry.getBigDecimal("qeug_marginlevel"));
|
|
}
|
|
}
|
|
if (qeugMarginlevel.compareTo(BigDecimal.valueOf(100)) > 0) {
|
|
this.addErrorMessage(extendedDataEntity, "保证金明细:保证金比例(%)之和不能大于100");
|
|
}
|
|
//合同清单(定额)
|
|
DynamicObjectCollection invoiceentryinfos;
|
|
try {
|
|
//合同监控列表点击提交会提示找不到:qeug_invoiceentryinfo属性
|
|
invoiceentryinfos = dataEntity.getDynamicObjectCollection("qeug_invoiceentryinfo");
|
|
if (!invoiceentryinfos.isEmpty()) {
|
|
for (DynamicObject invoiceentryinfo : invoiceentryinfos) {
|
|
BigDecimal qeug_amount = invoiceentryinfo.getBigDecimal("qeug_amount");
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(),"recon_contractbill");
|
|
invoiceentryinfos = dataEntity.getDynamicObjectCollection("qeug_invoiceentryinfo");
|
|
}
|
|
BigDecimal qeug_amounts = BigDecimal.ZERO;//金额(元)_合计
|
|
if (!invoiceentryinfos.isEmpty()) {
|
|
for (DynamicObject invoiceentryinfo : invoiceentryinfos) {
|
|
qeug_amounts = qeug_amounts.add(invoiceentryinfo.getBigDecimal("qeug_amount"));
|
|
}
|
|
}
|
|
BigDecimal amount = dataEntity.getBigDecimal("amount");//合同金额
|
|
// 检查 qeug_amounts 是否大于 amount
|
|
if (qeug_amounts.setScale(2, RoundingMode.HALF_UP).compareTo(amount) > 0) {
|
|
this.addErrorMessage(extendedDataEntity, "合同清单(定额)的金额之和不能大于合同金额");
|
|
}
|
|
// DynamicObjectCollection qeug_orderformentry1 = dataEntity.getDynamicObjectCollection("qeug_orderformentry");
|
|
// int qeug_orderformentry = qeug_orderformentry1==null?0:qeug_orderformentry1.size();
|
|
// DynamicObjectCollection qeug_invoiceentryinfo1 = dataEntity.getDynamicObjectCollection("qeug_invoiceentryinfo");
|
|
// int qeug_invoiceentryinfo = qeug_invoiceentryinfo1==null?0:qeug_invoiceentryinfo1.size();
|
|
// if(qeug_orderformentry+qeug_invoiceentryinfo<1){
|
|
// this.addErrorMessage(extendedDataEntity, "合同清单不允许为空!");
|
|
// }
|
|
QFilter qFilter = new QFilter("billno", QCP.equals, dataEntity.getString("billno"));
|
|
DynamicObject[] load = BusinessDataServiceHelper.load("recon_conpayplan", "contractbill", qFilter.toArray());
|
|
if (load.length!=0) {
|
|
Object pkValue = load[0].getPkValue();
|
|
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(pkValue, "recon_conpayplan");
|
|
DynamicObjectCollection conpayplanschedule = dynamicObject.getDynamicObjectCollection("conpayplanschedule");
|
|
if(conpayplanschedule==null||conpayplanschedule.size()<1){
|
|
this.addErrorMessage(extendedDataEntity, "付款计划不能为空,若已存在付款计划,请先保存");
|
|
}
|
|
}else{
|
|
this.addErrorMessage(extendedDataEntity, "付款计划不能为空,若已存在付款计划,请先保存");
|
|
}
|
|
}
|
|
break;
|
|
case "qeug_attatchment":
|
|
for (ExtendedDataEntity extendedDataEntity : dataEntities1) {
|
|
//合同正文(盖章件)不能为空
|
|
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
|
DynamicObjectCollection attachmentpanel = dataEntity.getDynamicObjectCollection("attachmentpanel");
|
|
if (attachmentpanel.isEmpty()) {
|
|
this.addMessage(extendedDataEntity, "合同正文(盖章件)不能为空");
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|