1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684 |
- package com.kingdee.eas.hr.perf.handler;
- import cn.hutool.core.util.StrUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.google.common.collect.Maps;
- import com.google.common.collect.Sets;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.metadata.entity.*;
- import com.kingdee.bos.metadata.query.util.CompareType;
- import com.kingdee.bos.rabbitmq.guava.Lists;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.custom.performanceScoring.handler.EvaResultSummaryManagerListHandlerEx;
- import com.kingdee.eas.framework.CoreBaseCollection;
- import com.kingdee.eas.hr.perf.PerformProTeamCollection;
- import com.kingdee.eas.hr.perf.PerformProTeamFactory;
- import com.kingdee.eas.hr.perf.PersonPerformProCollection;
- import com.kingdee.eas.hr.perf.PersonPerformProFactory;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
- import com.kingdee.shr.base.syssetting.context.SHRContext;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
- import com.kingdee.shr.perfweb.app.base.evalplan.*;
- import com.kingdee.shr.perfweb.app.exception.SHRPerfWebBizException;
- import com.kingdee.shr.perfweb.app.resource.SHRPerfWebResource;
- import com.kingdee.shr.perfweb.util.*;
- import com.kingdee.util.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.ui.ModelMap;
- import org.springframework.util.CollectionUtils;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.math.BigDecimal;
- import java.sql.SQLException;
- import java.text.SimpleDateFormat;
- import java.time.LocalDate;
- import java.time.Month;
- import java.time.Year;
- import java.time.format.DateTimeFormatter;
- import java.util.*;
- public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryManagerListHandlerEx {
- private static final Logger logger = LoggerFactory.getLogger(EvaResultSummaryManagerListHandlerExEx.class);
- public void batchSaveReviseDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- List unValidIds;
- try {
- unValidIds = EvaResultSummaryBillUtil.validEvaResultSummaryBill(ctx, (String)null, request.getParameter("billId"), "10");
- if (unValidIds.size() > 0) {
- addBatchMessageTips(unValidIds, SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.CANNOTENTRYREVISEBYBILLSTATE, ctx), batchMessageTipsHeader);
- }
- } catch (BOSException var12) {
- logger.error("【PERFWEB--batchSaveReviseDataAction】-it is failed to get state of summary bill,e=", var12);
- throw new ShrWebBizException(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.CANNOTENTRYREVISEBYBILLSTATE, ctx));
- }
- try {
- String datas = request.getParameter("datas");
- if (!StringUtils.isEmpty(datas)) {
- if (!CollectionUtils.isEmpty(unValidIds)) {
- List<HashMap> reviseDataList = JSONArray.parseArray(datas, HashMap.class);
- List<HashMap> rightDatas = new ArrayList(reviseDataList.size());
- Iterator var10 = reviseDataList.iterator();
- while(var10.hasNext()) {
- HashMap map = (HashMap)var10.next();
- if (!unValidIds.contains(map.get("id"))) {
- rightDatas.add(map);
- }
- }
- datas = JSONArray.toJSONString(rightDatas);
- }
- this._batchSaveReviseData(ctx,datas, batchMessageTipsHeader);
- }
- } catch (Exception var13) {
- logger.error("batchSaveReviseDataAction is error: ", var13);
- }
- }
- protected void _batchSaveReviseData(Context ctx, String reviseDataJson, BatchMessageTipsHeader batchMessageTipsHeader) throws BOSException, EASBizException {
- List<HashMap> reviseDataList = JSONArray.parseArray(reviseDataJson, HashMap.class);
- CoreBaseCollection evaResultSummaryCollection = new CoreBaseCollection();
- if (!CollectionUtils.isEmpty(reviseDataList)) {
- Set<String> summaryIds = new HashSet(reviseDataList.size());
- Set<String> summaryErrIds = new HashSet(reviseDataList.size());
- Iterator var7 = reviseDataList.iterator();
- while(var7.hasNext()) {
- HashMap reviseData = (HashMap)var7.next();
- EvaResultSummaryInfo evaResultSummaryInfo = new EvaResultSummaryInfo();
- summaryIds.add((String)reviseData.get("id"));
- evaResultSummaryInfo.put("id", reviseData.get("id"));
- if (reviseData.get("reviseSumScore") != null && org.apache.commons.lang.StringUtils.isNotBlank(String.valueOf(reviseData.get("reviseSumScore")))) {
- evaResultSummaryInfo.put("reviseSumScore", reviseData.get("reviseSumScore"));
- }
- evaResultSummaryInfo.put("reviseGradeLevel", reviseData.get("reviseGradeLevel"));
- evaResultSummaryInfo.put("reviseReason", reviseData.get("reviseReason"));
- Object perCoefficientObj=reviseData.get("perCoefficient");
- Object perMaxCoefficientObj=reviseData.get("perMaxCoefficient");
- Object perMinCoefficientObj=reviseData.get("perMinCoefficient");
- if(null==perCoefficientObj||null==perMaxCoefficientObj||null==perMinCoefficientObj) {
- evaResultSummaryCollection.add(evaResultSummaryInfo);
- }else {
- evaResultSummaryInfo.put("perCoefficient", perCoefficientObj);
- evaResultSummaryInfo.put("perMaxCoefficient", perMaxCoefficientObj);
- evaResultSummaryInfo.put("perMinCoefficient", perMinCoefficientObj);
- BigDecimal perMaxCoefficient = new BigDecimal(perMaxCoefficientObj.toString());
- BigDecimal perMinCoefficient = new BigDecimal(perMinCoefficientObj.toString());
- BigDecimal perCoefficient = new BigDecimal(perCoefficientObj.toString());
- if (perCoefficient.compareTo(perMaxCoefficient) > 0
- || perCoefficient.compareTo(perMinCoefficient) < 0) {
- summaryErrIds.add((String) reviseData.get("id"));
- addBatchMessageTip((String) reviseData.get("id"), "所修改的绩效系数,大于最大绩效系数或者小于最小绩效系数!", batchMessageTipsHeader);
- } else {
- evaResultSummaryCollection.add(evaResultSummaryInfo);
- }
- }
- }
- Object periodId = ((HashMap)reviseDataList.get(0)).get("periodId");
- List unValidIds;
- if (periodId != null) {
- unValidIds = EvaResultSummaryBillUtil.batchCheckScore(ctx, evaResultSummaryCollection, (String)periodId, batchMessageTipsHeader);
- } else {
- unValidIds = EvaResultSummaryBillUtil.batchCheckScoreBySummary(ctx, evaResultSummaryCollection, (String)((HashMap)reviseDataList.get(0)).get("perfSummarySchemeBaseId"), batchMessageTipsHeader);
- }
- if (!CollectionUtils.isEmpty(unValidIds)) {
- summaryIds.removeAll(unValidIds);
- }
- if (!CollectionUtils.isEmpty(summaryErrIds)) {
- summaryIds.removeAll(summaryErrIds);
- }
- if (CollectionUtils.isEmpty(summaryIds)) {
- return;
- }
- IEvaResultSummary resultSummary = EvaResultSummaryFactory.getLocalInstance(ctx);
- EntityViewInfo entityViewInfo = new EntityViewInfo();
- FilterInfo filterInfo = new FilterInfo();
- filterInfo.getFilterItems().add(new FilterItemInfo("id", summaryIds, CompareType.INCLUDE));
- entityViewInfo.setFilter(filterInfo);
- EvaResultSummaryCollection summaryCollection = resultSummary.getEvaResultSummaryCollection(entityViewInfo);
- CoreBaseCollection oldSummaryCollection = new CoreBaseCollection();
- if (summaryCollection != null && summaryCollection.size() > 0) {
- for(int i = 0; i < summaryCollection.size(); ++i) {
- oldSummaryCollection.add(summaryCollection.get(i));
- }
- }
- EvaResultSumRevisionLogService evaResultSumRevisionLogService = new EvaResultSumRevisionLogService();
- CoreBaseCollection evaResultSumRevisionLogCollection = evaResultSumRevisionLogService.packageResultSumRevisionLog(EvaResultSumLogSourceEnum.ENTRYREVISE, oldSummaryCollection, evaResultSummaryCollection, false);
- System.out.println("evaResultSummaryCollection:"+evaResultSummaryCollection);
- resultSummary.save(evaResultSummaryCollection);
- evaResultSumRevisionLogService.generatedEvaResultSumRevisionLog(ctx, evaResultSumRevisionLogCollection);
- }
- }
- /**
- * 项目经理校验
- * @param request
- * @param response
- * @param modelMap
- */
- public void tempAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- List<String> idList = Lists.newArrayList();
- String ids = (String) this.getBillId(request);
- for (String id : ids.split(",")) {
- idList.add(id);
- }
- StringBuilder selParamId = new StringBuilder("''");
- for (int i = 0; i < idList.size(); i++) {
- selParamId.append(",?");
- }
- StringBuilder sql = new StringBuilder();
- sql.append(" select ers.fid,pp.FPSTARTDATE,ers.FADMINORGUNITID,ers.FADMINORGNAME,pp.FYEAR,pp.FTIMEPERIOD, ");
- sql.append(" pp.FCYCLETYPE,pp.FPENDDATE,pp.FPSTARTDATE,ppn.CFPEROBJECTIDID,ppm.CFPROJECTNAME,pmm.CFEMPLOYEEID ");
- sql.append(" from T_EVA_EvaResultSummary ers ");
- sql.append(" left join T_EVA_PerfPlan ppn on ers.FEVAPLANID=ppn.fid ");
- sql.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
- sql.append(" left join CT_PRO_ProjectManagement ppm on ppn.CFPEROBJECTIDID=ppm.fid ");
- sql.append(" left join CT_PRO_MemberManagement pmm on ppm.fid=pmm.CFPROJECTMANAGEMENID and pmm.CFSTATE=1 ");
- sql.append(" and pmm.CFPTYPEID in( ");
- sql.append(" select fid from CT_PRO_ProjectType where FNUMBER='ProjectManager') ");
- sql.append(" and pmm.CFPROJECTROLEID in( ");
- sql.append(" select fid from CT_PRO_ProjectRole where FNUMBER ='HTY110') ");
- sql.append(" where ers.fid in (");
- sql.append(selParamId);
- sql.append(") ");
- sql.append(" and pmm.CFEMPLOYEEID=ers.fpersonid ");
- IRowSet rs = DbUtil.executeQuery(ctx, sql.toString(), idList.toArray());
- Map<String, String> map = Maps.newHashMap();
- map.put("ProjectManager",rs.size()>0?"1":"0");
- this.writeSuccessData(map);
- }
- private static PerfEvaObjectCollection getPerfEvaObjectCollectionByIds(Set<String> billIds) throws BOSException {
- FilterInfo filterInfo = new FilterInfo();
- filterInfo.getFilterItems().add(new FilterItemInfo("id", billIds, CompareType.INCLUDE));
- EntityViewInfo evi = new EntityViewInfo();
- evi.setFilter(filterInfo);
- IPerfEvaObject iPerfEvaObject = PerfEvaObjectFactory.getRemoteInstance();
- return iPerfEvaObject.getPerfEvaObjectCollection(evi);
- }
- public void batchAssignGroupAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException, BOSException {
- String group = request.getParameter("group");
- String billIds = (String) this.getBillId(request);
- Context ctx = SHRContext.getInstance().getContext();
- if (StringUtils.isEmpty(billIds)&&StringUtils.isEmpty(group)) {
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.INDECATORNOTSAVEDINSELECTGROUP)).getMessage());
- } else {
- try {
- Set<String> fails = new HashSet();
- List<String> idList = Lists.newArrayList();
- List<String> idsessList = Lists.newArrayList();
- String[] ids = billIds.split(",");
- for (String id : ids ) {
- idList.add(id);
- }
- StringBuilder selParamId = new StringBuilder("''");
- for (int i = 0; i < idList.size(); i++) {
- selParamId.append(",?");
- }
- StringBuilder sql = new StringBuilder();
- sql.append(" select FEVAOBJID,fid from T_EVA_EvaResultSummary where FBILLSTATE!=3 and fid in ( ");
- sql.append(selParamId);
- sql.append(" ) ");
- IRowSet rowSet = DbUtil.executeQuery(ctx,sql.toString(),idList.toArray());
- while (rowSet.next()){
- String fid = rowSet.getString("fid");
- String upd = "update T_EVA_EvaResultSummary set cfgroup=? where fid=?";
- DbUtil.execute(ctx,upd,new String[]{group,fid});
- idsessList.add(fid);
- }
- idList.removeAll(idsessList);
- fails.addAll(idList);
- if (fails.size() > 0) {
- addBatchMessageTips(fails, "只有未审核的数据才能指定分组。", batchMessageTipsHeader);
- }
- } catch (BOSException var22) {
- logger.error("", var22);
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR)).getMessage());
- } catch (SQLException var24) {
- logger.error("", var24);
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR)).getMessage());
- }
- }
- }
- public void clearBelongGroupAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException, BOSException {
- String billId = this.getBillId(request);
- if (!StringUtils.isEmpty(billId)) {
- try {
- Context ctx = SHRContext.getInstance().getContext();
- List<String> idList = Lists.newArrayList();
- List<String> idsessList = Lists.newArrayList();
- String[] ids = billId.split(",");
- for (String id : ids ) {
- idList.add(id);
- }
- StringBuilder selParamId = new StringBuilder("''");
- for (int i = 0; i < idList.size(); i++) {
- selParamId.append(",?");
- }
- StringBuilder sql = new StringBuilder();
- sql.append(" select FEVAOBJID,fid from T_EVA_EvaResultSummary where FBILLSTATE!=3 and fid in ( ");
- sql.append(selParamId);
- sql.append(" ) ");
- IRowSet rowSet = DbUtil.executeQuery(ctx,sql.toString(),idList.toArray());
- while (rowSet.next()){
- String fid = rowSet.getString("fid");
- String upd = "update T_EVA_EvaResultSummary set cfgroup=? where fid=?";
- DbUtil.execute(ctx,upd,new String[]{"",fid});
- idsessList.add(fid);
- }
- idList.removeAll(idsessList);
- if (idList.size() > 0) {
- addBatchMessageTips(idList, "只有未审核的数据才能清除分组。", batchMessageTipsHeader);
- }
- } catch (BOSException var22) {
- logger.error("", var22);
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR)).getMessage());
- } catch (SQLException var24) {
- logger.error("", var24);
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR)).getMessage());
- }
- }
- }
- public Map<String,Map<String,Object>> getPerformanceLevelByLevelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws ShrWebBizException {
- Map<String,Map<String,Object>> result = Maps.newHashMap();
- try {
- Context ctx = SHRContext.getInstance().getContext();
- String sql = "select CFLEVEL,CFCOEFFICIENT,CFMAXCOEFFICIENT,CFMINCOEFFICIENT from CT_PER_PerformanceLevel ";
- IRowSet rs = DbUtil.executeQuery(ctx,sql.toString());
- while (rs.next()){
- Map<String,Object> map = Maps.newHashMap();
- String CFLEVEL=rs.getString("CFLEVEL");
- BigDecimal CFCOEFFICIENT=rs.getBigDecimal("CFCOEFFICIENT");
- BigDecimal CFMAXCOEFFICIENT=rs.getBigDecimal("CFMAXCOEFFICIENT");
- BigDecimal CFMINCOEFFICIENT=rs.getBigDecimal("CFMINCOEFFICIENT");
- map.put("level",CFLEVEL);
- map.put("coefficient",CFCOEFFICIENT);
- map.put("maxcoefficient",CFMAXCOEFFICIENT);
- map.put("mincoefficient",CFMINCOEFFICIENT);
- result.put(CFLEVEL,map);
- }
- }catch (Exception e){
- e.printStackTrace();
- throw new ShrWebBizException(e.getMessage());
- }
- return result;
- }
- /**
- * 获取绩效系数
- * @param request
- * @param response
- * @param modelMap
- */
- public void performanceLevelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws BOSException, SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- List<String> idList = Lists.newArrayList();
- String ids = (String) this.getBillId(request);
- String period = (String) request.getParameter("period");
- String planId = (String) request.getParameter("planId");
- List<String> idsessList = Lists.newArrayList();
- for (String id : ids.split(",")) {
- idList.add(id);
- }
- StringBuilder selParamId = new StringBuilder("''");
- for (int i = 0; i < idList.size(); i++) {
- selParamId.append(",?");
- }
- try {
- StringBuilder sqlsel= new StringBuilder();
- sqlsel.append(" select fid from T_EVA_EvaResultSummary where FBILLSTATE !=3 and fid in ( ");
- sqlsel.append(selParamId);
- sqlsel.append(" ) ");
- IRowSet rs = DbUtil.executeQuery(ctx, sqlsel.toString(), idList.toArray());
- while (rs.next()){
- idsessList.add(rs.getString("fid"));
- }
- StringBuilder selsessParamId = new StringBuilder("''");
- for (int i = 0; i < idsessList.size(); i++) {
- selsessParamId.append(",?");
- }
- StringBuilder sqlpl = new StringBuilder();
- //sqlpl.append(" update T_EVA_EvaResultSummary set CFGROUP=(select CFCOEFFICIENT from CT_PER_PerformanceLevel where CFLEVEL=isnull(FREVISEGRADELEVEL,FGRADELEVEL)) ");
- sqlpl.append(" update T_EVA_EvaResultSummary set CFPERCOEFFICIENT=(select CFCOEFFICIENT from CT_PER_PerformanceLevel where CFLEVEL=isnull(FREVISEGRADELEVEL,FGRADELEVEL)), ");
- sqlpl.append(" CFPERMAXCOEFFICIENT=(select CFMAXCOEFFICIENT from CT_PER_PerformanceLevel where CFLEVEL=isnull(FREVISEGRADELEVEL,FGRADELEVEL)), ");
- sqlpl.append(" CFPERMINCOEFFICIENT=(select CFMINCOEFFICIENT from CT_PER_PerformanceLevel where CFLEVEL=isnull(FREVISEGRADELEVEL,FGRADELEVEL)) ");
- sqlpl.append(" where FEVAPLANID =? and FPERIODID =? and fid in ( ");
- sqlpl.append(selsessParamId);
- sqlpl.append(" ) ");
- idsessList.add(0, planId);
- idsessList.add(1, period);
- DbUtil.execute(ctx, sqlpl.toString(), idsessList.toArray());
- idList.removeAll(idsessList);
- if (idList.size()>0){
- addBatchMessageTips(idList,"当前已经审核通过获取更新失败", batchMessageTipsHeader);
- }
- }catch (Exception e){
- e.printStackTrace();
- addBatchMessageTips(idList, e.getMessage(), batchMessageTipsHeader);
- }
- }
- @Override
- protected void setInitData(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, Map<String, Object> initData) throws SHRWebException {
- super.setInitData(request, response, modelMap, initData);
- Context ctx = SHRContext.getInstance().getContext();
- try {
- Map<String, Object> custom_params = (Map<String, Object>) initData.get("custom_params");
- String perfPlanId = (String) custom_params.get("perfPlanId");
- StringBuilder planSql = new StringBuilder();
- planSql.append(" select pp.fid,pp.CFPerobjectIdId,ppm.CFPROJECTNAME from T_EVA_PerfPlan pp ");
- planSql.append(" left join CT_PRO_ProjectManagement ppm on ppm.fid = pp.CFPerobjectIdId where pp.fid=? and pp.CFPerobjectIdId is not null");
- IRowSet rs = DbUtil.executeQuery(ctx, planSql.toString(), new Object[]{perfPlanId});
- if (rs.next()) {
- String perobjectId = rs.getString("CFPerobjectIdId");
- String projectName = rs.getString("CFPROJECTNAME");
- custom_params.put("projectName",projectName);
- custom_params.put("perobjectId",perobjectId);
- initData.put("perobjectId",perobjectId);
- initData.put("projectName",projectName);
- }else {
- custom_params.put("perobjectId","");
- custom_params.put("projectName","");
- initData.put("perobjectId","");
- initData.put("projectName","");
- }
- initData.put("performanceLevel",this.getPerformanceLevelByLevelAction(request,response,modelMap));
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- /**
- * 获取人员项目正态分布规则
- *
- * @param ctx
- * @param idList 非必填
- * @param batchMessage 非必填
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- public Map<String, Map<String, BigDecimal>> getProjectPerformPro(Context ctx, List<String> idList, Map<String, String> batchMessage) throws BOSException, SQLException {
- //获取正态分布规则
- Map<String, Map<String, BigDecimal>> orgLevelMap = Maps.newHashMap();
- PerformProTeamCollection proCollection = PerformProTeamFactory.getLocalInstance(ctx).getPerformProTeamCollection(" where status=1 ");
- if (proCollection.size() == 1) {
- StringBuilder orgPerSql = new StringBuilder();
- orgPerSql.append(" select fp.fid,fpe.CFS,fpe.CFA,fpe.CFB,fpe.CFC,fpe.CFD,fpe.CFORGPERFORMTYPE ");
- orgPerSql.append(" from CT_PF_PerformProTeam fp ");
- orgPerSql.append(" left join CT_PF_PerformProTeamEntry fpe on fp.fid=fpe.FPARENTID ");
- orgPerSql.append(" where fp.CFSTATUS = 1 ");
- orgPerSql.append(" order by fp.FCREATETIME ");
- IRowSet rs = DbUtil.executeQuery(ctx, orgPerSql.toString());
- while (rs.next()) {
- Map<String, BigDecimal> objectMap = Maps.newHashMap();
- String type = rs.getString("CFORGPERFORMTYPE");
- objectMap.put("S", rs.getBigDecimal("CFS"));
- objectMap.put("A", rs.getBigDecimal("CFA"));
- objectMap.put("B", rs.getBigDecimal("CFB"));
- objectMap.put("C", rs.getBigDecimal("CFC"));
- objectMap.put("D", rs.getBigDecimal("CFD"));
- orgLevelMap.put(type, objectMap);
- }
- } else if (proCollection.size() > 1) {
- if (null != batchMessage && null != idList) {
- for (String key : idList) {
- batchMessage.put(key, "存在多个正态分布规则,请检查!");
- }
- }
- } else {
- if (null != batchMessage && null != idList) {
- for (String key : idList) {
- batchMessage.put(key, "不存在正态分布规则,请检查!");
- }
- }
- }
- return orgLevelMap;
- }
- /**
- * 获取项目分组人数
- *
- * @param ctx
- * @param period
- * @param planId
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- public Map<String, Map<String, String>> getProjectLevelCountMap(Context ctx, String period, String planId) throws BOSException, SQLException {
- // StringBuilder paramSql = new StringBuilder("''");
- // for (int i = 0; i < idList.size(); i++) {
- // paramSql.append(",?");
- // }
- //获取组织分组人数
- StringBuilder orgSql = new StringBuilder();
- orgSql.append(" select pp.CFPerobjectIdId, ers.FPERIODID,ers.FEVAPLANID,count(*) alls from T_EVA_EvaResultSummary ers ");
- orgSql.append(" left join T_EVA_PerfPlan pp on pp.fid=ers.FEVAPLANID ");
- // orgSql.append(paramSql);
- // orgSql.append(" ) ");
- orgSql.append(" where FPERIODID=? and FEVAPLANID=? ");
- orgSql.append(" group by pp.CFPerobjectIdId, ers.FPERIODID, ers.FEVAPLANID ");
- IRowSet rs = DbUtil.executeQuery(ctx, orgSql.toString(), new String[]{period, planId});
- Map<String, Map<String, String>> orgLevelMap = Maps.newHashMap();
- while (rs.next()) {
- Map<String, String> map = Maps.newHashMap();
- String CFPerobjectIdId = rs.getString("CFPerobjectIdId");
- String FPERIODID = rs.getString("FPERIODID");
- String FEVAPLANID = rs.getString("FEVAPLANID");
- String key = CFPerobjectIdId + FPERIODID + FEVAPLANID;
- map.put("CFPerobjectIdId", CFPerobjectIdId);
- map.put("FPERIODID", FPERIODID);
- map.put("FEVAPLANID", FEVAPLANID);
- //当前周期,当前考核计划,当前组织下的总人数
- map.put("alls", rs.getString("alls"));
- orgLevelMap.put(key, map);
- }
- return orgLevelMap;
- }
- /**
- * 获取人员的等级项目分组
- *
- * @param ctx
- * @param period
- * @param planId
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- public Map<String, Map<String, String>> getPersonProjectLevelLensMap(Context ctx, String period, String planId) throws BOSException, SQLException {
- Map<String, Map<String, String>> personLevelMap = Maps.newHashMap();
- StringBuilder orgLevelSql = new StringBuilder();
- orgLevelSql.append(" select count(*) lens,CFPerobjectIdId,FPERIODID,FEVAPLANID,revLevel from ( ");
- orgLevelSql.append(" select pp.CFPerobjectIdId,s1.FPERIODID,s1.FEVAPLANID,isnull(s1.FREVISEGRADELEVEL,s1.FGRADELEVEL) revLevel ");
- orgLevelSql.append(" from T_EVA_EvaResultSummary s1 ");
- orgLevelSql.append(" left join T_EVA_PerfPlan pp on pp.fid=s1.FEVAPLANID ");
- orgLevelSql.append(" where s1.FPERIODID=? and s1.FEVAPLANID=? ");
- orgLevelSql.append(" ) t ");
- orgLevelSql.append(" group by CFPerobjectIdId, FPERIODID,FEVAPLANID,revLevel ");
- IRowSet orgLevelRs = DbUtil.executeQuery(ctx, orgLevelSql.toString(), new String[]{period, planId});
- while (orgLevelRs.next()) {
- Map<String, String> map = Maps.newHashMap();
- String CFPerobjectIdId = orgLevelRs.getString("CFPerobjectIdId");
- String FPERIODID = orgLevelRs.getString("FPERIODID");
- String FEVAPLANID = orgLevelRs.getString("FEVAPLANID");
- String revLevel = orgLevelRs.getString("revLevel");
- String key = CFPerobjectIdId + FPERIODID + FEVAPLANID + revLevel;
- map.put("lens", orgLevelRs.getString("lens"));
- map.put("CFPerobjectIdId", CFPerobjectIdId);
- map.put("FPERIODID", FPERIODID);
- map.put("FEVAPLANID", FEVAPLANID);
- map.put("revLevel", orgLevelRs.getString("revLevel"));
- personLevelMap.put(key, map);
- }
- return personLevelMap;
- }
- public Map<String, String> beforeAuditProjectEvaResut(Context ctx, String period, String planId, List<String> idList) throws BOSException, SQLException {
- Map<String, String> batchMessage = Maps.newHashMap();
- StringBuilder selParamId = new StringBuilder("''");
- for (int i = 0; i < idList.size(); i++) {
- selParamId.append(",?");
- }
- //获取正态分布规则
- Map<String, Map<String, BigDecimal>> personPerformMap = this.getProjectPerformPro(ctx, idList, batchMessage);
- if (null != personPerformMap && personPerformMap.size() > 0) {
- //获取组织分组人数
- Map<String, Map<String, String>> orgLevelMap = this.getProjectLevelCountMap(ctx, period, planId);
- //获取人员等级分组
- Map<String, Map<String, String>> personLevelMap = this.getPersonProjectLevelLensMap(ctx, period, planId);
- StringBuilder sel = new StringBuilder();
- sel.append(" select s1.fid,ppm.CFPROJECTNAME, pp.CFPerobjectIdId, s1.FPERIODID, s1.FEVAPLANID,");
- sel.append(" isnull(s1.FREVISEGRADELEVEL,s1.FGRADELEVEL) revLevel,s1.CFProjectLevel ");
- sel.append(" from T_EVA_EvaResultSummary s1 ");
- sel.append(" left join T_EVA_PerfPlan pp on pp.fid = s1.FEVAPLANID ");
- sel.append(" left join CT_PRO_ProjectManagement ppm on ppm.fid = pp.CFPerobjectIdId ");
- sel.append(" where s1.fid in (");
- sel.append(selParamId);
- sel.append(") ");
- IRowSet rs = DbUtil.executeQuery(ctx, sel.toString(), idList.toArray());
- BigDecimal big100 = new BigDecimal(100);
- while (rs.next()) {
- String fid = rs.getString("fid");
- String CFPROJECTNAME = rs.getString("CFPROJECTNAME");
- String CFPerobjectIdId = rs.getString("CFPerobjectIdId");
- String FPERIODID = rs.getString("FPERIODID");
- String FEVAPLANID = rs.getString("FEVAPLANID");
- String revLevel = rs.getString("revLevel");
- if (StrUtil.isBlank(revLevel)) {
- //String msg = String.format("%s绩效等级为空", CFPROJECTNAME);
- batchMessage.put(fid, "绩效等级为空,请维护后再审批");
- continue;
- }
- String key = CFPerobjectIdId + FPERIODID + FEVAPLANID;
- //项目绩效等级
- String projectLevel = rs.getString("CFProjectLevel");
- if (StrUtil.isBlank(projectLevel)) {
- String msg = String.format("%s项目绩效等级为空", CFPROJECTNAME);
- batchMessage.put(fid, msg);
- continue;
- }
- //该组织的组织绩效等级的正态分布
- Map<String, BigDecimal> personPerform = personPerformMap.get(projectLevel);
- if (null == personPerform) {
- String msg = String.format("没有找到%s项目绩效等级%s的正态分布规则", CFPROJECTNAME, projectLevel);
- batchMessage.put(fid, msg);
- continue;
- }
- //获取该组织下的人员总数
- Map<String, String> orgMap = orgLevelMap.get(key);
- //获取该组织下的人员各个绩效等级分组汇总
- // String keyRevLevel = FADMINORGUNITID + FPERIODID + FEVAPLANID + revLevel;
- // Map<String, String> personMap = personLevelMap.get(keyRevLevel);
- //已占用数
- BigDecimal lens = BigDecimal.ZERO;
- //获取等级D人数
- String keyRevLevelD = CFPerobjectIdId + FPERIODID + FEVAPLANID + "D";
- Map<String, String> personMapD = personLevelMap.get(keyRevLevelD);
- BigDecimal dLens = BigDecimal.ZERO;
- if (null != personMapD) {
- dLens = new BigDecimal(personMapD.get("lens"));
- }
- //获取等级C人数
- String keyRevLevelC = CFPerobjectIdId + FPERIODID + FEVAPLANID + "C";
- Map<String, String> personMapC = personLevelMap.get(keyRevLevelC);
- BigDecimal cLens = BigDecimal.ZERO;
- if (null != personMapC) {
- cLens = new BigDecimal(personMapC.get("lens"));
- }
- //获取等级B人数
- String keyRevLevelB = CFPerobjectIdId + FPERIODID + FEVAPLANID + "B";
- Map<String, String> personMapB = personLevelMap.get(keyRevLevelB);
- BigDecimal bLens = BigDecimal.ZERO;
- if (null != personMapB) {
- bLens = new BigDecimal(personMapB.get("lens"));
- }
- //获取等级A人数
- String keyRevLevelA = CFPerobjectIdId + FPERIODID + FEVAPLANID + "A";
- Map<String, String> personMapA = personLevelMap.get(keyRevLevelA);
- BigDecimal aLens = BigDecimal.ZERO;
- if (null != personMapA) {
- aLens = new BigDecimal(personMapA.get("lens"));
- }
- //获取等级S人数
- String keyRevLevelS = CFPerobjectIdId + FPERIODID + FEVAPLANID + "S";
- Map<String, String> personMapS = personLevelMap.get(keyRevLevelS);
- BigDecimal sLens = BigDecimal.ZERO;
- if (null != personMapS) {
- sLens = new BigDecimal(personMapS.get("lens"));
- }
- //总人数
- BigDecimal alls = new BigDecimal(orgMap.get("alls"));
- //当前等级正态分布比例
- BigDecimal scale = personPerform.get(revLevel);
- //创建每个等级的人数列表
- Map<String, BigDecimal> bigsList = Maps.newHashMap();
- BigDecimal bigS = ((personPerform.get("S").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("S", bigS);
- BigDecimal bigA = ((personPerform.get("A").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("A", bigA);
- BigDecimal bigB = ((personPerform.get("B").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("B", bigB);
- BigDecimal bigC = ((personPerform.get("C").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("C", bigC);
- BigDecimal bigD = ((personPerform.get("D").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("D", bigD);
- BigDecimal personSize = BigDecimal.ZERO;
- BigDecimal personMaxSize = BigDecimal.ZERO;
- List<String> ldrs = Lists.newArrayList();
- //进行额度加减
- switch (revLevel) {
- case "D":
- personSize = personSize.add(bigD).subtract(dLens);
- lens = lens.add(dLens);
- if(!"D".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigD));
- }else {
- personMaxSize = personMaxSize.add((bigD).subtract(dLens));
- }
- ldrs.add("D最多%D人,");
- bigsList.remove("D");
- case "C":
- personSize = personSize.add(bigC).subtract(cLens);
- lens = lens.add(cLens);
- if("C".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigC));
- }else {
- personMaxSize = personMaxSize.add((bigC).subtract(cLens));
- }
- ldrs.add("C最多%C人,");
- bigsList.remove("C");
- case "B":
- personSize = personSize.add(bigB).subtract(bLens);
- lens = lens.add(bLens);
- if("B".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigB));
- }else {
- personMaxSize = personMaxSize.add((bigB).subtract(bLens));
- }
- ldrs.add("B最多%B人,");
- bigsList.remove("B");
- case "A":
- personSize = personSize.add(bigA).subtract(aLens);
- lens = lens.add(aLens);
- if("A".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigA));
- }else {
- personMaxSize = personMaxSize.add((bigA).subtract(aLens));
- }
- ldrs.add("A最多%A人,");
- bigsList.remove("A");
- case "S":
- personSize = personSize.add(bigS).subtract(sLens);
- lens = lens.add(sLens);
- if("S".equals(revLevel)) {
- personMaxSize = personMaxSize.add(((bigS)));
- }else {
- personMaxSize = personMaxSize.add(((bigS).subtract(sLens)));
- }
- ldrs.add("S最多%S人,");
- bigsList.remove("S");
- }
- //String ld = "当前周期绩效等级为%l的人数为%maxs人,S最多%S人,A最多%A人,B最多%B人,C最多%C人,D最多%D人,请修正后重新审核.";
- String ld = "当前周期绩效等级为%l的人数为%maxs人,";
- if (personSize.compareTo(BigDecimal.ZERO) < 0) {
- String ldrstr = ldrs.get(0);
- // ldrs.remove(0);
- // for (String ldr : ldrs) {
- // ld = ld.replace(ldr,"");
- // }
- ld += ldrstr;
- ld = ld.replace("%l", revLevel);
- ld = ld.replace("%maxs", lens.toPlainString());
- ld = ld.replace("%" + revLevel, (personMaxSize.compareTo(BigDecimal.ZERO)>0?personMaxSize:BigDecimal.ZERO).toPlainString());
- // for(Map.Entry<String,BigDecimal> entry : bigsList.entrySet()){
- // BigDecimal bigv = entry.getValue();
- // String bigk = entry.getKey();
- // ld=ld.replace("%"+bigk,bigv.toPlainString());
- // }
- ld += "请修正后重新审核.";
- batchMessage.put(fid, ld);
- }
- }
- }
- return batchMessage;
- }
- /**
- * 获取人员组织正态分布规则
- *
- * @param ctx
- * @param idList 非必填
- * @param batchMessage 非必填
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- public Map<String, Map<String, BigDecimal>> getPersonPerformPro(Context ctx, List<String> idList, Map<String, String> batchMessage) throws BOSException, SQLException {
- //获取正态分布规则
- Map<String, Map<String, BigDecimal>> orgLevelMap = Maps.newHashMap();
- PersonPerformProCollection proCollection = PersonPerformProFactory.getLocalInstance(ctx).getPersonPerformProCollection(" where state=1 ");
- if (proCollection.size() == 1) {
- StringBuilder orgPerSql = new StringBuilder();
- orgPerSql.append(" select fp.fid,fpe.CFS,fpe.CFA,fpe.CFB,fpe.CFC,fpe.CFD,fpe.CFORGPERFORMTYPE ");
- orgPerSql.append(" from CT_PF_PersonPerformPro fp ");
- orgPerSql.append(" left join CT_PF_PersonPerformProEntry fpe on fp.fid=fpe.FPARENTID ");
- orgPerSql.append(" where fp.CFSTATE = 1 ");
- orgPerSql.append(" order by fp.FCREATETIME ");
- IRowSet rs = DbUtil.executeQuery(ctx, orgPerSql.toString());
- while (rs.next()) {
- Map<String, BigDecimal> objectMap = Maps.newHashMap();
- String type = rs.getString("CFORGPERFORMTYPE");
- objectMap.put("S", rs.getBigDecimal("CFS"));
- objectMap.put("A", rs.getBigDecimal("CFA"));
- objectMap.put("B", rs.getBigDecimal("CFB"));
- objectMap.put("C", rs.getBigDecimal("CFC"));
- objectMap.put("D", rs.getBigDecimal("CFD"));
- orgLevelMap.put(type, objectMap);
- }
- } else if (proCollection.size() > 1) {
- if (null != batchMessage && null != idList) {
- for (String key : idList) {
- batchMessage.put(key, "存在多个正态分布规则,请检查!");
- }
- }
- } else {
- if (null != batchMessage && null != idList) {
- for (String key : idList) {
- batchMessage.put(key, "不存在正态分布规则,请检查!");
- }
- }
- }
- return orgLevelMap;
- }
- /**
- * 获取组织分组人数
- *
- * @param ctx
- * @param period
- * @param planId
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- public Map<String, Map<String, String>> getOrgLevelCountMap(Context ctx, String period, String planId) throws BOSException, SQLException {
- // StringBuilder paramSql = new StringBuilder("''");
- // for (int i = 0; i < idList.size(); i++) {
- // paramSql.append(",?");
- // }
- //获取组织分组人数
- StringBuilder orgSql = new StringBuilder();
- orgSql.append(" select FADMINORGUNITID, FPERIODID, FEVAPLANID,count( *) alls from ( ");
- orgSql.append(" select ( ");
- orgSql.append(" select top 1 adcount.fid from T_ORG_Admin child ");
- orgSql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
- orgSql.append(" where child.fid=ers.FADMINORGUNITID ");
- orgSql.append(" and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
- orgSql.append(" order by adcount.fsortcode) FADMINORGUNITID, ");
- orgSql.append(" ers.FPERIODID,ers.FEVAPLANID from T_EVA_EvaResultSummary ers ");
- orgSql.append(" where ers.FPERIODID=? and ers.FEVAPLANID=? ");
- orgSql.append(" ) t ");
- orgSql.append(" group by FADMINORGUNITID, FPERIODID, FEVAPLANID ");
- //orgSql.append(" select FADMINORGUNITID, FPERIODID,FEVAPLANID,count(*) alls from T_EVA_EvaResultSummary ");
- // orgSql.append("where fid in ( ");
- // orgSql.append(paramSql);
- // orgSql.append(" ) ");
- //orgSql.append(" where FPERIODID=? and FEVAPLANID=? ");
- //orgSql.append(" group by FADMINORGUNITID, FPERIODID, FEVAPLANID ");
- IRowSet rs = DbUtil.executeQuery(ctx, orgSql.toString(), new String[]{period, planId});
- Map<String, Map<String, String>> orgLevelMap = Maps.newHashMap();
- while (rs.next()) {
- Map<String, String> map = Maps.newHashMap();
- String FADMINORGUNITID = rs.getString("FADMINORGUNITID");
- String FPERIODID = rs.getString("FPERIODID");
- String FEVAPLANID = rs.getString("FEVAPLANID");
- String key = FADMINORGUNITID + FPERIODID + FEVAPLANID;
- map.put("FADMINORGUNITID", FADMINORGUNITID);
- map.put("FPERIODID", FPERIODID);
- map.put("FEVAPLANID", FEVAPLANID);
- //当前周期,当前考核计划,当前组织下的总人数
- map.put("alls", rs.getString("alls"));
- orgLevelMap.put(key, map);
- }
- return orgLevelMap;
- }
- /**
- * 获取人员的等级组织分组
- *
- * @param ctx
- * @param period
- * @param planId
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- public Map<String, Map<String, String>> getPersonLevelLensMap(Context ctx, String period, String planId) throws BOSException, SQLException {
- Map<String, Map<String, String>> personLevelMap = Maps.newHashMap();
- StringBuilder orgLevelSql = new StringBuilder();
- orgLevelSql.append(" select count(*) lens, ");
- orgLevelSql.append(" FADMINORGUNITID,FPERIODID,FEVAPLANID,revLevel from ( ");
- orgLevelSql.append(" select (select top 1 adcount.fid from T_ORG_Admin child ");
- orgLevelSql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
- orgLevelSql.append(" where child.fid=s1.FADMINORGUNITID ");
- orgLevelSql.append(" and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
- orgLevelSql.append(" order by adcount.fsortcode) FADMINORGUNITID,s1.FPERIODID,s1.FEVAPLANID,isnull(s1.FREVISEGRADELEVEL,s1.FGRADELEVEL) revLevel ");
- orgLevelSql.append(" from T_EVA_EvaResultSummary s1 ");
- orgLevelSql.append(" where s1.FPERIODID=? and s1.FEVAPLANID=? ");
- orgLevelSql.append(" ) t ");
- orgLevelSql.append(" group by FADMINORGUNITID, FPERIODID,FEVAPLANID,revLevel ");
- // orgLevelSql.append(" select count(*) lens,FADMINORGUNITID,FPERIODID,FEVAPLANID,revLevel from ( ");
- // orgLevelSql.append(" select s1.FADMINORGUNITID,s1.FPERIODID,s1.FEVAPLANID,isnull(s1.FREVISEGRADELEVEL,s1.FGRADELEVEL) revLevel from T_EVA_EvaResultSummary s1 ");
- // orgLevelSql.append(" where s1.FPERIODID=? and s1.FEVAPLANID=? ");
- // orgLevelSql.append(" ) t ");
- // orgLevelSql.append(" group by FADMINORGUNITID, FPERIODID,FEVAPLANID,revLevel ");
- IRowSet orgLevelRs = DbUtil.executeQuery(ctx, orgLevelSql.toString(), new String[]{period, planId});
- while (orgLevelRs.next()) {
- Map<String, String> map = Maps.newHashMap();
- String FADMINORGUNITID = orgLevelRs.getString("FADMINORGUNITID");
- String FPERIODID = orgLevelRs.getString("FPERIODID");
- String FEVAPLANID = orgLevelRs.getString("FEVAPLANID");
- String revLevel = orgLevelRs.getString("revLevel");
- String key = FADMINORGUNITID + FPERIODID + FEVAPLANID + revLevel;
- map.put("lens", orgLevelRs.getString("lens"));
- map.put("FADMINORGUNITID", FADMINORGUNITID);
- map.put("FPERIODID", FPERIODID);
- map.put("FEVAPLANID", FEVAPLANID);
- map.put("revLevel", orgLevelRs.getString("revLevel"));
- personLevelMap.put(key, map);
- }
- return personLevelMap;
- }
- /**
- * 根据上季度的组织等级,校验当前周期,当前考核计划,所选员工的所属组织的员工绩效等级分布校验
- *
- * @param request
- * @param response
- * @param modelMap
- * @param batchMessageTipsHeader
- * @throws SHRWebException
- */
- public void beforeAuditEvaResutAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- String ids = (String) request.getAttribute("billId");
- String period = (String) request.getParameter("period");
- String planId = (String) request.getParameter("planId");
- if (ids == null) {
- throw new ShrWebBizException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- }
- try {
- List<String> idList = Lists.newArrayList();
- Set<String> idSet = Sets.newHashSet(idList);
- for (String id : ids.split(",")) {
- idList.add(id);
- }
- StringBuilder planSql = new StringBuilder();
- planSql.append("select fid,CFPerobjectIdId from T_EVA_PerfPlan where fid=? and CFPerobjectIdId is not null ");
- IRowSet rs = DbUtil.executeQuery(ctx, planSql.toString(), new Object[]{planId});
- if (rs.next()) {
- String CFPerobjectIdId = rs.getString("CFPerobjectIdId");
- Map<String, String> batchMessage = this.beforeAuditProjectEvaResut(ctx, period, planId, idList);
- if (null != batchMessage && batchMessage.size() > 0) {
- for (Map.Entry<String, String> entry : batchMessage.entrySet()) {
- addBatchMessageTip(entry.getKey(), entry.getValue(), batchMessageTipsHeader);
- idSet.remove(entry.getKey());
- }
- }
- } else {
- Map<String, String> batchMessage = this.beforeAuditEvaResut(ctx, period, planId, idList);
- if (null != batchMessage && batchMessage.size() > 0) {
- for (Map.Entry<String, String> entry : batchMessage.entrySet()) {
- addBatchMessageTip(entry.getKey(), entry.getValue(), batchMessageTipsHeader);
- idSet.remove(entry.getKey());
- }
- }
- //addBatchMessageSuccessTips(idSet,"验证成功",batchMessageTipsHeader);
- }
- this.setSuccessMessage("验证成功");
- } catch (Exception e) {
- e.printStackTrace();
- throw new ShrWebBizException(e);
- }
- }
- public Map<String, String> beforeAuditEvaResut(Context ctx, String period, String planId, List<String> idList) throws BOSException, SQLException {
- Map<String, String> batchMessage = Maps.newHashMap();
- StringBuilder selParamId = new StringBuilder("''");
- for (int i = 0; i < idList.size(); i++) {
- selParamId.append(",?");
- }
- //获取正态分布规则
- Map<String, Map<String, BigDecimal>> personPerformMap = this.getPersonPerformPro(ctx, idList, batchMessage);
- if (null != personPerformMap && personPerformMap.size() > 0) {
- //获取组织分组人数
- Map<String, Map<String, String>> orgLevelMap = this.getOrgLevelCountMap(ctx, period, planId);
- //获取人员等级分组
- Map<String, Map<String, String>> personLevelMap = this.getPersonLevelLensMap(ctx, period, planId);
- StringBuilder sel = new StringBuilder();
- sel.append(" select ers.fid,ers.FADMINORGNAME, ( ");
- sel.append(" select top 1 adcount.fid from T_ORG_Admin child ");
- sel.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
- sel.append(" where child.fid=ers.FADMINORGUNITID ");
- sel.append(" and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
- sel.append(" order by adcount.fsortcode) FADMINORGUNITID, ers.FPERIODID, ers.FEVAPLANID,isnull(ers.FREVISEGRADELEVEL, ers.FGRADELEVEL) revLevel,ers.CFOrgLevel ");
- sel.append(" from T_EVA_EvaResultSummary ers where ers.fid in (");
- //sel.append("select fid,FADMINORGNAME, FADMINORGUNITID, FPERIODID, FEVAPLANID,isnull( FREVISEGRADELEVEL, FGRADELEVEL) revLevel,CFOrgLevel from T_EVA_EvaResultSummary where fid in (");
- sel.append(selParamId);
- sel.append(") ");
- IRowSet rs = DbUtil.executeQuery(ctx, sel.toString(), idList.toArray());
- BigDecimal big100 = new BigDecimal(100);
- while (rs.next()) {
- String fid = rs.getString("fid");
- String FADMINORGNAME = rs.getString("FADMINORGNAME");
- String FADMINORGUNITID = rs.getString("FADMINORGUNITID");
- String FPERIODID = rs.getString("FPERIODID");
- String FEVAPLANID = rs.getString("FEVAPLANID");
- String revLevel = rs.getString("revLevel");
- if (StrUtil.isBlank(revLevel)) {
- //String msg = String.format("%s绩效等级为空", CFPROJECTNAME);
- batchMessage.put(fid, "绩效等级为空,请维护后再审批");
- continue;
- }
- String key = FADMINORGUNITID + FPERIODID + FEVAPLANID;
- //上季度组织绩效等级
- String orgLevel = rs.getString("CFOrgLevel");
- if (null == orgLevel) {
- String msg = String.format("%s上季度组织绩效等级为空", FADMINORGNAME);
- batchMessage.put(fid, msg);
- continue;
- }
- //该组织的组织绩效等级的正态分布
- Map<String, BigDecimal> personPerform = personPerformMap.get(orgLevel);
- if (null == personPerform) {
- String msg = String.format("没有找到%s上季度组织绩效等级%s的正态分布规则", FADMINORGNAME, orgLevel);
- batchMessage.put(fid, msg);
- continue;
- }
- //获取该组织下的人员总数
- Map<String, String> orgMap = orgLevelMap.get(key);
- //获取该组织下的人员各个绩效等级分组汇总
- // String keyRevLevel = FADMINORGUNITID + FPERIODID + FEVAPLANID + revLevel;
- // Map<String, String> personMap = personLevelMap.get(keyRevLevel);
- //已占用数
- BigDecimal lens = BigDecimal.ZERO;
- //获取等级D人数
- String keyRevLevelD = FADMINORGUNITID + FPERIODID + FEVAPLANID + "D";
- Map<String, String> personMapD = personLevelMap.get(keyRevLevelD);
- BigDecimal dLens = BigDecimal.ZERO;
- if (null != personMapD) {
- dLens = new BigDecimal(personMapD.get("lens"));
- }
- //获取等级C人数
- String keyRevLevelC = FADMINORGUNITID + FPERIODID + FEVAPLANID + "C";
- Map<String, String> personMapC = personLevelMap.get(keyRevLevelC);
- BigDecimal cLens = BigDecimal.ZERO;
- if (null != personMapC) {
- cLens = new BigDecimal(personMapC.get("lens"));
- }
- //获取等级B人数
- String keyRevLevelB = FADMINORGUNITID + FPERIODID + FEVAPLANID + "B";
- Map<String, String> personMapB = personLevelMap.get(keyRevLevelB);
- BigDecimal bLens = BigDecimal.ZERO;
- if (null != personMapB) {
- bLens = new BigDecimal(personMapB.get("lens"));
- }
- //获取等级A人数
- String keyRevLevelA = FADMINORGUNITID + FPERIODID + FEVAPLANID + "A";
- Map<String, String> personMapA = personLevelMap.get(keyRevLevelA);
- BigDecimal aLens = BigDecimal.ZERO;
- if (null != personMapA) {
- aLens = new BigDecimal(personMapA.get("lens"));
- }
- //获取等级S人数
- String keyRevLevelS = FADMINORGUNITID + FPERIODID + FEVAPLANID + "S";
- Map<String, String> personMapS = personLevelMap.get(keyRevLevelS);
- BigDecimal sLens = BigDecimal.ZERO;
- if (null != personMapS) {
- sLens = new BigDecimal(personMapS.get("lens"));
- }
- //总人数
- BigDecimal alls = new BigDecimal(orgMap.get("alls"));
- //当前等级正态分布比例
- BigDecimal scale = personPerform.get(revLevel);
- //创建每个等级的人数列表
- Map<String, BigDecimal> bigsList = Maps.newHashMap();
- BigDecimal bigS = ((personPerform.get("S").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("S", bigS);
- BigDecimal bigA = ((personPerform.get("A").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("A", bigA);
- BigDecimal bigB = ((personPerform.get("B").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("B", bigB);
- BigDecimal bigC = ((personPerform.get("C").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("C", bigC);
- BigDecimal bigD = ((personPerform.get("D").divide(big100, BigDecimal.ROUND_HALF_UP, BigDecimal.ROUND_HALF_UP)).multiply(alls).setScale(0, BigDecimal.ROUND_UP));
- bigsList.put("D", bigD);
- BigDecimal personSize = BigDecimal.ZERO;
- BigDecimal personMaxSize = BigDecimal.ZERO;
- List<String> ldrs = Lists.newArrayList();
- //进行额度加减
- switch (revLevel) {
- case "D":
- personSize = personSize.add(bigD).subtract(dLens);
- lens = lens.add(dLens);
- if("D".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigD));
- }else {
- personMaxSize = personMaxSize.add((bigD).subtract(dLens));
- }
- ldrs.add("D最多%D人,");
- bigsList.remove("D");
- case "C":
- personSize = personSize.add(bigC).subtract(cLens);
- lens = lens.add(cLens);
- if("C".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigC) );
- }else {
- personMaxSize = personMaxSize.add((bigC).subtract(cLens));
- }
- ldrs.add("C最多%C人,");
- bigsList.remove("C");
- case "B":
- personSize = personSize.add(bigB).subtract(bLens);
- lens = lens.add(bLens);
- if("B".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigB) );
- }else {
- personMaxSize = personMaxSize.add((bigB).subtract(bLens));
- }
- ldrs.add("B最多%B人,");
- bigsList.remove("B");
- case "A":
- personSize = personSize.add(bigA).subtract(aLens);
- lens = lens.add(aLens);
- if( "A".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigA));
- }else {
- personMaxSize = personMaxSize.add((bigA).subtract(aLens));
- }
- ldrs.add("A最多%A人,");
- bigsList.remove("A");
- case "S":
- personSize = personSize.add(bigS).subtract(sLens);
- lens = lens.add(sLens);
- if("S".equals(revLevel)) {
- personMaxSize = personMaxSize.add((bigS));
- }else {
- personMaxSize = personMaxSize.add((bigS).subtract(sLens));
- }
- ldrs.add("S最多%S人,");
- bigsList.remove("S");
- }
- //String ld = "当前周期绩效等级为%l的人数为%maxs人,S最多%S人,A最多%A人,B最多%B人,C最多%C人,D最多%D人,请修正后重新审核.";
- String ld = "当前周期绩效等级为%l的人数为%maxs人,";
- if (personSize.compareTo(BigDecimal.ZERO) < 0) {
- String ldrstr = ldrs.get(0);
- // ldrs.remove(0);
- // for (String ldr : ldrs) {
- // ld = ld.replace(ldr,"");
- // }
- ld += ldrstr;
- ld = ld.replace("%l", revLevel);
- ld = ld.replace("%maxs", lens.toPlainString());
- ld = ld.replace("%" + revLevel, (personMaxSize.compareTo(BigDecimal.ZERO)>0?personMaxSize:BigDecimal.ZERO).toPlainString());
- // for(Map.Entry<String,BigDecimal> entry : bigsList.entrySet()){
- // BigDecimal bigv = entry.getValue();
- // String bigk = entry.getKey();
- // ld=ld.replace("%"+bigk,bigv.toPlainString());
- // }
- ld += "请修正后重新审核.";
- batchMessage.put(fid, ld);
- }
- }
- }
- return batchMessage;
- }
- @Override
- public void auditEvaResutAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
- super.auditEvaResutAction(request, response, modelMap, batchMessageTipsHeader);
- }
- /**
- * 获取上季度组织等级批量
- *
- * @description:
- * @author: lhbj
- * @date: 2025/1/10 18:18
- * @param: null
- * @return:null
- **/
- public void bindDep_OR_ProjectBatchAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- String ids = (String) request.getAttribute("billId");
- String period = (String) request.getParameter("period");
- String planId = (String) request.getParameter("planId");
- if (ids == null) {
- throw new ShrWebBizException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- } else {
- try {
- StringBuilder planSql = new StringBuilder();
- planSql.append("select fid,CFPerobjectIdId from T_EVA_PerfPlan where fid=? and CFPerobjectIdId is not null ");
- IRowSet rs = DbUtil.executeQuery(ctx, planSql.toString(), new Object[]{planId});
- if (rs.next()) {
- this.bindProjectBatchAction(request, response, modelMap, batchMessageTipsHeader);
- } else {
- this.bindDepBatchAction(request, response, modelMap, batchMessageTipsHeader);
- }
- this.setSuccessMessage("验证成功");
- } catch (Exception e) {
- e.printStackTrace();
- throw new ShrWebBizException(e);
- }
- }
- }
- /**
- * 获取项目等级批量
- *
- * @description:
- * @author: lhbj
- * @date: 2025/1/10 18:18
- * @param: null
- * @return:null
- **/
- public void bindProjectBatchAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- String ids = (String) request.getAttribute("billId");
- if (ids == null) {
- throw new ShrWebBizException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- } else {
- try {
- List<String> idList = Lists.newArrayList();
- for (String id : ids.split(",")) {
- idList.add(id);
- }
- Set<String> idSet = Sets.newHashSet(idList);
- Map<String, String> map = this.bindProject(ctx, ids);
- for (Map.Entry<String, String> entry : map.entrySet()) {
- addBatchMessageTip(entry.getKey(), entry.getValue(), batchMessageTipsHeader);
- idSet.remove(entry.getKey());
- }
- //addBatchMessageSuccessTips(idSet,"验证成功",batchMessageTipsHeader);
- this.setSuccessMessage("验证成功");
- } catch (Exception e) {
- e.printStackTrace();
- throw new ShrWebBizException(e);
- }
- }
- }
- /**
- * 绑定项目等级
- *
- * @param ctx
- * @param ids
- * @return
- * @throws Exception
- */
- public Map<String, String> bindProject(Context ctx, String ids) throws Exception {
- Map<String, String> batchMessage = Maps.newHashMap();
- List<String> idList = Lists.newArrayList();
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
- if (ids == null) {
- throw new Exception(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- } else {
- try {
- StringBuffer sql = new StringBuffer();
- sql.append(" select ers.fid,pp.FPSTARTDATE,ers.FBILLSTATE,ers.FADMINORGUNITID,ers.FADMINORGNAME,pp.FYEAR,pp.FTIMEPERIOD, ");
- sql.append(" pp.FCYCLETYPE,pp.FPENDDATE,pp.FPSTARTDATE,ppn.CFPEROBJECTIDID,ppm.CFPROJECTNAME,pmm.CFEMPLOYEEID ");
- sql.append(" from T_EVA_EvaResultSummary ers ");
- sql.append(" left join T_EVA_PerfPlan ppn on ers.FEVAPLANID=ppn.fid ");
- sql.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
- sql.append(" left join CT_PRO_ProjectManagement ppm on ppn.CFPEROBJECTIDID=ppm.fid ");
- sql.append(" left join CT_PRO_MemberManagement pmm on ppm.fid=pmm.CFPROJECTMANAGEMENID and pmm.CFSTATE=1 ");
- sql.append(" and pmm.CFPTYPEID in( ");
- sql.append(" select fid from CT_PRO_ProjectType where FNUMBER='ProjectManager') ");
- sql.append(" and pmm.CFPROJECTROLEID in( ");
- sql.append(" select fid from CT_PRO_ProjectRole where FNUMBER ='HTY110') ");
- sql.append(" where pmm.CFEMPLOYEEID is not null and ers.fid in(''");
- for (String id : ids.split(",")) {
- idList.add(id);
- sql.append(",'").append(id).append("'");
- }
- sql.append(" ) ");
- IRowSet rsSql = DbUtil.executeQuery(ctx, sql.toString());
- List<String> sess = Lists.newArrayList();
- while (rsSql.next()) {
- String id = rsSql.getString("fid");
- String personid = rsSql.getString("CFEMPLOYEEID");
- String CFPROJECTNAME = rsSql.getString("CFPROJECTNAME");
- String perobjectid = rsSql.getString("CFPEROBJECTIDID");
- String FBILLSTATE = rsSql.getString("FBILLSTATE");
- if (!"3".equals(FBILLSTATE)) {
- StringBuffer sqlPro = new StringBuffer();
- sqlPro.append(" select isnull(ers.FREVISEGRADELEVEL,ers.FGRADELEVEL) FGRADELEVEL,ers.fid from ");
- sqlPro.append(" T_EVA_EvaResultSummary ers ");
- sqlPro.append(" left join T_EVA_PerfPlan ppn on ers.FEVAPLANID=ppn.fid ");
- sqlPro.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
- sqlPro.append(" where ers.FBILLSTATE='3' and ers.FPERSONID=? and ppn.CFPEROBJECTIDID=? ");
- sqlPro.append(" order by pp.FPENDDATE desc ");
- IRowSet rsPro = DbUtil.executeQuery(ctx, sqlPro.toString(), new String[]{personid, perobjectid});
- String FGRADELEVEL = "";
- if (rsPro.next()) {
- FGRADELEVEL = rsPro.getString("FGRADELEVEL");
- }
- if (StringUtils.isEmpty(FGRADELEVEL)) {
- batchMessage.put(id, "未找到当前" + CFPROJECTNAME + "项目匹配的绩效等级");
- } else {
- StringBuilder upd = new StringBuilder();
- upd.append("update T_EVA_EvaResultSummary set CFPROJECTLEVEL=? where fid=? ");
- DbUtil.execute(ctx, upd.toString(), new String[]{FGRADELEVEL, id});
- sess.add(id);
- }
- }else {
- batchMessage.put(id, "当前已经审核通过获取更新失败!");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- throw new Exception(e);
- }
- }
- return batchMessage;
- }
- /**
- * 获取上季度组织等级批量
- *
- * @description:
- * @author: lhbj
- * @date: 2025/1/10 18:18
- * @param: null
- * @return:null
- **/
- public void bindDepBatchAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- String ids = (String) request.getAttribute("billId");
- if (ids == null) {
- throw new ShrWebBizException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- } else {
- try {
- List<String> idList = Lists.newArrayList();
- for (String id : ids.split(",")) {
- idList.add(id);
- }
- Set<String> idSet = Sets.newHashSet(idList);
- Map<String, String> map = this.bindDep(ctx, ids);
- for (Map.Entry<String, String> entry : map.entrySet()) {
- addBatchMessageTip(entry.getKey(), entry.getValue(), batchMessageTipsHeader);
- idSet.remove(entry.getKey());
- }
- //addBatchMessageSuccessTips(idSet,"验证成功",batchMessageTipsHeader);
- this.setSuccessMessage("验证成功");
- } catch (Exception e) {
- e.printStackTrace();
- throw new ShrWebBizException(e);
- }
- }
- }
- /**
- * 绑定部门等级
- *
- * @param ctx
- * @param ids
- * @return
- * @throws Exception
- */
- public Map<String, String> bindDep(Context ctx, String ids) throws Exception {
- Map<String, String> batchMessage = Maps.newHashMap();
- List<String> idList = Lists.newArrayList();
- Map<String, String> id_orgIdMap = Maps.newHashMap();
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
- if (ids == null) {
- throw new Exception(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- } else {
- try {
- StringBuffer sql = new StringBuffer();
- sql.append(" select ers.fid,pp.FPSTARTDATE, ers.FBILLSTATE, ");
- sql.append(" (select top 1 adcount.fid from T_ORG_Admin child ");
- sql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
- sql.append(" where child.fid=ers.FADMINORGUNITID ");
- sql.append(" and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
- sql.append(" order by adcount.fsortcode) FADMINORGUNITID ");
- sql.append(" ,ers.FADMINORGNAME,pp.FYEAR,pp.FTIMEPERIOD, ");
- sql.append(" pp.FCYCLETYPE,pp.FPENDDATE,pp.FPSTARTDATE from ");
- sql.append(" T_EVA_EvaResultSummary ers ");
- sql.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
- sql.append(" where ers.fid in(''");
- for (String id : ids.split(",")) {
- idList.add(id);
- sql.append(",'").append(id).append("'");
- }
- sql.append(" ) ");
- IRowSet rsSql = DbUtil.executeQuery(ctx, sql.toString());
- boolean faist = true;
- Map<String, Object> cycleMap=null;
- Map<String, Object> cycleMap2=null;
- while (rsSql.next()) {
- String id = rsSql.getString("fid");
- String orgId = rsSql.getString("FADMINORGUNITID");
- IRowSet rs = DbUtil.executeQuery(ctx,"select fname_l2 from t_org_admin where fid='"+orgId+"'");
- String orgName = rsSql.getString("FADMINORGNAME");
- String orgName_l2=orgName;
- if(rs.next()) {
- orgName_l2=rs.getString("fname_l2");
- }
- String FBILLSTATE = rsSql.getString("FBILLSTATE");
- if (faist) {
- faist = false;
- int FCYCLETYPE = rsSql.getInt("FCYCLETYPE");
- Date FPENDDATE = rsSql.getDate("FPENDDATE");
- Date FPSTARTDATE = rsSql.getDate("FPSTARTDATE");
- cycleMap = this.getCycletype(sf.format(FPSTARTDATE), sf.format(FPENDDATE), EvalplanCycleTypeEnum.QUARTER_VALUE);
- cycleMap2 = this.getCycletype(sf.format(FPSTARTDATE), sf.format(FPENDDATE), EvalplanCycleTypeEnum.FULL_YEAR_VALUE);
- }
- id_orgIdMap.put(id, orgId + "!" + orgName_l2+"!"+FBILLSTATE);
- }
- List<String> sess = Lists.newArrayList();
- EvalplanCycleTypeEnum cycleTypeEnum = (EvalplanCycleTypeEnum) cycleMap.get("cycleType");
- LocalDate endDate = (LocalDate) cycleMap.get("endDate");
- LocalDate startDate = (LocalDate) cycleMap.get("startDate");
- int year = (int) cycleMap.get("year");
- int quarter = (int) cycleMap.get("quarter");
- EvalplanCycleTypeEnum cycleTypeEnum2 = (EvalplanCycleTypeEnum) cycleMap2.get("cycleType");
- LocalDate endDate2 = (LocalDate) cycleMap2.get("endDate");
- LocalDate startDate2 = (LocalDate) cycleMap2.get("startDate");
- int year2 = (int) cycleMap2.get("year");
- int quarter2 = (int) cycleMap2.get("quarter");
- Map<String, Map<String, String>> mapMap = this.getOrgEvaResultLevel(ctx, startDate, endDate, cycleTypeEnum,year,quarter);
- Map<String, Map<String, String>> mapMap2 = this.getOrgEvaResultLevel(ctx, startDate2, endDate2, cycleTypeEnum2,year2,quarter2);
- for (Map.Entry<String, String> ee : id_orgIdMap.entrySet()) {
- String[] orgs = ee.getValue().split("!");
- String orgId = orgs[0];
- String orgName = orgs[1];
- String FBILLSTATE = orgs[2];
- String id = ee.getKey();
- if (!"3".equals(FBILLSTATE)){
- Map<String, String> orgLevelMap = mapMap.get(orgId);
- if (null == orgLevelMap) {
- orgLevelMap=mapMap2.get(orgId);
- }
- if (null == orgLevelMap) {
- batchMessage.put(id, "未找到当前" + orgName + "部门匹配的组织绩效等级");
- } else {
- String orgLevel = orgLevelMap.get("lastgradeLevel");
- StringBuilder upd = new StringBuilder();
- upd.append("update T_EVA_EvaResultSummary set CFOrgLevel=?,CFOrgLevelEveID=? where fid=? ");
- DbUtil.execute(ctx, upd.toString(), new String[]{orgLevel, orgId, id});
- sess.add(id);
- }
- }else {
- batchMessage.put(id, "当前已经审核通过获取更新失败!");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- throw new Exception(e);
- }
- }
- return batchMessage;
- }
- public static Map<String, Object> getCycletype(String pstartdate, String penddate, int cycletype) {
- Map<String, Object> map = Maps.newHashMap();
- LocalDate startDate = LocalDate.parse(pstartdate, DateTimeFormatter.ISO_LOCAL_DATE);
- LocalDate endDate = LocalDate.parse(penddate, DateTimeFormatter.ISO_LOCAL_DATE);
- EvalplanCycleTypeEnum cycleTypeEnum = EvalplanCycleTypeEnum.getEnum(cycletype);
- if (EvalplanCycleTypeEnum.FULL_YEAR_VALUE == cycletype) {
- //周期为年度
- endDate = endDate.plusYears(-1);
- startDate = startDate.plusYears(-1);
- cycleTypeEnum = EvalplanCycleTypeEnum.FULL_YEAR;
- int month = startDate.getMonthValue();
- //获取为季度
- int quarter = (month - 1) / 3;
- int year = endDate.getYear();
- map.put("year", year);
- map.put("quarter", 1);
- } else if (EvalplanCycleTypeEnum.HALF_YEAR_VALUE == cycletype) {
- //周期为半年度
- endDate = endDate.plusMonths(-6);
- startDate = startDate.plusMonths(-6);
- cycleTypeEnum = EvalplanCycleTypeEnum.HALF_YEAR;
- int month = startDate.getMonthValue();
- //获取为季度
- int quarter = (month - 1) / 3;
- int year = endDate.getYear();
- if(0==quarter){
- year=year-1;
- quarter=4;
- }
- map.put("year", year);
- map.put("quarter", month<7?1:2);
- } else if (EvalplanCycleTypeEnum.QUARTER_VALUE == cycletype) {
- int month = startDate.getMonthValue();
- //获取为季度0~3季度
- int quarter = (month - 1) / 3;
- //当前季度为第一季度,则需取上一年度的季度
- int year = endDate.getYear();
- if(0==quarter){
- year=year-1;
- quarter=4;
- }
- Month endMonth = Month.of(quarter*3);
- endDate = LocalDate.of(year,endMonth,endMonth.length(endDate.isLeapYear()));
- Month startMonth = Month.of(endMonth.getValue()-2);
- startDate = LocalDate.of(year,startMonth,1);
- cycleTypeEnum = EvalplanCycleTypeEnum.QUARTER;
- map.put("year", year);
- map.put("quarter", quarter);
- } else if (EvalplanCycleTypeEnum.MONTHLY_VALUE == cycletype) {
- //获取为季度
- endDate = endDate.plusMonths(-1);
- startDate = startDate.plusMonths(-1);
- cycleTypeEnum = EvalplanCycleTypeEnum.MONTHLY;
- int month = startDate.getMonthValue();
- //获取为季度
- int quarter = (month - 1) / 3;
- int year = endDate.getYear();
- if(0==quarter){
- year=year-1;
- quarter=4;
- }
- map.put("year", year);
- map.put("quarter", quarter);
- }
- map.put("cycleType", cycleTypeEnum);
- map.put("endDate", endDate);
- map.put("startDate", startDate);
- return map;
- }
- /**
- * 获取上季度组织等级
- *
- * @description:
- * @author: lhbj
- * @date: 2025/1/10 18:18
- * @param: null
- * @return:null
- **/
- public void bindDepAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
- Context ctx = SHRContext.getInstance().getContext();
- String ids = this.getBillId(request);
- if (ids == null) {
- throw new ShrWebBizException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERR));
- } else {
- try {
- Map<String, String> map = this.bindDep(ctx, ids);
- this.writeSuccessData(map);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ShrWebBizException(e);
- }
- }
- }
- protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate,EvalplanCycleTypeEnum cycletype,int year,int quarter) throws BOSException, SQLException {
- //202404J
- String FPERIODNAME = "";
- if (EvalplanCycleTypeEnum.FULL_YEAR == cycletype) {
- FPERIODNAME=year+"M";
- } else if (EvalplanCycleTypeEnum.HALF_YEAR == cycletype) {
- FPERIODNAME=year+"0"+quarter+"H";
- } else if (EvalplanCycleTypeEnum.QUARTER == cycletype) {
- FPERIODNAME=year+"0"+quarter+"J";
- } else if (EvalplanCycleTypeEnum.MONTHLY == cycletype) {
- FPERIODNAME=year+(quarter>9?(""+quarter):("0"+quarter))+"M";
- }
- return this.getOrgEvaResultLevel(ctx, startDate, endDate, cycletype,FPERIODNAME,year,quarter);
- }
- protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate) throws BOSException, SQLException {
- return this.getOrgEvaResultLevel(ctx, startDate, endDate, EvalplanCycleTypeEnum.QUARTER,"",2000,1);
- }
- protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate, EvalplanCycleTypeEnum cycletype, String FPERIODNAME,int year,int quarter) throws BOSException, SQLException {
- Map<String, Map<String, String>> mapMap = Maps.newHashMap();
- StringBuffer selSql = new StringBuffer();
- selSql.append(" select oers.fid oersId, ");
- selSql.append(" oers.FADMINORGUNITID FADMINORGUNITID, ");
- selSql.append(" oers.FLASTGRADELEVEL,(case when ppd.fid is null ");
- selSql.append(" then (oers.FPERIODYEAR||'-01-'||'01')||'T'|| (oers.FPERIODYEAR||'-01-'||'01') ");
- selSql.append(" else (to_char(ppd.FPSTARTDATE,'yyyy-MM-dd')||'T'||to_char(ppd.FPENDDATE,'yyyy-MM-dd')) end) PERIOD ");
- selSql.append(" from T_EVA_OrgEvaResultSummary oers ");
- selSql.append(" left join T_EVA_PerfPeriod ppd on ppd.fid = oers.FPERIODID ");
- selSql.append(" where to_char(ppd.FPSTARTDATE,'yyyy-MM-dd') >= ? and to_char(ppd.FPENDDATE,'yyyy-MM-dd') <= ? ");
- selSql.append(" and ppd.FCYCLETYPE = ? and ppd.FREFSTATUS = 100 and oers.FBILLSTATE='3' ");
- selSql.append(" and oers.FADMINORGUNITID in( ");
- selSql.append(" select adcount.fid from T_ORG_Admin child ");
- selSql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
- selSql.append(" where child.fid=oers.FADMINORGUNITID and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
- selSql.append(" ) ");
- selSql.append(" UNION all ");
- selSql.append(" select fid oersId, ");
- selSql.append(" FADMINORGUNITID , ");
- selSql.append(" FLASTGRADELEVEL,(FPERIODYEAR||'-'||(FPERIODTIME*3-2)||'-'||'01')||'T'|| (FPERIODYEAR||'-'||(FPERIODTIME*3)||'-'||?) PERIOD ");
- selSql.append(" from T_EVA_OrgEvaResultSummary where FEVAPLANNAME='手工录入' ");
- selSql.append(" and FADMINORGUNITID in( ");
- selSql.append(" select adcount.fid from T_ORG_Admin child ");
- selSql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
- selSql.append(" where child.fid=FADMINORGUNITID and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
- selSql.append(" ) ");
- selSql.append(" and FPERIODTIMENUMBER like ? ");
- Month endMonth = Month.of(quarter*3);
- Year year1 = Year.of(year);
- int days = endMonth.length(year1.isLeap());
- String[] param = new String[]{startDate.format(DateTimeFormatter.ISO_LOCAL_DATE),
- endDate.format(DateTimeFormatter.ISO_LOCAL_DATE),
- String.valueOf(cycletype.getValue()),
- ((days > 9)? String.valueOf(days) : ("0"+String.valueOf(days)) ),
- (FPERIODNAME+"%")
- };
- IRowSet rs = DbUtil.executeQuery(ctx, selSql.toString(), param);
- int i = selSql.indexOf("?");
- selSql.replace(i, i + 1, param[0]);
- i = selSql.indexOf("?");
- selSql.replace(i, i + 1, param[1]);
- i = selSql.indexOf("?");
- selSql.replace(i, i + 1, param[2]);
- i = selSql.indexOf("?");
- selSql.replace(i, i + 1, param[3]);
- i = selSql.indexOf("?");
- selSql.replace(i, i + 1, param[4]);
- System.out.println(selSql);
- while (rs.next()) {
- Map<String, String> stringMap = Maps.newHashMap();
- String orgId = rs.getString("FADMINORGUNITID");
- String lastgradeLevel = rs.getString("FLASTGRADELEVEL");
- String period = rs.getString("PERIOD");
- stringMap.put("orgId", orgId);
- stringMap.put("lastgradeLevel", lastgradeLevel);
- stringMap.put("period", period);
- mapMap.put(orgId, stringMap);
- }
- return mapMap;
- }
- public static void main(String[] args) {
- List<String> idList = new ArrayList<>();
- idList.add("W");
- idList.add("A");
- idList.add("C");
- idList.add("B");
- idList.add("D");
- idList.add("S");
- System.out.println(idList);
- Collections.sort(idList);
- System.out.println(idList);
- BigDecimal personSize = BigDecimal.ZERO;
- List<BigDecimal> bigsList = Lists.newArrayList();
- BigDecimal bigD = BigDecimal.valueOf(1);
- bigsList.add(bigD);
- BigDecimal bigC = BigDecimal.valueOf(1);
- bigsList.add(bigC);
- BigDecimal bigB = BigDecimal.valueOf(1);
- bigsList.add(bigB);
- BigDecimal bigA = BigDecimal.valueOf(1);
- bigsList.add(bigA);
- BigDecimal bigS = BigDecimal.valueOf(1);
- bigsList.add(bigS);
- String ld = "S最多%s人,A最多%s人,B最多%s人,C最多%s人,D最多%s人,";
- List<String> ldrs = Lists.newArrayList();
- List<BigDecimal> bigs = Lists.newArrayList();
- switch ("B") {
- case "D":
- personSize = personSize.add(bigD);
- ldrs.add("D最多%s人,");
- bigsList.remove(bigD);
- case "C":
- personSize = personSize.add(bigC);
- ldrs.add("C最多%s人,");
- bigsList.remove(bigC);
- case "B":
- personSize = personSize.add(bigB);
- ldrs.add("B最多%s人,");
- bigsList.remove(bigB);
- case "A":
- personSize = personSize.add(bigA);
- ldrs.add("A最多%s人,");
- bigsList.remove(bigA);
- case "S":
- personSize = personSize.add(bigS);
- ldrs.add("S最多%s人,");
- bigsList.remove(bigS);
- }
- System.out.println(personSize);
- System.out.println(ldrs);
- ldrs.remove(0);
- for (String ldr : ldrs) {
- ld = ld.replace(ldr, "");
- }
- System.out.println(ld);
- System.out.println(bigs);
- System.out.println(bigsList);
- Map<String, Object> map = Maps.newHashMap();
- String pstartdate = "2024-10-01";
- String penddate = "2024-10-31";
- int cycletype = 300;
- System.out.println(getCycletype(pstartdate,penddate,cycletype));
- }
- }
|