TravelCollectionEntryAmtFromPlugin.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. package fi.em.formPlugin;
  2. import kd.bos.dataentity.entity.DynamicObject;
  3. import kd.bos.dataentity.entity.DynamicObjectCollection;
  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.events.AfterDoOperationEventArgs;
  8. import kd.bos.list.plugin.AbstractListPlugin;
  9. import kd.sdk.plugin.Plugin;
  10. import java.math.BigDecimal;
  11. public class TravelCollectionEntryAmtFromPlugin extends AbstractListPlugin implements Plugin {
  12. @Override
  13. public void afterDoOperation(AfterDoOperationEventArgs e) {
  14. String operateKey = e.getOperateKey();
  15. if ("deleteentryyufu".equals(e.getOperateKey())) {
  16. DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
  17. if(nckdClearloanentry.isEmpty()){
  18. String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
  19. BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);//总报销金额
  20. BigDecimal bigDecimal1 = new BigDecimal(0);
  21. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  22. DynamicObject dynamicObject = accountentry.get(0);
  23. if(dynamicObject!=null){
  24. String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
  25. BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);//收款第一行
  26. if(accountentry.size()==1){
  27. bigDecimal=bigDecimal.subtract(bigDecimal1);
  28. this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
  29. }else{
  30. BigDecimal bigDecimal3 = new BigDecimal(0);
  31. for(int i=0;i<accountentry.size();i++){
  32. DynamicObject dynamicObjects = accountentry.get(i);
  33. BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
  34. if(i>0){
  35. bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
  36. }
  37. }
  38. BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
  39. if(con1.compareTo(BigDecimal.ZERO) > 0){
  40. this.getModel().setValue("nckd_orireceiveamount",con1,0);
  41. }else {
  42. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  43. }
  44. }
  45. }
  46. }else {
  47. String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
  48. BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
  49. BigDecimal bigDecimal1 = new BigDecimal(0);
  50. DynamicObjectCollection nckdClearloanentrys = this.getModel().getEntryEntity("nckd_clearloanentry");
  51. for(int i=0;i<nckdClearloanentrys.size();i++){
  52. DynamicObject dynamicObject = nckdClearloanentrys.get(i);
  53. BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
  54. bigDecimal1=bigDecimal1.add(nckdUnexporiusedamount);
  55. }
  56. if(bigDecimal1.compareTo(bigDecimal) == 1){
  57. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  58. DynamicObject dynamicObject = accountentry.get(0);
  59. if(dynamicObject!=null){
  60. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  61. }
  62. } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
  63. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  64. DynamicObject dynamicObject = accountentry.get(0);
  65. if(dynamicObject!=null){
  66. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  67. }
  68. }else {
  69. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  70. DynamicObject dynamicObject = accountentry.get(0);
  71. if(dynamicObject!=null){
  72. String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
  73. BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
  74. if(accountentry.size()==1){
  75. bigDecimal=bigDecimal.subtract(bigDecimal1);
  76. this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
  77. }else{
  78. BigDecimal bigDecimal3 = new BigDecimal(0);
  79. for(int i=0;i<accountentry.size();i++){
  80. DynamicObject dynamicObjects = accountentry.get(i);
  81. BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
  82. if(i>0){
  83. bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
  84. }
  85. }
  86. BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
  87. con1=con1.subtract(bigDecimal1);
  88. if(con1.compareTo(BigDecimal.ZERO) > 0){
  89. this.getModel().setValue("nckd_orireceiveamount",con1,0);
  90. }else {
  91. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  92. }
  93. }
  94. }
  95. }
  96. }
  97. }
  98. }
  99. @Override
  100. public void propertyChanged(PropertyChangedArgs e) {
  101. super.beforePropertyChanged(e);
  102. String name = e.getProperty().getName();//获取字段标识
  103. if ("tripstdshow".equals(name)) {
  104. ChangeData[] changeSet = e.getChangeSet();//获取值
  105. int rs =0;
  106. for (ChangeData changeData : changeSet) {
  107. rs++;
  108. int rowIndex = changeData.getRowIndex();
  109. Object newValue = changeData.getNewValue();
  110. Object oldValue = changeData.getOldValue();
  111. String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
  112. BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
  113. BigDecimal bigDecimal1 = new BigDecimal(0);
  114. DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
  115. for(int i=0;i<nckdClearloanentry.size();i++){
  116. DynamicObject dynamicObject = nckdClearloanentry.get(i);
  117. BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
  118. bigDecimal1=bigDecimal1.add(nckdUnexporiusedamount);
  119. }
  120. if(bigDecimal1.compareTo(bigDecimal) == 1){
  121. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  122. if(accountentry==null){
  123. throw new KDBizException("收款明细分录为空,请维护!");
  124. }
  125. DynamicObject dynamicObject = accountentry.get(0);
  126. if(dynamicObject!=null){
  127. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  128. }
  129. } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
  130. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  131. if(accountentry==null){
  132. throw new KDBizException("收款明细分录为空,请维护!");
  133. }
  134. DynamicObject dynamicObject = accountentry.get(0);
  135. if(dynamicObject!=null){
  136. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  137. }
  138. }else {
  139. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  140. if(accountentry==null){
  141. throw new KDBizException("收款明细分录为空,请维护!");
  142. }
  143. DynamicObject dynamicObject = accountentry.get(0);
  144. if(dynamicObject!=null){
  145. String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
  146. BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
  147. if(accountentry.size()==1){
  148. bigDecimal=bigDecimal.subtract(bigDecimal1);
  149. this.getModel().setValue("nckd_orireceiveamount",bigDecimal,0);
  150. }else{
  151. BigDecimal bigDecimal3 = new BigDecimal(0);
  152. for(int i=0;i<accountentry.size();i++){
  153. DynamicObject dynamicObjects = accountentry.get(i);
  154. BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
  155. if(i>0){
  156. bigDecimal3=bigDecimal3.add(nckdUnexporiusedamount);
  157. }
  158. }
  159. BigDecimal con1=bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
  160. con1=con1.subtract(bigDecimal1);
  161. if(con1.compareTo(BigDecimal.ZERO) > 0){
  162. this.getModel().setValue("nckd_orireceiveamount",con1,0);
  163. }else {
  164. this.getModel().setValue("nckd_orireceiveamount",new BigDecimal(0),0);
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }else if ("nckd_unexporiusedamount".equals(name)) {
  171. ChangeData[] changeSet = e.getChangeSet();//获取值
  172. int rs =0;
  173. for (ChangeData changeData : changeSet) {
  174. rs++;
  175. int rowIndex = changeData.getRowIndex();
  176. Object newValue = changeData.getNewValue();
  177. Object oldValue = changeData.getOldValue();
  178. String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
  179. BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
  180. BigDecimal bigDecimal1 = new BigDecimal(0);
  181. DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
  182. if (nckdClearloanentry.isEmpty()) {
  183. this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
  184. } else {
  185. for (int i = 0; i < nckdClearloanentry.size(); i++) {
  186. DynamicObject dynamicObject = nckdClearloanentry.get(i);
  187. BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
  188. bigDecimal1 = bigDecimal1.add(nckdUnexporiusedamount);
  189. }
  190. if (bigDecimal1.compareTo(bigDecimal) == 1) {
  191. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  192. if (accountentry == null) {
  193. throw new KDBizException("收款明细分录为空,请维护!");
  194. }
  195. DynamicObject dynamicObject = accountentry.get(0);
  196. if (dynamicObject != null) {
  197. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  198. }
  199. } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
  200. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  201. if (accountentry == null) {
  202. throw new KDBizException("收款明细分录为空,请维护!");
  203. }
  204. DynamicObject dynamicObject = accountentry.get(0);
  205. if (dynamicObject != null) {
  206. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  207. }
  208. } else {
  209. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  210. if (accountentry == null) {
  211. throw new KDBizException("收款明细分录为空,请维护!");
  212. }
  213. DynamicObject dynamicObject = accountentry.get(0);
  214. if (dynamicObject != null) {
  215. String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
  216. BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
  217. if (accountentry.size() == 1) {
  218. bigDecimal = bigDecimal.subtract(bigDecimal1);
  219. this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
  220. } else {
  221. BigDecimal bigDecimal3 = new BigDecimal(0);
  222. for (int i = 0; i < accountentry.size(); i++) {
  223. DynamicObject dynamicObjects = accountentry.get(i);
  224. BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
  225. if (i > 0) {
  226. bigDecimal3 = bigDecimal3.add(nckdUnexporiusedamount);
  227. }
  228. }
  229. BigDecimal con1 = bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
  230. con1 = con1.subtract(bigDecimal1);
  231. if (con1.compareTo(BigDecimal.ZERO) > 0) {
  232. this.getModel().setValue("nckd_orireceiveamount", con1, 0);
  233. } else {
  234. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  235. }
  236. }
  237. }
  238. }
  239. }
  240. }
  241. }else if ("orireceiveamount".equals(name)) {
  242. ChangeData[] changeSet = e.getChangeSet();//获取值
  243. int rs = 0;
  244. for (ChangeData changeData : changeSet) {
  245. rs++;
  246. int rowIndex = changeData.getRowIndex();
  247. Object newValue = changeData.getNewValue();
  248. Object oldValue = changeData.getOldValue();
  249. String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
  250. BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
  251. BigDecimal bigDecimal1 = new BigDecimal(0);
  252. DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
  253. if (nckdClearloanentry.isEmpty()) {
  254. this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
  255. } else {
  256. for (int i = 0; i < nckdClearloanentry.size(); i++) {
  257. DynamicObject dynamicObject = nckdClearloanentry.get(i);
  258. BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
  259. bigDecimal1 = bigDecimal1.add(nckdUnexporiusedamount);
  260. }
  261. if (bigDecimal1.compareTo(bigDecimal) == 1) {
  262. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  263. if (accountentry == null) {
  264. throw new KDBizException("收款明细分录为空,请维护!");
  265. }
  266. DynamicObject dynamicObject = accountentry.get(0);
  267. if (dynamicObject != null) {
  268. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  269. }
  270. } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
  271. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  272. if (accountentry == null) {
  273. throw new KDBizException("收款明细分录为空,请维护!");
  274. }
  275. DynamicObject dynamicObject = accountentry.get(0);
  276. if (dynamicObject != null) {
  277. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  278. }
  279. } else {
  280. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  281. if (accountentry == null) {
  282. throw new KDBizException("收款明细分录为空,请维护!");
  283. }
  284. DynamicObject dynamicObject = accountentry.get(0);
  285. if (dynamicObject != null) {
  286. String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
  287. BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
  288. if (accountentry.size() == 1) {
  289. bigDecimal = bigDecimal.subtract(bigDecimal1);
  290. this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
  291. } else {
  292. BigDecimal bigDecimal3 = new BigDecimal(0);
  293. for (int i = 0; i < accountentry.size(); i++) {
  294. DynamicObject dynamicObjects = accountentry.get(i);
  295. BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
  296. if (i > 0) {
  297. bigDecimal3 = bigDecimal3.add(nckdUnexporiusedamount);
  298. }
  299. }
  300. BigDecimal con1 = bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
  301. con1 = con1.subtract(bigDecimal1);
  302. if (con1.compareTo(BigDecimal.ZERO) > 0) {
  303. this.getModel().setValue("nckd_orireceiveamount", con1, 0);
  304. } else {
  305. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  306. }
  307. }
  308. }
  309. }
  310. }
  311. }
  312. } else if ("approveamount".equals(name)) {
  313. ChangeData[] changeSet = e.getChangeSet();//获取值
  314. int rs = 0;
  315. for (ChangeData changeData : changeSet) {
  316. rs++;
  317. int rowIndex = changeData.getRowIndex();
  318. Object newValue = changeData.getNewValue();
  319. Object oldValue = changeData.getOldValue();
  320. String nckdAmountfield4 = this.getModel().getValue("approveamount").toString();
  321. BigDecimal bigDecimal = new BigDecimal(nckdAmountfield4);
  322. BigDecimal bigDecimal1 = new BigDecimal(0);
  323. DynamicObjectCollection nckdClearloanentry = this.getModel().getEntryEntity("nckd_clearloanentry");
  324. if (nckdClearloanentry.isEmpty()) {
  325. this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
  326. } else {
  327. for (int i = 0; i < nckdClearloanentry.size(); i++) {
  328. DynamicObject dynamicObject = nckdClearloanentry.get(i);
  329. BigDecimal nckdUnexporiusedamount = dynamicObject.getBigDecimal("nckd_unexporiusedamount");
  330. bigDecimal1 = bigDecimal1.add(nckdUnexporiusedamount);
  331. }
  332. if (bigDecimal1.compareTo(bigDecimal) == 1) {
  333. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  334. if (accountentry == null) {
  335. throw new KDBizException("收款明细分录为空,请维护!");
  336. }
  337. DynamicObject dynamicObject = accountentry.get(0);
  338. if (dynamicObject != null) {
  339. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  340. }
  341. } else if (bigDecimal1.compareTo(bigDecimal) == 0) {
  342. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  343. if (accountentry == null) {
  344. throw new KDBizException("收款明细分录为空,请维护!");
  345. }
  346. DynamicObject dynamicObject = accountentry.get(0);
  347. if (dynamicObject != null) {
  348. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  349. }
  350. } else {
  351. DynamicObjectCollection accountentry = this.getModel().getEntryEntity("accountentry");
  352. if (accountentry == null) {
  353. throw new KDBizException("收款明细分录为空,请维护!");
  354. }
  355. DynamicObject dynamicObject = accountentry.get(0);
  356. if (dynamicObject != null) {
  357. String orireceiveamount = this.getModel().getValue("nckd_orireceiveamount", 0).toString();
  358. BigDecimal bigDecimal2 = new BigDecimal(orireceiveamount);
  359. if (accountentry.size() == 1) {
  360. bigDecimal = bigDecimal.subtract(bigDecimal1);
  361. this.getModel().setValue("nckd_orireceiveamount", bigDecimal, 0);
  362. } else {
  363. BigDecimal bigDecimal3 = new BigDecimal(0);
  364. for (int i = 0; i < accountentry.size(); i++) {
  365. DynamicObject dynamicObjects = accountentry.get(i);
  366. BigDecimal nckdUnexporiusedamount = dynamicObjects.getBigDecimal("nckd_orireceiveamount");
  367. if (i > 0) {
  368. bigDecimal3 = bigDecimal3.add(nckdUnexporiusedamount);
  369. }
  370. }
  371. BigDecimal con1 = bigDecimal.subtract(bigDecimal3);//收款信息第一行的金额
  372. con1 = con1.subtract(bigDecimal1);
  373. if (con1.compareTo(BigDecimal.ZERO) > 0) {
  374. this.getModel().setValue("nckd_orireceiveamount", con1, 0);
  375. } else {
  376. this.getModel().setValue("nckd_orireceiveamount", new BigDecimal(0), 0);
  377. }
  378. }
  379. }
  380. }
  381. }
  382. }
  383. }
  384. }
  385. }