EvaresultAuditBillEditHandlerEx.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.kingdee.eas.hr.perf.handler;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.kingdee.bos.BOSException;
  6. import com.kingdee.bos.Context;
  7. import com.kingdee.bos.rabbitmq.guava.Lists;
  8. import com.kingdee.eas.common.EASBizException;
  9. import com.kingdee.eas.framework.CoreBaseInfo;
  10. import com.kingdee.eas.util.app.DbUtil;
  11. import com.kingdee.jdbc.rowset.IRowSet;
  12. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
  13. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
  14. import com.kingdee.shr.base.syssetting.context.SHRContext;
  15. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  16. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  17. import com.kingdee.shr.compensation.util.CmpStrUtil;
  18. import com.kingdee.shr.perfweb.app.base.evalplan.EvaResultSummaryAuditBillFactory;
  19. import com.kingdee.shr.perfweb.app.base.evalplan.IEvaResultSummaryAuditBill;
  20. import com.kingdee.shr.perfweb.planexecute.handler.EvaresultAuditBillEditHandler;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.ui.ModelMap;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.sql.SQLException;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. /**
  31. * @BelongsProject: dataImpExp820
  32. * @BelongsPackage: com.kingdee.eas.hr.perf.handler
  33. * @Author: lhbj
  34. * @CreateTime: 2025-01-10 19:09
  35. * @Description: TODO
  36. * @Version: 1.0
  37. */
  38. public class EvaresultAuditBillEditHandlerEx extends EvaresultAuditBillEditHandler {
  39. private static Logger logger = LoggerFactory.getLogger(EvaresultAuditBillEditHandlerEx.class);
  40. /**
  41. [{"evaResult.pnumber":"0000381","evaResult.pname":"谭梓傲","evaResult.positionName":"物资岗","evaResult.evaObj.perfFile.adminOrgUnit.company.name":"湖南红太阳光电科技有限公司","evaResult.evaObj.perfFile.adminOrgUnit.department.name":"综合管理","evaResult.sumScore":"<span></span>","evaResult.gradeLevel":"","evaResult.auditSumScore":"<span value=\\"86\\">86.00</span>","evaResult.auditGradeLevel":"C","evaResult.auditReason":"<div class=\\"cell-height scrollbarthin\\">正态分布更新结果</div>","evaResult.reviseSumScore":"<span value=\\"86\\">86.00</span>","evaResult.reviseGradeLevel":"C","evaResult.reviseReason":"正态分布更新结果","id":"KQukJy27Skiy1rPPghjkJBdK16Q=","evaResult.id":"Ka7FkRQuTAaPlTaLvJSD3IESG3Q=","bill.id":"m85zTeeDSmaAU2QLbYWMUoZLdW4=","evaResult.evaObj.id":"gjX3giS2RKurkJVjPhnwa4GI54s=","reviseGradeLevelSelect":"[{\\"value\\":\\"S\\",\\"alias\\":\\"S\\"},{\\"value\\":\\"A\\",\\"alias\\":\\"A\\"},{\\"value\\":\\"B\\",\\"alias\\":\\"B\\"},{\\"value\\":\\"C\\",\\"alias\\":\\"C\\"},{\\"value\\":\\"D\\",\\"alias\\":\\"D\\"}]","levelScoreKVInfo":"{\\n \\"90.00~100.00\\": \\"S\\",\\n \\"80.00~90.00\\": \\"A\\",\\n \\"70.00~80.00\\": \\"B\\",\\n \\"60.00~70.00\\": \\"C\\",\\n \\"0.00~60.00\\": \\"D\\"\\n}","scoreLowLimit":"0","scoreUpLimit":"100","evaResult.period.id":"q6myAjHaQLK+wnczfdLCJEUaiOU=","evaResult.reviseFlag":"是","evaResult.auditFlag":"否"}]
  42. * @param request
  43. * @param response
  44. * @param modelMap
  45. * @throws SHRWebException
  46. */
  47. public void verifyBeforeSubmitAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  48. String entryData = request.getParameter("entryData");
  49. BatchMessageTipsHeader header = new BatchMessageTipsHeader();
  50. boolean isExists = true;
  51. if (!com.kingdee.util.StringUtils.isEmpty(entryData)) {
  52. int success = 0;
  53. int fail = 0;
  54. StringBuilder ids = new StringBuilder();
  55. List<String> allIdList = new ArrayList<>();
  56. try {
  57. Context ctx = SHRContext.getInstance().getContext();
  58. //明细数据
  59. JSONArray entryList = JSON.parseArray(entryData);
  60. for(int i=0;i<entryList.size();i++) {
  61. JSONObject object = entryList.getJSONObject(i);
  62. BatchMessageTipsBody body = new BatchMessageTipsBody();
  63. String id =object.getString("id");
  64. boolean isSuccess=false;
  65. String msg="";
  66. String pnumber = object.getString("evaResult.pnumber");
  67. String pname = object.getString("evaResult.pname");
  68. String positionName = object.getString("evaResult.positionName");
  69. String evaResult = object.getString("evaResult.id");
  70. //修改后等级
  71. String auditGradeLevel = object.getString("evaResult.auditGradeLevel");
  72. body.setId(id);
  73. ids.append(id).append(",");
  74. allIdList.add(id);
  75. //获取跨部门协作绩效等级
  76. String sql = "select CFDEPGRADELEVEL from T_EVA_EvaResultSummary where fid = ?";
  77. IRowSet rs = DbUtil.executeQuery(ctx, sql, new String[]{evaResult});
  78. //当跨部门协作绩效等级为C、D等级的,当期员工绩效不得为高绩效(S、A等级)
  79. if (rs.next()){
  80. //跨部门协作绩效等级
  81. String depgradelevel = rs.getString("CFDEPGRADELEVEL");
  82. switch (depgradelevel){
  83. case "S":;
  84. case "A":;
  85. case "B":isSuccess=true; msg="校验通过";success+=1;break;
  86. case "C":
  87. case "D":
  88. if("S".equals(auditGradeLevel)||"A".equals(auditGradeLevel)){
  89. isSuccess=false;
  90. msg="当跨部门协作绩效等级为C、D等级的,当期员工绩效不得为高绩效(S、A等级)";
  91. fail+=1;
  92. } else {
  93. isSuccess=true; msg="校验通过";success+=1;
  94. }
  95. break;
  96. }
  97. }else {
  98. msg="操作失败,数据异常";
  99. isSuccess=false;
  100. fail+=1;
  101. }
  102. body.setMuitTipsState(isSuccess);
  103. body.setMuitTipsMessage(msg);
  104. List<Object> messageListExt = new ArrayList<>();
  105. messageListExt.add(pnumber);
  106. messageListExt.add(pname);
  107. messageListExt.add(positionName);
  108. body.addMessageListExt(messageListExt);
  109. header.addResult(body);
  110. }
  111. } catch (BOSException | SQLException var7) {
  112. var7.printStackTrace();
  113. }
  114. ids.delete(ids.length()-1,ids.length());
  115. header.setBillId(ids.toString());
  116. header.setFailureCount(fail);
  117. header.setSuccessCount(success);
  118. }
  119. this.writeSuccessData(header);
  120. }
  121. protected void verifyModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws SHRWebException {
  122. }
  123. public String beforeAuditEvaResut(Context ctx, List<String> ids) throws SHRWebException {
  124. List<String> unIdLIst = Lists.newArrayList();
  125. StringBuilder err = new StringBuilder();
  126. try {
  127. StringBuffer sql = new StringBuffer();
  128. sql.append(" select ers.fid,ers.FPNAME,ers.FPNUMBER,pp.FPSTARTDATE,ers.CFOrgLevelEveID,pp.FYEAR,pp.FTIMEPERIOD from ");
  129. sql.append(" T_EVA_EvaResultSummary ers ");
  130. sql.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
  131. sql.append(" where ers.fid in(''");
  132. for (String id : ids) {
  133. sql.append(",'").append(id).append("'");
  134. }
  135. sql.append(" ) ");
  136. IRowSet rsSql = DbUtil.executeQuery(ctx, sql.toString());
  137. while (rsSql.next()){
  138. String id = rsSql.getString("id");
  139. String FPNAME = rsSql.getString("FPNAME");
  140. String FPNUMBER = rsSql.getString("FPNUMBER");
  141. String orgLevelEveID = rsSql.getString("CFOrgLevelEveID");
  142. if(StringUtils.isBlank(orgLevelEveID)) {
  143. err.append("员工:"+FPNAME+"("+FPNUMBER+"),无法获取当前组织绩效考核等级");
  144. unIdLIst.add(id);
  145. }
  146. }
  147. if(!unIdLIst.isEmpty()) {
  148. ids.removeAll(unIdLIst);
  149. err.append("存在无法获取当前组织绩效考核等级的记录");
  150. }
  151. }catch (Exception e){
  152. e.printStackTrace();
  153. }
  154. return err.toString();
  155. }
  156. }