YwclF7ListtenerFromPlugin.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. package fi.em.formPlugin;
  2. import kd.bos.bill.AbstractBillPlugIn;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.entity.datamodel.events.ChangeData;
  5. import kd.bos.entity.datamodel.events.PropertyChangedArgs;
  6. import kd.bos.exception.KDBizException;
  7. import kd.bos.form.field.BasedataEdit;
  8. import kd.bos.form.field.events.BeforeF7SelectEvent;
  9. import kd.bos.form.field.events.BeforeF7SelectListener;
  10. import kd.bos.list.ListShowParameter;
  11. import kd.bos.orm.query.QCP;
  12. import kd.bos.orm.query.QFilter;
  13. import kd.bos.servicehelper.BusinessDataServiceHelper;
  14. import kd.sdk.plugin.Plugin;
  15. import org.apache.commons.lang.StringUtils;
  16. import java.math.BigDecimal;
  17. import java.util.*;
  18. public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
  19. private final static String nckd_orgv="nckd_orgv";//收款资金组织
  20. private final static String nckd_skzh="nckd_skzh";//收款账户
  21. private final static String nckd_orgvs="nckd_orgvs";//付款资金组织
  22. private final static String nckd_skzhs="nckd_skzhs";//付款账户
  23. private final static String nckd_payeraccbanknum="nckd_payeraccbanknum";//调拨付款账户
  24. private final static String nckd_payeeaccbanknum="nckd_payeeaccbanknum";//调拨收款账户
  25. private final static String nckd_payeebanknumlb="nckd_payeebanknumlb";//收款信息修改付款账号
  26. private final static String nckd_payeebanknumlbs="nckd_payeebanknumlbs";//付款信息修改收款账号
  27. private final static String nckd_basedatafield="nckd_basedatafield";//资产报废编号
  28. private final static String nckd_basedatafield5="nckd_basedatafield5";//资产编号
  29. private final static String nckd_orgfield4="nckd_orgfield4";//付款信息修改收款账号111
  30. private final static String nckd_basedatafield16="nckd_basedatafield16";//财务事物卡片
  31. private final static String nckd_basedatafield19="nckd_basedatafield19";//被拆分资产
  32. private final static String nckd_orgfield6="nckd_orgfield6";//被拆分资产使用部门
  33. private final static String nckd_basedatafield14="nckd_basedatafield14";//转出资产明细
  34. private final static String nckd_basedatafield13="nckd_basedatafield13";//转入资产明细
  35. private final static String nckd_basedatafield18="nckd_basedatafield18";//资产盘点
  36. private final static String nckd_basedatafield21="nckd_basedatafield21";//资产变更明细
  37. private final static String nckd_orgfield8="nckd_orgfield8";//资产变更明细使用后部门
  38. @Override
  39. public void registerListener(EventObject e) {
  40. super.registerListener(e);
  41. // 侦听基础资料字段的事件
  42. BasedataEdit fieldEdit1 = this.getView().getControl(nckd_skzh);
  43. fieldEdit1.addBeforeF7SelectListener(this);
  44. BasedataEdit fieldEdit2 = this.getView().getControl(nckd_skzhs);
  45. fieldEdit2.addBeforeF7SelectListener(this);
  46. BasedataEdit fieldEdit3 = this.getView().getControl(nckd_payeraccbanknum);
  47. fieldEdit3.addBeforeF7SelectListener(this);
  48. BasedataEdit fieldEdit4 = this.getView().getControl(nckd_payeeaccbanknum);
  49. fieldEdit4.addBeforeF7SelectListener(this);
  50. BasedataEdit fieldEdit5 = this.getView().getControl(nckd_payeebanknumlb);
  51. fieldEdit5.addBeforeF7SelectListener(this);
  52. BasedataEdit fieldEdit6 = this.getView().getControl(nckd_payeebanknumlbs);
  53. fieldEdit6.addBeforeF7SelectListener(this);
  54. BasedataEdit fieldEdit7 = this.getView().getControl(nckd_basedatafield);
  55. fieldEdit7.addBeforeF7SelectListener(this);
  56. BasedataEdit fieldEdit8 = this.getView().getControl(nckd_basedatafield5);
  57. fieldEdit8.addBeforeF7SelectListener(this);
  58. BasedataEdit fieldEdit9 = this.getView().getControl(nckd_orgfield4);
  59. fieldEdit9.addBeforeF7SelectListener(this);
  60. BasedataEdit fieldEdit10 = this.getView().getControl(nckd_basedatafield16);
  61. fieldEdit10.addBeforeF7SelectListener(this);
  62. BasedataEdit fieldEdit11 = this.getView().getControl(nckd_basedatafield19);
  63. fieldEdit11.addBeforeF7SelectListener(this);
  64. BasedataEdit fieldEdit12 = this.getView().getControl(nckd_orgfield6);
  65. fieldEdit12.addBeforeF7SelectListener(this);
  66. BasedataEdit fieldEdit13 = this.getView().getControl(nckd_basedatafield14);
  67. fieldEdit13.addBeforeF7SelectListener(this);
  68. BasedataEdit fieldEdit14 = this.getView().getControl(nckd_basedatafield13);
  69. fieldEdit14.addBeforeF7SelectListener(this);
  70. BasedataEdit fieldEdit15 = this.getView().getControl(nckd_basedatafield18);
  71. fieldEdit15.addBeforeF7SelectListener(this);
  72. BasedataEdit fieldEdit16 = this.getView().getControl(nckd_basedatafield21);
  73. fieldEdit16.addBeforeF7SelectListener(this);
  74. BasedataEdit fieldEdit17 = this.getView().getControl(nckd_orgfield8);
  75. fieldEdit17.addBeforeF7SelectListener(this);
  76. }
  77. @Override
  78. public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
  79. String fieldKey = beforeF7SelectEvent.getProperty().getName();
  80. int row = beforeF7SelectEvent.getRow();
  81. if (StringUtils.equals(fieldKey, nckd_skzh)){
  82. this.getQFilter(beforeF7SelectEvent,nckd_skzh);
  83. }
  84. if (StringUtils.equals(fieldKey, nckd_skzhs)){
  85. this.getQFilter(beforeF7SelectEvent,nckd_skzhs);
  86. }
  87. if (StringUtils.equals(fieldKey, nckd_payeraccbanknum)){
  88. this.getQFilters(beforeF7SelectEvent,nckd_payeraccbanknum);
  89. }
  90. if (StringUtils.equals(fieldKey, nckd_payeeaccbanknum)){
  91. this.getQFilters(beforeF7SelectEvent,nckd_payeeaccbanknum);
  92. }
  93. if (StringUtils.equals(fieldKey, nckd_basedatafield)){
  94. this.getQFiltersbf(beforeF7SelectEvent,nckd_basedatafield);
  95. }
  96. if (StringUtils.equals(fieldKey, nckd_basedatafield5)){
  97. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield5);
  98. }
  99. if (StringUtils.equals(fieldKey, nckd_orgfield4)){
  100. this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield4);
  101. }
  102. if (StringUtils.equals(fieldKey, nckd_basedatafield16)){
  103. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield16);
  104. }
  105. if (StringUtils.equals(fieldKey, nckd_basedatafield19)){
  106. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield19);
  107. }
  108. if (StringUtils.equals(fieldKey, nckd_orgfield6)){
  109. this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield6);
  110. }
  111. if (StringUtils.equals(fieldKey, nckd_basedatafield14)){
  112. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield14);
  113. }
  114. if (StringUtils.equals(fieldKey, nckd_basedatafield13)){
  115. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield13);
  116. }
  117. if (StringUtils.equals(fieldKey, nckd_basedatafield18)){
  118. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield18);
  119. }
  120. if (StringUtils.equals(fieldKey, nckd_basedatafield21)){
  121. this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield21);
  122. }
  123. if (StringUtils.equals(fieldKey, nckd_orgfield8)){
  124. this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield8);
  125. }
  126. }
  127. private void getQFilter(BeforeF7SelectEvent arg0, String type) {
  128. DynamicObject data = (DynamicObject)this.getModel().getValue(nckd_orgv) ;
  129. if(type.equals(nckd_skzh)){
  130. DynamicObject skdata = (DynamicObject)this.getModel().getValue(nckd_orgv) ;
  131. if(skdata ==null){
  132. throw new KDBizException("收款信息资金组织为空!");
  133. }
  134. long orgid = skdata.getLong("id");
  135. QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid);
  136. data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter});
  137. } else if (type.equals(nckd_skzhs)) {
  138. DynamicObject fkdata = (DynamicObject)this.getModel().getValue(nckd_orgvs) ;
  139. if(fkdata ==null){
  140. throw new KDBizException("付款信息资金组织为空!");
  141. }
  142. long orgid = fkdata.getLong("id");
  143. QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid);
  144. data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter});
  145. }
  146. QFilter filter;
  147. //给基础资料添加过滤
  148. filter = new QFilter("acctstatus", QCP.equals, "normal");
  149. filter.and("company.id", QCP.equals,data.getLong("id"));
  150. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  151. showParameter.getListFilterParameter().setFilter(filter);
  152. }
  153. private void getQFilters(BeforeF7SelectEvent arg0, String type) {
  154. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_costcompany") ;
  155. if(type.equals(nckd_payeraccbanknum)){
  156. DynamicObject skdata = (DynamicObject)this.getModel().getValue("nckd_payorg") ;
  157. if(skdata ==null){
  158. throw new KDBizException("调拨明细付款组织为空!");
  159. }
  160. long orgid = skdata.getLong("id");
  161. QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid);
  162. data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter});
  163. } else if (type.equals(nckd_payeeaccbanknum)) {
  164. DynamicObject fkdata = (DynamicObject)this.getModel().getValue("nckd_payee") ;
  165. if(fkdata ==null){
  166. throw new KDBizException("调拨明细收款组织为空!");
  167. }
  168. long orgid = fkdata.getLong("id");
  169. QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid);
  170. data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter});
  171. }
  172. QFilter filter;
  173. //给基础资料添加过滤
  174. filter = new QFilter("acctstatus", QCP.equals, "normal");
  175. filter.and("company.id", QCP.equals,data.getLong("id"));
  176. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  177. showParameter.getListFilterParameter().setFilter(filter);
  178. }
  179. private void getQFiltersfk(BeforeF7SelectEvent arg0, String type) {
  180. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_costcompany") ;
  181. if(type.equals(nckd_payeebanknumlb)){
  182. DynamicObject skdata = (DynamicObject)this.getModel().getValue("nckd_payeenamev") ;
  183. if(skdata ==null){
  184. throw new KDBizException("收款信息付款人为空!");
  185. }
  186. long orgid = skdata.getLong("id");
  187. QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid);
  188. data= BusinessDataServiceHelper.loadSingle("bd_supplier","id",new QFilter[] {nckd_skzjFilter});
  189. } else if (type.equals(nckd_payeebanknumlbs)) {
  190. DynamicObject fkdata = (DynamicObject)this.getModel().getValue("nckd_payeenamevs") ;
  191. if(fkdata ==null){
  192. throw new KDBizException("付款信息付款人为空!");
  193. }
  194. long orgid = fkdata.getLong("id");
  195. QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid);
  196. data= BusinessDataServiceHelper.loadSingle("bd_supplier","id",new QFilter[] {nckd_skzjFilter});
  197. }
  198. QFilter filter;
  199. //给基础资料添加过滤
  200. filter = new QFilter("nckd_id", QCP.equals, data.getLong("id"));
  201. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  202. showParameter.getListFilterParameter().setFilter(filter);
  203. }
  204. private void getQFiltersbf(BeforeF7SelectEvent arg0, String type) {
  205. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ;
  206. if(data ==null){
  207. throw new KDBizException("核算组织为空!");
  208. }
  209. String number = data.getString("number");
  210. QFilter filter;
  211. //给基础资料添加过滤
  212. filter = new QFilter("assetunit.number", QCP.equals, number);
  213. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  214. showParameter.getListFilterParameter().setFilter(filter);
  215. }
  216. private void getQFilterdczc(BeforeF7SelectEvent arg0, String type) {
  217. String nckdDetailtype = this.getModel().getValue("nckd_detailtype").toString();
  218. if("E".equals(nckdDetailtype)) {
  219. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield1") ;
  220. if(data ==null){
  221. throw new KDBizException("调出组织为空!");
  222. }
  223. String number = data.getString("number");
  224. QFilter filter;
  225. //给基础资料添加过滤
  226. filter = new QFilter("assetunit.number", QCP.equals, number);
  227. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  228. showParameter.getListFilterParameter().setFilter(filter);
  229. }else if ("N".equals(nckdDetailtype)) {
  230. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
  231. if(data ==null){
  232. throw new KDBizException("核算组织为空!");
  233. }
  234. String number = data.getString("number");
  235. QFilter filter;
  236. //给基础资料添加过滤
  237. filter = new QFilter("org.number", QCP.equals, number);
  238. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  239. showParameter.getListFilterParameter().setFilter(filter);
  240. }else if ("P".equals(nckdDetailtype)) {
  241. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
  242. if(data ==null){
  243. throw new KDBizException("核算组织为空!");
  244. }
  245. String number = data.getString("number");
  246. QFilter filter;
  247. //给基础资料添加过滤
  248. filter = new QFilter("org.number", QCP.equals, number);
  249. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  250. showParameter.getListFilterParameter().setFilter(filter);
  251. }else if ("T".equals(nckdDetailtype)) {
  252. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
  253. if(data ==null){
  254. throw new KDBizException("核算组织为空!");
  255. }
  256. String number = data.getString("number");
  257. QFilter filter;
  258. //给基础资料添加过滤
  259. filter = new QFilter("org.number", QCP.equals, number);
  260. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  261. showParameter.getListFilterParameter().setFilter(filter);
  262. }else if ("S".equals(nckdDetailtype)) {
  263. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
  264. if(data ==null){
  265. throw new KDBizException("核算组织为空!");
  266. }
  267. String number = data.getString("number");
  268. QFilter filter;
  269. //给基础资料添加过滤
  270. filter = new QFilter("org.number", QCP.equals, number);
  271. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  272. showParameter.getListFilterParameter().setFilter(filter);
  273. }else if ("Q".equals(nckdDetailtype)) {
  274. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
  275. if(data ==null){
  276. throw new KDBizException("核算组织为空!");
  277. }
  278. String number = data.getString("number");
  279. QFilter filter;
  280. //给基础资料添加过滤
  281. filter = new QFilter("org.number", QCP.equals, number);
  282. ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
  283. showParameter.getListFilterParameter().setFilter(filter);
  284. }else if ("N".equals(nckdDetailtype)) {
  285. }
  286. }
  287. private void getQFilterdrzc(BeforeF7SelectEvent arg0, String type) {
  288. String nckdDetailtype = this.getModel().getValue("nckd_detailtype").toString();
  289. if("E".equals(nckdDetailtype)){
  290. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield2") ;
  291. if(data ==null){
  292. throw new KDBizException("调入组织为空!");
  293. }
  294. long id = data.getLong("id");
  295. QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
  296. Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
  297. HashSet<Long> objects = new HashSet<>();
  298. for (Object idkey:nckd_cas_arbilMap.keySet()) {
  299. //当前单头
  300. DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
  301. Long id1 = dynamicObject.getLong("toorg.id");
  302. objects.add(id1);
  303. }
  304. QFilter filter = new QFilter("id",QCP.in,objects);
  305. //给基础资料添加过滤
  306. ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
  307. showParameter.getListFilterParameter().setFilter(filter);
  308. }else if ("N".equals(nckdDetailtype)) {
  309. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ;
  310. if(data ==null){
  311. throw new KDBizException("核算组织为空!");
  312. }
  313. long id = data.getLong("id");
  314. QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
  315. Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
  316. HashSet<Long> objects = new HashSet<>();
  317. for (Object idkey:nckd_cas_arbilMap.keySet()) {
  318. //当前单头
  319. DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
  320. Long id1 = dynamicObject.getLong("toorg.id");
  321. objects.add(id1);
  322. }
  323. QFilter filter = new QFilter("id",QCP.in,objects);
  324. //给基础资料添加过滤
  325. ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
  326. showParameter.getListFilterParameter().setFilter(filter);
  327. }else if ("T".equals(nckdDetailtype)) {
  328. DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ;
  329. if(data ==null){
  330. throw new KDBizException("核算组织为空!");
  331. }
  332. long id = data.getLong("id");
  333. QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
  334. Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
  335. HashSet<Long> objects = new HashSet<>();
  336. for (Object idkey:nckd_cas_arbilMap.keySet()) {
  337. //当前单头
  338. DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
  339. Long id1 = dynamicObject.getLong("toorg.id");
  340. objects.add(id1);
  341. }
  342. QFilter filter = new QFilter("id",QCP.in,objects);
  343. //给基础资料添加过滤
  344. ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
  345. showParameter.getListFilterParameter().setFilter(filter);
  346. }
  347. }
  348. }