BusinessProcessingOpPlugin.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package fi.em.opplugin;
  2. import com.alibaba.fastjson.JSONObject;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.dataentity.entity.DynamicObjectCollection;
  5. import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
  6. import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
  7. import kd.bos.exception.KDBizException;
  8. import kd.bos.servicehelper.BusinessDataServiceHelper;
  9. import java.math.BigDecimal;
  10. public class BusinessProcessingOpPlugin extends AbstractOperationServicePlugIn {
  11. @Override
  12. public void beginOperationTransaction(BeginOperationTransactionArgs e) {
  13. //获取当前操作单据数组
  14. DynamicObject[] dynamicObjects = e.getDataEntities();
  15. for (int i = 0; i < dynamicObjects.length; i++) {
  16. JSONObject object = new JSONObject();
  17. //当前单头数据包
  18. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  19. String detailtype = info.getString("nckd_detailtype");
  20. if ("A".equals(detailtype)) {
  21. DynamicObjectCollection nckdEntryentity1 = info.getDynamicObjectCollection("nckd_entryentity1");
  22. DynamicObjectCollection nckdEntryentity3 = info.getDynamicObjectCollection("nckd_entryentity3");
  23. if(!nckdEntryentity1.isEmpty() && !nckdEntryentity3.isEmpty()){
  24. throw new KDBizException("应收挂账与租赁合同不能同时冲销!");
  25. }
  26. if (!nckdEntryentity1.isEmpty()) {
  27. BigDecimal nckdSkmxjehj = info.getBigDecimal("nckd_skmxjehj");//收款合计
  28. BigDecimal nckdYsgzjehj = info.getBigDecimal("nckd_ysgzjehj");//应收合计
  29. BigDecimal nckdhtamount = info.getBigDecimal("nckd_htamount");//合同合计
  30. double latitudeDo = nckdhtamount.doubleValue();
  31. double latitudeDou = nckdSkmxjehj.doubleValue();
  32. double latitudeDous = nckdYsgzjehj.doubleValue();
  33. if (latitudeDou != latitudeDous) {
  34. throw new KDBizException("收款金额与冲销金额不一致!");
  35. }
  36. }
  37. if (!nckdEntryentity3.isEmpty()) {
  38. BigDecimal nckdSkmxjehj = info.getBigDecimal("nckd_skmxjehj");//收款合计
  39. BigDecimal nckdYsgzjehj = info.getBigDecimal("nckd_ysgzjehj");//应收合计
  40. BigDecimal nckdhtamount = info.getBigDecimal("nckd_htamount");//合同合计
  41. double latitudeDo = nckdhtamount.doubleValue();
  42. double latitudeDou = nckdSkmxjehj.doubleValue();
  43. double latitudeDous = nckdYsgzjehj.doubleValue();
  44. if (latitudeDou != latitudeDo) {
  45. throw new KDBizException("收款金额与合同冲销金额不一致!");
  46. }
  47. }
  48. } else if ("B".equals(detailtype)) {
  49. BigDecimal nckdFkmxjehj = info.getBigDecimal("nckd_fkmxjehj");
  50. BigDecimal nckdYfgzjehj = info.getBigDecimal("nckd_yfgzjehj");
  51. double latitudeDou = nckdFkmxjehj.doubleValue();
  52. double latitudeDous = nckdYfgzjehj.doubleValue();
  53. if (latitudeDou != latitudeDous) {
  54. throw new KDBizException("付款金额与冲销金额不一致!");
  55. }
  56. }
  57. int count =0;
  58. for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity2")) {
  59. count++;
  60. BigDecimal nckdCyfcxbalance = entryentity.getBigDecimal("nckd_cyfcxbalance");//冲销金额
  61. BigDecimal nckdCyfgzbalance = entryentity.getBigDecimal("nckd_cyfgzbalance");//应付挂账
  62. if(nckdCyfcxbalance.compareTo(nckdCyfgzbalance) == 1){
  63. throw new KDBizException("冲应付挂账明细第"+count+"行冲销金额大于应付挂账余额");
  64. }
  65. }
  66. int counts =0;
  67. for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity1")) {
  68. counts++;
  69. BigDecimal nckd_cyscxbalance = entryentity.getBigDecimal("nckd_cyscxbalance");//冲销金额
  70. BigDecimal nckd_cysgzbalance = entryentity.getBigDecimal("nckd_cysgzbalance");//应付挂账
  71. if(nckd_cyscxbalance.compareTo(nckd_cysgzbalance) == 1){
  72. throw new KDBizException("冲应收挂账明细第"+counts+"行冲销金额大于应收挂账余额");
  73. }
  74. }
  75. }
  76. }
  77. }