Esempio n. 1
0
        public void AssessCalculate(string schemeUid)
        {
            DynamicParameters param = new DynamicParameters();

            param.Add("PrmUid", schemeUid);
            string sql = $"select avg({nameof(PerfExaminer.Score)}) {nameof(PerfExaminer.Score)},{nameof(PerfExaminer.ObjectUid)},{nameof(PerfExaminer.AssessModel)},{nameof(PerfExaminer.Weights)} from PerfExaminer where  {nameof(PerfExaminer.ProgramUid)}=@PrmUid and {nameof(PerfExaminer.Score)}>0  group by {nameof(PerfExaminer.ObjectUid)}, {nameof(PerfExaminer.AssessModel)},{nameof(PerfExaminer.Weights)}";

            IEnumerable <PerfExaminer> examiners  = _dbContext.Query <PerfExaminer>(sql, param);
            IEnumerable <PerfObject>   objectives = _dbContext.QueryWhere <PerfObject>("ProgramUid=@PrmUid", param);

            if (examiners.Any())
            {
                var examinerScores = examiners.GroupBy(e => e.ObjectUid);
                foreach (var escore in examinerScores)
                {
                    var objective = objectives.FirstOrDefault(p => p.Fid == escore.Key);
                    if (objective != null)
                    {
                        double score = 0.0;
                        foreach (var es in escore)
                        {
                            score += (es.Score * es.Weights) / escore.Sum(e => e.Weights);
                        }
                        objective.Score = Math.Round(score, 2);
                    }
                }
                _dbContext.UpdateBatchSql(objectives);
            }
            //修改考核方案状态为 成绩发布
            PerfProgram prm = _dbContext.Get <PerfProgram>(schemeUid);

            prm.PrmStatus = PerfPrmStatus.Result;
            _dbContext.Update <PerfProgram>(prm);
        }
Esempio n. 2
0
        public void CopyScheme(string fid)
        {
            PerfProgram program = _dbContext.Get <PerfProgram>(fid);

            program.Id         = -1;
            program.Fid        = "";
            program.PrmCode    = "copy_" + program.PrmCode;
            program.PrmName    = "copy_" + program.PrmName;
            program.PrmStatus  = PerfPrmStatus.Init;
            program.CreateBy   = "";
            program.CreateDate = "";
            program.CreateName = "";
            program.UpdateBy   = "";
            program.UpdateDate = "";
            program.UpdateName = "";
            //拷贝方案
            _dbContext.Insert(program);
            PerfProgram       newPrm = program;
            DynamicParameters param  = new DynamicParameters();

            param.Add("PrmUid", fid);
            //获取指标分类
            var kpiTypes = _dbContext.QueryWhere <PerfKPIType>("PerfProgram=@PrmUid", param);
            //获取指标
            var kpis = _dbContext.QueryWhere <PerfKPIs>("ProgramUid=@PrmUid", param);

            kpiTypes.ToList().ForEach((k) =>
            {
                //获取指标分类下的指标
                string ktypeFid = k.Fid;
                k.Id            = -1;
                k.Fid           = "";
                k.PerfProgram   = newPrm.Fid;
                k.CreateBy      = "";
                k.CreateDate    = "";
                k.CreateName    = "";
                k.UpdateBy      = "";
                k.UpdateDate    = "";
                k.UpdateName    = "";
                //拷贝指标分类
                _dbContext.Insert <PerfKPIType>(k);
                PerfKPIType newKpiType = k;
                var selKpis            = kpis.Where(kpi => kpi.KpiType == ktypeFid);
                if (selKpis != null && selKpis.Any())
                {
                    selKpis.ToList().ForEach((kpi) =>
                    {
                        kpi.Id         = -1;
                        kpi.Fid        = "";
                        kpi.ProgramUid = newPrm.Fid;
                        kpi.KpiType    = newKpiType.Fid;
                        kpi.CreateBy   = "";
                        kpi.CreateDate = "";
                        kpi.CreateName = "";
                        kpi.UpdateBy   = "";
                        kpi.UpdateDate = "";
                        kpi.UpdateName = "";
                        //复制指标
                        _dbContext.Insert <PerfKPIs>(kpi);
                    });
                }
            });
            //复制考核对象
            var objects = _dbContext.QueryWhere <PerfObject>("ProgramUid=@PrmUid", param);

            if (objects.Any())
            {
                objects.ToList().ForEach((m) =>
                {
                    m.Id         = -1;
                    m.Fid        = "";
                    m.ProgramUid = newPrm.Fid;
                    m.CreateBy   = "";
                    m.CreateDate = "";
                    m.CreateName = "";
                    m.UpdateBy   = "";
                    m.UpdateDate = "";
                    m.UpdateName = "";
                    _dbContext.Insert <PerfObject>(m);
                });
            }
        }