PayBillEditPlugin.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. package kd.cosmic.jkjt.fi.cas.formplugin;
  2. import kd.bos.dataentity.entity.DynamicObject;
  3. import kd.bos.entity.datamodel.events.ChangeData;
  4. import kd.bos.entity.datamodel.events.PropertyChangedArgs;
  5. import kd.bos.form.control.Label;
  6. import kd.bos.form.events.ClosedCallBackEvent;
  7. import kd.bos.orm.query.QCP;
  8. import kd.bos.orm.query.QFilter;
  9. import kd.bos.servicehelper.BusinessDataServiceHelper;
  10. import kd.fi.cas.consts.BillTypeConstants;
  11. import kd.fi.cas.formplugin.PaymentBillEdit;
  12. import java.math.BigDecimal;
  13. import java.util.EventObject;
  14. import java.util.Map;
  15. /**
  16. * @author turbo
  17. *
  18. * 同名转账PC布局单据显示,付款方、收款方的协定利率、协定留存金额。单据字段已添加,逻辑描述:
  19. * 数据来源:协定存款单据
  20. * 条件:协议状态=正常 , 收付.银行账号=协定账号
  21. * 未找到记录则字段显示为空
  22. */
  23. public class PayBillEditPlugin extends PaymentBillEdit {
  24. private String AgreementDepositEntityName = "cim_agreement_deposit";
  25. @Override
  26. public void afterCreateNewData(EventObject e) {
  27. super.afterCreateNewData(e);
  28. setIstypeSyn();
  29. DynamicObject payeracctbank = (DynamicObject)this.getValue("payeracctbank");
  30. if(payeracctbank != null){
  31. getDepositAgreeInfo(true, (Long)payeracctbank.getPkValue());
  32. }
  33. }
  34. @Override
  35. public void afterLoadData(EventObject e) {
  36. super.afterLoadData(e);
  37. setIstypeSyn();
  38. setPayerPayeeInfoLb();
  39. }
  40. @Override
  41. public void click(EventObject evt) {
  42. // super.click(evt);
  43. }
  44. @Override
  45. public void closedCallBack(ClosedCallBackEvent e) {
  46. // super.closedCallBack(e);
  47. //
  48. // Map data;
  49. // if ("changepayer".equals(e.getActionId())) {
  50. // data = (Map)e.getReturnData();
  51. // if (data != null) {
  52. // this.changePayerValueForDepositAgree(data);
  53. // }
  54. // } else if ("addpayee".equals(e.getActionId())) {
  55. // data = (Map)e.getReturnData();
  56. // if (data != null) {
  57. // this.addPayeeValueForDepositAgree(data);
  58. // }
  59. // }
  60. }
  61. private void changePayerValueForDepositAgree(Map<String, Object> returnMap) {
  62. if (getBillTypeSyn()) {
  63. DynamicObject payerbank = (DynamicObject ) returnMap.get("payeracctbank");
  64. getDepositAgreeInfo(true, (Long)payerbank.getPkValue());
  65. }
  66. }
  67. private void addPayeeValueForDepositAgree(Map<String, Object> returnMap) {
  68. if (getBillTypeSyn()) {
  69. Long payeebankId = (Long)returnMap.get("payeeacctbank");
  70. getDepositAgreeInfo(false,payeebankId);
  71. }
  72. }
  73. private void setIstypeSyn(){
  74. if (getBillTypeSyn()) {
  75. this.getView().setVisible(true, new String[]{"nckd_flex_payer_rate"});
  76. this.getView().setVisible(true, new String[]{"nckd_payer_agreeaamount"});
  77. this.getView().setVisible(true, new String[]{"nckd_flex_payee_rate"});
  78. this.getView().setVisible(true, new String[]{"nckd_payee_agreeaamount"});
  79. }else{
  80. this.getView().setVisible(false, new String[]{"nckd_flex_payer_rate"});
  81. this.getView().setVisible(false, new String[]{"nckd_payer_agreeaamount"});
  82. this.getView().setVisible(false, new String[]{"nckd_flex_payee_rate"});
  83. this.getView().setVisible(false, new String[]{"nckd_payee_agreeaamount"});
  84. }
  85. }
  86. private boolean getBillTypeSyn(){
  87. DynamicObject billtype = this.getDynamicObject("billtype");
  88. if (billtype != null && BillTypeConstants.PAYBILL_SYN.equals(billtype.getPkValue())) {
  89. return true;
  90. }
  91. return false;
  92. }
  93. private void setPayerPayeeInfoLb(){
  94. if (getBillTypeSyn()) {
  95. if(this.getBigDecimal("nckd_payerrate")!=null) {
  96. BigDecimal rate1 = this.getBigDecimal("nckd_payerrate").setScale(2,BigDecimal.ROUND_HALF_UP);
  97. ((Label) this.getControl("nckd_payerbanknamev")).setText(rate1.toString());
  98. }
  99. if(this.getBigDecimal("nckd_payeragreeamount")!=null) {
  100. BigDecimal amount1 = this.getBigDecimal("nckd_payeragreeamount").setScale(2, BigDecimal.ROUND_HALF_UP);
  101. ((Label) this.getControl("nckd_payerbanknamev1")).setText(amount1.toString());
  102. }
  103. if(this.getBigDecimal("nckd_payeerate")!=null) {
  104. BigDecimal rate2 = this.getBigDecimal("nckd_payeerate").setScale(2, BigDecimal.ROUND_HALF_UP);
  105. ((Label) this.getControl("nckd_payeebanknumv")).setText(rate2.toString());
  106. }
  107. if(this.getBigDecimal("nckd_payeeagreeamount")!=null) {
  108. BigDecimal amount2 = this.getBigDecimal("nckd_payeeagreeamount").setScale(2, BigDecimal.ROUND_HALF_UP);
  109. ((Label) this.getControl("nckd_payeebanknumv1")).setText(amount2.toString());
  110. }
  111. }
  112. }
  113. /**
  114. * 单据选择
  115. * @param isPayer
  116. * @param bankId
  117. */
  118. private void getDepositAgreeInfo(boolean isPayer, Long bankId){
  119. ///先清除原有值
  120. Object value = null;
  121. if(isPayer) {
  122. this.setValue("nckd_payerrate", value);
  123. this.setValue("nckd_payeragreeamount", value);
  124. ((Label) this.getControl("nckd_payerbanknamev")).setText("");
  125. ((Label) this.getControl("nckd_payerbanknamev1")).setText("");
  126. }else{
  127. this.setValue("nckd_payeerate", value);
  128. this.setValue("nckd_payeeagreeamount", value);
  129. ((Label) this.getControl("nckd_payeebanknumv")).setText("");
  130. ((Label) this.getControl("nckd_payeebanknumv1")).setText("");
  131. }
  132. if(bankId == null) {
  133. return;
  134. }
  135. QFilter filterAgreement1 = new QFilter("bankacct", QCP.equals, bankId);
  136. QFilter filterAgreement2 = new QFilter("status", QCP.equals, "A");
  137. QFilter filterAgreement3 = new QFilter("billstatus", QCP.equals, "C");
  138. QFilter[] filtersAgreeement = new QFilter[]{filterAgreement1.and(filterAgreement2).and(filterAgreement3)};
  139. DynamicObject[] agreementBillEntities = BusinessDataServiceHelper.load(AgreementDepositEntityName, "id,billno", filtersAgreeement);
  140. for (DynamicObject dataEntity : agreementBillEntities) {
  141. DynamicObject bankBillEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), AgreementDepositEntityName);
  142. if(isPayer) {
  143. this.setValue("nckd_payerrate", bankBillEntity.getBigDecimal("rate"));
  144. this.setValue("nckd_payeragreeamount", bankBillEntity.getBigDecimal("amount"));
  145. if(this.getBigDecimal("nckd_payerrate")!=null) {
  146. BigDecimal rate1 = this.getBigDecimal("nckd_payerrate").setScale(2,BigDecimal.ROUND_HALF_UP);
  147. ((Label) this.getControl("nckd_payerbanknamev")).setText(rate1.toString());
  148. }
  149. if(this.getBigDecimal("nckd_payeragreeamount")!=null) {
  150. BigDecimal amount1 = this.getBigDecimal("nckd_payeragreeamount").setScale(2, BigDecimal.ROUND_HALF_UP);
  151. ((Label) this.getControl("nckd_payerbanknamev1")).setText(amount1.toString());
  152. }
  153. }else{
  154. this.setValue("nckd_payeerate", bankBillEntity.getBigDecimal("rate"));
  155. this.setValue("nckd_payeeagreeamount", bankBillEntity.getBigDecimal("amount"));
  156. if(this.getBigDecimal("nckd_payeerate")!=null) {
  157. BigDecimal rate2 = this.getBigDecimal("nckd_payeerate").setScale(2, BigDecimal.ROUND_HALF_UP);
  158. ((Label) this.getControl("nckd_payeebanknumv")).setText(rate2.toString());
  159. }
  160. if(this.getBigDecimal("nckd_payeeagreeamount")!=null) {
  161. BigDecimal amount2 = this.getBigDecimal("nckd_payeeagreeamount").setScale(2, BigDecimal.ROUND_HALF_UP);
  162. ((Label) this.getControl("nckd_payeebanknumv1")).setText(amount2.toString());
  163. }
  164. }
  165. }
  166. }
  167. public void propertyChanged(PropertyChangedArgs e) {
  168. super.propertyChanged(e);
  169. String key = e.getProperty().getName();
  170. ChangeData[] changeData = e.getChangeSet();
  171. Object newValue = changeData[0].getNewValue();
  172. Object oldValue = changeData[0].getOldValue();
  173. if (newValue != oldValue) {
  174. switch (key) {
  175. //收款银行
  176. case "payeebank":
  177. if(newValue == null){
  178. this.getModel().setValue("nckd_payeiscapitalpool", false);
  179. } else {
  180. DynamicObject bebank = (DynamicObject) newValue;
  181. QFilter qFilter = new QFilter("bebank", QCP.equals, bebank.getLong("id"));
  182. DynamicObject bank = BusinessDataServiceHelper.loadSingle("bd_finorginfo", qFilter.toArray());
  183. if(bank != null && bank.getDynamicObject("bank_cate") != null){
  184. DynamicObject bankCate = bank.getDynamicObject("bank_cate");
  185. bankCate = BusinessDataServiceHelper.loadSingle(bankCate.getPkValue(), "bd_bankcgsetting");
  186. this.getModel().setValue("nckd_payeiscapitalpool", bankCate.getBoolean("nckd_iscapitalpoolbank"));
  187. }
  188. }
  189. break;
  190. //银行账号
  191. case "payeracctbank":
  192. if (getBillTypeSyn()) {
  193. DynamicObject payerbank = this.getDynamicObject("payeracctbank");
  194. Long payeebankId = payerbank == null ? null : (Long)payerbank.getPkValue();
  195. getDepositAgreeInfo(true, payeebankId);
  196. }
  197. break;
  198. //收款账户ID
  199. case "payeeacctbank":
  200. if (getBillTypeSyn()) {
  201. Long payeebankId = this.getValue("payeeacctbank") == null ? null : (Long)this.getValue("payeeacctbank");
  202. getDepositAgreeInfo(false,payeebankId);
  203. }
  204. break;
  205. }
  206. }
  207. }
  208. }