package com.kingdee.eas.hr.perf.osf;
import com.google.common.collect.Maps;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.bsf.service.app.IHRMsfService;
import com.kingdee.bos.rabbitmq.guava.Lists;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.hr.perf.handler.AreaBaseConfig;
import com.kingdee.eas.hr.perf.handler.EvaResultSummaryManagerListHandlerExEx;
import com.kingdee.eas.util.app.DbUtil;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 考核结果管理列表新增显示“整体评价评语”(取最终等级的整体评价评语)
* description: WholeCommentOSFService
* date: 2025/6/18 15:32
* author: lhbj
* version: 1.0
*/
public class WholeCommentOSFService implements IHRMsfService {
@Override
public Object process(Context context, Map map) throws EASBizException, BOSException {
try {
System.out.println("WholeCommentOSFService:wholeComment");
this.wholeComment(context, map);
} catch (Exception e) {
e.printStackTrace();
throw new BOSException(e);
}
try {
EvaResultSummaryManagerListHandlerExEx exEx = new EvaResultSummaryManagerListHandlerExEx();
//获取上季度组织等级批量
try {
List idList = Lists.newArrayList();
StringBuffer sql = new StringBuffer();
sql.append(" select ers.fid from ");
sql.append(" T_EVA_EvaResultSummary ers ");
sql.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
sql.append(" where ers.FBILLSTATE in (0,1,2) ");
System.out.println("WholeCommentOSFService:bindDep:sql:" + sql);
IRowSet rs = DbUtil.executeQuery(context, sql.toString());
while (rs.next()) {
String fid = rs.getString("fid");
try {
exEx.bindDep(context, fid);
} catch (Exception e) {
e.printStackTrace();
}
idList.add(fid);
}
System.out.println("WholeCommentOSFService:bindDep:idList:" + idList);
} catch (Exception e) {
e.printStackTrace();
}
try {
List idList = Lists.newArrayList();
StringBuffer sql = new StringBuffer();
sql.append(" select ers.fid from ");
sql.append(" T_EVA_EvaResultSummary ers ");
sql.append(" left join T_EVA_PerfPeriod pp on ers.FPERIODID=pp.fid ");
sql.append(" where ers.FBILLSTATE in (0,1,2) ");
System.out.println("WholeCommentOSFService:bindProject:sql:" + sql);
IRowSet rs = DbUtil.executeQuery(context, sql.toString());
while (rs.next()) {
idList.add(rs.getString("fid"));
}
System.out.println("WholeCommentOSFService:bindProject:idList:" + idList);
exEx.bindProject(context, StringUtils.join(idList, ","));
} catch (Exception e) {
e.printStackTrace();
}
//获取绩效系数
try {
Map> maps = Maps.newHashMap();
StringBuilder sqlsel = new StringBuilder();
sqlsel.append(" select fid,FPeriodID,FEvaPlanID from T_EVA_EvaResultSummary where CFPERCOEFFICIENT is null and FBILLSTATE in (0,1,2) ");
System.out.println("WholeCommentOSFService:performanceLevel:sqlsel:" + sqlsel);
IRowSet rs = DbUtil.executeQuery(context, sqlsel.toString());
while (rs.next()) {
String fid = rs.getString("fid");
String FPeriodID = rs.getString("FPeriodID");
String FEvaPlanID = rs.getString("FEvaPlanID");
String key = FEvaPlanID + "," + FPeriodID;
List ids = maps.get(key);
if (null == ids) {
ids = Lists.newArrayList();
maps.put(key, ids);
}
ids.add(fid);
}
System.out.println("WholeCommentOSFService:performanceLevel:maps:" + maps);
for (Map.Entry> entry : maps.entrySet()) {
List idList = entry.getValue();
String[] keys = entry.getKey().split(",");
String planId = keys[0];
String period = keys[1];
exEx.performanceLevel(context, idList, planId, period, new BatchMessageTipsHeader());
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (
Exception e) {
e.printStackTrace();
}
return "ok";
}
public Object wholeComment(Context context, Map map) throws Exception {
try {
Set areaBases = AreaBaseConfig.getAreaBases(context);
String sql =
"UPDATE T_EVA_EvaResultSummary SET CFWholeComment = (select to_char(wc.FCOMMENT) FCOMMENT from T_EVA_GradeTaskNodeInst gtni left join T_EVA_WFNodeDef wnf on wnf.fid = gtni.FWFNODEID left join T_PEF_WholeComment wc on wc.FGRADETASKNODEINSTID=gtni.fid where wnf.FISFINALGRADE=1 and wc.FCOMMENT is not null and T_EVA_EvaResultSummary.FEVAOBJID = gtni.FEVAOBJID) WHERE EXISTS (select to_char(wc.FCOMMENT) FCOMMENT from T_EVA_GradeTaskNodeInst gtni left join T_EVA_WFNodeDef wnf on wnf.fid = gtni.FWFNODEID left join T_PEF_WholeComment wc on wc.FGRADETASKNODEINSTID=gtni.fid where wnf.FISFINALGRADE=1 and wc.FCOMMENT is not null and T_EVA_EvaResultSummary.FEVAOBJID = gtni.FEVAOBJID)";
DbUtil.execute(context, sql);
StringBuilder sql11 = new StringBuilder();
sql11.append(" /*dialect*/MERGE INTO T_EVA_EvaResultSummary ers ");
sql11.append(" USING ( ");
sql11.append(" SELECT DISTINCT ");
sql11.append(" it.FEVAOBJID, ");
sql11.append(" ith.FEXTEND3,it.FSCORE ");
sql11.append(" FROM T_EVA_IndicatorTarget it ");
sql11.append(" INNER JOIN T_EVA_IndicatorExtendHelper ith ON it.FEXTENDID = ith.fid ");
sql11.append(" WHERE ith.FEXTEND3 IS NOT NULL ");
sql11.append(" AND it.FAREABASEID IN ('' ");
for (String abid : areaBases) {
sql11.append(",'");
sql11.append(abid);
sql11.append("'");
}
sql11.append(" ) ");
sql11.append(" ) src ON (ers.FEVAOBJID = src.FEVAOBJID) ");
sql11.append(" WHEN MATCHED THEN ");
sql11.append(" UPDATE SET ers.cfdepGradeLevel = src.FEXTEND3,ers.cfoldSumScore = src.FSCORE ");
System.out.println("WholeCommentOSFService:wholeComment:sql1:" + sql11);
DbUtil.execute(context, sql11.toString());
// StringBuilder sql2 = new StringBuilder();
// sql2.append(" /*dialect*/UPDATE T_EVA_EvaResultSummary ");
// sql2.append(" SET T_EVA_EvaResultSummary.cfoldSumScore = ( ");
// sql2.append(" SELECT it.FSCORE ");
// sql2.append(" FROM T_EVA_IndicatorTarget it ");
// sql2.append(" LEFT JOIN T_EVA_IndicatorExtendHelper ith ON it.FEXTENDID = ith.fid ");
// sql2.append(" WHERE ith.FEXTEND3 IS NOT NULL ");
// sql2.append(" AND FAREABASEID in('' ");
// for (String abid : areaBases) {
// sql2.append(",'");
// sql2.append(abid);
// sql2.append("'");
// }
// sql2.append(" ) ");
// sql2.append(" AND T_EVA_EvaResultSummary.FEVAOBJID = it.FEVAOBJID ");
// sql2.append(" ) ");
// sql2.append(" WHERE T_EVA_EvaResultSummary.FEVAOBJID IN ( ");
// sql2.append(" SELECT it.FEVAOBJID ");
// sql2.append(" FROM T_EVA_IndicatorTarget it ");
// sql2.append(" LEFT JOIN T_EVA_IndicatorExtendHelper ith ON it.FEXTENDID = ith.fid ");
// sql2.append(" WHERE ith.FEXTEND3 IS NOT NULL ");
// sql2.append(" AND FAREABASEID in('' ");
// for (String abid : areaBases) {
// sql2.append(",'");
// sql2.append(abid);
// sql2.append("'");
// }
// sql2.append(" ) ");
// sql2.append(" ) ");
// System.out.println("WholeCommentOSFService:wholeComment:sql2:" + sql2);
// DbUtil.execute(context, sql2.toString());
} catch (Exception e) {
e.printStackTrace();
throw e;
}
return "ok";
}
}