9060 hai 4 meses
pai
achega
f4429a94f8

+ 8 - 0
js/.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 12 - 0
js/.idea/js.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 8 - 0
js/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/js.iml" filepath="$PROJECT_DIR$/.idea/js.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
js/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>

+ 41 - 0
websrc/com/kingdee/eas/hr/perf/handler/AreaBaseConfig.java

@@ -0,0 +1,41 @@
+package com.kingdee.eas.hr.perf.handler;
+
+import com.google.common.collect.Sets;
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+
+import java.sql.SQLException;
+import java.util.Set;
+
+/**
+ * description: AreaBaseUtil <br>
+ * date: 2025/10/17 18:34 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+public class AreaBaseConfig {
+    public final static String AREABASE ="HbulTDUkQBSS5kI9V4xZfIqoXbM=";
+
+    public static Set<String> getAreaBases(Context ctx) throws BOSException, SQLException {
+        Set<String> areaBases = Sets.newHashSet();
+        String sqlAreaBase = "select fid from T_EVA_EvaluFormAreaBase where fid =? or FRELATEDAREAID=?";
+        IRowSet rs = DbUtil.executeQuery(ctx,sqlAreaBase,new Object[]{AreaBaseConfig.AREABASE,AreaBaseConfig.AREABASE});
+        while (rs.next()){
+            String fid = rs.getString("fid");
+            areaBases.add(fid);
+        }
+        return areaBases;
+    }
+    public static Set<String> getAreaBases(Context ctx,String AREABASE) throws BOSException, SQLException {
+        Set<String> areaBases = Sets.newHashSet();
+        String sqlAreaBase = "select fid from T_EVA_EvaluFormAreaBase where fid =? or FRELATEDAREAID=?";
+        IRowSet rs = DbUtil.executeQuery(ctx,sqlAreaBase,new Object[]{AREABASE,AREABASE});
+        while (rs.next()){
+            String fid = rs.getString("fid");
+            areaBases.add(fid);
+        }
+        return areaBases;
+    }
+}

+ 83 - 0
websrc/com/kingdee/eas/hr/perf/handler/PerfBatchScoreHandlerEx.java

@@ -0,0 +1,83 @@
+package com.kingdee.eas.hr.perf.handler;
+
+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.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.perfweb.app.workflow.*;
+import com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler;
+import org.springframework.ui.ModelMap;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Set;
+
+
+/**
+ * description: PerfBatchScoreHandlerEx <br>
+ * date: 2025/10/9 11:04 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+public class PerfBatchScoreHandlerEx extends PerfBatchScoreHandler {
+
+    public void submitScoreValidAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap,  BatchMessageTipsHeader bMTips) throws SHRWebException, BOSException {
+        String areaBase ="XpebMP4VRlmvZa3uIWF2WYqoXbM=";
+        Context ctx = SHRContext.getInstance().getContext();
+        Set<String> unvalidEvaObj = Sets.newHashSet();
+        Set<String> validEvaObj = Sets.newHashSet();
+        Map<String, Object> res = Maps.newHashMap();
+        String billid = request.getParameter("gradeTaskNodeIds");
+
+        String[] evaObjIds = request.getParameter("evaObjIds").split(",");
+        String[] gradeTaskNodeIds = request.getParameter("gradeTaskNodeIds").split(",");
+        int succCount = 0;
+        int failedCount = 0;
+        IGradeTargetInst inst = GradeTargetInstFactory.getLocalInstance(ctx);
+        Set<String> evaObjSets = Sets.newHashSet();
+        evaObjSets.addAll(Arrays.asList(evaObjIds));
+        validEvaObj.addAll(evaObjSets);
+        Set<String> gradeTaskNodeSets = Sets.newHashSet();
+        gradeTaskNodeSets.addAll(Arrays.asList(gradeTaskNodeIds));
+
+        FilterInfo filterInfo = new FilterInfo();
+        filterInfo.getFilterItems().add(new FilterItemInfo("evaObj.id", evaObjSets, CompareType.INCLUDE));
+        filterInfo.getFilterItems().add(new FilterItemInfo("gradeTaskNode.id", gradeTaskNodeSets, CompareType.INCLUDE));
+        filterInfo.getFilterItems().add(new FilterItemInfo("areaBase.id", areaBase, CompareType.EQUALS));
+        SelectorItemCollection selectors = new SelectorItemCollection();
+        selectors.add(new SelectorItemInfo("id"));
+        selectors.add(new SelectorItemInfo("gradeTaskNode.id"));
+        selectors.add(new SelectorItemInfo("gradeTaskNode.nodeGrade"));
+        selectors.add(new SelectorItemInfo("gradeRank"));
+        EntityViewInfo evi = new EntityViewInfo();
+        evi.setSelector(selectors);
+        evi.setFilter(filterInfo);
+        GradeTargetInstCollection collection = inst.getGradeTargetInstCollection(evi);
+        for (int i=0;i<collection.size();i++){
+            GradeTargetInstInfo gt = collection.get(i);
+            String gradeRank = gt.getGradeRank();
+            GradeTaskNodeInstInfo gtnii = gt.getGradeTaskNode();
+            String nodeGrade = gtnii.getNodeGrade();
+            String nodeGradeid = gtnii.getId().toString();
+            if ("C".equals(gradeRank) || "D".equals(gradeRank)){
+                if("A".equals(nodeGrade)||"S".equals(nodeGrade)){
+                    unvalidEvaObj.add(nodeGradeid);
+                }
+            }
+        }
+        validEvaObj.removeAll(unvalidEvaObj);
+
+        this.addBatchMessageTips(unvalidEvaObj,"当跨部门协作绩效等级为C、D等级的,当期员工绩效不得为高绩效(S、A等级)",bMTips);
+        this.addBatchMessageSuccessTips(validEvaObj, "校验成功", bMTips);
+//        bMTips.setBillId(billid);
+//        bMTips.setSuccessCount(validEvaObj.size());
+        //this.writeSuccessData(bMTips);
+    }
+}

+ 62 - 0
websrc/com/kingdee/eas/hr/perf/handler/PerfMarkingHandlerEx.java

@@ -0,0 +1,62 @@
+package com.kingdee.eas.hr.perf.handler;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.dao.IObjectPK;
+import com.kingdee.bos.metadata.entity.*;
+import com.kingdee.bos.metadata.query.util.CompareType;
+import com.kingdee.bos.util.backport.Arrays;
+import com.kingdee.eas.base.permission.UserFactory;
+import com.kingdee.eas.base.permission.UserInfo;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.framework.bireport.bimanager.ws.paramCtx.util.Strings;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
+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.app.resource.SHRPerfWebResource;
+import com.kingdee.shr.perfweb.portal.handler.PerfMarkingHandler;
+import com.kingdee.shr.perfweb.util.PerfPlanExecuteUtils;
+import com.kingdee.shr.perfweb.util.SHRPerfWebResourceUtil;
+import com.kingdee.shr.perfweb.utils.AdminRangeUtils;
+import com.kingdee.shr.perfweb.utils.IndicatorUtils;
+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.sql.Date;
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * description: PerfMarkingHandlerEx <br>
+ * date: 2025/9/28 10:06 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+public class PerfMarkingHandlerEx extends PerfMarkingHandler {
+    private static Logger logger = LoggerFactory.getLogger(PerfMarkingHandlerEx.class);
+
+
+    public static void main(String[] args) {
+        FilterInfo filterInfo = new FilterInfo();
+        filterInfo.getFilterItems().add(new FilterItemInfo("evaObj.id", "evaObjIds", CompareType.INCLUDE));
+        filterInfo.getFilterItems().add(new FilterItemInfo("areaBase.id", "areaBase", CompareType.EQUALS));
+        filterInfo.getFilterItems().add(new FilterItemInfo("perfPeriod.id", "period", CompareType.EQUALS));
+        filterInfo.getFilterItems().add(new FilterItemInfo(" grade is not null "));
+        filterInfo.getFilterItems().add(new FilterItemInfo(" isnull(weight,0)>0 "));
+        filterInfo.getFilterItems().add(new FilterItemInfo(" isnull(score,0) > 0 "));
+
+        System.out.println(filterInfo.toSql());
+    }
+
+}

+ 129 - 0
websrc/com/kingdee/eas/hr/perf/handler/PerfPersonalScoreHandlerEx.java

@@ -0,0 +1,129 @@
+package com.kingdee.eas.hr.perf.handler;
+
+import com.google.common.collect.Sets;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.metadata.entity.*;
+import com.kingdee.bos.metadata.query.util.CompareType;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+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.exception.SHRPerfWebBizException;
+import com.kingdee.shr.perfweb.app.workflow.GradeTargetInstCollection;
+import com.kingdee.shr.perfweb.app.workflow.GradeTargetInstFactory;
+import com.kingdee.shr.perfweb.app.workflow.GradeTargetInstInfo;
+import com.kingdee.shr.perfweb.app.workflow.IGradeTargetInst;
+import com.kingdee.shr.perfweb.exception.SHRPerfWebException;
+import com.kingdee.shr.perfweb.portal.bean.AreaFieldBean;
+import com.kingdee.shr.perfweb.portal.bean.EvaAreaListBean;
+import com.kingdee.shr.perfweb.portal.bean.PersonalEvaBaseBean;
+import com.kingdee.shr.perfweb.portal.handler.PerfPersonalScoreHandler;
+import com.kingdee.shr.perfweb.portal.serviceImpl.PerfGoasFillService;
+import com.kingdee.shr.perfweb.util.EvaFormUtil;
+import com.kingdee.shr.perfweb.utils.RequestUtils;
+import com.kingdee.util.enums.DynamicEnum;
+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.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * description: PerfPersonalScoreHandlerEx <br>
+ * date: 2025/10/9 18:09 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+public class PerfPersonalScoreHandlerEx extends PerfPersonalScoreHandler {
+    private Logger logger = LoggerFactory.getLogger(PerfPersonalScoreHandlerEx.class);
+
+    public void compositeEvaObjectDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
+        try {
+            Context ctx = SHRContext.getInstance().getContext();
+            String entryType = request.getParameter("entryType");
+            String pageSource = request.getParameter("pageSource");
+            String getTargetType = "1";
+            if ("viewEvaForm".equals(entryType)) {
+                if (!"".equals(pageSource) && !"EVALUCARDVIEV".equals(pageSource) && !"PERSONHISTORY".equals(pageSource) && !"GROUPHISTORY".equals(pageSource)) {
+                    getTargetType = "2";
+                } else {
+                    getTargetType = "0";
+                }
+            } else if ("viewMyScoreForm".equals(entryType)) {
+                getTargetType = "2";
+            }
+
+            Map<String, Object> map = PerfGoasFillService.getInstance().compositeEvaObjectDataAction(ctx, request, getTargetType);
+            PersonalEvaBaseBean rows = (PersonalEvaBaseBean) map.get("rows");
+            List<EvaAreaListBean> evaAreaList =  rows.getEvaAreaList();
+            Set<String> areaBases = AreaBaseConfig.getAreaBases(ctx);
+            for (EvaAreaListBean evaArea : evaAreaList){
+                String areaId = (String) evaArea.getAreaId();
+                if(areaBases.contains(areaId)){
+                    List<AreaFieldBean> fieldList =  evaArea.getFieldList();
+                    for (AreaFieldBean field : fieldList){
+                        if("FSCORE".equals(field.getColName())){
+                            field.setFieldMaintenanceStage("100");
+                        }
+                    }
+                }
+            }
+            this.writeJsonData(response,map);
+        } catch (Exception var9) {
+            var9.printStackTrace();
+            this.logger.error("", var9);
+            throw new SHRWebException(new SHRPerfWebBizException(SHRPerfWebBizException.LOADEVAOBJEVARESULTERR));
+        }
+    }
+
+    public void getCurrentAndPrevWholeCommentAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, SHRPerfWebException {
+        Context ctx = SHRContext.getInstance().getContext();
+        Map<String, String> parames = new HashMap();
+        parames.put("evaObj", RequestUtils.getParameter(request, "evaObj"));
+        parames.put("gradeTaskNode", RequestUtils.getParameter(request, "gradeTaskNode"));
+        parames.put("viewMode", RequestUtils.getParameter(request, "viewMode"));
+        parames.put("myType", RequestUtils.getParameter(request, "myType"));
+        parames.put("isModifyScore", RequestUtils.getParameter(request, "isModifyScore"));
+        parames.put("isManualJudgeGrade", RequestUtils.getParameter(request, "isManualJudgeGrade"));
+        parames.put("isShowAuditedWholeForm", RequestUtils.getParameter(request, "isShowAuditedWholeForm"));
+        List<Map<String, Object>> currentAndPrevWholeCommentAction = EvaFormUtil.getCurrentAndPrevWholeCommentAction(ctx, parames);
+        try {
+
+            Set<String> areaBases = AreaBaseConfig.getAreaBases(ctx);
+            FilterInfo filterInfo = new FilterInfo();
+            filterInfo.getFilterItems().add(new FilterItemInfo("evaObj.id", parames.get("evaObj"), CompareType.EQUALS));
+            filterInfo.getFilterItems().add(new FilterItemInfo("gradeTaskNode.id", parames.get("gradeTaskNode"), CompareType.EQUALS));
+            filterInfo.getFilterItems().add(new FilterItemInfo("areaBase.id", areaBases, CompareType.INCLUDE));
+            SelectorItemCollection selectors = new SelectorItemCollection();
+            selectors.add(new SelectorItemInfo("id"));
+            selectors.add(new SelectorItemInfo("gradeTaskNode.id"));
+            selectors.add(new SelectorItemInfo("gradeTaskNode.nodeGrade"));
+            selectors.add(new SelectorItemInfo("gradeRank"));
+            EntityViewInfo evi = new EntityViewInfo();
+            evi.setSelector(selectors);
+            evi.setFilter(filterInfo);
+            IGradeTargetInst inst = GradeTargetInstFactory.getLocalInstance(ctx);
+            GradeTargetInstCollection collection = inst.getGradeTargetInstCollection(evi);
+            for (int i=0;i<collection.size();i++) {
+                GradeTargetInstInfo gt = collection.get(i);
+                String gradeRank = gt.getGradeRank();
+                for(Map<String, Object> objectMap : currentAndPrevWholeCommentAction){
+                    objectMap.put("CurrentNodeGradeRank",gradeRank);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        this.writeJsonData(response,currentAndPrevWholeCommentAction);
+    }
+
+    protected void writeJsonData(HttpServletResponse response,Object object) throws SHRWebException {
+        JSONUtils.writeJson(response, object);
+    }
+}

+ 345 - 0
websrc/com/kingdee/eas/hr/perf/handler/importService/EvaResultSummaryFileExService.java

@@ -0,0 +1,345 @@
+package com.kingdee.eas.hr.perf.handler.importService;
+
+import com.google.common.collect.Maps;
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.basedata.person.PersonInfo;
+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.app.io.fileImport.BaseColumnInfo;
+import com.kingdee.shr.base.syssetting.app.io.fileImport.BaseRowInfo;
+import com.kingdee.shr.base.syssetting.app.io.fileImport.ImportException;
+import com.kingdee.shr.base.syssetting.context.SHRContext;
+import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
+import com.kingdee.shr.compensation.util.CmpSQLUtil;
+import com.kingdee.shr.perfweb.app.base.evalplan.*;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScorLevelDefineCollection;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScorLevelDefineFactory;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScorLevelDefineInfo;
+import com.kingdee.shr.perfweb.app.exception.SHRPerfWebBizException;
+import com.kingdee.shr.perfweb.service.EvaResultSummaryFileService;
+import com.kingdee.shr.perfweb.util.EvaResultSumRevisionLogService;
+import com.kingdee.shr.perfweb.util.GetEntityInfoUtils;
+import com.kingdee.shr.perfweb.util.SHRPerfWebResourceUtil;
+import com.kingdee.shr.perfweb.utils.AESUtil;
+import com.kingdee.shr.perfweb.utils.PerfWorkFlowUtils;
+import com.kingdee.util.StringUtils;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.DataFormat;
+import org.apache.poi.ss.usermodel.DataValidationHelper;
+import org.apache.poi.ss.util.CellRangeAddressList;
+import org.apache.poi.xssf.usermodel.*;
+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.math.BigDecimal;
+import java.net.URLDecoder;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.text.DecimalFormat;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * description: EvaResultSummaryFileExService <br>
+ * date: 2025/10/15 10:09 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+public class EvaResultSummaryFileExService extends EvaResultSummaryFileService {
+    Map<String, Map<String, Object>> performanceLevel;
+    public EvaResultSummaryFileExService(){
+        this.performanceLevel=this.getPerformanceLevelByLevel();
+    }
+    private static Logger logger = LoggerFactory.getLogger(EvaResultSummaryFileExService.class);
+    protected void initFillColumn() {
+       super.initFillColumn();
+//        this.fillColumn.add("ID");
+//        this.fillColumn.add("pnumber");
+//        this.fillColumn.add("pname");
+//        this.fillColumn.add("hrOrgUnit");
+//        this.fillColumn.add("positionName");
+//        this.fillColumn.add("company");
+//        this.fillColumn.add("department");
+//        this.fillColumn.add("flowStatus");
+//        this.fillColumn.add("sumScore");
+//        this.fillColumn.add("gradeLevel");
+//        this.fillColumn.add("reviseSumScore");
+//        this.fillColumn.add("reviseGradeLevel");
+//        this.fillColumn.add("reviseReason");
+//        this.fillColumn.add("employeeType");
+
+        this.fillColumn.add("coefficient");
+        this.fillColumn.add("perCoefficient");
+        this.fillColumn.add("perMaxCoefficient");
+        this.fillColumn.add("perMinCoefficient");
+    }
+    public void completeGenerateExcel(Map<String, BaseColumnInfo> columnInfoMap, XSSFWorkbook wb, XSSFSheet sheet) {
+        String isNeedEmpty = this.getCustomParam("isNeedEmpty");
+        if ("1".equals(isNeedEmpty)) {
+            int beginRow = 4;
+            int i = beginRow;
+            short row_heigth = 300;
+            Map<Integer, String> columnIndexFn = this.getColumnIndexFn(columnInfoMap);
+            Set<Integer> keyNumSet = columnIndexFn.keySet();
+            DataFormat format = wb.createDataFormat();
+            CellStyle testStyle = wb.createCellStyle();
+            testStyle.setDataFormat(format.getFormat("@"));
+
+            for(int columnIndex = 0; columnIndex < columnInfoMap.size(); ++columnIndex) {
+                sheet.setDefaultColumnStyle(columnIndex, testStyle);
+            }
+
+            String sql = this.buildQuerySql();
+            System.out.println("buildQuerySql2:"+sql);
+            if (!StringUtils.isEmpty(sql)) {
+                String perfScoreLevelId = null;
+
+                try {
+                    IRowSet rs = CmpSQLUtil.executeQuery(this.getContext(), sql);
+
+                    for(DecimalFormat df = new DecimalFormat("#.##"); rs.next(); ++i) {
+                        if (perfScoreLevelId == null) {
+                            perfScoreLevelId = rs.getString("perfScorLevel");
+                        }
+
+                        XSSFRow row = sheet.createRow(i);
+                        row.setHeight(row_heigth);
+
+                        String value;
+                        XSSFCell cell;
+                        for(Iterator var20 = keyNumSet.iterator(); var20.hasNext(); cell.setCellValue(value)) {
+                            int columnIndex = (Integer)var20.next();
+                            cell = row.createCell(columnIndex);
+                            String propName = (String)columnIndexFn.get(columnIndex);
+                            value = rs.getString(propName);
+                            if ("flowStatus".equals(propName) && !StringUtils.isEmpty(value)) {
+                                PerfEvaObjectWFStatusEnum wFStatusEnum = PerfEvaObjectWFStatusEnum.getEnum(Integer.valueOf(value));
+                                if (null != wFStatusEnum) {
+                                    value = wFStatusEnum.getAlias();
+                                }
+                            } else if (("reviseSumScore".equals(propName) || "sumScore".equals(propName)) && !StringUtils.isEmpty(value)) {
+                                value = df.format(Float.valueOf(value));
+                            }
+                        }
+                    }
+
+                    if (!StringUtils.isEmpty(perfScoreLevelId)) {
+                        int reviseGradeIndex = -1;
+                        Iterator var31 = keyNumSet.iterator();
+
+                        while(var31.hasNext()) {
+                            Integer index = (Integer)var31.next();
+                            if ("reviseGradeLevel".equals(columnIndexFn.get(index))) {
+                                reviseGradeIndex = index;
+                                break;
+                            }
+                        }
+
+                        if (reviseGradeIndex > 0) {
+                            PerfScorLevelDefineCollection levelColl = PerfScorLevelDefineFactory.getRemoteInstance().getPerfScorLevelDefineCollection("select perfLevelName where perfScoreLevel='" + perfScoreLevelId + "' order by perfLevelName");
+                            if (!levelColl.isEmpty()) {
+                                DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
+                                String[] validata = new String[levelColl.size()];
+
+                                for(i = 0; i < levelColl.size(); ++i) {
+                                    validata[i] = levelColl.get(i).getString("perfLevelName");
+                                }
+
+                                XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)dataValidationHelper.createExplicitListConstraint(validata);
+                                CellRangeAddressList addressList = new CellRangeAddressList(beginRow, 500, reviseGradeIndex, reviseGradeIndex);
+                                XSSFDataValidation validation = (XSSFDataValidation)dataValidationHelper.createValidation(dvConstraint, addressList);
+                                sheet.addValidationData(validation);
+                            }
+                        }
+                    }
+
+                } catch (BOSException var27) {
+                    logger.error("", var27);
+                    throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERROCCURED));
+                } catch (SQLException var28) {
+                    logger.error("", var28);
+                    throw new ImportException(new SHRPerfWebBizException(SHRPerfWebBizException.SYSTEMERROCCURED));
+                }
+            }
+        }
+    }
+
+    protected void importUpdateOnly(BaseRowInfo row) throws ImportException {
+        CoreBaseInfo coreBaseInfo = this.transRowToObejct(row);
+        Context ctx = this.getContext();
+
+        try {
+            Map<String, Map<String, Object>> performanceLevel = this.getPerformanceLevelByLevel();
+            String id = coreBaseInfo.getString("ID");
+            IEvaResultSummary iEvaResultSummary = EvaResultSummaryFactory.getLocalInstance(ctx);
+            EvaResultSummaryInfo evaResultSummaryInfo = GetEntityInfoUtils.getEvaResultSummaryInfoById(ctx, id);
+            String reviseScore = null;
+            String sumScore = null;
+            EvaResultSummaryInfo old = GetEntityInfoUtils.getEvaResultSummaryInfoById(ctx, id);
+            reviseScore = old.get("reviseSumScore") == null ? null : old.get("reviseSumScore").toString();
+            sumScore = old.get("sumScore") == null ? null : old.get("sumScore").toString();
+            String reviseLevel = old.getReviseGradeLevel();
+
+            try {
+                if (reviseScore == null) {
+                    reviseScore = sumScore;
+                    reviseLevel = old.getGradeLevel();
+                }
+            } catch (Exception var14) {
+                logger.error(var14.toString());
+            }
+
+            if (null != coreBaseInfo.getString("reviseSumScore")) {
+                evaResultSummaryInfo.put("reviseSumScore", (double)coreBaseInfo.getFloat("reviseSumScore"));
+            } else {
+                evaResultSummaryInfo.put("reviseSumScore", (Object)null);
+            }
+
+            if (null != coreBaseInfo.getString("reviseGradeLevel")) {
+                evaResultSummaryInfo.setReviseGradeLevel(coreBaseInfo.getString("reviseGradeLevel"));
+            } else {
+                evaResultSummaryInfo.put("reviseGradeLevel", (Object)null);
+            }
+
+            evaResultSummaryInfo.setReviseReason(coreBaseInfo.getString("reviseReason"));
+            if (null != evaResultSummaryInfo.getEvaObj()) {
+                try {
+                    PerfScorLevelDefineInfo scoreLevelDefineInfo = PerfWorkFlowUtils.getPerfScoreLevelDefineInfo(ctx, evaResultSummaryInfo.getEvaObj().getId().toString(), evaResultSummaryInfo.getReviseGradeLevel());
+                    if (null != scoreLevelDefineInfo && null != scoreLevelDefineInfo.getId()) {
+                        evaResultSummaryInfo.put("perfScorLevelDefine", scoreLevelDefineInfo.getId().toString());
+                    }
+                } catch (BOSException var13) {
+                    logger.error("", var13);
+                }
+            }
+            //绩效系数
+            if (null != coreBaseInfo.getBigDecimal("perCoefficient")) {
+                BigDecimal perCoefficient = coreBaseInfo.getBigDecimal("perCoefficient");
+                String reviseGradeLevel = coreBaseInfo.getString("gradeLevel");
+                if (null != coreBaseInfo.getString("reviseGradeLevel")) {
+                    reviseGradeLevel= coreBaseInfo.getString("reviseGradeLevel");
+                }
+                Map<String, Object> pLevel=performanceLevel.get(reviseGradeLevel);
+                BigDecimal coefficient = (BigDecimal) pLevel.get("coefficient");
+                BigDecimal maxcoefficient = (BigDecimal) pLevel.get("maxcoefficient");
+                BigDecimal mincoefficient = (BigDecimal) pLevel.get("mincoefficient");
+                if(!(perCoefficient.compareTo(maxcoefficient)<=0&&perCoefficient.compareTo(mincoefficient)>=0)){
+                    throw new ImportException("所修改的绩效系数" + perCoefficient.toPlainString() + ",大于最大绩效系数" + maxcoefficient.toPlainString() + "或者小于最小绩效系数" + mincoefficient.toPlainString() + "!");
+                }else {
+                    evaResultSummaryInfo.put("coefficient",coefficient);
+                    evaResultSummaryInfo.put("perCoefficient",perCoefficient);
+                    evaResultSummaryInfo.put("perMaxCoefficient",maxcoefficient);
+                    evaResultSummaryInfo.put("perMinCoefficient",mincoefficient);
+                }
+            }
+            evaResultSummaryInfo.setCalibrationTime((Timestamp)null);
+            evaResultSummaryInfo.setCalibrater((PersonInfo)null);
+            evaResultSummaryInfo.setCalibrationStatus(CalibrationStatusEnum.UNCALIBRATED);
+            iEvaResultSummary.save(evaResultSummaryInfo);
+            if (evaResultSummaryInfo != null && evaResultSummaryInfo != null && evaResultSummaryInfo.getEvaObj() != null) {
+                try {
+                    EvaResultSumRevisionLogService evaResultSumRevisionLogService = new EvaResultSumRevisionLogService();
+                    evaResultSumRevisionLogService.generatedEvaResultSumRevisionLog(ctx, EvaResultSumLogSourceEnum.IMPORTREVISION, evaResultSummaryInfo, reviseScore, reviseLevel);
+                } catch (Exception var12) {
+                    logger.error(var12.getMessage());
+                }
+            }
+        } catch (BOSException var15) {
+            logger.error("", var15);
+        } catch (EASBizException var16) {
+            logger.error("", var16);
+        }
+
+    }
+
+    protected String buildQuerySql() {
+        Context ctx = this.getContext();
+        String encryptDynamicSql = this.getCustomParam("dynamicSql");
+        String dynamicSql = "";
+        if (StringUtils.isEmpty(encryptDynamicSql)) {
+            System.out.println("dynamicSql1:"+dynamicSql);
+            return dynamicSql;
+        } else {
+            try {
+                logger.error("encryptDynamicSql: " + encryptDynamicSql);
+                String decodeStr = URLDecoder.decode(encryptDynamicSql, "UTF-8");
+                logger.error("decodeStr: " + decodeStr);
+                dynamicSql = AESUtil.decryptToString(decodeStr, "EvaResultSummaryQuery");
+                System.out.println("dynamicSql2:"+dynamicSql);
+            } catch (Exception var11) {
+                logger.error("【PERFWEB-EvaResultSummaryFileService#buildQuerySql】it's fail to build the export sql!");
+                logger.error("", var11);
+                System.out.println("dynamicSql3:"+dynamicSql);
+                return dynamicSql;
+            }
+
+            int fromIndex = dynamicSql.indexOf("FROM", 0);
+            int orderIndex = dynamicSql.indexOf("ORDER", 0);
+            String fromToOrder = dynamicSql.substring(fromIndex - 1, orderIndex);
+            String orderToLast = dynamicSql.substring(orderIndex - 1, dynamicSql.length());
+            StringBuilder sql = new StringBuilder();
+            String mlFlag = SHRPerfWebResourceUtil.getMlFlag(ctx);
+            sql.append("SELECT ").append("\"EVARESULTSUMMARY\".FID AS \"ID\",")
+                    .append("\"EVARESULTSUMMARY\".FPnumber AS \"pnumber\",")
+                    .append("\"PERSON\".FName" + mlFlag + " AS \"pname\",")
+                    .append("\"HRORGUNIT\".FName" + mlFlag + " AS \"hrOrgUnit\",")
+                    .append("\"POSITION\".FName" + mlFlag + " AS \"positionName\",")
+                    .append("\"COMPANY\".FName" + mlFlag + " AS \"company\",")
+                    .append("\"DEPARTMENT\".FName" + mlFlag + " AS \"department\",")
+                    .append("\"EVAOBJ\".FWorkFlowStatus AS \"flowStatus\",")
+                    .append("\"EVARESULTSUMMARY\".FSumScore AS \"sumScore\",")
+                    .append("\"EVARESULTSUMMARY\".FGradeLevel AS \"gradeLevel\",")
+                    .append("\"EVARESULTSUMMARY\".FReviseSumScore AS \"reviseSumScore\",")
+                    .append("\"EVARESULTSUMMARY\".FReviseGradeLevel AS \"reviseGradeLevel\",")
+                    .append("\"EVARESULTSUMMARY\".FReviseReason AS \"reviseReason\",")
+
+                    .append("\"EVARESULTSUMMARY\".CFcoefficient AS \"coefficient\",")
+                    .append("\"EVARESULTSUMMARY\".CFperCoefficient AS \"perCoefficient\",")
+                    .append("\"EVARESULTSUMMARY\".CFperMaxCoefficient AS \"perMaxCoefficient\",")
+                    .append("\"EVARESULTSUMMARY\".CFperMinCoefficient AS \"perMinCoefficient\",")
+
+                    .append("\"EMPLOYEETYPE\".FName" + mlFlag + " AS \"employeeType\",")
+                    .append("\"EVARESULTSUMMARY\".FPerfScorLevelID AS \"perfScorLevel\" ").append(fromToOrder);
+            String selectIds = this.getCustomParam("selectIds");
+            if (!StringUtils.isEmpty(selectIds)) {
+                sql.append(" and \"EVARESULTSUMMARY\".FID in('" + selectIds.replace(",", "','") + "') ");
+            }
+            sql.append(" and \"EVARESULTSUMMARY\".FBillState <> '3'");
+            sql.append(" ORDER BY ").append("\"ADMINORGUNIT\".FSortCode ASC,").append("\"ADMINORGUNIT\".FLongNumber ASC,").append("\"POSITION\".FIndex ASC,").append("\"POSITION\".FNumber ASC,").append("\"PERSON\".FIndex ASC,").append("\"PERSON\".FNumber ASC");
+            System.out.println("buildQuerySql4:"+sql);
+            return sql.toString();
+        }
+    }
+    public Map<String, Map<String, Object>> getPerformanceLevelByLevel() throws ImportException {
+
+        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 ImportException(e.getMessage());
+        }
+        return result;
+    }
+}

+ 30 - 0
websrc/com/kingdee/eas/hr/project/utils/Test.java

@@ -0,0 +1,30 @@
+package com.kingdee.eas.hr.project.utils;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.metadata.entity.FilterInfo;
+import com.kingdee.bos.metadata.entity.FilterItemInfo;
+import com.kingdee.bos.metadata.query.util.CompareType;
+
+/**
+ * description: Test <br>
+ * date: 2025/1/21 16:02 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+public class Test {
+
+    public static void main(String[] args) throws BOSException {
+
+
+        String sql1 = String.format("(projectManagement.id='%s' and projectRole.id='%s' and state='%s' and ptype.id='%s' and ptype.number<>'%s')",
+                "projectId","projectRoleId","1","pTypeId","pTypeNumber"
+                );
+        System.out.println(sql1);
+        String sql2 = String.format("(id in(%s) and projectManagement.id='%s'  and projectRole.id='%s' and ptype.id='%s' and ptype.number<>'%s')",
+                "'1','2'","projectId","projectRoleId","pTypeId","pTypeNumber"
+                );
+        System.out.println(sql2);
+        String sql =String.format("%s or %s",sql1,sql2);
+        System.out.println(sql);
+    }
+}