123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package fi.em.opplugin;
- import com.alibaba.fastjson.JSONObject;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.dataentity.entity.DynamicObjectCollection;
- import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
- import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
- import kd.bos.exception.KDBizException;
- import kd.bos.servicehelper.BusinessDataServiceHelper;
- import java.math.BigDecimal;
- public class BusinessProcessingOpPlugin extends AbstractOperationServicePlugIn {
- @Override
- public void beginOperationTransaction(BeginOperationTransactionArgs e) {
- //获取当前操作单据数组
- DynamicObject[] dynamicObjects = e.getDataEntities();
- for (int i = 0; i < dynamicObjects.length; i++) {
- JSONObject object = new JSONObject();
- //当前单头数据包
- DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
- String detailtype = info.getString("nckd_detailtype");
- if ("A".equals(detailtype)) {
- DynamicObjectCollection nckdEntryentity1 = info.getDynamicObjectCollection("nckd_entryentity1");
- DynamicObjectCollection nckdEntryentity3 = info.getDynamicObjectCollection("nckd_entryentity3");
- if(!nckdEntryentity1.isEmpty() && !nckdEntryentity3.isEmpty()){
- throw new KDBizException("应收挂账与租赁合同不能同时冲销!");
- }
- if (!nckdEntryentity1.isEmpty()) {
- BigDecimal nckdSkmxjehj = info.getBigDecimal("nckd_skmxjehj");//收款合计
- BigDecimal nckdYsgzjehj = info.getBigDecimal("nckd_ysgzjehj");//应收合计
- BigDecimal nckdhtamount = info.getBigDecimal("nckd_htamount");//合同合计
- double latitudeDo = nckdhtamount.doubleValue();
- double latitudeDou = nckdSkmxjehj.doubleValue();
- double latitudeDous = nckdYsgzjehj.doubleValue();
- if (latitudeDou != latitudeDous) {
- throw new KDBizException("收款金额与冲销金额不一致!");
- }
- }
- if (!nckdEntryentity3.isEmpty()) {
- BigDecimal nckdSkmxjehj = info.getBigDecimal("nckd_skmxjehj");//收款合计
- BigDecimal nckdYsgzjehj = info.getBigDecimal("nckd_ysgzjehj");//应收合计
- BigDecimal nckdhtamount = info.getBigDecimal("nckd_htamount");//合同合计
- double latitudeDo = nckdhtamount.doubleValue();
- double latitudeDou = nckdSkmxjehj.doubleValue();
- double latitudeDous = nckdYsgzjehj.doubleValue();
- if (latitudeDou != latitudeDo) {
- throw new KDBizException("收款金额与合同冲销金额不一致!");
- }
- }
- } else if ("B".equals(detailtype)) {
- BigDecimal nckdFkmxjehj = info.getBigDecimal("nckd_fkmxjehj");
- BigDecimal nckdYfgzjehj = info.getBigDecimal("nckd_yfgzjehj");
- double latitudeDou = nckdFkmxjehj.doubleValue();
- double latitudeDous = nckdYfgzjehj.doubleValue();
- if (latitudeDou != latitudeDous) {
- throw new KDBizException("付款金额与冲销金额不一致!");
- }
- }
- int count =0;
- for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity2")) {
- count++;
- BigDecimal nckdCyfcxbalance = entryentity.getBigDecimal("nckd_cyfcxbalance");//冲销金额
- BigDecimal nckdCyfgzbalance = entryentity.getBigDecimal("nckd_cyfgzbalance");//应付挂账
- if(nckdCyfcxbalance.compareTo(nckdCyfgzbalance) == 1){
- throw new KDBizException("冲应付挂账明细第"+count+"行冲销金额大于应付挂账余额");
- }
- }
- int counts =0;
- for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity1")) {
- counts++;
- BigDecimal nckd_cyscxbalance = entryentity.getBigDecimal("nckd_cyscxbalance");//冲销金额
- BigDecimal nckd_cysgzbalance = entryentity.getBigDecimal("nckd_cysgzbalance");//应付挂账
- if(nckd_cyscxbalance.compareTo(nckd_cysgzbalance) == 1){
- throw new KDBizException("冲应收挂账明细第"+counts+"行冲销金额大于应收挂账余额");
- }
- }
- }
- }
- }
|