TripreimBurseEditPlugin.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package fi.em.formPlugin;
  2. import kd.bos.exception.KDBizException;
  3. import kd.bos.form.CloseCallBack;
  4. import kd.bos.form.FormShowParameter;
  5. import kd.bos.form.ShowType;
  6. import kd.bos.form.events.AfterDoOperationEventArgs;
  7. import kd.bos.form.events.ClosedCallBackEvent;
  8. import kd.bos.list.plugin.AbstractListPlugin;
  9. import kd.bos.orm.query.QFilter;
  10. import kd.sdk.plugin.Plugin;
  11. import com.alibaba.fastjson.JSONArray;
  12. import com.alibaba.fastjson.JSONObject;
  13. import kd.bos.dataentity.entity.DynamicObject;
  14. import kd.bos.servicehelper.BusinessDataServiceHelper;
  15. import org.apache.commons.lang3.StringUtils;
  16. import java.math.BigDecimal;
  17. import java.util.HashMap;
  18. public class TripreimBurseEditPlugin extends AbstractListPlugin implements Plugin {
  19. public static String btn_NOTICE = "donothing"; //操作
  20. public static String btn_NOTICES = "bxdtc"; //操作标识
  21. public static String nckd_agentparameterf1 = "nckd_agentparameterf1";//弹窗界面标识
  22. private static String bos_org = "bos_org"; //组织标识
  23. private static String er_expenseitemedit="er_expenseitemedit";//费用项目基础资料标识
  24. @Override
  25. public void afterDoOperation(AfterDoOperationEventArgs e) {
  26. String operateKey = e.getOperateKey();
  27. if (btn_NOTICES.equals(e.getOperateKey())) {
  28. Object value = this.getModel().getValue("costcompany");//获取当前单据费用公司
  29. DynamicObject entrycostcompanyWait = (DynamicObject)value;
  30. String orgnumber = entrycostcompanyWait.getString("number");//公司编码
  31. String orgid = entrycostcompanyWait.getString("id");//公司id
  32. Object creator=this.getModel().getValue("creator");//获取当前创建人
  33. Object costdept=this.getModel().getValue("costdept");//获取当前费用承担
  34. DynamicObject creatorWait=(DynamicObject) creator;
  35. DynamicObject costdeptWait=(DynamicObject) costdept;
  36. String creatorNumber=creatorWait.getString("number");//创建人编码
  37. String costdeptNumber=costdeptWait.getString("number");//费用承担部门编码
  38. if (orgnumber == null){
  39. throw new KDBizException("付费承担公司为空!");
  40. }
  41. showParameter(nckd_agentparameterf1, btn_NOTICE,orgnumber,orgid,creatorNumber,costdeptNumber);//调用弹出页面
  42. }
  43. }
  44. @Override
  45. public void closedCallBack(ClosedCallBackEvent e) {
  46. super.closedCallBack(e);
  47. if (StringUtils.equals(btn_NOTICE, e.getActionId()) && null != e.getReturnData()) {
  48. //父页面返回参数
  49. HashMap<String, String> returnData = (HashMap<String, String>) e.getReturnData();
  50. String reJaStr = returnData.get("reJaStr");
  51. //判断空
  52. if (StringUtils.isNotBlank(reJaStr)) {
  53. //删除分录信息
  54. this.getModel().deleteEntryData("clearloanentry");
  55. JSONArray reJa = JSONArray.parseArray(reJaStr);//返回信息数组
  56. //循环返回数组插入分录
  57. for(int i =0;i<reJa.size();i++){
  58. //当前循环行
  59. JSONObject reJo = reJa.getJSONObject(i);
  60. //获取费用承担部门
  61. String entrycostdept_number = reJo.getString("nckd_entrycostdept");
  62. QFilter entrycostdept_filter=new QFilter("number", QFilter.equals,entrycostdept_number);
  63. DynamicObject nckd_entrycostdept=BusinessDataServiceHelper.loadSingle(bos_org,"id,entrycostdept",new QFilter[]{entrycostdept_filter});
  64. //获取费用项目
  65. String expenseitem_number=reJo.getString("nckd_expenseitem");
  66. QFilter expenseitem_filter=new QFilter("number", QFilter.equals,expenseitem_number);
  67. DynamicObject nckd_expenseitem=BusinessDataServiceHelper.loadSingle(er_expenseitemedit,"id,expenseitem",new QFilter[]{expenseitem_filter});
  68. //申请金额
  69. BigDecimal expenseamount=reJo.getBigDecimal("nckd_expenseamount");
  70. //结算金额
  71. BigDecimal exporiusedamount=reJo.getBigDecimal("nckd_exporiusedamount");
  72. //未结算金额
  73. BigDecimal orgiexpebalanceamount=reJo.getBigDecimal("nckd_unexporiusedamount");
  74. //备注
  75. String remark=reJo.getString("nckd_remark");
  76. //借款单编号
  77. String loanbillno=reJo.getString("nckd_billno");
  78. //新增分录行
  79. int rowIndex = this.getModel().createNewEntryRow("nckd_clearloanentry");
  80. this.getModel().setValue("nckd_entrycostdept",nckd_entrycostdept,rowIndex);//费用承担部门
  81. this.getModel().setValue("nckd_expenseitem",nckd_expenseitem,rowIndex);//费用项目
  82. this.getModel().setValue("nckd_expenseamount",expenseamount,rowIndex);//申请金额
  83. this.getModel().setValue("nckd_exporiusedamount",exporiusedamount,rowIndex);//结算金额
  84. this.getModel().setValue("nckd_unexporiusedamount",orgiexpebalanceamount,rowIndex);//未结算金额
  85. this.getModel().setValue("nckd_remark",remark,rowIndex);//备注
  86. this.getModel().setValue("nckd_billno",loanbillno,rowIndex);
  87. }
  88. //刷新分录
  89. this.getView().updateView("nckd_clearloanentry");
  90. }
  91. }
  92. }
  93. public void showParameter(String formId, String actionId,String orgnumber,String orgid,
  94. String creatorNumber,String costdeptNumber) {
  95. //创建弹出页面对象,FormShowParameter表示弹出页面为动态表单
  96. FormShowParameter ShowParameter = new FormShowParameter();
  97. //ListShowParameter ShowParameter = new ListShowParameter();
  98. ShowParameter.setCustomParam("orgnumber", orgnumber);
  99. ShowParameter.setCustomParam("orgid", orgid);
  100. ShowParameter.setCustomParam("creatorNumber",creatorNumber);
  101. ShowParameter.setCustomParam("costdeptNumber",costdeptNumber);
  102. //设置弹出页面的编码
  103. ShowParameter.setFormId(formId);
  104. // ShowParameter.setCaption();
  105. //设置弹出页面标题
  106. ShowParameter.setCaption("预付借款单选择");
  107. //设置页面关闭回调方法
  108. //CloseCallBack参数:回调插件,回调标识 btnok
  109. ShowParameter.setCloseCallBack(new CloseCallBack(this, actionId));
  110. //设置弹出页面打开方式,支持模态,新标签等
  111. ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
  112. //弹出页面对象赋值给父页面
  113. this.getView().showForm(ShowParameter);
  114. }
  115. }