RealCardBillOpPlugin.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package fi.fa.opplugin;
  2. import com.alibaba.druid.util.StringUtils;
  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.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.util.ArrayList;
  12. import java.util.List;
  13. //实物卡片
  14. public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn {
  15. @Override
  16. public void beginOperationTransaction(BeginOperationTransactionArgs e) {
  17. DynamicObject[] dynamicObjects = e.getDataEntities();
  18. for (int i = 0; i < dynamicObjects.length; i++) {
  19. if (StringUtils.equals(e.getOperationKey(),"audit")) {
  20. List<Long> ids = new ArrayList<>();
  21. //审批通过后,如果是报销单下推的单据,则回写e卡片清单
  22. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  23. String srcbillentityname = info.getString("srcbillentityname");
  24. Long bxId = info.getLong("nckd_bz_id");
  25. String number = info.getString("number");//资产编码
  26. String name = info.getString("assetname");//资产名称
  27. DynamicObject org = info.getDynamicObject("assetunit");//资产组织
  28. String orgName = org.getString("name");
  29. //报销单下推生成的实物卡片审核后回写e管家实物卡片清单
  30. if (bxId != 0) {
  31. //查询报销单
  32. QFilter bxFilter = new QFilter("id", QCP.equals,bxId);
  33. DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter});
  34. for (int c=0;c<bxDynamicObjects.length;c++) {
  35. //报销单头数据包
  36. DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[c].getPkValue(), bxDynamicObjects[c].getDynamicObjectType().getName());
  37. //循环资产信息分录
  38. for(DynamicObject object : bxInfo.getDynamicObjectCollection("assetentry")){
  39. //获取e管家实物卡片清单基础资料
  40. DynamicObjectCollection cardList = object.getDynamicObjectCollection("nckd_real_card");
  41. for (DynamicObject card : cardList) {
  42. Long id = (Long) card.get(2);
  43. //查询e卡片实物清单
  44. QFilter filter = new QFilter("id", QCP.equals,id);
  45. DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
  46. for (int j = 0; j < cardObjects.length; j++) {
  47. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName());
  48. //回写e卡片实物清单字段
  49. cardInfo.set("nckd_card_real_org", orgName);
  50. cardInfo.set("nckd_card_real_code", number);
  51. cardInfo.set("nckd_card_real_name", name);
  52. SaveServiceHelper.save(new DynamicObject[]{cardInfo});
  53. }
  54. }
  55. }
  56. }
  57. } else if ("fa_assetsplitbill".equals(srcbillentityname)) {
  58. Long cfId = info.getLong("srcbillid");
  59. //查询资产拆分单
  60. QFilter cfFilter = new QFilter("id", QCP.equals,cfId);
  61. DynamicObject[] dispatchObjects = BusinessDataServiceHelper.load("fa_assetsplitbill","id",new QFilter[] {cfFilter});
  62. DynamicObject dispatchInfo = BusinessDataServiceHelper.loadSingle(dispatchObjects[0].getPkValue(), dispatchObjects[0].getDynamicObjectType().getName());
  63. //获取拆分后分录
  64. DynamicObjectCollection collection = dispatchInfo.getDynamicObjectCollection("assetsplitentry").get(0).getDynamicObjectCollection("subassetsplitentry");
  65. //从拆分分录第二行开始回写
  66. //获取拆分后卡片分录e管家实物卡片
  67. DynamicObject card_list = collection.get(i+1).getDynamicObject("nckd_real_card_list");
  68. if (card_list != null) {
  69. Long id = card_list.getLong("id");
  70. //查询实物卡片清单
  71. QFilter filter = new QFilter("id", QCP.equals,id);
  72. DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
  73. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[0].getPkValue(), cardObjects[0].getDynamicObjectType().getName());
  74. //回写实物卡片字段到e管家实物卡片清单
  75. //回写e卡片实物清单字段
  76. cardInfo.set("nckd_card_real_org", orgName);
  77. cardInfo.set("nckd_card_real_code", number);
  78. cardInfo.set("nckd_card_real_name", name);
  79. SaveServiceHelper.save(new DynamicObject[]{cardInfo});
  80. }
  81. }
  82. }else if(StringUtils.equals(e.getOperationKey(),"unaudit")) {
  83. //反审核,e管家实物卡片清单三个字段置为空
  84. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  85. String number = info.getString("number");//资产编码
  86. //查询e管家实物清单
  87. QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
  88. DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
  89. for (int j = 0; j < cardObjects.length; j++) {
  90. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName());
  91. //回写e卡片实物清单字段
  92. cardInfo.set("nckd_card_real_org", null);
  93. cardInfo.set("nckd_card_real_code", null);
  94. cardInfo.set("nckd_card_real_name", null);
  95. SaveServiceHelper.save(new DynamicObject[]{cardInfo});
  96. }
  97. }
  98. }
  99. }
  100. }