36 lines
1.7 KiB
Java
36 lines
1.7 KiB
Java
package shkd.repc.recon.opplugin;
|
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
|
|
public class WorkloadcfSubmitOPPlugin extends AbstractOperationServicePlugIn {
|
|
|
|
@Override
|
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
|
super.afterExecuteOperationTransaction(e);
|
|
|
|
String operationKey = e.getOperationKey();
|
|
if ("submit".equals(operationKey)){
|
|
DynamicObject[] dataEntities = e.getDataEntities();
|
|
DynamicObject dataEntity = dataEntities[0];
|
|
BigDecimal latestoriprice = dataEntity.getBigDecimal("latestoriprice"); // 合同最新造价
|
|
BigDecimal sumworkloadamt = dataEntity.getBigDecimal("sumworkloadamt"); // 累计已完成产值(含税)
|
|
|
|
BigDecimal result = BigDecimal.ZERO; // 初始化结果
|
|
if (latestoriprice != null && latestoriprice.compareTo(BigDecimal.ZERO) != 0) { // 确保价格不为0且不为null
|
|
if (sumworkloadamt != null && sumworkloadamt.compareTo(BigDecimal.ZERO) != 0) { // 确保累计已完成产值不为0且不为null
|
|
// 计算: (sumworkloadamt / latestoriprice) * 100
|
|
result = sumworkloadamt.divide(latestoriprice, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); // 四舍五入到10位小数, 乘以100
|
|
}
|
|
}
|
|
dataEntity.set("qeug_czzb", result); // 累计已完成产值占比
|
|
SaveServiceHelper.save(new DynamicObject[]{dataEntity});
|
|
}
|
|
}
|
|
}
|