package com.kingdee.eas.hr.perf.handler;
import com.google.common.collect.Maps;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.entity.SelectorItemInfo;
import com.kingdee.bos.rabbitmq.guava.Lists;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.framework.CoreBaseInfo;
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.web.json.JSONUtils;
import com.kingdee.shr.perfweb.app.base.evalplan.*;
import com.kingdee.shr.perfweb.planexecute.handler.EvaresultSummaryAuditBillListHandler;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ui.ModelMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* description: EvaresultSummaryAuditBillListHandlerEx
* date: 17/11/2025 下午 2:09
* author: lhbj
revisegradelevel
* version: 1.0
*/
public class EvaresultSummaryAuditBillListHandlerEx extends EvaresultSummaryAuditBillListHandler {
private static Logger logger = LoggerFactory.getLogger(EvaresultSummaryAuditBillListHandler.class);
public void deleteEvaresultBillAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws EASBizException, SHRWebException {
Context ctx = SHRContext.getInstance().getContext();
Map res = new HashMap();
String billIds = request.getParameter("billIds");
IEvaResultSummaryAuditBill f = null;
try {
f = EvaResultSummaryAuditBillFactory.getLocalInstance(ctx);
if (StringUtils.isNotEmpty(billIds)) {
SelectorItemCollection sel = new SelectorItemCollection();
sel.add(new SelectorItemInfo("id"));
sel.add(new SelectorItemInfo("entrys.id"));
sel.add(new SelectorItemInfo("entrys.evaResult.id"));
String[] billIdArr = billIds.split(",");
for (String billid : billIdArr) {
EvaResultSummaryAuditBillInfo finfo = f.getEvaResultSummaryAuditBillInfo(new ObjectUuidPK(billid), sel);
if (null != finfo) {
EvaResultSummaryAuditBillEntryCollection entryCollection = finfo.getEntrys();
if (null != entryCollection) {
for (int i = 0; i < entryCollection.size(); i++) {
EvaResultSummaryAuditBillEntryInfo entry = entryCollection.get(i);
EvaResultSummaryInfo resultSummaryInfo = entry.getEvaResult();
if (null != resultSummaryInfo) {
BOSUuid id = resultSummaryInfo.getId();
if (null != id) {
String upd = "update T_EVA_EvaResultSummary set FAUDITSUMSCORE=null,FAUDITGRADELEVEL=null,FAUDITREASON=null,cfauditPerCoefficient=cFperCoefficient,cfreviseBfCoefficient=cFperCoefficient where fid=?";
DbUtil.execute(ctx, upd, new String[]{id.toString()});
//获取绩效系数
try {
//EvaResultSummaryManagerListHandlerExEx exEx = new EvaResultSummaryManagerListHandlerExEx();
Map> maps = Maps.newHashMap();
StringBuilder sqlsel = new StringBuilder();
sqlsel.append(" select fid,FPeriodID,FEvaPlanID from T_EVA_EvaResultSummary where fid=? ");
IRowSet rs = DbUtil.executeQuery(ctx, sqlsel.toString(), new String[]{id.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> entryList : maps.entrySet()) {
List idList = entryList.getValue();
String[] keys = entryList.getKey().split(",");
String planId = keys[0];
String period = keys[1];
this.performanceLevel(ctx, idList, planId, period, new BatchMessageTipsHeader());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
}
}
} catch (BOSException var8) {
res.put("result", "500");
logger.error("", var8);
} finally {
try {
f.deleteAuditBill(billIds);
} catch (BOSException e) {
e.printStackTrace();
}
res.put("result", "200");
}
JSONUtils.writeJson(response, res);
}
@Override
protected void beforeSubmit(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws SHRWebException {
super.beforeSubmit(request, response, model);
Context ctx = SHRContext.getInstance().getContext();
try {
IEvaResultSummaryAuditBill f = EvaResultSummaryAuditBillFactory.getLocalInstance(ctx);
SelectorItemCollection sel = new SelectorItemCollection();
sel.add(new SelectorItemInfo("id"));
sel.add(new SelectorItemInfo("entrys.id"));
sel.add(new SelectorItemInfo("entrys.evaResult.id"));
EvaResultSummaryAuditBillInfo fmodel = (EvaResultSummaryAuditBillInfo) model;
EvaResultSummaryAuditBillInfo finfo = f.getEvaResultSummaryAuditBillInfo(new ObjectUuidPK(fmodel.getId()), sel);
if (null != finfo) {
EvaResultSummaryAuditBillEntryCollection entryCollection = finfo.getEntrys();
if (null != entryCollection) {
for (int i = 0; i < entryCollection.size(); i++) {
EvaResultSummaryAuditBillEntryInfo entry = entryCollection.get(i);
EvaResultSummaryInfo resultSummaryInfo = entry.getEvaResult();
if (null != resultSummaryInfo) {
BOSUuid id = resultSummaryInfo.getId();
if (null != id) {
String selPer = "select fid from T_EVA_EvaResultSummary where CfauditPerCoefficient is null and fid=?";
IRowSet rs = DbUtil.executeQuery(ctx, selPer, new String[]{id.toString()});
while (rs.next()) {
String upd = "update T_EVA_EvaResultSummary set CfauditPerCoefficient=CfperCoefficient where fid=?";
DbUtil.execute(ctx, upd, new String[]{id.toString()});
}
}
}
}
}
}
} catch (SQLException | BOSException | EASBizException throwables) {
throwables.printStackTrace();
}
}
public void performanceLevel(Context ctx,List idList,String planId,String period, BatchMessageTipsHeader batchMessageTipsHeader){
List idsessList = Lists.newArrayList();
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 ");
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(" CFCOEFFICIENT=(select CFCOEFFICIENT from CT_PER_PerformanceLevel where CFLEVEL=isnull(FREVISEGRADELEVEL,FGRADELEVEL)), ");
sqlpl.append(" CFREVISEBFCOEFFICIENT=CFPERCOEFFICIENT ");
sqlpl.append(" where FEVAPLANID =? and FPERIODID =? and fid in ( ");
sqlpl.append(selsessParamId);
sqlpl.append(" ) ");
idsessList.add(0, planId);
idsessList.add(1, period);
System.out.println(":performanceLevel:sqlpl:"+sqlpl);
System.out.println(":performanceLevel:idsessList:"+idsessList);
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);
}
}
}