소스 검색

绩效根据是否项目隐藏

9060 3 달 전
부모
커밋
8c1a7b3a18

+ 343 - 1
js/deploy/easweb.ear/shr_web.war/addon/customer/web/js/shr/perfweb/perfplanExecute/evaResultManagerListExEx.js

@@ -20,25 +20,367 @@ shr.defineClass("shr.custom.evaResultManagerListExEx", shr.custom.evaResultManag
             msg2=projectName+"项目绩效等级结果";
             $("#bindProjectBatch").show();
             $("#bindDepBatch").hide();
+            $("#getSpanDepCollaborate").hide();
+            $("#getSpanDepCollaborateOne").hide();
+            $("#getSpanDepCollaborateTwo").hide();
             // $("[aria-describedby='grid_projectLevel']").css("display","")
             // $("#grid_projectLevel").css("display","")
             // $("[aria-describedby='grid_orgLevel']").css("display","none")
             // $("#grid_orgLevel").css("display","none")
             $("#grid").setGridParam().hideCol("orgLevel");//隐藏
             $("#grid").setGridParam().showCol("projectLevel");//显示
+            $("#grid").setGridParam().hideCol("oldSumScore");//隐藏
+            $("#grid").setGridParam().hideCol("depCoefficient");//隐藏
+
         }else{
             msg1="正态分布校验结果";
             msg2="上季度部门绩效等级结果";
             $("#bindProjectBatch").hide();
             $("#bindDepBatch").show();
-            $("#grid").setGridParam().showCol("orgLevel");//隐藏
+            $("#getSpanDepCollaborate").show();
+            $("#getSpanDepCollaborateOne").show();
+            $("#getSpanDepCollaborateTwo").show();
+            $("#grid").setGridParam().showCol("orgLevel");//显示
             $("#grid").setGridParam().hideCol("projectLevel");//隐藏
+            $("#grid").setGridParam().showCol("oldSumScore");//显示
+            $("#grid").setGridParam().showCol("depCoefficient");//显示
             // $("[aria-describedby='grid_projectLevel']").css("display","none")
             // $("#grid_projectLevel").css("display","none")
             // $("[aria-describedby='grid_orgLevel']").css("display","")
             // $("#grid_orgLevel").css("display","")
         }
     },
