ExamineZQJDEditHandler.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. package com.kingdee.eas.custom.performancenew.handler;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.grapecity.documents.excel.F;
  6. import com.kingdee.bos.BOSException;
  7. import com.kingdee.bos.Context;
  8. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  9. import com.kingdee.bos.metadata.entity.*;
  10. import com.kingdee.bos.metadata.query.util.CompareType;
  11. import com.kingdee.bos.sql.ParserException;
  12. import com.kingdee.bos.util.BOSUuid;
  13. import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
  14. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  15. import com.kingdee.eas.basedata.org.IAdminOrgUnit;
  16. import com.kingdee.eas.basedata.person.PersonInfo;
  17. import com.kingdee.eas.common.EASBizException;
  18. import com.kingdee.eas.custom.performancenew.*;
  19. import com.kingdee.eas.custom.performancenew.app.orderStatucEnum;
  20. import com.kingdee.eas.custom.performancenew.app.periodStatusEnum;
  21. import com.kingdee.eas.custom.performancenew.app.scoreEnum;
  22. import com.kingdee.eas.framework.CoreBaseInfo;
  23. import com.kingdee.eas.hr.ats.AtsUtil;
  24. import com.kingdee.eas.util.app.ContextUtil;
  25. import com.kingdee.shr.base.syssetting.context.SHRContext;
  26. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  27. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  28. import com.kingdee.shr.base.syssetting.web.handler.EditHandler;
  29. import com.kingdee.util.StringUtils;
  30. import org.springframework.ui.ModelMap;
  31. import javax.servlet.http.HttpServletRequest;
  32. import javax.servlet.http.HttpServletResponse;
  33. import java.lang.reflect.Array;
  34. import java.util.Collections;
  35. import java.util.Comparator;
  36. import java.util.Map;
  37. /**
  38. * @author qingwu
  39. * @date 2024/4/11
  40. * @apiNote 周期季度 普通表单 (专员)
  41. */
  42. public class ExamineZQJDEditHandler extends EditHandler {
  43. private Context ctx = SHRContext.getInstance().getContext();
  44. /**
  45. * customDelete 编辑表格删除
  46. *
  47. * @param request
  48. * @param response
  49. * @param modelMap
  50. * @return
  51. * @throws SHRWebException
  52. */
  53. public void customDeleteAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, BOSException, EASBizException {
  54. //获取删除ID
  55. String idArray = request.getParameter("idArray");
  56. IExamineGradePersonEntry iExamineGradePersonEntry = ExamineGradePersonEntryFactory.getLocalInstance(ctx);
  57. FilterInfo filterInfo = new FilterInfo();
  58. filterInfo.getFilterItems().add(new FilterItemInfo("id", AtsUtil.toSet(idArray), CompareType.INCLUDE));
  59. iExamineGradePersonEntry.delete(filterInfo);
  60. }
  61. /**
  62. * 创建页面时 初始化周期解除
  63. *
  64. * @param request
  65. * @param response
  66. * @param modelMap
  67. * @return
  68. * @throws SHRWebException
  69. */
  70. @Override
  71. protected CoreBaseInfo createNewModel(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  72. ExamineGradePersonInfo examineGradePersonInfo = (ExamineGradePersonInfo) super.createNewModel(request, response, modelMap);
  73. examineGradePersonInfo.setPeriodStatus(periodStatusEnum.periodRelieve);
  74. return examineGradePersonInfo;
  75. }
  76. @Override
  77. public String saveAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  78. if (request.getParameter("saveType").equals("save")) {
  79. return super.saveAction(request, response, modelMap);
  80. }
  81. try {
  82. ExamineGradePersonInfo model = (ExamineGradePersonInfo) request.getAttribute("dynamic_model");
  83. //获取保存前的数据
  84. String beforeSave = request.getParameter("beforeSave");
  85. IExamineGradePerson iExamineGradePerson = ExamineGradePersonFactory.getLocalInstance(ctx);
  86. IExamineGradePersonEntry iExamineGradePersonEntry = ExamineGradePersonEntryFactory.getLocalInstance(ctx);
  87. if (beforeSave != null) {
  88. JSONArray jsonArray = JSONObject.parseArray(beforeSave);
  89. if (jsonArray.size() > 0) {
  90. //保存前数据
  91. ExamineGradePersonEntryCollection upEentrys = new ExamineGradePersonEntryCollection();
  92. for (int i = 0; i < jsonArray.size(); i++) {
  93. //拿到保存前的数据去数据库查询
  94. JSONObject jsonObject = JSONObject.parseObject(jsonArray.get(i).toString());
  95. ExamineGradePersonEntryInfo examineGradePersonEntryInfo =
  96. iExamineGradePersonEntry.getExamineGradePersonEntryInfo(new ObjectUuidPK(jsonObject.get("id").toString()));
  97. upEentrys.add(examineGradePersonEntryInfo);
  98. }
  99. //保存后数据
  100. ExamineGradePersonInfo examineGradePersonInfo = (ExamineGradePersonInfo) model;
  101. ExamineGradePersonEntryCollection pgEntrys = examineGradePersonInfo.getEntrys();
  102. //循环判断删除那一列被修改过
  103. for (int i = 0; i < upEentrys.size(); i++) {
  104. ExamineGradePersonEntryInfo upExamineGradePersonEntryInfo = upEentrys.get(i);
  105. for (int j = 0; j < pgEntrys.size(); j++) {
  106. SelectorItemCollection sic = new SelectorItemCollection();
  107. ExamineGradePersonEntryInfo pgExamineGradePersonEntryInfo = pgEntrys.get(j);
  108. if (upExamineGradePersonEntryInfo.getId() == null) {
  109. pgExamineGradePersonEntryInfo.setParent(examineGradePersonInfo);
  110. iExamineGradePersonEntry.save(pgExamineGradePersonEntryInfo);
  111. }
  112. //判断组织是否被更改
  113. if (!upExamineGradePersonEntryInfo.getId().equals(pgExamineGradePersonEntryInfo.getId()) && upExamineGradePersonEntryInfo.getAdminOrg().getId().equals(pgExamineGradePersonEntryInfo.getAdminOrg().getId())) {
  114. sic.add("adminOrg");
  115. }
  116. //判断考核人是否被更改
  117. if (!upExamineGradePersonEntryInfo.getAuditor().getId().equals(pgExamineGradePersonEntryInfo.getAuditor().getId())) {
  118. sic.add("auditor");
  119. }
  120. //判断评分人是否被更改
  121. if (!upExamineGradePersonEntryInfo.getScorer().getId().equals(pgExamineGradePersonEntryInfo.getScorer().getId())) {
  122. sic.add("scorer");
  123. }
  124. //判断计算得分是否被更改
  125. if (upExamineGradePersonEntryInfo.getScore() != pgExamineGradePersonEntryInfo.getScore()) {
  126. sic.add("score");
  127. }
  128. //判断领导计算得分是否被更改
  129. if (upExamineGradePersonEntryInfo.getScoreLeader() != pgExamineGradePersonEntryInfo.getScoreLeader()) {
  130. sic.add("scoreLeader");
  131. }
  132. //判断领导计算得分是否被更改
  133. if (upExamineGradePersonEntryInfo.getIndex() != pgExamineGradePersonEntryInfo.getIndex()) {
  134. sic.add("index");
  135. }
  136. //if (
  137. // upExamineGradePersonEntryInfo.getScorer().getId().equals(pgExamineGradePersonEntryInfo.getScorer().getId()) &&
  138. // upExamineGradePersonEntryInfo.getScore() == pgExamineGradePersonEntryInfo.getScore() &&
  139. // upExamineGradePersonEntryInfo.getScoreLeader() == pgExamineGradePersonEntryInfo.getScore() &&
  140. // upExamineGradePersonEntryInfo.getIndex() == pgExamineGradePersonEntryInfo.getIndex() &&
  141. // upExamineGradePersonEntryInfo.getRemark() == pgExamineGradePersonEntryInfo.getRemark()
  142. //) {
  143. // //这里是没有被修改的数据
  144. // //pgEntrys.remove(pgExamineGradePersonEntryInfo);
  145. // continue;
  146. //} else {
  147. // //修改过的数据
  148. // pgExamineGradePersonEntryInfo.setParent(examineGradePersonInfo);
  149. // iExamineGradePersonEntry.save(pgExamineGradePersonEntryInfo);
  150. //}
  151. }
  152. }
  153. } else {
  154. //保存后数据
  155. ExamineGradePersonInfo examineGradePersonInfo = (ExamineGradePersonInfo) model;
  156. ExamineGradePersonEntryCollection pgEntrys = examineGradePersonInfo.getEntrys();
  157. for (int j = 0; j < pgEntrys.size(); j++) {
  158. ExamineGradePersonEntryInfo pgExamineGradePersonEntryInfo = pgEntrys.get(j);
  159. //修改过的数据
  160. pgExamineGradePersonEntryInfo.setParent(examineGradePersonInfo);
  161. iExamineGradePersonEntry.save(pgExamineGradePersonEntryInfo);
  162. }
  163. }
  164. }
  165. } catch (BOSException e) {
  166. e.printStackTrace();
  167. throw new RuntimeException(e);
  168. } catch (EASBizException e) {
  169. throw new RuntimeException(e);
  170. }
  171. return null;
  172. }
  173. /**
  174. * 锁定周期
  175. *
  176. * @param request
  177. * @param response
  178. * @param modelMap
  179. */
  180. public void periodLockAction(HttpServletRequest request,
  181. HttpServletResponse response,
  182. ModelMap modelMap) throws BOSException, EASBizException, ShrWebBizException {
  183. try {
  184. String billId = request.getParameter("billId");
  185. ExamineGradePersonFactory.getLocalInstance(ctx).periodLock(billId);
  186. } catch (BOSException e) {
  187. throw new ShrWebBizException(e.getMessage());
  188. }
  189. }
  190. /**
  191. * 解除周期
  192. *
  193. * @param request
  194. * @param response
  195. * @param modelMap
  196. */
  197. public void periodUnlockAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws
  198. BOSException, EASBizException, ShrWebBizException {
  199. try {
  200. String billId = request.getParameter("billId");
  201. ExamineGradePersonFactory.getLocalInstance(ctx).periodUnlock(billId);
  202. } catch (BOSException e) {
  203. throw new ShrWebBizException(e.getMessage());
  204. }
  205. }
  206. /**
  207. * 启动排序
  208. */
  209. public void startOrderAction(HttpServletRequest request,
  210. HttpServletResponse response,
  211. ModelMap modelMap) throws ShrWebBizException {
  212. try {
  213. String billId = request.getParameter("billId");
  214. ExamineGradePersonEntryCollection entrys = getCurrentPersonEqualsScore(billId, null);
  215. for (int i = 0; entrys != null && i < entrys.size(); i++) {
  216. ExamineGradePersonEntryInfo entry = entrys.get(i);
  217. String depName = entry.getAdminOrg().getName();
  218. if (entry.getPerformanceScoreOrg() == null) {
  219. throw new ShrWebBizException("部门[" + depName + "] 没有维护组织绩效得分!");
  220. }
  221. }
  222. ExamineGradePersonFactory.getLocalInstance(ctx).startOrder(billId);
  223. } catch (ParserException e) {
  224. throw new ShrWebBizException(e);
  225. } catch (BOSException e) {
  226. throw new ShrWebBizException(e);
  227. } catch (ShrWebBizException e) {
  228. throw new ShrWebBizException(e);
  229. }
  230. }
  231. /**
  232. * 获取当前登录人等于评分人的数据
  233. *
  234. * @param billID
  235. * @return
  236. */
  237. public ExamineGradePersonEntryCollection getCurrentPersonEqualsScore(String billID,
  238. String adminID) throws ParserException, BOSException {
  239. SelectorItemCollection sic = new SelectorItemCollection();
  240. sic.add("*");
  241. sic.add("adminOrg.*");
  242. sic.add("performanceScoreOrg.*");
  243. FilterInfo filterInfo = new FilterInfo();
  244. FilterItemCollection filterItems = filterInfo.getFilterItems();
  245. filterItems.add(new FilterItemInfo("parent.id", billID));
  246. if (!StringUtils.isEmpty(adminID)) {
  247. filterItems.add(new FilterItemInfo("adminOrg.id", adminID));
  248. }
  249. SorterItemCollection sorterItemCollection = new SorterItemCollection("adminOrg.id,index");
  250. EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, sorterItemCollection);
  251. IExamineGradePersonEntry iExamineGradePersonEntry = ExamineGradePersonEntryFactory.getLocalInstance(ctx);
  252. return iExamineGradePersonEntry.getExamineGradePersonEntryCollection(entityViewInfo);
  253. }
  254. /**
  255. * 获取值 表单 编辑表格 排序
  256. *
  257. * @param request
  258. * @param modelID 单据id
  259. * @return
  260. * @throws SHRWebException
  261. */
  262. @Override
  263. protected CoreBaseInfo getValue(HttpServletRequest request, String modelID) throws SHRWebException {
  264. ExamineGradePersonInfo examineGradePersonInfo = (ExamineGradePersonInfo) super.getValue(request, modelID);
  265. ExamineGradePersonEntryCollection entrys = examineGradePersonInfo.getEntrys();
  266. entrys.sort("adminOrg.id,index");
  267. return examineGradePersonInfo;
  268. }
  269. }