PublicreimburOpPlugin.java 5.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package fi.er.opplugin;
  2. import com.alibaba.druid.util.StringUtils;
  3. import fi.cas.common.SettlementStatusEnum;
  4. import kd.bos.dataentity.entity.DynamicObject;
  5. import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
  6. import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
  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 java.math.BigDecimal;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. //报销单
  15. public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
  16. private static String ap_finapbill = "ap_finapbill"; //应付挂账单字段
  17. @Override
  18. public void beginOperationTransaction(BeginOperationTransactionArgs e) {
  19. //获取报销单据信息
  20. DynamicObject[] dynamicObjects = e.getDataEntities();
  21. for (int i = 0; i < dynamicObjects.length; i++) {
  22. if (StringUtils.equals(e.getOperationKey(),"audit")) {
  23. //当前单头数据包
  24. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  25. BigDecimal totalUnsettleamount = BigDecimal.ZERO;
  26. //循环收款信息分录
  27. for (DynamicObject entryentity : info.getDynamicObjectCollection("accountentry")) {
  28. //取当前分录的收款金额
  29. BigDecimal orireceiveamount = entryentity.getBigDecimal("orireceiveamount");
  30. //未结算金额=收款金额
  31. entryentity.set("nckd_unsettleamount_et",orireceiveamount);
  32. entryentity.set("nckd_settleamount_et",BigDecimal.ZERO);
  33. totalUnsettleamount = totalUnsettleamount.add(orireceiveamount);
  34. }
  35. info.set("nckd_unsettleamount",totalUnsettleamount);
  36. info.set("nckd_settleamount",BigDecimal.ZERO);
  37. info.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
  38. SaveServiceHelper.save(new DynamicObject[]{info});
  39. } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
  40. //当前单头数据包
  41. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  42. //循环收款信息分录
  43. for (DynamicObject entryentity : info.getDynamicObjectCollection("accountentry")) {
  44. entryentity.set("nckd_unsettleamount_et",BigDecimal.ZERO);
  45. }
  46. info.set("nckd_unsettleamount",BigDecimal.ZERO);
  47. info.set("nckd_settlestatus", null);
  48. SaveServiceHelper.save(new DynamicObject[]{info});
  49. } else if (StringUtils.equals(e.getOperationKey(),"save")) {
  50. List<DynamicObject> dynamicObjectList = new ArrayList<>();
  51. //获取当前页面数据
  52. DynamicObject info = dynamicObjects[i];
  53. //获取当前单据数据库保存数据
  54. DynamicObject saveInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  55. if (saveInfo == null) {
  56. DynamicObject apfinapbill = info.getDynamicObject("nckd_apfinapbill");
  57. if (apfinapbill != null) {
  58. //所选应付挂帐单更新标识
  59. Long id = apfinapbill.getLong("id");
  60. QFilter gzFilter = new QFilter("id", QCP.equals,id);
  61. DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {gzFilter});
  62. DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[0].getPkValue(), gzDynamicObjects[0].getDynamicObjectType().getName());
  63. gzInfo.set("nckd_selectflag","1");
  64. SaveServiceHelper.save(new DynamicObject[]{gzInfo});
  65. }
  66. }else {
  67. DynamicObject apfinapbill = info.getDynamicObject("nckd_apfinapbill");
  68. DynamicObject saveApfinapbill = saveInfo.getDynamicObject("nckd_apfinapbill");
  69. Long oldId = saveApfinapbill.getLong("id");
  70. //释放原应付挂账单
  71. QFilter oldFilter = new QFilter("id", QCP.equals,oldId);
  72. DynamicObject[] oldDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {oldFilter});
  73. DynamicObject oldInfo = BusinessDataServiceHelper.loadSingle(oldDynamicObjects[0].getPkValue(), oldDynamicObjects[0].getDynamicObjectType().getName());
  74. oldInfo.set("nckd_selectflag","");
  75. SaveServiceHelper.save(new DynamicObject[]{oldInfo});
  76. if (apfinapbill !=null) {
  77. Long id = apfinapbill.getLong("id");
  78. QFilter gzFilter = new QFilter("id", QCP.equals,id);
  79. DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {gzFilter});
  80. DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[0].getPkValue(), gzDynamicObjects[0].getDynamicObjectType().getName());
  81. gzInfo.set("nckd_selectflag","1");
  82. SaveServiceHelper.save(new DynamicObject[]{gzInfo});
  83. }
  84. }
  85. }
  86. }
  87. }
  88. }