+    // 批量录入修订
+    batchReviseAction: function(){
+        var grid = $("#grid");
+        that.bindBatchReviseGridEvent(grid);
+        var ids = this.getSelectedFields();
+        that.initData.custom_params.reviseGradeLevelSelect = "true";
+        that.initData.custom_params.ids = ids;
+        grid.jqGrid("option", "custom_params", JSON.stringify(that.initData.custom_params)).jqGrid("reloadGrid");
+        $('.singleradioallselectwrap').hide();
+    },
+
+    // 绑定重新刷新页面事件
+    bindBatchReviseGridEvent: function(grid){
+        $(".shr-toolbar").find("button").hide();
+        $("#batchSaveReviseData").show();
+        $("#batchSaveReviseDataExit").show();
+        if (typeof grid == 'undefined') {
+            grid = $(this.gridId);
+        }
+        grid.setGridParam().hideCol("hrOrgUnit.name");
+        grid.setGridParam().hideCol("perfPersonIncharge");
+        grid.setGridParam().hideCol("evaObj.workFlowStatus");
+        grid.setGridParam().hideCol("evaResultAuditBill.billState");
+        grid.setGridParam().hideCol("billState");
+        grid.setGridParam().hideCol("lastSumScore");
+        grid.setGridParam().hideCol("lastGradeLevel");
+        grid.setGridParam().hideCol("confirmState");
+        grid.setGridParam().hideCol("appealState");
+        grid.setGridParam().hideCol("status");
+        grid.setGridParam().hideCol("employeeType.name");
+        grid.setGridParam().hideCol("interview.interviewStatus");
+        grid.setGridParam({cellEdit: true});
+        grid.setColProp('reviseSumScore', {editable: true});
+        grid.setColProp('reviseGradeLevel', {editable: true, edittype: 'shrselect',formatter: 'shrtext',editoptions: {
+                selectJson: {
+                    onChange: function(){
+                        var $this = $(this);
+                        var selectVal = $(this).val();
+                    }
+                }
+            }});
+        grid.setColProp('reviseReason', {editable: true, edittype: 'wafTextArea',formatter: function(val,msg){
+                return '<div class="cell-height scrollbarthin">'+(val?val:'')+'</div>';
+            }});
+        grid.setColProp('perCoefficient', {editable: true});
+        var _self = this;
+        grid.jqGrid('option', {
+            cellsubmit: 'clientArray',
+            onCellSelect: function (rowid, colIndex, cellcontent, e) {
+                _self.onCellSelect(rowid, colIndex, cellcontent, e);
+
+            },
+            onSelectAll: function (rowIds, checked) {
+                _self.onSelectAll(rowIds, checked);
+            },
+            onPaging: function () {
+                _self.onPaging();
+            },
+            beforeEditCell: function (rowid, cellname, value, iRow, iCol) {
+                var $cell_reviseSumScore = $('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseSumScore']");
+                var $cell_reviseGradeLevel = $('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseGradeLevel']");
+                var $cell_reviseReason = $('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseReason']");
+                if ($cell_reviseSumScore.hasClass("disabled") && cellname == "reviseSumScore") {
+                    return false;
+                }
+                if ($cell_reviseGradeLevel.hasClass("disabled") && cellname == "reviseGradeLevel") {
+                    return false;
+                }
+                return true;
+            },
+            afterEditCell: function (rowid, cellname, value, iRow, iCol) {
+                if(cellname == 'reviseReason'){
+                    $(this).find('textarea[id="'+iRow+'_'+cellname+'"]').val($(value).text());
+                }
+                var $cell_reviseSumScore = $('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseSumScore']");
+                var $cell_reviseGradeLevel = $('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseGradeLevel']");
+                var $cell_reviseReason = $('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseReason']");
+                var reviseGradeLevelSelectJSON=$('[id="' + rowid + '"]').find("td[aria-describedby='grid_reviseGradeLevelSelect']").html();
+                reviseGradeLevelSelectJSON = JSON.parse(reviseGradeLevelSelectJSON);
+                if ("reviseGradeLevel" == cellname) {
+                    $('#' + iRow + '_' + cellname).attr('readonly', true);
+                    $('#' + iRow + '_' + cellname).shrSelect('addOption', reviseGradeLevelSelectJSON);
+                }
+                var _grid = $(this);
+                if(cellname == 'reviseSumScore'){
+                    $('#' + iRow + '_' + cellname).bind('blur',function(){
+                        that.setReviseLevel(rowid, cellname, $(this).val(), iRow, iCol, _grid);
+                    })
+                }
+            },
+            loadComplete: function (data) {
+                _self.gridLoadComplete();
+                var $grid = $("#grid");
+                $("td[role='gridcell']").each(function () {
+                    $(this).removeClass("disabled");
+                    $(this).addClass("gridcell0");
+                });
+            }
+        });
+    },
+
+    // 修改分数后匹配等级
+    setReviseLevel: function(rowid, cellname, value, iRow, iCol, _grid){
+        var rowData = _grid.getRowData(rowid);
+        if(!rowData.levelScoreKVInfo) return false;
+        var levelScoreKVInfo = JSON.parse(rowData.levelScoreKVInfo);
+        var wholeGrade = '';
+        if(value){
+            var minGrade = '', maxGrade = '', scoreLowLimit = rowData.scoreLowLimit, scoreUpLimit = rowData.scoreUpLimit;
+            for(var key in levelScoreKVInfo){
+                var range = key.split('~');
+                if(Number(value) > Number(range[0]) && Number(value) <= Number(range[1])){
+                    wholeGrade = key;
+                    break;
+                }
+                if(scoreLowLimit == Number(range[0])){
+                    minGrade = key;
+                }
+                if(scoreUpLimit == Number(range[1])){
+                    maxGrade = key
+                }
+            }
+            if(!wholeGrade){
+                if(Number(value) <= Number(scoreLowLimit)){
+                    wholeGrade = minGrade;
+                }
+                if(Number(value) > Number(scoreUpLimit)){
+                    wholeGrade = maxGrade;
+                }
+            }
+            _grid.jqGrid('setCell', rowid, 'reviseGradeLevel',levelScoreKVInfo[wholeGrade]);
+        }else{
+            _grid.jqGrid('setCell', rowid, 'reviseGradeLevel',null);
+        }
+    },
+
+    /**
+     * 批量修订分数等级保存
+     */
+    batchSaveReviseDataAction: function (obj) {
+        var _self = this;
+        var $grid = $("#grid");
+        $('#grid').jqGrid('editStop')
+        var rowDatas = $grid.jqGrid("getRowData");
+        if (rowDatas && rowDatas.length > 0) {
+            var editData = [];
+            var errData = [];
+            var billId = [];
+            for (var i = 0; i < rowDatas.length; i++) {
+                var rowData = rowDatas[i];
+                var $cell = $(shr.xssFilter('[id="' + rowData.id + '"]')).find("td[aria-describedby='grid_reviseSumScore']");
+                var $cell2 = $(shr.xssFilter('[id="' + rowData.id + '"]')).find("td[aria-describedby='grid_reviseGradeLevel']");
+                var $cell3 = $(shr.xssFilter('[id="' + rowData.id + '"]')).find("td[aria-describedby='grid_reviseReason']");
+                var $cell4 = $(shr.xssFilter('[id="' + rowData.id + '"]')).find("td[aria-describedby='grid_perCoefficient']");
+                var val = {};
+                val.id = rowData.id;
+                val.periodId = parent.periodInfo.id;
+                var modified = false;
+                if ($cell.hasClass("dirty-cell")||$cell2.hasClass("dirty-cell")||$cell3.hasClass("dirty-cell")||$cell4.hasClass("dirty-cell")){
+                    val.reviseSumScore = rowData['reviseSumScore'];
+                    val.reviseGradeLevel = rowData['reviseGradeLevel'];
+                    val.reviseReason = $(rowData['reviseReason']).text().trim();
+                    if(null!=rowData['perCoefficient']&&null!=rowData['perMaxCoefficient']&&null!=rowData['perMinCoefficient']){
+                        val.perCoefficient = rowData['perCoefficient'];
+                        val.perMaxCoefficient = rowData['perMaxCoefficient'];
+                        val.perMinCoefficient = rowData['perMinCoefficient'];
+                        if(Number(val.perCoefficient)>Number(val.perMaxCoefficient)
+                            ||Number(val.perCoefficient)<Number(val.perMinCoefficient)){
+                            errData.push(val);
+                            modified = false;
+                        } else {
+                            modified = true;
+                        }
+                    }else {
+                        modified = true;
+                    }
+                }
+
+                if (modified) {
+                    editData.push(val);
+                    billId.push(rowData.id);
+                }
+            }
+            if (errData.length > 0) {
+                return shr.showWarning({message: "所修改的绩效系数,大于最大绩效系数或者小于最小绩效系数!"});
+            }
+            if (editData.length == 0) {
+                return shr.showWarning({message: $.perfwebI18n.commonMsg.msg17});
+            }
+
+            shr.showConfirm($.perfwebI18n.commonMsg.msg18, function () {
+                _self.doRemoteWithBatchExtendAction({
+                    method: "batchSaveReviseData",
+                    datas: JSON.stringify(editData),
+                    billId: billId.join(","),
+                    permItemId: $(obj.currentTarget).attr("data-permitemid"),
+                });
+                $('#appealBillList').hide();
+            });
+        }
+    },
+    appendBatchHtml: function () {
+        var orgHtml = new Array();
+        orgHtml.push(
+            '<div class="group-panel">',
+            '<div class="row-fluid row-block">',
+            '<div class="row-fluid row-block flex-rw " id="">',
+            '<div data-ctrlrole="labelContainer" class="field-area flex-c ">',
+            '<div class="label-ctrl flex-cc flex-r">',
+            '<div class="field-label" title="绩效分组" style="">绩效分组</div>',
+            '<div class="field-desc"><span id="d_group_desc">:</span></div>',
+            '</div>',
+            '<div class="field-ctrl flex-c">',
+            '<input class="block-father input-height" type="text" id="groupValue">',
+            '</div>',
+            '</div>',
+            '</div>',
+            '</div>',
+            '</div>',
+        );
+        return orgHtml;
+    },
+    // 修改按钮样式  看似无意义的操作  其实是为了迎合平台对弹出框中再加基础资料f7弹出框不支持的一种处理方式
+    changeButtonClass: function () {
+        $(".ui-dialog-buttonset").addClass("ui-dialog-buttonset-private")
+            .removeClass("ui-dialog-buttonset");
+        $(".ui-dialog-buttonset-private").css({
+            "float": "right",
+            "color": "#333"
+        });
+        $(".ui-dialog-buttonset-private").find("button").css({
+            "background": "#005BAC",
+            "border": "solid 1px #ccc",
+            "font-size": "14px",
+            "color": "#fff"
+        });
+    },
+    /**
+     * 修改分组
+     */
+    assignBelongGroupAction: function () {
+        if (!this.checkSelectIds()) {
+            return;
+        }
+
+        $body = $(document.body);
+        $("#batchSet_dialog").remove();
+        $editCol = $("<form id='batchSet_dialog'></from>").appendTo($body);
+        var formJson = {
+            id: "batchSet_dialog"
+        };
+        $('#batchSet_dialog').shrForm(formJson);
+        var orgHtml = that.appendBatchHtml();
+        $('#batchSet_dialog').append(orgHtml.join(""));
+
+        var buttons = [];
+        var param = {};
+        buttons.push({
+            text: "确定",
+            click: function () {
+                let groupValue_val = $("#groupValue").val();
+                if (groupValue_val == null) {
+                    shr.showInfo({
+                        message: "请输入分组!",
+                    });
+                }
+                that.doRemoteWithBatchExtendAction({
+                    method: "batchAssignGroup",
+                    group: groupValue_val,
+                    async: true,
+                    buttonName: 'assignBelongGroup',
+                    // success: function (response) {
+                    //
+                    // }
+                });
+                $('.view_manager_body').children().css('height', '')
+                $('#dialog_F7grid').css('height', '455px');
+                $("#batchSet_dialog").dialog("close");
+            }
+        });
+
+        showDialog("#batchSet_dialog", "绩效分组", $('#batchSet_dialog').html(), buttons, 600, 410);
+        that.changeButtonClass();
+        var text_json = {
+            id:"groupValue",
+            name: "groupValue",
+            readonly: "",
+            value: "{&quot;l2&quot;:&quot;&quot;}",
+            validate: "{maxlength:255,required:true}",
+            trimAll:false,
+            isHtmlDecode:true,
+            isMultiLan:true,
+            isNumberfield:false,
+            isMenuIcon: false,
+            onChange: null,
+            joinSelectField: "",
+            extendOptions:{},
+            numberfieldBlank:false
+        };
+        $('#groupValue').shrTextField(text_json);
+    },
+    /**
+     * 清除分组
+     */
+    clearBelongGroupAction: function () {
+        if (!this.checkSelectIds()) {
+            return;
+        }
+
+        that.doRemoteWithBatchExtendAction({
+            method: "clearBelongGroup",
+            async: true,
+            buttonName: 'clearBelongGroup'
+        });
+    },
+    /**
+     * 获取绩效系数fperfFileid
+     */
+    performanceLevelAction: function () {
+        if (!this.checkSelectIds()) {
+            return;
+        }
+
+        that.doRemoteWithBatchExtendAction({
+            method: "performanceLevel",
+            async: true,
+            buttonName: 'performanceLevel',
+            period: parent.periodInfo.id,
+            planId: parent.planId,
+        });
+    },
     /**
      * 上季度部门绩效等级结果
      */

