BusinessProcessingSaveOpPlugin.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package fi.em.opplugin;
  2. import com.alibaba.fastjson.JSONObject;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
  5. import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
  6. import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
  7. import kd.bos.orm.query.QCP;
  8. import kd.bos.orm.query.QFilter;
  9. import kd.bos.servicehelper.BusinessDataServiceHelper;
  10. import kd.bos.servicehelper.operation.SaveServiceHelper;
  11. import kd.fi.cas.helper.CasBotpHelper;
  12. import java.math.BigDecimal;
  13. public class BusinessProcessingSaveOpPlugin extends AbstractOperationServicePlugIn {
  14. // @Override
  15. // public void beginOperationTransaction(BeginOperationTransactionArgs e) {
  16. // //获取当前操作单据数组11
  17. // DynamicObject[] dynamicObjects = e.getDataEntities();
  18. // for (int i = 0; i < dynamicObjects.length; i++) {
  19. // JSONObject object = new JSONObject();
  20. // //当前单头数据包
  21. // DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  22. // String detailtype = info.getString("nckd_detailtype");
  23. // if("B".equals(detailtype)){
  24. // for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity2")) {
  25. // String nckdBigintfield = entryentity.getString("nckd_bigintfield");
  26. // CasBotpHelper.saveRelation("ap_finapbill", Long.valueOf(nckdBigintfield), "nckd_ywcld", info.getLong("id"));
  27. // }
  28. // }
  29. // }
  30. // }
  31. @Override
  32. public void endOperationTransaction(EndOperationTransactionArgs e) {
  33. super.endOperationTransaction(e);
  34. //获取当前操作单据数组
  35. DynamicObject[] dynamicObjects = e.getDataEntities();
  36. for (int i = 0; i < dynamicObjects.length; i++) {
  37. JSONObject object = new JSONObject();
  38. //当前单头数据包
  39. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  40. String detailtype = info.getString("nckd_detailtype");
  41. if("A".equals(detailtype)){
  42. for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity1")) {
  43. String nckdcysnumber = entryentity.getString("nckd_cysnumber");//财务应收单编码
  44. BigDecimal nckdCyscxbalance = entryentity.getBigDecimal("nckd_cyscxbalance");//冲销金额
  45. //构建查询应收挂账单参数
  46. QFilter nckd_orgamountFilter = new QFilter("billno", QCP.equals,nckdcysnumber);
  47. DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("ar_finarbill", "id", new QFilter[]{nckd_orgamountFilter});
  48. DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[0].getPkValue(), nckd_cas_arbill[0].getDynamicObjectType().getName());
  49. BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount");//未结算金额
  50. BigDecimal settleamount = dynamicObject.getBigDecimal("settleamount");//已结算金额
  51. BigDecimal recamount = dynamicObject.getBigDecimal("recamount");//应收金额
  52. unsettleamount=unsettleamount.subtract(nckdCyscxbalance);//计算后反写未结算金额
  53. settleamount=settleamount.add(nckdCyscxbalance);//已结算+本次冲销金额
  54. settleamount=recamount.subtract(settleamount);//计算后反写已结算金额
  55. //set反写字段
  56. dynamicObject.set("unsettleamount",unsettleamount);//财务应收单未结算金额
  57. dynamicObject.set("unsettlelocalamt",unsettleamount);//财务应收单未结算金额本位币
  58. dynamicObject.set("unverifyamount",unsettleamount);//财务应收单未核销金额本位币
  59. dynamicObject.set("settleamount",settleamount);//财务应收单已结算金额
  60. dynamicObject.set("settlelocalamt",settleamount);//财务应收单已结算金额本位币
  61. SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
  62. }
  63. for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity3")) {
  64. String nckdpzhthth = entryentity.getString("nckd_pzhthth");//租赁合同编号
  65. BigDecimal nckdCyscxbalance = entryentity.getBigDecimal("nckd_pzhtcxbalance");//冲销金额
  66. //构建查询应收挂账单参数
  67. QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals,nckdpzhthth);
  68. DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("fa_lease_contract", "id", new QFilter[]{nckd_orgamountFilter});
  69. DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[0].getPkValue(), nckd_cas_arbill[0].getDynamicObjectType().getName());
  70. BigDecimal nckdamountfield = dynamicObject.getBigDecimal("nckd_amountfield");//已收款金额
  71. BigDecimal nckdamountfield1 = dynamicObject.getBigDecimal("nckd_amountfield1");//收款余额
  72. nckdamountfield=nckdamountfield.add(nckdCyscxbalance);//计算后反写已收款金额
  73. nckdamountfield1=nckdamountfield1.subtract(nckdCyscxbalance);//收款余额+本次冲销金额
  74. //set反写字段
  75. dynamicObject.set("nckd_amountfield",nckdamountfield);//财务应收单未结算金额
  76. dynamicObject.set("nckd_amountfield1",nckdamountfield1);//财务应收单未结算金额本位币
  77. SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
  78. }
  79. } else if ("B".equals(detailtype)){
  80. for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity2")) {
  81. String nckdBigintfield = entryentity.getString("nckd_bigintfield");//财务应付单id
  82. BigDecimal nckdCyscxbalance = entryentity.getBigDecimal("nckd_cyfcxbalance");//冲销金额
  83. //构建查询应收挂账单参数
  84. QFilter nckd_orgamountFilter = new QFilter("id", QCP.equals,Long.valueOf(nckdBigintfield));
  85. DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("ap_finapbill", "id,supplier.number,", new QFilter[]{nckd_orgamountFilter});
  86. DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[0].getPkValue(), nckd_cas_arbill[0].getDynamicObjectType().getName());
  87. BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount");//未结算金额
  88. BigDecimal settleamount = dynamicObject.getBigDecimal("settleamount");//已结算金额
  89. BigDecimal pricetaxtotal = dynamicObject.getBigDecimal("pricetaxtotal");//应收金额
  90. unsettleamount=unsettleamount.subtract(nckdCyscxbalance);//计算后反写未结算金额
  91. settleamount=settleamount.add(nckdCyscxbalance);//已结算+本次冲销金额
  92. settleamount=pricetaxtotal.subtract(settleamount);//计算后反写已结算金额
  93. //set反写字段
  94. dynamicObject.set("unsettleamount",unsettleamount);//财务应收单未结算金额
  95. dynamicObject.set("unsettleamountbase",unsettleamount);//财务应收单未结算金额本位币
  96. dynamicObject.set("unverifyamount",unsettleamount);//财务应收单未核销金额本位币
  97. dynamicObject.set("settleamount",settleamount);//财务应收单已结算金额
  98. dynamicObject.set("settleamountbase",settleamount);//财务应收单已结算金额本位币
  99. SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
  100. }
  101. }
  102. }
  103. }
  104. }