SalaryDistributeEditPlugin.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package fi.em.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.ConfirmCallBackListener;
  6. import kd.bos.form.ConfirmTypes;
  7. import kd.bos.form.MessageBoxOptions;
  8. import kd.bos.form.MessageBoxResult;
  9. import kd.bos.form.events.BeforeDoOperationEventArgs;
  10. import kd.bos.form.events.MessageBoxClosedEvent;
  11. import kd.bos.form.operate.FormOperate;
  12. import kd.bos.list.plugin.AbstractListPlugin;
  13. import kd.sdk.plugin.Plugin;
  14. import java.util.ArrayList;
  15. import java.util.EventObject;
  16. import java.util.List;
  17. /**
  18. * @author cjz
  19. * @date 2024/8/19 9:01
  20. * @description:薪酬计提单,根据业务类型显示分录
  21. */
  22. public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Plugin {
  23. private static String nckd_entrytype="nckd_entrytype";//业务类型标识
  24. private static String nckd_generalemployees="nckd_generalemployees";//薪酬明细(一般员工)分录标识
  25. private static String nckd_earlyretired="nckd_earlyretired";//薪酬明细(内退)分录标识
  26. private static String nckd_retired="nckd_retired";//薪酬明细(退休)分录标识
  27. private static String nckd_pay="nckd_pay";//人力薪酬分录标识
  28. private static String oldentryNum="oldentryNum";
  29. private static String newentryNum="newentryNum";
  30. public void beforeDoOperation(BeforeDoOperationEventArgs args) {
  31. // super.beforeDoOperation(args);
  32. // FormOperate source = (FormOperate) args.getSource();
  33. // String KEY_PAY = source.getOperateKey();
  34. // //判断是否是绑定操作编码
  35. // if (KEY_PAY.equals("操作编码")){
  36. // // 查询数据判断是否满足条件(校验):这里可以改成自已的逻辑
  37. // DynamicObject status = (DynamicObject) this.getModel().getValue("cqkd_workstatus");
  38. // if (status.getString("name").equals("xxx")){
  39. // // 显示确认消息
  40. // ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(KEY_PAY, this);
  41. // String confirmTip = "您确认要执行xxx操作吗?";
  42. // this.getView().showConfirm(confirmTip, MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
  43. // //确认或取消之前取消后续操作
  44. // args.setCancel(true);
  45. // }else {
  46. // //如果没有通过校验则显示xxx
  47. // this.getView().showMessage("xxx");
  48. // }
  49. // }
  50. }
  51. //VieaFlag为分录标识,传入的分录显示,其他则隐藏
  52. public void setVieeVisible(String Viewflag)
  53. {
  54. List<String> viewList=new ArrayList<>();
  55. viewList.add(nckd_generalemployees);
  56. viewList.add(nckd_earlyretired);
  57. viewList.add(nckd_retired);
  58. viewList.add(nckd_pay);
  59. if (Viewflag.isEmpty()) {
  60. for (String item:viewList) {
  61. this.getView().setVisible(false,item);
  62. }
  63. //清空所有分录
  64. //一般员工分录
  65. this.getModel().deleteEntryData("nckd_staffentry");
  66. //内退分录
  67. this.getModel().deleteEntryData("nckd_earlyretiredentry");
  68. //退休分录
  69. this.getModel().deleteEntryData("nckd_retireentry");
  70. //人力薪酬分录
  71. this.getModel().deleteEntryData("nckd_salaryentry");
  72. }
  73. //薪酬明细(一般员工)分录
  74. if (Viewflag.equals(nckd_generalemployees)) {
  75. for (String item:viewList) {
  76. this.getView().setVisible(false,item);
  77. }
  78. //内退分录
  79. this.getModel().deleteEntryData("nckd_earlyretiredentry");
  80. //退休分录
  81. this.getModel().deleteEntryData("nckd_retireentry");
  82. //人力薪酬分录
  83. this.getModel().deleteEntryData("nckd_salaryentry");
  84. this.getView().setVisible(true,nckd_generalemployees);
  85. }
  86. //薪酬明细(内退)分录
  87. if (Viewflag.equals(nckd_earlyretired)) {
  88. for (String item:viewList) {
  89. this.getView().setVisible(false,item);
  90. }
  91. //一般员工分录
  92. this.getModel().deleteEntryData("nckd_staffentry");
  93. //退休分录
  94. this.getModel().deleteEntryData("nckd_retireentry");
  95. //人力薪酬分录
  96. this.getModel().deleteEntryData("nckd_salaryentry");
  97. this.getView().setVisible(true,nckd_earlyretired);
  98. }
  99. //薪酬明细(退休)分录
  100. if (Viewflag.equals(nckd_retired)) {
  101. for (String item:viewList) {
  102. this.getView().setVisible(false,item);
  103. }
  104. //一般员工分录
  105. this.getModel().deleteEntryData("nckd_staffentry");
  106. //内退分录
  107. this.getModel().deleteEntryData("nckd_earlyretiredentry");
  108. //人力薪酬分录
  109. this.getModel().deleteEntryData("nckd_salaryentry");
  110. this.getView().setVisible(true,nckd_retired);
  111. }
  112. //人力薪酬分录
  113. if (Viewflag.equals(nckd_pay)) {
  114. for (String item:viewList) {
  115. this.getView().setVisible(false,item);
  116. }
  117. //清空其他分录
  118. //一般员工分录
  119. this.getModel().deleteEntryData("nckd_staffentry");
  120. //内退分录
  121. this.getModel().deleteEntryData("nckd_earlyretiredentry");
  122. //退休分录
  123. this.getModel().deleteEntryData("nckd_retireentry");
  124. this.getView().setVisible(true,nckd_pay);
  125. }
  126. }
  127. public void afterCreateNewData(EventObject e){
  128. super.afterBindData(e);
  129. //设置初始状态分录为不可见
  130. this.setVieeVisible("");
  131. }
  132. public void propertyChanged(PropertyChangedArgs e)
  133. {
  134. super.beforePropertyChanged(e);
  135. String name=e.getProperty().getName();
  136. //获取单据模型
  137. DynamicObject data=this.getModel().getDataEntity();
  138. if (nckd_entrytype.equals(name)) {
  139. //获取当前分录类型
  140. ChangeData[] changeSet=e.getChangeSet();
  141. ChangeData changeData=changeSet[0];
  142. // String oldValue =(String)changeData.getOldValue();
  143. // String newValue =(String)changeData.getNewValue() ;
  144. oldentryNum=(String)changeData.getOldValue();
  145. newentryNum=(String)changeData.getNewValue();
  146. String entrytype=data.getString(nckd_entrytype);
  147. if (entrytype.isEmpty()) {
  148. this.setVieeVisible("");
  149. }
  150. //分录类型为薪酬明细(一般员工)
  151. if (entrytype.equals("A")) {
  152. ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
  153. String confirmTip = "您确定要将分录类型改变为薪酬明细(一般员工)?操作会清空其他分录的数据,是否继续?";
  154. this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
  155. }
  156. //分录类型为薪酬明细(内退)
  157. if (entrytype.equals("B")) {
  158. ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
  159. String confirmTip = "您确定要将分录类型改变为薪酬明细(内退)?操作会清空其他分录的数据,是否继续?";
  160. this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
  161. }
  162. //分录类型为薪酬明细退休
  163. if (entrytype.equals("C")) {
  164. ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
  165. String confirmTip = "您确定要将分录类型改变为薪酬明细(退休)?操作会清空其他分录的数据,是否继续?";
  166. this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
  167. }
  168. //分录类型为人力薪酬
  169. if (entrytype.equals("D")) {
  170. ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
  171. String confirmTip = "您确定要将分录类型改变为人力薪酬?操作会清空其他分录的数据,是否继续?";
  172. this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
  173. }
  174. }
  175. }
  176. //点击弹窗后回调
  177. public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
  178. super.confirmCallBack(messageBoxClosedEvent);
  179. DynamicObject data=this.getModel().getDataEntity();
  180. //获取当前分录类型
  181. String entrytype=data.getString(nckd_entrytype);
  182. // 判断如果是确认按钮
  183. if (messageBoxClosedEvent.getResult() == MessageBoxResult.Yes) {
  184. //分录类型为薪酬明细(一般员工)
  185. if (entrytype.equals("A")) {
  186. this.setVieeVisible(nckd_generalemployees);
  187. }
  188. //分录类型为薪酬明细(内退)
  189. if (entrytype.equals("B")) {
  190. this.setVieeVisible(nckd_earlyretired);
  191. }
  192. //分录类型为薪酬明细退休
  193. if (entrytype.equals("C")) {
  194. this.setVieeVisible(nckd_retired);
  195. }
  196. //分录类型为人力薪酬
  197. if (entrytype.equals("D")) {
  198. this.setVieeVisible(nckd_pay);
  199. }
  200. }
  201. //如果为取消,则
  202. if (messageBoxClosedEvent.getResult()==MessageBoxResult.No)
  203. {
  204. //设置回原来的值,不触发值改变事件
  205. this.getModel().beginInit();
  206. data.set("nckd_entrytype",oldentryNum);
  207. this.getModel().endInit();
  208. this.getView().updateView();
  209. }
  210. }
  211. }