+ 385 - 43
websrc/com/kingdee/eas/hr/perf/handler/EvaResultSummaryManagerListHandlerExEx.java

@@ -1,12 +1,19 @@
 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.grapecity.documents.excel.O;
 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;
@@ -17,12 +24,15 @@ 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.EvalplanCycleTypeEnum;
+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;
@@ -37,6 +47,124 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
 
     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);
+                    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
@@ -75,8 +203,159 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         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());
+            }
+        }
+    }
+    /**
+     * 获取绩效系数
+     * @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);
@@ -267,10 +546,15 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                 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 (null == projectLevel) {
+                if (StrUtil.isBlank(projectLevel)) {
                     String msg = String.format("%s项目绩效等级为空", CFPROJECTNAME);
                     batchMessage.put(fid, msg);
                     continue;
@@ -490,12 +774,24 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
 //        }
         //获取组织分组人数
         StringBuilder orgSql = new StringBuilder();
-        orgSql.append(" select  FADMINORGUNITID, FPERIODID,FEVAPLANID,count(*) alls from T_EVA_EvaResultSummary ");
+        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 ");
+        //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()) {
@@ -530,11 +826,22 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
 
         Map<String, Map<String, String>> personLevelMap = Maps.newHashMap();
         StringBuilder orgLevelSql = new StringBuilder();
-        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(" 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=? 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();
@@ -621,9 +928,16 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
             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 fid,FADMINORGNAME, FADMINORGUNITID, FPERIODID, FEVAPLANID,isnull( FREVISEGRADELEVEL, FGRADELEVEL) revLevel,CFOrgLevel from T_EVA_EvaResultSummary where fid in (");
+            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());
@@ -635,6 +949,11 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                 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");
@@ -885,7 +1204,7 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         } else {
             try {
                 StringBuffer sql = new StringBuffer();
-                sql.append(" select ers.fid,pp.FPSTARTDATE,ers.FADMINORGUNITID,ers.FADMINORGNAME,pp.FYEAR,pp.FTIMEPERIOD, ");
+                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 ");
@@ -909,25 +1228,30 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                     String personid = rsSql.getString("CFEMPLOYEEID");
                     String CFPROJECTNAME = rsSql.getString("CFPROJECTNAME");
                     String perobjectid = rsSql.getString("CFPEROBJECTIDID");
-                    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);
+                    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) {
@@ -992,8 +1316,14 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         } else {
             try {
                 StringBuffer sql = new StringBuffer();
-                sql.append(" select ers.fid,pp.FPSTARTDATE,ers.FADMINORGUNITID,ers.FADMINORGNAME,pp.FYEAR,pp.FTIMEPERIOD," +
-                        "pp.FCYCLETYPE,pp.FPENDDATE,pp.FPSTARTDATE from ");
+                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(''");
@@ -1011,6 +1341,7 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                     String id = rsSql.getString("fid");
                     String orgId = rsSql.getString("FADMINORGUNITID");
                     String orgName = rsSql.getString("FADMINORGNAME");
+                    String FBILLSTATE = rsSql.getString("FBILLSTATE");
 
                     if (faist) {
                         faist = false;
@@ -1022,7 +1353,7 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                         endDate = (LocalDate) cycleMap.get("endDate");
                         startDate = (LocalDate) cycleMap.get("startDate");
                     }
-                    id_orgIdMap.put(id, orgId + "!" + orgName);
+                    id_orgIdMap.put(id, orgId + "!" + orgName+"!"+FBILLSTATE);
                 }
                 List<String> sess = Lists.newArrayList();
                 //T_EVA_OrgEvaResultSummary
@@ -1031,16 +1362,21 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                     String[] orgs = ee.getValue().split("!");
                     String orgId = orgs[0];
                     String orgName = orgs[1];
+                    String FBILLSTATE = orgs[2];
                     String id = ee.getKey();
-                    Map<String, String> orgLevelMap = mapMap.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);
+                    if (!"3".equals(FBILLSTATE)){
+                        Map<String, String> orgLevelMap = mapMap.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) {
@@ -1116,7 +1452,13 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
     protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate, EvalplanCycleTypeEnum cycletype) throws BOSException, SQLException {
         Map<String, Map<String, String>> mapMap = Maps.newHashMap();
         StringBuffer selSql = new StringBuffer();
-        selSql.append(" select oers.fid oersId, oers.FADMINORGUNITID,oers.FLASTGRADELEVEL,(case when ppd.fid is null ");
+        selSql.append(" select oers.fid oersId, ");
+        selSql.append(" (select top 1 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  ");
+        selSql.append(" and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
+        selSql.append(" order by adcount.fsortcode) 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 ");