BusinessProcessingEditPlugin.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. package fi.em.formPlugin;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import kd.bos.dataentity.entity.DynamicObject;
  5. import kd.bos.dataentity.entity.DynamicObjectCollection;
  6. import kd.bos.entity.datamodel.events.ChangeData;
  7. import kd.bos.entity.datamodel.events.PropertyChangedArgs;
  8. import kd.bos.exception.KDBizException;
  9. import kd.bos.form.CloseCallBack;
  10. import kd.bos.form.FormShowParameter;
  11. import kd.bos.form.ShowType;
  12. import kd.bos.form.events.AfterDoOperationEventArgs;
  13. import kd.bos.form.events.ClosedCallBackEvent;
  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.sdk.plugin.Plugin;
  19. import org.apache.commons.lang3.StringUtils;
  20. import java.math.BigDecimal;
  21. import java.util.Date;
  22. import java.util.HashMap;
  23. public class BusinessProcessingEditPlugin extends AbstractListPlugin implements Plugin {
  24. public static String btn_cysgzmx = "cysgzmx"; //冲应收挂账
  25. public static String btn_cyfgzmx = "cyfgzmx"; //冲应付挂账
  26. public static String btn_pzht = "pzht"; //凭租合同
  27. public static String btn_skskzh = "skskzh"; //收款供应商11
  28. public static String btn_fkfkzh = "fkfkzh"; //付款供应商
  29. public static String nckd_agentparameterf7 = "nckd_ywclskf";//动态列表
  30. private static String bos_org = "bos_org"; //组织金额标识
  31. @Override
  32. public void afterDoOperation(AfterDoOperationEventArgs e) {
  33. String operateKey = e.getOperateKey();
  34. if (btn_cysgzmx.equals(e.getOperateKey())) {
  35. Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人
  36. Object nckd_orgv = this.getModel().getValue("nckd_orgv");//获取当前单据付款人
  37. DynamicObject dynamicObject = (DynamicObject) value;
  38. DynamicObject orgv = (DynamicObject) nckd_orgv;
  39. if (dynamicObject == null) {
  40. throw new KDBizException("收款信息付款人为空!");
  41. }
  42. if (orgv == null) {
  43. throw new KDBizException("收款信息收款人为空!");
  44. }
  45. String payeenamev = dynamicObject.getString("name");//当前单据付款供应商
  46. String orgnumber = orgv.getString("number");
  47. nckd_agentparameterf7 = "nckd_cysgzmxf7";
  48. showParameter(nckd_agentparameterf7, btn_cysgzmx, payeenamev, btn_cysgzmx, orgnumber);//调用弹出页面
  49. } else if (btn_cyfgzmx.equals(e.getOperateKey())) {
  50. Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前单据付款人
  51. Object nckd_orgvs = this.getModel().getValue("nckd_orgvs");//获取当前单据收款人
  52. DynamicObject dynamicObject = (DynamicObject) value;
  53. DynamicObject orgvs = (DynamicObject) nckd_orgvs;
  54. if (dynamicObject == null) {
  55. throw new KDBizException("付款信息收款人为空!");
  56. }
  57. if (orgvs == null) {
  58. throw new KDBizException("付款信息付款人为空!");
  59. }
  60. String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码
  61. String orgnumber = orgvs.getString("number");
  62. nckd_agentparameterf7 = "nckd_cyfgzmxf7";
  63. showParameter(nckd_agentparameterf7, btn_cyfgzmx, payeenamev, btn_cyfgzmx, orgnumber);//调用弹出页面
  64. } else if (btn_pzht.equals(e.getOperateKey())) {
  65. Object value = this.getModel().getValue("nckd_orgv");//获取当前单据核算组织
  66. Object nckd_payeenamevs = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人
  67. DynamicObject dynamicObject = (DynamicObject) value;
  68. DynamicObject payeenamevs = (DynamicObject) nckd_payeenamevs;
  69. if (dynamicObject == null) {
  70. throw new KDBizException("收款信息收款人为空!");
  71. }
  72. if (payeenamevs == null) {
  73. throw new KDBizException("收款信息付款人为空!");
  74. }
  75. String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码
  76. String nckdpayeenamevs = payeenamevs.getString("number");//当前单据付款供应商编码
  77. nckd_agentparameterf7 = "nckd_pzhtf7";
  78. showParameter(nckd_agentparameterf7, btn_pzht, nckdpayeenamevs, btn_pzht, payeenamev);//调用弹出页面
  79. } else if (btn_skskzh.equals(e.getOperateKey())) {
  80. Object value = this.getModel().getValue("nckd_payeenamev");//获取当前收款信息付款人
  81. DynamicObject dynamicObject = (DynamicObject) value;
  82. if (dynamicObject == null) {
  83. throw new KDBizException("收款信息付款人为空!");
  84. }
  85. String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码
  86. nckd_agentparameterf7 = "nckd_supplierbank";
  87. showParameter(nckd_agentparameterf7, btn_skskzh, payeenamev, btn_skskzh, "");//调用弹出页面
  88. } else if (btn_fkfkzh.equals(e.getOperateKey())) {
  89. Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前付款信息付款人
  90. DynamicObject dynamicObject = (DynamicObject) value;
  91. if (dynamicObject == null) {
  92. throw new KDBizException("付款信息收款人为空!");
  93. }
  94. String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码
  95. nckd_agentparameterf7 = "nckd_supplierbank";
  96. showParameter(nckd_agentparameterf7, btn_fkfkzh, payeenamev, btn_fkfkzh, "");//调用弹出页面
  97. }
  98. }
  99. public void showParameter(String formId, String actionId, String payeenamev, String controls, String orgnumber) {
  100. //创建弹出页面对象,FormShowParameter表示弹出页面为动态表单
  101. FormShowParameter ShowParameter = new FormShowParameter();
  102. //ListShowParameter ShowParameter = new ListShowParameter();
  103. ShowParameter.setCustomParam("payeenamev", payeenamev);
  104. ShowParameter.setCustomParam("controls", controls);
  105. ShowParameter.setCustomParam("billtype", formId);
  106. ShowParameter.setCustomParam("orgnumber", orgnumber);
  107. //设置弹出页面的编码
  108. ShowParameter.setFormId(formId);
  109. // ShowParameter.setCaption();
  110. //设置弹出页面标题
  111. if ("cysgzmx".equals(actionId)) {
  112. ShowParameter.setCaption("冲应收挂账");
  113. } else if ("cyfgzmx".equals(actionId)) {
  114. ShowParameter.setCaption("冲应付挂账");
  115. }
  116. //设置页面关闭回调方法
  117. //CloseCallBack参数:回调插件,回调标识 btnok
  118. ShowParameter.setCloseCallBack(new CloseCallBack(this, actionId));
  119. //设置弹出页面打开方式,支持模态,新标签等
  120. ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
  121. //弹出页面对象赋值给父页面
  122. this.getView().showForm(ShowParameter);
  123. }
  124. @Override
  125. public void closedCallBack(ClosedCallBackEvent e) {
  126. super.closedCallBack(e);
  127. if (null != e.getReturnData()) {
  128. String billtype = "";
  129. String controls = "";
  130. //父页面返回参数
  131. HashMap<String, String> returnData = (HashMap<String, String>) e.getReturnData();
  132. String reJaStr = returnData.get("reJaStr");
  133. //判断空
  134. if (StringUtils.isNotBlank(reJaStr)) {
  135. JSONArray reJa = JSONArray.parseArray(reJaStr);//返回信息数组
  136. JSONObject reJos = reJa.getJSONObject(0);
  137. billtype = reJos.getString("billtype");
  138. controls = reJos.getString("controls");
  139. //删除分录信息
  140. if (btn_cysgzmx.equals(controls)) {
  141. this.getModel().deleteEntryData("nckd_entryentity1");
  142. } else if (btn_cyfgzmx.equals(controls)) {
  143. this.getModel().deleteEntryData("nckd_entryentity2");
  144. } else if (btn_pzht.equals(controls)) {
  145. this.getModel().deleteEntryData("nckd_entryentity3");
  146. }
  147. //循环返回数组插入分录
  148. for (int i = 0; i < reJa.size(); i++) {
  149. //当前循环行
  150. JSONObject reJo = reJa.getJSONObject(i);
  151. billtype = reJo.getString("billtype");
  152. controls = reJo.getString("controls");
  153. if (btn_cysgzmx.equals(controls)) {
  154. String billno = reJo.getString("nckd_cysnumber");
  155. String cysfyxm = reJo.getString("nckd_cysfyxm");
  156. String settleorg = reJo.getString("settleorg");
  157. String expectdate = reJo.getString("expectdate");
  158. QFilter nckd_cysfyxmFilter = new QFilter("number", QCP.equals, cysfyxm);
  159. DynamicObject nckd_cysfyxm = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "id", new QFilter[]{nckd_cysfyxmFilter});
  160. Date bizdate = reJo.getDate("nckd_cysdata");
  161. BigDecimal settleamount = reJo.getBigDecimal("nckd_cysgzbalance");
  162. //新增分录行
  163. int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity1");
  164. //set分录字段
  165. this.getModel().setValue("nckd_cysnumber", billno, rowIndex);
  166. QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, settleorg);
  167. nckd_orgamountFilter.and("enable", QCP.equals, "1");
  168. DynamicObject nckd_org = BusinessDataServiceHelper.loadSingle(bos_org, "id", new QFilter[]{nckd_orgamountFilter});
  169. this.getModel().setValue("nckd_cysorg", nckd_org, rowIndex);
  170. Object nckd_costdept = this.getModel().getValue("nckd_costdept");//获取当前单据付款人
  171. DynamicObject costdept = (DynamicObject) nckd_costdept;
  172. this.getModel().setValue("nckd_cyssection", costdept, rowIndex);
  173. Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人
  174. DynamicObject dynamicObject = (DynamicObject) value;
  175. this.getModel().setValue("nckd_cyswldw", dynamicObject, rowIndex);
  176. this.getModel().setValue("nckd_datefield", expectdate, rowIndex);
  177. this.getModel().setValue("nckd_cysdata", bizdate, rowIndex);
  178. this.getModel().setValue("nckd_cysgzbalance", settleamount, rowIndex);
  179. this.getModel().setValue("nckd_cyscxbalance", settleamount, rowIndex);
  180. if (cysfyxm != null && !cysfyxm.isEmpty()) {
  181. this.getModel().setValue("nckd_cysfyxm", nckd_cysfyxm, rowIndex);
  182. }
  183. String cysgzbalance = this.getModel().getValue("nckd_ysgzjehj").toString();
  184. BigDecimal bigDecimal = new BigDecimal(cysgzbalance);
  185. this.getModel().setValue("nckd_ysgzjehj", bigDecimal.add(settleamount), 0);
  186. } else if (btn_pzht.equals(controls)) {
  187. //核算组织
  188. String pzhtorg = reJo.getString("nckd_pzhtorg");
  189. QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, pzhtorg);
  190. nckd_orgamountFilter.and("enable", QCP.equals, "1");
  191. DynamicObject nckd_pzhtorg = BusinessDataServiceHelper.loadSingle(bos_org, "id", new QFilter[]{nckd_orgamountFilter});
  192. //合同号
  193. String pzhthth = reJo.getString("nckd_pzhthth");
  194. //合同名称
  195. String pzhtname = reJo.getString("nckd_pzhtname");
  196. //承租方
  197. String pzhtczf = reJo.getString("nckd_pzhtczf");
  198. QFilter nckd_pzhtczfFilter = new QFilter("number", QCP.equals, pzhtczf);
  199. DynamicObject nckd_pzhtczf = BusinessDataServiceHelper.loadSingle("bd_supplier", "id", new QFilter[]{nckd_pzhtczfFilter});
  200. //资产名称
  201. String pzhtzcname = reJo.getString("nckd_pzhtzcname");
  202. //合同签订日期
  203. Date bizdate = reJo.getDate("nckd_ppzhtdata");
  204. //收款余额
  205. BigDecimal pzhtskbalance = reJo.getBigDecimal("nckd_pzhtskbalance");
  206. //冲销余额
  207. BigDecimal pzhtcxbalance = reJo.getBigDecimal("nckd_pzhtcxbalance");
  208. //新增分录行
  209. int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity3");
  210. //set分录字段
  211. this.getModel().setValue("nckd_pzhtorg", nckd_pzhtorg, rowIndex);
  212. this.getModel().setValue("nckd_pzhthth", pzhthth, rowIndex);
  213. this.getModel().setValue("nckd_pzhtname", pzhtname, rowIndex);
  214. this.getModel().setValue("nckd_pzhtczf", nckd_pzhtczf, rowIndex);
  215. this.getModel().setValue("nckd_pzhtzcname", pzhtzcname, rowIndex);
  216. this.getModel().setValue("nckd_ppzhtdata", bizdate, rowIndex);
  217. this.getModel().setValue("nckd_pzhtskbalance", pzhtskbalance, rowIndex);
  218. this.getModel().setValue("nckd_pzhtcxbalance", pzhtcxbalance, rowIndex);
  219. } else if (btn_cyfgzmx.equals(controls)) {
  220. String billno = reJo.getString("nckd_cyfnumber");
  221. Date bizdate = reJo.getDate("nckd_cyfdata");
  222. String nckdCyffyxm = reJo.getString("nckd_cyffyxm");
  223. String settleorg = reJo.getString("settleorg");
  224. String duedate = reJo.getString("duedate");
  225. Long id = reJo.getLong("id");
  226. QFilter nckd_cysfyxmFilter = new QFilter("number", QCP.equals, nckdCyffyxm);
  227. DynamicObject nckd_cyffyxm = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "id", new QFilter[]{nckd_cysfyxmFilter});
  228. BigDecimal settleamount = reJo.getBigDecimal("nckd_cyfgzbalance");
  229. //新增分录行
  230. int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity2");
  231. //set分录字段
  232. this.getModel().setValue("nckd_cyfnumber", billno, rowIndex);
  233. QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, settleorg);
  234. nckd_orgamountFilter.and("enable", QCP.equals, "1");
  235. DynamicObject nckd_org = BusinessDataServiceHelper.loadSingle(bos_org, "id", new QFilter[]{nckd_orgamountFilter});
  236. this.getModel().setValue("nckd_cyforg", nckd_org, rowIndex);
  237. Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前单据付款人
  238. DynamicObject dynamicObjects = (DynamicObject) value;
  239. this.getModel().setValue("nckd_cyfwldw", dynamicObjects, rowIndex);
  240. this.getModel().setValue("nckd_cyfdata", bizdate, rowIndex);
  241. this.getModel().setValue("nckd_bigintfield", id, rowIndex);
  242. this.getModel().setValue("nckd_datefield1", duedate, rowIndex);
  243. this.getModel().setValue("nckd_cyfgzbalance", settleamount, rowIndex);
  244. this.getModel().setValue("nckd_cyfcxbalance", settleamount, rowIndex);
  245. if (nckdCyffyxm != null && !nckdCyffyxm.isEmpty()) {
  246. this.getModel().setValue("nckd_cyffyxm", nckd_cyffyxm, rowIndex);
  247. }
  248. String cysgzbalance = this.getModel().getValue("nckd_yfgzjehj").toString();
  249. BigDecimal bigDecimal = new BigDecimal(cysgzbalance);
  250. this.getModel().setValue("nckd_yfgzjehj", bigDecimal.add(settleamount), 0);
  251. } else if (btn_skskzh.equals(controls)) {
  252. String nckd_bankaccount = reJo.getString("nckd_bankaccount");
  253. String nckd_accountname = reJo.getString("nckd_accountname");
  254. this.getModel().setValue("nckd_payeebanknumlb", nckd_bankaccount);
  255. this.getModel().setValue("nckd_payeebanknamelb", nckd_accountname);
  256. } else if (btn_fkfkzh.equals(controls)) {
  257. String nckd_bankaccount = reJo.getString("nckd_bankaccount");
  258. String nckd_accountname = reJo.getString("nckd_accountname");
  259. this.getModel().setValue("nckd_payeebanknumlbs", nckd_bankaccount);
  260. this.getModel().setValue("nckd_payeebanknamelbs", nckd_accountname);
  261. this.getView().updateView("nckd_payeebanknumlbs");
  262. this.getView().updateView("nckd_payeebanknamelbs");
  263. }
  264. }
  265. //刷新分录
  266. this.getView().updateView("nckd_entryentity1");
  267. //刷新分录
  268. this.getView().updateView("nckd_entryentity2");
  269. //刷新分录
  270. this.getView().updateView("nckd_entryentity3");
  271. }
  272. }
  273. }
  274. @Override
  275. public void propertyChanged(PropertyChangedArgs e) {
  276. super.beforePropertyChanged(e);
  277. String name = e.getProperty().getName();//获取字段标识
  278. if ("nckd_payeraccbanknum".equals(name)) {
  279. ChangeData[] changeSet = e.getChangeSet();//获取值
  280. for (ChangeData changeData : changeSet) {
  281. int rowIndex = changeData.getRowIndex();
  282. Object newValue = changeData.getNewValue();
  283. Object oldValue = changeData.getOldValue();
  284. DynamicObject payeenamevs = (DynamicObject) newValue;
  285. DynamicObject bank = payeenamevs.getDynamicObject("bank");
  286. this.getModel().setValue("nckd_payerbank", bank, rowIndex);
  287. }
  288. } else if ("nckd_payeeaccbanknum".equals(name)) {
  289. ChangeData[] changeSet = e.getChangeSet();//获取值
  290. for (ChangeData changeData : changeSet) {
  291. int rowIndex = changeData.getRowIndex();
  292. Object newValue = changeData.getNewValue();
  293. Object oldValue = changeData.getOldValue();
  294. DynamicObject payeenamevs = (DynamicObject) newValue;
  295. DynamicObject bank = payeenamevs.getDynamicObject("bank");
  296. this.getModel().setValue("nckd_payeebank", bank, rowIndex);
  297. }
  298. }else if ("nckd_payeenamev".equals(name)) {
  299. ChangeData[] changeSet = e.getChangeSet();//获取值
  300. for (ChangeData changeData : changeSet) {
  301. int rowIndex = changeData.getRowIndex();
  302. Object newValue = changeData.getNewValue();
  303. Object oldValue = changeData.getOldValue();
  304. DynamicObject payeenamevs = (DynamicObject) newValue;
  305. //构建查询供应商参数
  306. QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, payeenamevs.getString("number"));
  307. DynamicObject[] fa_lease_contract = BusinessDataServiceHelper.load("bd_supplier", "id", new QFilter[]{nckd_orgamountFilter});
  308. for (int c = 0; c < fa_lease_contract.length; c++) {
  309. //当前单头
  310. DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(fa_lease_contract[c].getPkValue(), fa_lease_contract[c].getDynamicObjectType().getName());
  311. for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("entry_bank")) {
  312. String bankaccount = entryentity.getString("bankaccount");
  313. DynamicObject bank = entryentity.getDynamicObject("bank");
  314. boolean nckdIsdefaultBank = entryentity.getBoolean("isdefault_bank");
  315. if(nckdIsdefaultBank){
  316. QFilter banks = new QFilter("nckd_bankaccount", QCP.equals, bankaccount);
  317. DynamicObject nckd_bank = BusinessDataServiceHelper.loadSingle("nckd_supplierbankinfor", "id", new QFilter[]{banks});
  318. this.getModel().setValue("nckd_payeebanknumlb", nckd_bank);
  319. this.getView().updateView("nckd_payeebanknumlb");
  320. }
  321. }
  322. }
  323. }
  324. }else if ("nckd_payeenamevs".equals(name)) {
  325. ChangeData[] changeSet = e.getChangeSet();//获取值
  326. for (ChangeData changeData : changeSet) {
  327. int rowIndex = changeData.getRowIndex();
  328. Object newValue = changeData.getNewValue();
  329. Object oldValue = changeData.getOldValue();
  330. DynamicObject payeenamevs = (DynamicObject) newValue;
  331. //构建查询供应商参数
  332. QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, payeenamevs.getString("number"));
  333. DynamicObject[] fa_lease_contract = BusinessDataServiceHelper.load("bd_supplier", "id", new QFilter[]{nckd_orgamountFilter});
  334. for (int c = 0; c < fa_lease_contract.length; c++) {
  335. //当前单头
  336. DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(fa_lease_contract[c].getPkValue(), fa_lease_contract[c].getDynamicObjectType().getName());
  337. for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("entry_bank")) {
  338. String bankaccount = entryentity.getString("bankaccount");
  339. DynamicObject bank = entryentity.getDynamicObject("bank");
  340. boolean nckdIsdefaultBank = entryentity.getBoolean("isdefault_bank");
  341. if(nckdIsdefaultBank){
  342. QFilter banks = new QFilter("nckd_bankaccount", QCP.equals, bankaccount);
  343. banks.and("nckd_isdefault_bank", QCP.equals, "1");
  344. DynamicObject nckd_bank = BusinessDataServiceHelper.loadSingle("nckd_supplierbankinfor", "id", new QFilter[]{banks});
  345. this.getModel().setValue("nckd_payeebanknumlbs", nckd_bank);
  346. this.getView().updateView("nckd_payeebanknumlbs");
  347. }
  348. }
  349. }
  350. }
  351. }
  352. }
  353. }