AssetMidBillOpPlugin.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package fi.fa.opplugin;
  2. import com.alibaba.druid.util.StringUtils;
  3. import fi.fa.opplugin.utils.ChangeDataUtils;
  4. import kd.bos.bill.BillShowParameter;
  5. import kd.bos.dataentity.OperateOption;
  6. import kd.bos.dataentity.entity.DynamicObject;
  7. import kd.bos.dataentity.entity.DynamicObjectCollection;
  8. import kd.bos.entity.datamodel.ListSelectedRowCollection;
  9. import kd.bos.entity.operate.result.OperationResult;
  10. import kd.bos.form.FormShowParameter;
  11. import kd.bos.form.ShowType;
  12. import kd.bos.form.control.events.ItemClickEvent;
  13. import kd.bos.list.BillList;
  14. import kd.bos.list.plugin.AbstractListPlugin;
  15. import kd.bos.orm.query.QCP;
  16. import kd.bos.orm.query.QFilter;
  17. import kd.bos.servicehelper.BusinessDataServiceHelper;
  18. import kd.bos.servicehelper.operation.OperationServiceHelper;
  19. import kd.bos.servicehelper.operation.SaveServiceHelper;
  20. import java.math.BigDecimal;
  21. import java.util.EventObject;
  22. import java.util.List;
  23. //资产调出单中间表下推资产调出单
  24. public class AssetMidBillOpPlugin extends AbstractListPlugin {
  25. public void registerListener(EventObject e) {
  26. super.registerListener(e);
  27. this.addItemClickListeners(new String[]{"toolbarap"});
  28. }
  29. @Override
  30. public void itemClick(ItemClickEvent evt) {
  31. String itemKey = evt.getItemKey();
  32. if ("nckd_push".equals(itemKey)) {
  33. StringBuilder errMsg = new StringBuilder();
  34. BillList billList = (BillList) this.getControl("billlistap");
  35. ListSelectedRowCollection list = billList.getSelectedRows();
  36. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  37. if (primaryKeyValues.length > 0) {
  38. for (Object pk : primaryKeyValues) {
  39. DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "nckd_e_dispatch_mid");
  40. String nckd_flag = info.getString("nckd_flag");
  41. String direction = info.getString("nckd_direction");
  42. if ("1".equals(nckd_flag)) {
  43. errMsg.append("单据号: ").append(info.getString("number")).append("已经下推生成了业务处理单,不允许重复下推!");
  44. errMsg.append("\r\n");
  45. continue;
  46. }
  47. String error = ChangeDataUtils.check(info);
  48. if (!StringUtils.isEmpty(error)) {
  49. errMsg.append(error);
  50. errMsg.append("\r\n");
  51. continue;
  52. }
  53. DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
  54. busProcess.set("nckd_bizdate", info.getDate("nckd_date_out"));//业务日期
  55. Long orgIdin = ChangeDataUtils.getOrg(info.getString("nckd_org_in"));
  56. Long orgIdout = ChangeDataUtils.getOrg(info.getString("nckd_org_out"));
  57. Long relationIdin = ChangeDataUtils.getRelation(orgIdin);
  58. Long relationIdout = ChangeDataUtils.getRelation(orgIdout);
  59. busProcess.set("nckd_costcompany", relationIdin);//资产组织
  60. busProcess.set("nckd_orgfield", relationIdout);//核算组织
  61. busProcess.set("nckd_orgfield1", relationIdout);//调出组织
  62. busProcess.set("nckd_orgfield2", relationIdin);//调入组织
  63. busProcess.set("nckd_textfield1", info.getString("nckd_reason"));//调拨原因
  64. busProcess.set("billstatus", "A");//暂存
  65. busProcess.set("nckd_detailtype", "E");//业务类型(E:资产调拨)
  66. busProcess.set("nckd_mid_assert", pk);//中间表id
  67. busProcess.set("nckd_source_type", "nckd_e_dispatch_mid");//源单类型
  68. busProcess.set("nckd_applierv", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调出申请人
  69. busProcess.set("nckd_basedatafield4", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调入负责人
  70. busProcess.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
  71. List<String> codeList = ChangeDataUtils.getCardNumber(info);
  72. QFilter filter = new QFilter("number", QCP.in, codeList);
  73. filter.and("isbak", QCP.equals, "0");
  74. DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real", "id", new QFilter[]{filter});
  75. for (int c = 0; c < card.length; c++) {
  76. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
  77. String model = cardInfo.getString("model");
  78. String nckd_storeplace = cardInfo.getString("nckd_storeplace");
  79. String headusedept = cardInfo.getDynamicObject("headusedept").getString("name");
  80. DynamicObject headuseperson = cardInfo.getDynamicObject("headuseperson");
  81. DynamicObject fin = ChangeDataUtils.queryFinCard(cardInfo.getLong("id"));
  82. BigDecimal originalval = BigDecimal.ZERO;
  83. BigDecimal accumdepre = BigDecimal.ZERO;
  84. BigDecimal decval = BigDecimal.ZERO;
  85. BigDecimal preresidualval = BigDecimal.ZERO;
  86. BigDecimal nckd_amountfield23 = BigDecimal.ZERO;
  87. BigDecimal nckd_amountfield24 = BigDecimal.ZERO;
  88. if (fin != null) {
  89. originalval = fin.getBigDecimal("originalval");//资产原值(nckd_amountfield19)
  90. accumdepre = fin.getBigDecimal("accumdepre");//累计折旧(nckd_amountfield20)
  91. decval = fin.getBigDecimal("decval");//减值准备(nckd_amountfield21)
  92. preresidualval = fin.getBigDecimal("preresidualval");//预计净残值(nckd_amountfield22)
  93. nckd_amountfield23 = originalval.subtract(accumdepre);//预计清理净值(nckd_amountfield23 = nckd_amountfield19 - nckd_amountfield20)
  94. nckd_amountfield24 = nckd_amountfield23.subtract(decval);//预计净残值(nckd_amountfield24 = nckd_amountfield19 - nckd_amountfield20 - nckd_amountfield21)
  95. }
  96. //创建资产调拨分录
  97. DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity216");
  98. DynamicObject entry1 = entryEntity.addNew();
  99. entry1.set("nckd_basedatafield5", cardInfo);//实物资产编号
  100. entry1.set("nckd_basedatafield23", fin);//资产编号
  101. entry1.set("nckd_textfield54", model);
  102. entry1.set("nckd_user", headuseperson);
  103. entry1.set("nckd_textfield53", nckd_storeplace);
  104. entry1.set("nckd_textfield52", headusedept);
  105. entry1.set("nckd_amountfield19", originalval);//预计清理原值
  106. entry1.set("nckd_amountfield20", accumdepre);//预计清理累计折旧
  107. entry1.set("nckd_amountfield21", decval);//预计清理减值准备
  108. entry1.set("nckd_amountfield22", preresidualval);//预计清理残值
  109. entry1.set("nckd_amountfield23", nckd_amountfield23);//预计清理净值
  110. entry1.set("nckd_amountfield24", nckd_amountfield24);//预计清理净额
  111. entry1.set("nckd_basedatafield11", ChangeDataUtils.getUser(info.getString("nckd_used_user")));//调入使用人
  112. entry1.set("nckd_textfield10", info.getString("nckd_storeplace"));//调入存放地点
  113. entry1.set("nckd_orgfield4", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门
  114. }
  115. //执行保存-提交-审核
  116. OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
  117. if (saveResult.isSuccess()){
  118. info.set("nckd_flag", "1");
  119. info.set("nckd_ywcl", saveResult.getSuccessPkIds().get(0));
  120. SaveServiceHelper.save(new DynamicObject[]{info});
  121. errMsg.append("单据号: ").append(info.getString("number")).append("下推生成业务处理单成功!");
  122. errMsg.append("\r\n");
  123. OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
  124. OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
  125. }else {
  126. errMsg.append(saveResult.getMessage());
  127. errMsg.append("\r\n");
  128. }
  129. }
  130. } else {
  131. this.getView().showMessage("请至少选择一条数据");
  132. }
  133. this.getView().showMessage(errMsg.toString());
  134. } else if ("nckd_trackdown".equals(itemKey)) {
  135. BillList billList = (BillList) this.getControl("billlistap");
  136. ListSelectedRowCollection list = billList.getSelectedRows();
  137. if (list.size() == 0) {
  138. this.getView().showMessage("请选择一条数据");
  139. return;
  140. } else if (list.size() > 1) {
  141. this.getView().showMessage("只能选择一条数据");
  142. return;
  143. }
  144. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  145. long id = 0;
  146. for (Object pk : primaryKeyValues) {
  147. DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "nckd_e_dispatch_mid");
  148. id = info.getLong("nckd_ywcl");
  149. if (id == 0) {
  150. this.getView().showMessage("该单据还未下推生成业务处理单");
  151. return;
  152. }
  153. }
  154. BillShowParameter showParameter = new BillShowParameter();
  155. showParameter.setFormId("nckd_ywcld");
  156. showParameter.getOpenStyle().setShowType(ShowType.Modal);//打开方式
  157. showParameter.setPkId(id);
  158. this.getView().showForm(showParameter);
  159. }
  160. }
  161. }