FaChangeMidOpPlugin.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package fi.fa.opplugin;
  2. import com.alibaba.druid.util.StringUtils;
  3. import fi.fa.opplugin.utils.ChangeDataUtils;
  4. import kd.bos.dataentity.OperateOption;
  5. import kd.bos.dataentity.entity.DynamicObject;
  6. import kd.bos.dataentity.entity.DynamicObjectCollection;
  7. import kd.bos.entity.operate.result.OperationResult;
  8. import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
  9. import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
  10. import kd.bos.exception.KDBizException;
  11. import kd.bos.orm.query.QCP;
  12. import kd.bos.orm.query.QFilter;
  13. import kd.bos.servicehelper.BusinessDataServiceHelper;
  14. import kd.bos.servicehelper.operation.OperationServiceHelper;
  15. import kd.bos.servicehelper.operation.SaveServiceHelper;
  16. import java.util.List;
  17. //资产变更单中间表下推资产变更单
  18. public class FaChangeMidOpPlugin extends AbstractOperationServicePlugIn {
  19. @Override
  20. public void beginOperationTransaction(BeginOperationTransactionArgs e) {
  21. super.beginOperationTransaction(e);
  22. DynamicObject[] dynamicObjects = e.getDataEntities();
  23. for (int i = 0; i < dynamicObjects.length; i++) {
  24. if (StringUtils.equals(e.getOperationKey(), "push")) {
  25. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  26. String nckd_flag = info.getString("nckd_flag");
  27. if ("1".equals(nckd_flag)) {
  28. throw new KDBizException("单据" + info.getString("number") + "已经下推生成了资产调拨单,不允许重复下推!");
  29. }else {
  30. String dispatchType = info.getString("nckd_dispatch_type");
  31. String direction = info.getString("nckd_direction");
  32. String error = ChangeDataUtils.check(info);
  33. if (!StringUtils.isEmpty(error)) {
  34. this.operationResult.setShowMessage(true);
  35. this.operationResult.setSuccess(false);
  36. this.operationResult.setMessage(error);
  37. }else {
  38. if ("1".equals(dispatchType)) {
  39. DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
  40. //单据头
  41. DynamicObject orgInfo = ChangeDataUtils.queryOrg(ChangeDataUtils.getOrg(info.getString("nckd_org_in")));
  42. changeDept.set("org", orgInfo);//核算组织
  43. changeDept.set("changedate", info.getDate("nckd_date_out"));//记账日期
  44. changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//变更申请人
  45. changeDept.set("remark", info.getString("nckd_reason"));//调出原因
  46. changeDept.set("sourcetype", 2);//来源方式(5:API生成)
  47. changeDept.set("changetype", ChangeDataUtils.queryChangeType(Long.parseLong("733953285719123968")));//变更类型,默认部门变更
  48. changeDept.set("chtypedetail", "1");//变更类型明细默认实物变更1
  49. changeDept.set("voucherflag", "A");//记账标识默认无需记账A
  50. changeDept.set("billstatus", "A");//暂存
  51. //调出方向
  52. if("0".equals(direction)){
  53. changeDept.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
  54. changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
  55. }//调入方向
  56. else if ("1".equals(direction)) {
  57. changeDept.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
  58. changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
  59. }
  60. List<String> codeList =ChangeDataUtils.getCardNumber(info);
  61. QFilter filter = new QFilter("number", QCP.in,codeList);
  62. filter.and("isbak", QCP.equals, "0");
  63. DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
  64. for (int c = 0; c < card.length; c++) {
  65. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
  66. //查询财务卡片
  67. DynamicObject fin = ChangeDataUtils.queryFinCard(cardInfo.getLong("id"));//财务卡片id
  68. //创建变更字段分录
  69. DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
  70. String deptAftervalue = ChangeDataUtils.getOrg(info.getString("nckd_dept_in")) == null ? null : ChangeDataUtils.getOrg(info.getString("nckd_dept_in")).toString();
  71. String deptBeforevalue = cardInfo.getDynamicObject("headusedept") == null ? null : String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id"));
  72. if (!StringUtils.equals(deptBeforevalue, deptAftervalue)) {
  73. DynamicObject entry1 = fieldentry.addNew();
  74. entry1.set("realcard1", cardInfo);//资产编码
  75. entry1.set("depreuse1", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
  76. entry1.set("currency1", 1);//币别
  77. entry1.set("basecurrency1", 1);//本币位
  78. entry1.set("assetnumber",cardInfo.getString("number"));//资产编码
  79. entry1.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
  80. entry1.set("field", "fa_card_real.headusedept");//变更字段-部门
  81. entry1.set("beforevalue", deptBeforevalue);//变更前值
  82. entry1.set("aftervalue", deptAftervalue);//变更后值
  83. entry1.set("realcardmasterid", cardInfo);//实物卡片id
  84. entry1.set("fincard1", fin);//财务卡片
  85. }
  86. String userAftervalue = info.getString("nckd_used_user") == null ? null : String.valueOf(ChangeDataUtils.getUser(info.getString("nckd_used_user")).getLong("id"));
  87. String userBeforevalue = cardInfo.getDynamicObject("headuseperson") == null ? null : String.valueOf(ChangeDataUtils.getUser(info.getString("nckd_used_user")).getLong("id"));
  88. if (!StringUtils.equals(userBeforevalue, userAftervalue)) {
  89. DynamicObject entry2 = fieldentry.addNew();
  90. entry2.set("realcard1", cardInfo);//资产编码
  91. entry2.set("depreuse1", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
  92. entry2.set("currency1", 1);//币别
  93. entry2.set("basecurrency1", 1);//本币位
  94. entry2.set("assetnumber",cardInfo.getString("number"));//资产编码
  95. entry2.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
  96. entry2.set("field", "fa_card_real.headuseperson");//变更字段-使用人
  97. entry2.set("beforevalue", userBeforevalue);//变更前值
  98. entry2.set("aftervalue", userAftervalue);//变更后值
  99. entry2.set("realcardmasterid", cardInfo);//实物卡片id
  100. entry2.set("fincard1", fin);//财务卡片
  101. }
  102. //创建实物变更分录
  103. DynamicObjectCollection realentry = changeDept.getDynamicObjectCollection("realentry");
  104. DynamicObject realentry1 = realentry.addNew();
  105. realentry1.set("realcard", cardInfo.getLong("id"));//资产编码
  106. //创建财务变更分录
  107. DynamicObjectCollection finentry = realentry1.getDynamicObjectCollection("finentry");
  108. DynamicObject finentry1 = finentry.addNew();
  109. finentry1.set("depreuse", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
  110. finentry1.set("fincard", fin);
  111. finentry1.set("bizdate", info.getDate("nckd_date_out"));
  112. }
  113. //执行保存-提交-审核
  114. OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateOption.create());
  115. if (saveResult.isSuccess()) {
  116. info.set("nckd_flag", "1");
  117. SaveServiceHelper.save(new DynamicObject[]{info});
  118. this.operationResult.setShowMessage(true);
  119. this.operationResult.setSuccess(true);
  120. this.operationResult.setMessage("下推资产变更单成功");
  121. OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_change_dept",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
  122. OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_change_dept",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
  123. }else {
  124. this.operationResult.setShowMessage(true);
  125. this.operationResult.setSuccess(false);
  126. this.operationResult.setMessage("下推资产变更单失败");
  127. }
  128. }
  129. }
  130. }
  131. }
  132. }
  133. }
  134. }