FaChangeMidOpPlugin.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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.datamodel.ListSelectedRowCollection;
  8. import kd.bos.entity.operate.result.OperationResult;
  9. import kd.bos.form.control.events.ItemClickEvent;
  10. import kd.bos.list.BillList;
  11. import kd.bos.list.plugin.AbstractListPlugin;
  12. import kd.bos.orm.query.QCP;
  13. import kd.bos.orm.query.QFilter;
  14. import kd.bos.servicehelper.BusinessDataServiceHelper;
  15. import kd.bos.servicehelper.operation.OperationServiceHelper;
  16. import kd.bos.servicehelper.operation.SaveServiceHelper;
  17. import java.math.BigDecimal;
  18. import java.util.EventObject;
  19. import java.util.List;
  20. //资产变更单中间表下推资产变更单
  21. public class FaChangeMidOpPlugin extends AbstractListPlugin {
  22. public void registerListener(EventObject e) {
  23. super.registerListener(e);
  24. this.addItemClickListeners(new String[]{"toolbarap"});
  25. }
  26. @Override
  27. public void itemClick(ItemClickEvent evt) {
  28. String itemKey = evt.getItemKey();
  29. if ("nckd_push".equals(itemKey)) {
  30. StringBuilder errMsg = new StringBuilder();
  31. BillList billList = (BillList)this.getControl("billlistap");
  32. ListSelectedRowCollection list = billList.getSelectedRows();
  33. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  34. if (primaryKeyValues.length > 0) {
  35. for (Object pk : primaryKeyValues) {
  36. DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "nckd_e_change_mid");
  37. String nckd_flag = info.getString("nckd_flag");
  38. String direction = info.getString("nckd_direction");
  39. if ("1".equals(nckd_flag)) {
  40. errMsg.append("单据号: ").append(info.getString("number")).append("已经下推生成了业务处理单,不允许重复下推!");
  41. errMsg.append("\r\n");
  42. continue;
  43. }
  44. String error = ChangeDataUtils.check(info);
  45. if (!StringUtils.isEmpty(error)) {
  46. errMsg.append(error);
  47. errMsg.append("\r\n");
  48. continue;
  49. }
  50. DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
  51. busProcess.set("nckd_bizdate", info.getDate("nckd_date_out"));//业务日期
  52. busProcess.set("nckd_orgfield3", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门
  53. busProcess.set("nckd_userfield", ChangeDataUtils.getUser(info.getString("nckd_used_user")));//调入使用人
  54. busProcess.set("nckd_textfield1", info.getString("nckd_reason"));//调拨原因
  55. busProcess.set("billstatus", "A");//暂存
  56. busProcess.set("nckd_detailtype", "E");//业务类型(E:资产调拨)
  57. busProcess.set("nckd_combofield2", "2");//调拨类型(2:组织内)
  58. //调出方向
  59. if("0".equals(direction)){
  60. busProcess.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
  61. busProcess.set("nckd_applierv", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
  62. }//调入方向
  63. else if ("1".equals(direction)) {
  64. busProcess.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
  65. busProcess.set("nckd_applierv", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
  66. }
  67. List<String> codeList =ChangeDataUtils.getCardNumber(info);
  68. QFilter filter = new QFilter("number", QCP.in,codeList);
  69. filter.and("isbak", QCP.equals, "0");
  70. DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
  71. for (int c = 0; c < card.length; c++) {
  72. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
  73. DynamicObject fin = ChangeDataUtils.queryFinCard(cardInfo.getLong("id"));
  74. BigDecimal originalval = BigDecimal.ZERO;
  75. BigDecimal accumdepre = BigDecimal.ZERO;
  76. BigDecimal decval = BigDecimal.ZERO;
  77. BigDecimal preresidualval = BigDecimal.ZERO;
  78. BigDecimal nckd_amountfield23 = BigDecimal.ZERO;
  79. BigDecimal nckd_amountfield24 = BigDecimal.ZERO;
  80. if (fin != null) {
  81. originalval = fin.getBigDecimal("originalval");//资产原值(nckd_amountfield19)
  82. accumdepre = fin.getBigDecimal("accumdepre");//累计折旧(nckd_amountfield20)
  83. decval = fin.getBigDecimal("decval");//减值准备(nckd_amountfield21)
  84. preresidualval = fin.getBigDecimal("preresidualval");//预计净残值(nckd_amountfield22)
  85. nckd_amountfield23 = originalval.subtract(accumdepre);//预计清理净值(nckd_amountfield23 = nckd_amountfield19 - nckd_amountfield20)
  86. nckd_amountfield24 = nckd_amountfield23.subtract(decval);//预计净残值(nckd_amountfield24 = nckd_amountfield19 - nckd_amountfield20 - nckd_amountfield21)
  87. }
  88. //创建资产调拨分录
  89. DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity216");
  90. DynamicObject entry1 = entryEntity.addNew();
  91. entry1.set("nckd_basedatafield5", cardInfo);//资产编码
  92. entry1.set("nckd_amountfield19", originalval);//预计清理原值
  93. entry1.set("nckd_amountfield20", accumdepre);//预计清理累计折旧
  94. entry1.set("nckd_amountfield21", decval);//预计清理减值准备
  95. entry1.set("nckd_amountfield22", preresidualval);//预计清理残值
  96. entry1.set("nckd_amountfield23", nckd_amountfield23);//预计清理净值
  97. entry1.set("nckd_amountfield24", nckd_amountfield24);//预计清理净额
  98. }
  99. //执行保存-提交-审核
  100. OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
  101. if (saveResult.isSuccess()){
  102. info.set("nckd_flag", "1");
  103. SaveServiceHelper.save(new DynamicObject[]{info});
  104. errMsg.append("单据号: ").append(info.getString("number")).append("下推生成业务处理单成功!");
  105. errMsg.append("\r\n");
  106. OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
  107. OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
  108. }else {
  109. errMsg.append(saveResult.getMessage());
  110. errMsg.append("\r\n");
  111. }
  112. }
  113. }else {
  114. this.getView().showMessage("请至少选择一条数据");
  115. }
  116. }
  117. }
  118. }