public async Task<ActionResult> BasicSurveyReport(BasicSurveyReportViewModel paramModel, string curPage)
        {
            ViewBag.LeftMenu = Global.Report;
            //사업년도 DownDown List Data
            ViewBag.SelectBizWorkYearList = ReportHelper.MakeYear(2015);

            var mentorId = Session[Global.LoginID].ToString();
            if (string.IsNullOrEmpty(paramModel.Status))
                paramModel.Status = "";


            //사업 DropDown List Data
            var listScMentorMapping = await scMentorMappingService.GetMentorMappingListByMentorId(mentorId, paramModel.BizWorkYear);
            var listScBizWork = listScMentorMapping.Select(mmp => mmp.ScBizWork).ToList();
            ViewBag.SelectBizWorkList = ReportHelper.MakeBizWorkList(listScBizWork);

            var listScCompMapping = await scCompMappingService.GetCompMappingListByMentorId(mentorId, "A", paramModel.BizWorkSn, paramModel.BizWorkYear);
            var listScCompInfo = listScCompMapping.Select(cmp => cmp.ScCompInfo).ToList();
            ViewBag.SelectCompInfoList = ReportHelper.MakeCompanyList(listScCompInfo);
            ViewBag.SelectStatusList = ReportHelper.MakeReportStatusList();



            //기초역량 보고서 조회
            int pagingSize = int.Parse(ConfigurationManager.AppSettings["PagingSize"]);

            var rptMsters = await rptMasterService.GetRptMasterList(int.Parse(curPage ?? "1"), pagingSize, mentorId, paramModel.BizWorkYear, paramModel.BizWorkSn, paramModel.CompSn, paramModel.Status);

            //뷰모델 맵핑
            var rptMasterListView = Mapper.Map<List<BasicSurveyReportViewModel>>(rptMsters);

            return View(new StaticPagedList<BasicSurveyReportViewModel>(rptMasterListView, int.Parse(curPage ?? "1"), pagingSize, rptMsters.TotalItemCount));

        }
        public async Task<ActionResult> Cover(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            if (paramModel.CompSn == 0 || paramModel.BizWorkSn == 0)
            {
                return View(paramModel);
            }

            var scCompMapping = await scCompMappingService.GetCompMappingAsync(paramModel.BizWorkSn, paramModel.CompSn);

            paramModel.CompNm = scCompMapping.ScCompInfo.CompNm;
            paramModel.BizWorkNm = scCompMapping.ScBizWork.BizWorkNm;

            return View(paramModel);

        }
        public async Task<ActionResult> BasicSurveyReport(BasicSurveyReportViewModel paramModel, string curPage)
        {
            ViewBag.LeftMenu = Global.Report;
            //사업관리기관 DownDown List Data
            var loginId = Session[Global.LoginID].ToString();
            var expertMappings = await scExpertMappingService.GetExpertsAsync(loginId);
            var bizMngList = expertMappings.Select(s => s.ScBizWork.ScCompInfo).GroupBy(s => new { s.CompSn, s.CompNm });


            var bizWorkMngr = new List<SelectListItem>();
            bizWorkMngr.Add(new SelectListItem { Value = "0", Text = "사업관리기관 선택", Selected = true });

            if (bizMngList != null)
            {
                foreach (var item in bizMngList)
                {
                    bizWorkMngr.Add(new SelectListItem { Value = item.Key.CompSn.ToString(), Text = item.Key.CompNm.ToString() });
                }
            }

            SelectList list = new SelectList(bizWorkMngr, "Value", "Text");
            ViewBag.SelectBizWorkMngrList = list;

            //사업 DropDown List Data
            if (paramModel.BizWorkMngr == 0)
                ViewBag.SelectBizWorkList = ReportHelper.MakeBizWorkList(null);
            else
            {
                var bizWorkList = expertMappings.Where(i => i.ScBizWork.MngCompSn == paramModel.BizWorkMngr).Select(s => s.ScBizWork).ToList();

                ViewBag.SelectBizWorkList = ReportHelper.MakeBizWorkList(bizWorkList);
            }


            //기초역량 보고서 조회
            int pagingSize = int.Parse(ConfigurationManager.AppSettings["PagingSize"]);

            var rptMsters = await rptMasterService.GetRptMasterListForExpert(int.Parse(curPage ?? "1"), pagingSize, loginId, paramModel.BizWorkSn, paramModel.BizWorkMngr, "C");

            //뷰모델 맵핑
            var rptMasterListView = Mapper.Map<List<BasicSurveyReportViewModel>>(rptMsters);

            return View(new StaticPagedList<BasicSurveyReportViewModel>(rptMasterListView, int.Parse(curPage ?? "1"), pagingSize, rptMsters.TotalItemCount));

        }
        public async Task<ActionResult> BasicSurveyReport(BasicSurveyReportViewModel paramModel, string curPage)
        {
            ViewBag.LeftMenu = Global.Report;
            //사업관리기관 DownDown List Data
            var bizMngList = await scUsrService.GetBizManagerAsync();
            var bizMngDropDown =
                Mapper.Map<List<BizMngDropDownModel>>(bizMngList);

            BizMngDropDownModel title = new BizMngDropDownModel();
            title.CompSn = 0;
            title.CompNm = "사업관리기관 선택";
            bizMngDropDown.Insert(0, title);

            SelectList bizList = new SelectList(bizMngDropDown, "CompSn", "CompNm");
            ViewBag.SelectBizWorkMngrList = bizList;

            //사업 DropDown List Data
            if (paramModel.BizWorkMngr == 0)
                ViewBag.SelectBizWorkList = ReportHelper.MakeBizWorkList(null);
            else
            {

                var listScBizWork = await scBizWorkService.GetBizWorkList(paramModel.BizWorkMngr, null, 0);
                ViewBag.SelectBizWorkList = ReportHelper.MakeBizWorkList(listScBizWork);
            }


            //기초역량 보고서 조회
            int pagingSize = int.Parse(ConfigurationManager.AppSettings["PagingSize"]);

            //var rptMsters = await rptMasterService.GetRptMasterListForSysManager(int.Parse(curPage ?? "1"), pagingSize, paramModel.BizWorkSn, paramModel.BizWorkMngr, "C");

            var compMappings = await scCompMappingService.GetPagedListCompMappingsForBasicReportAsync(int.Parse(curPage ?? "1"), pagingSize, paramModel.BizWorkMngr, null, paramModel.BizWorkSn);

            //뷰모델 맵핑
            var rptMasterListView = Mapper.Map<List<BasicSurveyReportViewModel>>(compMappings);

            return View(new StaticPagedList<BasicSurveyReportViewModel>(rptMasterListView, int.Parse(curPage ?? "1"), pagingSize, compMappings.TotalItemCount));

        }
 public ActionResult OverallResultCover(BasicSurveyReportViewModel paramModel)
 {
     ViewBag.LeftMenu = Global.Report;
     return View(paramModel);
 }
        public async Task<ActionResult> RndEmp(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            var viewModel = new RndEmpViewModel();
            viewModel.rndEmpRatio = new CheckListViewModel();
            viewModel.rndEmpLevelRatio = new CheckListViewModel();

            //1) 현재 사업에 참여한 업체 평균
            //사업참여 기업들의 레벨(창업보육, 보육성장, 자립성장) 분류
            Dictionary<int, int> dicStartUpRndEmp = new Dictionary<int, int>();
            Dictionary<int, int> dicGrowthRndEmp = new Dictionary<int, int>();
            Dictionary<int, int> dicIndependentRndEmp = new Dictionary<int, int>();
            Dictionary<int, int> dicStartUpTotalEmp = new Dictionary<int, int>();
            Dictionary<int, int> dicGrowthTotalEmp = new Dictionary<int, int>();
            Dictionary<int, int> dicIndependentTotalEmp = new Dictionary<int, int>();
            Dictionary<int, int> dicStartUpHighRnd = new Dictionary<int, int>();
            Dictionary<int, int> dicGrowthHighRnd = new Dictionary<int, int>();
            Dictionary<int, int> dicIndependentHighRnd = new Dictionary<int, int>();

            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);
            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    var quesMaster = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }

                    //다래 재무정보 유무 체크하는 로직 추가해야함.(문진표정보, 재무정보가 있어야 보고서 생성가능.)
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    //연구개발 인력의 비율
                    var quesResult2sEmpRate = await quesResult2Service.GetQuesResult2sAsync(quesMaster.QuestionSn, "A1B102");
                    //전체임직원수
                    var TotalEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10202");
                    //연구개발인력
                    var RndEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10201");

                    //연구개발 인력의 능력
                    var quesResult2sEmpCapa = await quesResult2Service.GetQuesResult2sAsync(quesMaster.QuestionSn, "A1B103");
                    //박사급
                    var DoctorEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10301");
                    //석사급
                    var MasterEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10302");


                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {
                        if(TotalEmp.D == "0")
                        {
                            viewModel.rndEmpRatio.Company = "0";
                        }
                        else
                        { 
                            viewModel.rndEmpRatio.Company = Math.Round((double.Parse(RndEmp.D) / double.Parse(TotalEmp.D) * 100), 1).ToString();
                        }

                        if (RndEmp.D == "0")
                        {
                            viewModel.rndEmpLevelRatio.Company = "0";
                        }
                        else
                        {
                            viewModel.rndEmpLevelRatio.Company = Math.Round(((double.Parse(DoctorEmp.D) + double.Parse(MasterEmp.D)) / double.Parse(RndEmp.D) * 100), 1).ToString();
                        }
                    }

                    //종합점수 조회하여 분류별로 딕셔너리 저장
                    var point = await reportUtil.GetCompanyTotalPoint(quesMaster.QuestionSn, sboFinacialIndexT);

                    if (point >= 0 && point <= 50)
                    {
                        dicStartUpRndEmp.Add(compMapping.CompSn, int.Parse(RndEmp.D));
                        dicStartUpTotalEmp.Add(compMapping.CompSn, int.Parse(TotalEmp.D));
                        dicStartUpHighRnd.Add(compMapping.CompSn, int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D));
                    }
                    else if (point > 50 && point <= 75)
                    {
                        dicGrowthRndEmp.Add(compMapping.CompSn, int.Parse(RndEmp.D));
                        dicGrowthTotalEmp.Add(compMapping.CompSn, int.Parse(TotalEmp.D));
                        dicGrowthHighRnd.Add(compMapping.CompSn, int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D));
                    }
                    else
                    {
                        dicIndependentRndEmp.Add(compMapping.CompSn, int.Parse(RndEmp.D));
                        dicIndependentTotalEmp.Add(compMapping.CompSn, int.Parse(TotalEmp.D));
                        dicIndependentHighRnd.Add(compMapping.CompSn, int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D));
                    }
                }
            }


            viewModel.rndEmpRatio.StartUpAvg = Math.Round(((dicStartUpRndEmp.Values.Sum() + 45.0) / (dicStartUpTotalEmp.Values.Sum() + 207) * 100), 1).ToString();
            viewModel.rndEmpLevelRatio.StartUpAvg = Math.Round(((dicStartUpHighRnd.Values.Sum() + 22.0) / (dicStartUpRndEmp.Values.Sum() + 45) * 100), 1).ToString();

            viewModel.rndEmpRatio.GrowthAvg = Math.Round(((dicGrowthRndEmp.Values.Sum() + 107.0) / (dicGrowthTotalEmp.Values.Sum() + 439) * 100), 1).ToString();
            viewModel.rndEmpLevelRatio.GrowthAvg = Math.Round(((dicGrowthHighRnd.Values.Sum() + 50.0) / (dicGrowthRndEmp.Values.Sum() + 107) * 100), 1).ToString();

            viewModel.rndEmpRatio.IndependentAvg = Math.Round(((dicIndependentRndEmp.Values.Sum() + 30.0) / (dicIndependentTotalEmp.Values.Sum() + 79) * 100), 1).ToString();
            viewModel.rndEmpLevelRatio.IndependentAvg = Math.Round(((dicIndependentHighRnd.Values.Sum() + 15.0) / (dicIndependentRndEmp.Values.Sum() + 30) * 100), 1).ToString();


            if(dicStartUpTotalEmp.Values.Sum() + dicGrowthTotalEmp.Values.Sum() + dicIndependentTotalEmp.Values.Sum() == 0)
            {
                viewModel.rndEmpRatio.BizInCompanyAvg = "0";
            }
            else
            { 
                viewModel.rndEmpRatio.BizInCompanyAvg = Math.Round(((dicStartUpRndEmp.Values.Sum() + dicGrowthRndEmp.Values.Sum() + dicIndependentRndEmp.Values.Sum() + 0.0) / (dicStartUpTotalEmp.Values.Sum() + dicGrowthTotalEmp.Values.Sum() + dicIndependentTotalEmp.Values.Sum()) * 100), 1).ToString();
            }

            if (dicStartUpRndEmp.Values.Sum() + dicGrowthRndEmp.Values.Sum() + dicIndependentRndEmp.Values.Sum() == 0)
            {
                viewModel.rndEmpLevelRatio.BizInCompanyAvg = "0";
            }
            else
            {
                viewModel.rndEmpLevelRatio.BizInCompanyAvg = Math.Round(((dicStartUpHighRnd.Values.Sum() + dicGrowthHighRnd.Values.Sum() + dicIndependentHighRnd.Values.Sum() + 0.0) / (dicStartUpRndEmp.Values.Sum() + dicGrowthRndEmp.Values.Sum() + dicIndependentRndEmp.Values.Sum()) * 100), 1).ToString();
            }

            viewModel.rndEmpRatio.TotalAvg = Math.Round(((dicStartUpRndEmp.Values.Sum() + dicGrowthRndEmp.Values.Sum() + dicIndependentRndEmp.Values.Sum() + 182.0) / (dicStartUpTotalEmp.Values.Sum() + dicGrowthTotalEmp.Values.Sum() + dicIndependentTotalEmp.Values.Sum() + 725) * 100), 1).ToString();
            viewModel.rndEmpLevelRatio.TotalAvg = Math.Round(((dicStartUpHighRnd.Values.Sum() + dicGrowthHighRnd.Values.Sum() + dicIndependentHighRnd.Values.Sum() + 87.0) / (dicStartUpRndEmp.Values.Sum() + dicGrowthRndEmp.Values.Sum() + dicIndependentRndEmp.Values.Sum() + 182) * 100), 1).ToString();

            viewModel.rndEmpLevelRatio.SMCompanyAvg = "4.1";



            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "11");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("11");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        public async Task<ActionResult> GrowthTotalProposal(BasicSurveyReportViewModel paramModel, GrowthStrategyViewModel viewModel)
        {
            ViewBag.LeftMenu = Global.Report;

            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "36");

            foreach (var item in viewModel.CommentList)
            {
                var comment = listRptMentorComment.SingleOrDefault(i => i.DetailCd == item.DetailCd);
                if (comment == null)
                {
                    rptMentorCommentService.Insert(ReportHelper.MakeRptMentorcomment(item, paramModel));
                }
                else
                {
                    comment.Comment = item.Comment;
                }
            }

            if (viewModel.SubmitType == "T") //임시저장
            {
                await rptMentorCommentService.SaveDbContextAsync();
                return RedirectToAction("GrowthTotalProposal", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
            else
            {
                var rptMater = await rptMasterService.GetRptMasterAsync(paramModel.QuestionSn, paramModel.CompSn, paramModel.BizWorkYear);
                rptMater.Status = "C";
                rptMasterService.ModifyRptMaster(rptMater);

                await rptMentorCommentService.SaveDbContextAsync();
                return RedirectToAction("BasicSurveyReport", "Report", new { area = "Mentor" });
            }

        }
        public async Task<ActionResult> RndCost(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            var viewModel = new RndCostViewModel();
            viewModel.value = new CheckListViewModel();
            viewModel.percent = new CheckListViewModel();

            //1) 현재 사업에 참여한 업체 평균
            //사업참여 기업들의 레벨(창업보육, 보육성장, 자립성장) 분류
            Dictionary<int, decimal> dicStartUpRnd = new Dictionary<int, decimal>();
            Dictionary<int, decimal> dicGrowthRnd = new Dictionary<int, decimal>();
            Dictionary<int, decimal> dicIndependentRnd = new Dictionary<int, decimal>();
            Dictionary<int, decimal> dicStartUpSales = new Dictionary<int, decimal>();
            Dictionary<int, decimal> dicGrowthSales = new Dictionary<int, decimal>();
            Dictionary<int, decimal> dicIndependentSales = new Dictionary<int, decimal>();

            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);
            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    var quesMaster = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }

                    //다래 재무정보 유무 체크하는 로직 추가해야함.(문진표정보, 재무정보가 있어야 보고서 생성가능.)
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {
                        viewModel.value.Company = Math.Truncate(sboFinacialIndexT.ReserchAmt.Value / 1000).ToString();
                        viewModel.percent.Company = (sboFinacialIndexT.CurrentSale.Value == 0) ? "0" : Math.Round((sboFinacialIndexT.ReserchAmt.Value / sboFinacialIndexT.CurrentSale.Value * 100), 1).ToString();
                    }

                    //종합점수 조회하여 분류별로 딕셔너리 저장
                    var point = await reportUtil.GetCompanyTotalPoint(quesMaster.QuestionSn, sboFinacialIndexT);

                    if (point >= 0 && point <= 50)
                    { 
                        dicStartUpRnd.Add(compMapping.CompSn, sboFinacialIndexT.ReserchAmt.Value);
                        dicStartUpSales.Add(compMapping.CompSn, sboFinacialIndexT.CurrentSale.Value);
                    }
                    else if (point > 50 && point <= 75)
                    {
                        dicGrowthRnd.Add(compMapping.CompSn, sboFinacialIndexT.ReserchAmt.Value);
                        dicGrowthSales.Add(compMapping.CompSn, sboFinacialIndexT.CurrentSale.Value);
                    }
                    else
                    {
                        dicIndependentRnd.Add(compMapping.CompSn, sboFinacialIndexT.ReserchAmt.Value);
                        dicIndependentSales.Add(compMapping.CompSn, sboFinacialIndexT.CurrentSale.Value);
                    }
                }
            }


            viewModel.value.StartUpAvg = Math.Truncate(((dicStartUpRnd.Values.Sum() + 1095260958) /(dicStartUpRnd.Count + 19)) / 1000).ToString();
            viewModel.percent.StartUpAvg = Math.Round(((dicStartUpRnd.Values.Sum() + 1095260958) / (dicStartUpSales.Values.Sum() + 34089625773) * 100), 1).ToString();

            viewModel.value.GrowthAvg = Math.Truncate(((dicGrowthRnd.Values.Sum() + 3405773678) / (dicGrowthRnd.Count + 18)) / 1000).ToString();
            viewModel.percent.GrowthAvg = Math.Round(((dicGrowthRnd.Values.Sum() + 3405773678) / (dicGrowthSales.Values.Sum() + 124570092683) * 100), 1).ToString();

            viewModel.value.IndependentAvg = Math.Truncate(((dicIndependentRnd.Values.Sum() + 1998306254) / (dicIndependentRnd.Count + 2)) / 1000).ToString();
            viewModel.percent.IndependentAvg = Math.Round(((dicIndependentRnd.Values.Sum() + 1998306254) / (dicIndependentSales.Values.Sum() + 9817345650) * 100), 1).ToString();

            viewModel.value.BizInCompanyAvg = Math.Truncate(((dicIndependentRnd.Values.Sum() + dicGrowthRnd.Values.Sum() + dicStartUpRnd.Values.Sum()) / (dicIndependentRnd.Count + dicStartUpRnd.Count + dicGrowthRnd.Count)) / 1000).ToString();
            viewModel.percent.BizInCompanyAvg = Math.Round(((dicIndependentRnd.Values.Sum() + dicGrowthRnd.Values.Sum() + dicStartUpRnd.Values.Sum()) / (dicIndependentSales.Values.Sum() + dicGrowthSales.Values.Sum() + dicStartUpSales.Values.Sum()) * 100), 1).ToString();

            viewModel.value.TotalAvg = Math.Truncate(((dicIndependentRnd.Values.Sum() + dicGrowthRnd.Values.Sum() + dicStartUpRnd.Values.Sum() + 6499340890) / (dicIndependentRnd.Count + dicStartUpRnd.Count + dicGrowthRnd.Count + 39)) / 1000).ToString();
            viewModel.percent.TotalAvg = Math.Round(((dicIndependentRnd.Values.Sum() + dicGrowthRnd.Values.Sum() + dicStartUpRnd.Values.Sum() + 6499340890) / (dicIndependentSales.Values.Sum() + dicGrowthSales.Values.Sum() + dicStartUpSales.Values.Sum() + 168477064106) * 100), 1).ToString();



            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "10");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("10");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        public async Task<ActionResult> BasicSurveyCover(BasicSurveyReportViewModel paramModel, int curPage = 0)
        {
            ViewBag.LeftMenu = Global.Report;

            if (paramModel.CompSn == 0 || paramModel.BizWorkSn == 0)
            {
                return View(paramModel);
            }

            var scCompMapping = await scCompMappingService.GetCompMappingAsync(paramModel.BizWorkSn, paramModel.CompSn);

            paramModel.CompNm = scCompMapping.ScCompInfo.CompNm;
            paramModel.BizWorkNm = scCompMapping.ScBizWork.BizWorkNm;

            var rptMaster = scCompMapping.ScCompInfo.RptMasters.Where(rm => rm.BasicYear == paramModel.BizWorkYear && rm.BizWorkSn == paramModel.BizWorkSn && rm.CompSn == paramModel.CompSn).SingleOrDefault();

            paramModel.QuestionSn = rptMaster.QuestionSn;
            paramModel.Status = rptMaster.Status;

            var rptMaters = scCompMapping.ScCompInfo.RptMasters.Where(rm => rm.BizWorkSn == paramModel.BizWorkSn && rm.Status == "C").ToList();
            ViewBag.SelectReportYearList = ReportHelper.MakeBasicSurveyYear(rptMaters, paramModel.BizWorkYear);

            return View(paramModel);

        }
 public ActionResult print_03(BasicSurveyReportViewModel paramModel)
 {
     ViewBag.LeftMenu = Global.Report;
     return View(paramModel);
 }
        public async Task<ActionResult> BasicSurveyReport(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            var compSn = Session[Global.CompSN].ToString();
            var rptMaster = await _rptMasterService.GetRptMasterAsyncForCompany(paramModel.BizWorkSn, int.Parse(compSn), paramModel.BizWorkYear);

            return RedirectToAction("Cover", "BasicSurveyReport", new { area = "", BizWorkSn = rptMaster.BizWorkSn, CompSn = rptMaster.CompSn, BizWorkYear = rptMaster.BasicYear, Status = rptMaster.Status, QuestionSn = rptMaster.QuestionSn });

        }
        // p23 2.상품화 역량 -  역량별 검토결과 - 제품생산.판매 관계망검토
        public async Task<ActionResult> ProductivityRelation2(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ProductivityRelationViewModel viewModel = new ProductivityRelationViewModel();

            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "23");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("23");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList.Where(cl => cl.Type == "C"), listRptMentorComment.Where(rmc => rmc.RptCheckList.Type == "C").ToList());


            //SCP 입력값 가져오는 로직 있어야함(테이블도 생성해야함)

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;

            return View(viewModel);
        }
        public async Task<ActionResult> ProductivityRelation2(BasicSurveyReportViewModel paramModel, ProductivityRelationViewModel viewModel)
        {
            ViewBag.LeftMenu = Global.Report;

            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "23");

            foreach (var item in viewModel.CommentList)
            {
                var comment = listRptMentorComment.SingleOrDefault(i => i.DetailCd == item.DetailCd);
                if (comment == null)
                {
                    rptMentorCommentService.Insert(ReportHelper.MakeRptMentorcomment(item, paramModel));
                }
                else
                {
                    comment.Comment = item.Comment;
                }
            }
            try
            {
                await rptMentorCommentService.SaveDbContextAsync();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (viewModel.SubmitType == "T") //임시저장
            {
                return RedirectToAction("ProductivityRelation2", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
            else
            {
                return RedirectToAction("RiskMgmtVisionStrategy", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
        }
        public async Task<ActionResult> RiskMgmtOrgSatisfaction(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            var viewModel = new RiskMgmtOrgSatisfactionViewModel();
            viewModel.orgSatisfaction = new CheckListViewModel();

            //1) 현재 사업에 참여한 업체 평균
            //사업참여 기업들의 레벨(창업보육, 보육성장, 자립성장) 분류
            Dictionary<int, int> dicStartUpTotal = new Dictionary<int, int>();
            Dictionary<int, int> dicStartUpMove = new Dictionary<int, int>();

            Dictionary<int, int> dicGrowthTotal = new Dictionary<int, int>();
            Dictionary<int, int> dicGrowthMove = new Dictionary<int, int>();

            Dictionary<int, int> dicIndependentTotal = new Dictionary<int, int>();
            Dictionary<int, int> dicIndependentMove = new Dictionary<int, int>();

            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);
            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    var quesMaster = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }

                    //다래 재무정보 유무 체크하는 로직 추가해야함.(문진표정보, 재무정보가 있어야 보고서 생성가능.)
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    // A1A202 : 조직만족도
                    var quesResult2s = await quesResult2Service.GetQuesResult2sAsync(quesMaster.QuestionSn, "A1A202");
                    //총직원
                    var totalEmp = quesResult2s.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1A20201");
                    //이직직원
                    var moveEmp = quesResult2s.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1A20202");

                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {
                        

                        if (totalEmp.D451 == "0")
                        {
                            viewModel.orgSatisfaction.Company = Math.Round(Convert.ToDouble((int.Parse(moveEmp.D) / int.Parse(totalEmp.D)) * 100), 1).ToString();

                        }
                        else if (totalEmp.D452 == "0")
                        {
                            viewModel.orgSatisfaction.Company = Math.Round(Convert.ToDouble((((int.Parse(moveEmp.D) / int.Parse(totalEmp.D)) + (int.Parse(moveEmp.D451) / int.Parse(totalEmp.D451))) / 2) * 100), 1).ToString();
                        }
                        else
                        {
                            viewModel.orgSatisfaction.Company = Math.Round(Convert.ToDouble((((int.Parse(moveEmp.D) / int.Parse(totalEmp.D)) + (int.Parse(moveEmp.D451) / int.Parse(totalEmp.D451)) + (int.Parse(moveEmp.D452) / int.Parse(totalEmp.D452))) / 3) * 100), 1).ToString();
                        }
                    }

                    //종합점수 조회하여 분류별로 딕셔너리 저장
                    var point = await reportUtil.GetCompanyTotalPoint(quesMaster.QuestionSn, sboFinacialIndexT);

                    if (point >= 0 && point <= 50)
                    {
                        dicStartUpTotal.Add(compMapping.CompSn, int.Parse(totalEmp.D));
                        dicStartUpMove.Add(compMapping.CompSn, int.Parse(moveEmp.D));
                    }
                    else if (point > 50 && point <= 75)
                    {
                        dicGrowthTotal.Add(compMapping.CompSn, int.Parse(totalEmp.D));
                        dicGrowthMove.Add(compMapping.CompSn, int.Parse(moveEmp.D));
                    }
                    else
                    {
                        dicIndependentTotal.Add(compMapping.CompSn, int.Parse(totalEmp.D));
                        dicIndependentMove.Add(compMapping.CompSn, int.Parse(moveEmp.D));
                    }
                }
            }

            viewModel.orgSatisfaction.StartUpAvg = Math.Round(Convert.ToDouble(((dicStartUpMove.Values.Sum() + 28.0) / (dicStartUpTotal.Values.Sum() + 207)) * 100), 1).ToString();

            viewModel.orgSatisfaction.GrowthAvg = Math.Round(Convert.ToDouble(((dicGrowthMove.Values.Sum() + 57.0) / (dicGrowthTotal.Values.Sum() + 443)) * 100), 1).ToString();

            viewModel.orgSatisfaction.IndependentAvg = Math.Round(Convert.ToDouble(((dicIndependentMove.Values.Sum() + 12.0) / (dicIndependentTotal.Values.Sum() + 79)) * 100), 1).ToString();

            viewModel.orgSatisfaction.BizInCompanyAvg = Math.Round(Convert.ToDouble(((dicStartUpMove.Values.Sum() + dicGrowthMove.Values.Sum() + dicIndependentMove.Values.Sum() + 0.0) / (dicStartUpTotal.Values.Sum() + dicGrowthTotal.Values.Sum() + dicIndependentTotal.Values.Sum())) * 100), 1).ToString();

            viewModel.orgSatisfaction.TotalAvg = Math.Round(Convert.ToDouble(((dicStartUpMove.Values.Sum() + dicGrowthMove.Values.Sum() + dicIndependentMove.Values.Sum() + 97.0) / (dicStartUpTotal.Values.Sum() + dicGrowthTotal.Values.Sum() + dicIndependentTotal.Values.Sum() + 729)) * 100), 1).ToString();


            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "28");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("28");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        public async Task<ActionResult> RiskMgmtLiquidity(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            RiskMgmtLiquidityViewModel viewModel = new RiskMgmtLiquidityViewModel();
            viewModel.Liquidity = new BarChartViewModel();
            viewModel.Stability = new BarChartViewModel();

            //1) 현재 사업에 참여한 업체 평균
            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);

            //유동자산
            Dictionary<string, decimal> dicCurrentAsset = new Dictionary<string, decimal>();
            //유동부채
            Dictionary<string, decimal> dicCurrentLiability = new Dictionary<string, decimal>();
            //부채총계
            Dictionary<string, decimal> dicTotalLiability = new Dictionary<string, decimal>();
            //자본총계
            Dictionary<string, decimal> dicTotalCapital = new Dictionary<string, decimal>();

            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    //문진표 작성내역 조회
                    var quesMaster = await quesMasterService.GetQuesOgranAnalysisAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    //해당기업을 찾아 점수를 별도로 저장한다.
                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {

                        viewModel.Liquidity.Dividend = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.CurrentAsset.Value / 1000));
                        viewModel.Liquidity.Divisor = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.CurrentLiability.Value / 1000));
                        viewModel.Liquidity.Result = (sboFinacialIndexT.CurrentLiability.Value == 0) ? 0 : Math.Round(Convert.ToDouble(sboFinacialIndexT.CurrentAsset.Value / sboFinacialIndexT.CurrentLiability.Value * 100), 1);
                        viewModel.Liquidity.Company = viewModel.Liquidity.Result;
                        viewModel.Liquidity.AvgSMCompany = 136.3;

                        viewModel.Stability.Dividend = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.TotalLiability.Value / 1000));
                        viewModel.Stability.Divisor = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.TotalCapital.Value / 1000));
                        viewModel.Stability.Result = (sboFinacialIndexT.TotalCapital.Value == 0) ? 0 : Math.Round(Convert.ToDouble(sboFinacialIndexT.TotalLiability.Value / sboFinacialIndexT.TotalCapital.Value * 100), 1);
                        viewModel.Stability.Company = viewModel.Stability.Result;
                        viewModel.Stability.AvgSMCompany = 141.7;
                    }

                    dicCurrentAsset.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.CurrentSale.Value);
                    dicCurrentLiability.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.OperatingEarning.Value);
                    dicTotalLiability.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.PrevSale.Value);
                    dicTotalCapital.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.PrevSale.Value);

                }
            }

            //평균값 계산
            viewModel.Liquidity.AvgBizInCompany = (dicCurrentLiability.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble(dicCurrentAsset.Values.Sum() / dicCurrentLiability.Values.Sum() * 100), 1);
            viewModel.Liquidity.AvgTotal = Math.Round(Convert.ToDouble((dicCurrentAsset.Values.Sum() + 26161408957) / (dicCurrentLiability.Values.Sum() + 5869940384) * 100), 1);

            viewModel.Stability.AvgBizInCompany = (dicTotalCapital.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble(dicTotalLiability.Values.Sum() / dicTotalCapital.Values.Sum() * 100), 1);
            viewModel.Stability.AvgTotal = Math.Round(Convert.ToDouble((dicTotalLiability.Values.Sum() + 21887099526) / (dicTotalCapital.Values.Sum() + 24998683648) * 100), 1);


            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "30");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("30");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);

        }
        public async Task<ActionResult> ProductivityProfitability(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            ProductivityProfitabilityViewModel viewModel = new ProductivityProfitabilityViewModel();
            viewModel.Profitability = new BarChartViewModel();
            viewModel.Growth = new BarChartViewModel();

            //1) 현재 사업에 참여한 업체 평균
            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);

            //당기매출액
            Dictionary<string, decimal> dicSales = new Dictionary<string, decimal>();
            //영업이익
            Dictionary<string, decimal> dicOperatingEarning = new Dictionary<string, decimal>();
            //전기매출액
            Dictionary<string, decimal> dicPrevSales = new Dictionary<string, decimal>();

            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    //문진표 작성내역 조회
                    var quesMaster = await quesMasterService.GetQuesOgranAnalysisAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    //해당기업을 찾아 점수를 별도로 저장한다.
                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {

                        viewModel.Profitability.Dividend = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.OperatingEarning.Value / 1000));
                        viewModel.Profitability.Divisor = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.CurrentSale.Value / 1000));
                        viewModel.Profitability.Result = (sboFinacialIndexT.CurrentSale.Value == 0) ? 0 : Math.Round(Convert.ToDouble(sboFinacialIndexT.OperatingEarning.Value / sboFinacialIndexT.CurrentSale.Value * 100), 1);
                        viewModel.Profitability.Company = viewModel.Profitability.Result;
                        viewModel.Profitability.AvgSMCompany = 5.2;

                        viewModel.Growth.Dividend = Math.Truncate(Convert.ToDouble((sboFinacialIndexT.CurrentSale.Value - sboFinacialIndexT.PrevSale.Value) / 1000));
                        viewModel.Growth.Divisor = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.PrevSale.Value / 1000));
                        viewModel.Growth.Result = (sboFinacialIndexT.PrevSale.Value == 0) ? 0 : Math.Round(Convert.ToDouble((sboFinacialIndexT.CurrentSale.Value - sboFinacialIndexT.PrevSale.Value) / sboFinacialIndexT.PrevSale.Value * 100), 1);
                        viewModel.Growth.Company = viewModel.Growth.Result;
                        viewModel.Growth.AvgSMCompany = 4.9;
                    }

                    dicSales.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.CurrentSale.Value);
                    dicOperatingEarning.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.OperatingEarning.Value);
                    dicPrevSales.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.PrevSale.Value);

                }
            }

            //평균값 계산
            viewModel.Profitability.AvgBizInCompany = (dicSales.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble(dicOperatingEarning.Values.Sum() / dicSales.Values.Sum() * 100), 1);
            viewModel.Profitability.AvgTotal = Math.Round(Convert.ToDouble((dicOperatingEarning.Values.Sum() + 6748926334) / (dicSales.Values.Sum() + 111666772288) * 100), 1);

            viewModel.Growth.AvgBizInCompany = (dicPrevSales.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble((dicSales.Values.Sum() - dicPrevSales.Values.Sum()) / dicPrevSales.Values.Sum() * 100), 1);
            viewModel.Growth.AvgTotal = Math.Round(Convert.ToDouble(((dicSales.Values.Sum() - dicPrevSales.Values.Sum()) + 9517105574) / (dicPrevSales.Values.Sum() + 102192958532) * 100), 1);


            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "19");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("19");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);

        }
        public async Task<ActionResult> OverallSummary(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            //double totalPoint = 0;
            OverallSummaryViewModel viewModel = new OverallSummaryViewModel();
            viewModel.CommentList = new List<CommentViewModel>();
            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            //해당기업 기초역량
            double basicCapa = 0.0;
            //해당기업 기술경영 마케팅관리
            double mkt = 0.0;
            //해당기업 인적자원관리
            double hrMng = 0.0;
            //해당기업 1인당 노동생산성
            double workProductivity = 0.0;
            //해당기업 매출영업이익률
            double salesEarning = 0.0;
            //해당기업 유동비율
            double current = 0.0;


            //1) 현재 사업에 참여한 업체 평균
            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);

            //인적자원관리
            Dictionary<string, double> dicBizInHrMng = new Dictionary<string, double>();
            //기술경영마케팅
            Dictionary<string, double> dicBizInMkt = new Dictionary<string, double>();
            //기초역량
            Dictionary<string, double> dicBizInBasicCpas = new Dictionary<string, double>();
            //매출액
            Dictionary<string, decimal> dicSales = new Dictionary<string, decimal>();
            //재료비
            Dictionary<string, decimal> dicMaterrial = new Dictionary<string, decimal>();
            //종업원수
            Dictionary<string, decimal> dicQtEmp = new Dictionary<string, decimal>();
            //영업이익
            Dictionary<string, decimal> dicOperatingErning = new Dictionary<string, decimal>();
            //유동자산
            Dictionary<string, decimal> dicCurrentAsset = new Dictionary<string, decimal>();
            //유동부채
            Dictionary<string, decimal> dicCurrentLiability = new Dictionary<string, decimal>();

            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    //문진표 작성내역 조회
                    var quesMaster = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }


                    //참여기업의 점수 계산
                    var bizInHrMng = await reportUtil.GetHumanResourceMng(quesMaster.QuestionSn, sboFinacialIndexT);
                    var bizInMkt = await reportUtil.GetTechMng(quesMaster.QuestionSn, sboFinacialIndexT);
                    var bizInBasicCapa = await reportUtil.GetOverAllManagementTotalPoint(quesMaster.QuestionSn);

                    //해당기업을 찾아 점수를 별도로 저장한다.
                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {
                        basicCapa = bizInBasicCapa;
                        mkt = bizInMkt;
                        hrMng = bizInHrMng;

                        if (sboFinacialIndexT.QtEmp != 0)
                        {
                            workProductivity = Math.Truncate(Convert.ToDouble(((sboFinacialIndexT.CurrentSale - sboFinacialIndexT.MaterialCost) / sboFinacialIndexT.QtEmp) / 1000));
                        }

                        if (sboFinacialIndexT.CurrentSale != 0)
                        {
                            salesEarning = Math.Round(Convert.ToDouble((sboFinacialIndexT.OperatingEarning / sboFinacialIndexT.CurrentSale) * 100), 1);
                        }

                        if (sboFinacialIndexT.CurrentLiability != 0)
                        {
                            current = Math.Round(Convert.ToDouble((sboFinacialIndexT.CurrentAsset / sboFinacialIndexT.CurrentLiability) * 100), 1);
                        }


                        dicBizInHrMng.Add(compMapping.ScCompInfo.RegistrationNo, bizInHrMng);
                        dicBizInMkt.Add(compMapping.ScCompInfo.RegistrationNo, bizInMkt);
                        dicBizInBasicCpas.Add(compMapping.ScCompInfo.RegistrationNo, bizInBasicCapa);

                        dicSales.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.CurrentSale.Value);
                        dicMaterrial.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.MaterialCost.Value);
                        dicQtEmp.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.QtEmp.Value);
                        dicOperatingErning.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.OperatingEarning.Value);
                        dicCurrentAsset.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.CurrentAsset.Value);
                        dicCurrentLiability.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.CurrentLiability.Value);
                    }

                }
            }

            // 3) 기초자료 전체 평균
            // 설명자료에 해당 내용 없음.

            // 4) 전체 평균정수 계산
            double totalPoint = 0;
            totalPoint = totalPoint + dicBizInHrMng.Values.Sum();
            totalPoint = totalPoint + dicBizInMkt.Values.Sum();
            totalPoint = totalPoint + dicBizInBasicCpas.Values.Sum();
            viewModel.AvgTotalPoint = (dicBizInHrMng.Count == 0) ? 0 : Math.Round(totalPoint / dicBizInHrMng.Count, 1);

            //1-B. 해당 기업의 기초역량 점수 계산
            double companyPoint = 0;
            companyPoint = basicCapa + mkt + hrMng;
            viewModel.CompanyPoint = Math.Round(companyPoint, 1);

            //2. 경영역량 총괄 화살표
            viewModel.BizCapaType = ReportHelper.GetArrowTypeA(companyPoint);

            //3. 인적자원관리 화살표(해당기업)
            viewModel.HRMngType = ReportHelper.GetArrowTypeB(hrMng);

            //4. 기술경영, 마케팅 화살표(해당기업)
            viewModel.MarketingType = ReportHelper.GetArrowTypeC(mkt);

            //5. 기초역량 화살표(해당기업)
            viewModel.BasicCapaType = ReportHelper.GetArrowTypeD(basicCapa);

            //6. 조직문화도 화살표  -------------> 해당 페이지 개발 후 적용 해야함.
            var orgDivided = await rptMentorCommentService.GetRptMentorCommentAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "02030901");

            if(orgDivided != null)
            { 
                viewModel.OrgType = ReportHelper.GetArrowTypeE(int.Parse(orgDivided.Comment));
            }
            else
            {
                viewModel.OrgType = "C";
            }
            //7. 고객의수, 상품의질 화살표 -------------> 해당 페이지 개발 후 적용 해야함.
            var custMng = await rptMentorCommentService.GetRptMentorCommentAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "02022112");
            if (custMng != null)
            {
                viewModel.CustMngType = ReportHelper.GetArrowTypeE(int.Parse(custMng.Comment));
            }
            else
            {
                viewModel.CustMngType = "C";
            }
            //8. 전반적 제도 및 규정관리체계 화살표 -------------> 해당 페이지 개발 후 적용 해야함.02033128
            var rool = await rptMentorCommentService.GetRptMentorCommentAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "02033128");

            if (rool != null)
            {
                viewModel.RoolType = ReportHelper.GetArrowTypeE(int.Parse(rool.Comment));
            }
            else
            {
                viewModel.RoolType = "C";
            }

            //9. 조직역량-인적자원관리 해당기업 점수
            OverallSummaryPointViewModel orgCapa = new OverallSummaryPointViewModel();
            orgCapa.CompanyPoint = Math.Round(hrMng, 1);
            //12. 조직역량-인적자원관리 참여기업 평균 점수
            orgCapa.AvgBizInCompanyPoint = Math.Round(dicBizInHrMng.Values.Average(), 1);
            //15. 조직역량-인적자원관리 전체평균 점수
            orgCapa.AvgTotalPoint = Math.Round((dicBizInHrMng.Values.Sum()+ 277.75)/(dicBizInHrMng.Count + 39), 1);
            //18. 조직역량-1인당노동생산성 해당기업점수
            orgCapa.CompanyPoint2 = workProductivity;
            //21. 조직역량-1인당노동생산성 참여기업 평균
            orgCapa.AvgBizInCompanyPoint2 = (dicQtEmp.Values.Sum() == 0) ? 0 : Math.Truncate(Convert.ToDouble(((dicSales.Values.Sum() - dicMaterrial.Values.Sum()) / dicQtEmp.Values.Sum()) / 1000));
            //24. 조직역량-1인당노동생산성 전체 평균
            orgCapa.AvgTotalPoint2 = Math.Truncate(Convert.ToDouble((((dicSales.Values.Sum() + 111710064106) - (dicMaterrial.Values.Sum() + 43571068769)) / (dicQtEmp.Values.Sum() + 718 )) / 1000));
            //27. 조직역량-1인당노동생산성 중소기업평균
            orgCapa.AvgSMCompanyPoint = 64342;
            viewModel.OrgCapa = orgCapa;

            //10. 상품화역량-기술경영 마케팅관리 해당기업 점수
            OverallSummaryPointViewModel prductionCapa = new OverallSummaryPointViewModel();
            prductionCapa.CompanyPoint = Math.Round(mkt, 1);
            //13. 상품화역량-기술경영 마케팅관리 참여기업 평균 점수
            prductionCapa.AvgBizInCompanyPoint = Math.Round(dicBizInMkt.Values.Average(), 1);
            //16. 상품화역량-기술경영 마케팅관리 전체평균 점수
            prductionCapa.AvgTotalPoint = Math.Round((dicBizInMkt.Values.Sum() + 770.25) / (dicBizInMkt.Count + 39), 1);
            //19. 상품화역량-매출영업이익률 해당기업 점수
            prductionCapa.CompanyPoint2 = salesEarning;
            //22. 상품화역량-매출영업이익률 참여기업 평균
            prductionCapa.AvgBizInCompanyPoint2 = (dicSales.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble((dicOperatingErning.Values.Sum() / dicSales.Values.Sum()) * 100), 1);
            //25. 상품화역량-매출영업이익률 전체평균
            prductionCapa.AvgTotalPoint2 = Math.Round(Convert.ToDouble(((dicOperatingErning.Values.Sum() + 6689265895) / (dicSales.Values.Sum() + 111710064106)) * 100), 1);
            //28. 상품화역량-매출영업이익률 중소기업평균
            prductionCapa.AvgSMCompanyPoint = 5.2;
            viewModel.ProductionCapa = prductionCapa;

            //11. 위험관리역량-기초역량 해당기업 점수
            OverallSummaryPointViewModel riskMngCapa = new OverallSummaryPointViewModel();
            riskMngCapa.CompanyPoint = Math.Round(basicCapa, 1);
            //14. 위험관리역량-기초역량 참여기업 평균 점수
            riskMngCapa.AvgBizInCompanyPoint = Math.Round(dicBizInBasicCpas.Values.Average(), 1);
            //17. 위험관리역량-기초역량 전체평균 점수
            riskMngCapa.AvgTotalPoint = Math.Round((dicBizInBasicCpas.Values.Sum() + 238.38) / (dicBizInBasicCpas.Count + 39), 1);
            //20. 위험관리역량-유동비율 해당기업 점수
            riskMngCapa.CompanyPoint2 = current;
            //23. 위험관리역량-유동비율 참여기업평균 점수
            riskMngCapa.AvgBizInCompanyPoint2 = (dicCurrentLiability.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble((dicCurrentAsset.Values.Sum() / dicCurrentLiability.Values.Sum()) * 100), 1);
            //26. 위험관리역량-유동비율 전체평균 점수
            riskMngCapa.AvgTotalPoint2 = Math.Round(Convert.ToDouble(((dicCurrentAsset.Values.Sum() + 58220981909) / (dicCurrentLiability.Values.Sum() + 23152799577)) * 100), 1);
            //29. 위험관리역량-유동비율 중소기업평균 점수
            riskMngCapa.AvgSMCompanyPoint = 136.3;
            viewModel.RiskMngCapa = riskMngCapa;

            //멘토 작성내용 조회
            var comments = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "04");
            //조직역량->조직분화도
            var comment0 = comments.SingleOrDefault(i => i.DetailCd == "01010401");
            viewModel.CommentList.Add(ReportHelper.MakeCommentViewModel(paramModel, "01010401", comment0));

            // 상품화역량 -> 고객의수, 상품의 질 및 마케팅 수준
            var comment1 = comments.SingleOrDefault(i => i.DetailCd == "01010402");
            viewModel.CommentList.Add(ReportHelper.MakeCommentViewModel(paramModel, "01010402", comment1));

            // 위험관리역량 -> 제무회계 관리체계 및 제도수준
            var comment2 = comments.SingleOrDefault(i => i.DetailCd == "01010403");
            viewModel.CommentList.Add(ReportHelper.MakeCommentViewModel(paramModel, "01010403", comment2));

            ViewBag.paramModel = paramModel;
            return View(viewModel);

        }
        public async Task<ActionResult> ProductivityResult(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            var viewModel = new ProductivityResultViewModel();
            viewModel.BizResultCnt = new CheckListViewModel();
            viewModel.BizResultPoint = new CheckListViewModel();

            //1) 현재 사업에 참여한 업체 평균
            //사업참여 기업들의 레벨(창업보육, 보육성장, 자립성장) 분류
            Dictionary<int, int> dicStartUpCnt = new Dictionary<int, int>();
            Dictionary<int, int> dicGrowthCnt = new Dictionary<int, int>();
            Dictionary<int, int> dicIndependentCnt = new Dictionary<int, int>();
            Dictionary<int, double> dicStartUpPoint = new Dictionary<int, double>();
            Dictionary<int, double> dicGrowthPoint = new Dictionary<int, double>();
            Dictionary<int, double> dicIndependentPoint = new Dictionary<int, double>();

            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);
            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    var quesMaster = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }

                    //다래 재무정보 유무 체크하는 로직 추가해야함.(문진표정보, 재무정보가 있어야 보고서 생성가능.)
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    // A1B105 : 사업화실적
                    var quesResult2s = await quesResult2Service.GetQuesResult2sAsync(quesMaster.QuestionSn, "A1B105");
                    var BizResultCnt = quesResult2s.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10502");

                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {
                        viewModel.BizResultCnt.Company = (int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452)).ToString();

                        double avg = int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452) / 3;
                        viewModel.BizResultPoint.Company = Math.Round(ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 4), 1).ToString();
                    }


                    //종합점수 조회하여 분류별로 딕셔너리 저장
                    var point = await reportUtil.GetCompanyTotalPoint(quesMaster.QuestionSn, sboFinacialIndexT);

                    if (point >= 0 && point <= 50)
                    {
                        dicStartUpCnt.Add(compMapping.CompSn, (int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452)));
                    }
                    else if (point > 50 && point <= 75)
                    {
                        dicGrowthCnt.Add(compMapping.CompSn, (int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452)));
                    }
                    else
                    {
                        dicIndependentCnt.Add(compMapping.CompSn, (int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452)));
                    }
                }
            }

            //참업보육 평균
            viewModel.BizResultCnt.StartUpAvg = Math.Round((dicStartUpCnt.Values.Sum() + 46.0) / (dicStartUpCnt.Count + 19), 1).ToString();
            double startUpSum = 0;
            foreach(var item in dicStartUpCnt.Values)
            {
                startUpSum = startUpSum + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(item / 3), 4);
            }
            viewModel.BizResultPoint.StartUpAvg = Math.Round((startUpSum + 4) / (dicStartUpCnt.Count + 19), 1).ToString();
            //보육성장 평균
            viewModel.BizResultCnt.GrowthAvg = Math.Round((dicGrowthCnt.Values.Sum() + 72.0) / (dicGrowthCnt.Count + 18), 1).ToString();
            double growthSum = 0;
            foreach (var item in dicGrowthCnt.Values)
            {
                growthSum = growthSum + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(item / 3), 4);
            }
            viewModel.BizResultPoint.GrowthAvg = Math.Round((growthSum + 8) / (dicGrowthCnt.Count + 18), 1).ToString();
            //자립성장 평균
            viewModel.BizResultCnt.IndependentAvg = Math.Round((dicIndependentCnt.Values.Sum() + 4.0) / (dicIndependentCnt.Count + 2), 1).ToString();
            double independentSum = 0;
            foreach (var item in dicIndependentCnt.Values)
            {
                independentSum = independentSum + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(item / 3), 4);
            }
            viewModel.BizResultPoint.IndependentAvg = Math.Round((independentSum + 0) / (dicIndependentCnt.Count + 2), 1).ToString();
            //참여기업 평균
            viewModel.BizResultCnt.BizInCompanyAvg = Math.Round((dicIndependentCnt.Values.Sum() + dicStartUpCnt.Values.Sum() + dicGrowthCnt.Values.Sum() + 0.0) / (dicIndependentCnt.Count + dicStartUpCnt.Count + dicGrowthCnt.Count), 1).ToString();
            viewModel.BizResultPoint.BizInCompanyAvg = Math.Round((independentSum + startUpSum + growthSum) / (dicIndependentCnt.Count + dicGrowthCnt.Count + dicStartUpCnt.Count), 1).ToString();

            //전체 평균
            viewModel.BizResultCnt.TotalAvg = Math.Round((dicIndependentCnt.Values.Sum() + dicStartUpCnt.Values.Sum() + dicGrowthCnt.Values.Sum() + 122.0) / (dicIndependentCnt.Count + dicStartUpCnt.Count + dicGrowthCnt.Count + 39), 1).ToString();
            viewModel.BizResultPoint.TotalAvg = Math.Round((independentSum + startUpSum + growthSum + 12) / (dicIndependentCnt.Count + dicGrowthCnt.Count + dicStartUpCnt.Count + 39), 1).ToString();


            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "11");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("11");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        public async Task<ActionResult> OrgHR02(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            OrgHR01ViewModel viewModel = new OrgHR01ViewModel();
            //viewModel.CheckList = new List<CheckListViewModel>();
            viewModel.CheckList = await reportUtil.getGrowthStepPointCheckList(paramModel, "A1D102");

            ////사업참여 기업들의 레벨(창업보육, 보육성장, 자립성장) 분류
            //Dictionary<int, int> dicStartUp = new Dictionary<int, int>();
            //Dictionary<int, int> dicGrowth = new Dictionary<int, int>();
            //Dictionary<int, int> dicIndependent = new Dictionary<int, int>();

            //var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);

            //{
            //    var compMappings = curBizWork.ScCompMappings;
            //    foreach (var compMapping in compMappings)
            //    {
            //        var quesMasters = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
            //        if (quesMasters == null)
            //        {
            //            continue;
            //        }

                    //다래 재무정보 유무 체크하는 로직 추가해야함.(문진표정보, 재무정보가 있어야 보고서 생성가능.)


                    //종합점수 조회하여 분류별로 딕셔너리 저장
                    //var point = await reportUtil.GetCompanyTotalPoint(quesMasters.QuestionSn);

            //        if (point >= 0 && point <= 50)
            //            dicStartUp.Add(compMapping.CompSn, quesMasters.QuestionSn);
            //        else if (point > 50 && point <= 75)
            //            dicGrowth.Add(compMapping.CompSn, quesMasters.QuestionSn);
            //        else
            //            dicIndependent.Add(compMapping.CompSn, quesMasters.QuestionSn);
            //    }
            //}



            ////리스트 데이터 생성
            //var quesResult1s = await quesResult1Service.GetQuesResult1sAsync(paramModel.QuestionSn, "A1D102");

            //int count = 1;
            //foreach (var item in quesResult1s)
            //{
            //    CheckListViewModel checkListViewModel = new CheckListViewModel();
            //    checkListViewModel.Count = count.ToString();
            //    checkListViewModel.AnsVal = item.AnsVal.Value;
            //    checkListViewModel.DetailCd = item.QuesCheckList.DetailCd;
            //    checkListViewModel.Title = item.QuesCheckList.ReportTitle;
            //    //창업보육단계 평균
            //    int startUpCnt = await reportUtil.GetCheckListCnt(dicStartUp, checkListViewModel.DetailCd);
            //    checkListViewModel.StartUpAvg = Math.Round(((startUpCnt + item.QuesCheckList.StartUpStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
            //    //보육성장단계 평균
            //    int growthCnt = await reportUtil.GetCheckListCnt(dicGrowth, checkListViewModel.DetailCd);
            //    checkListViewModel.GrowthAvg = Math.Round(((growthCnt + item.QuesCheckList.GrowthStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
            //    //자립성장단계 평균
            //    int IndependentCnt = await reportUtil.GetCheckListCnt(dicIndependent, checkListViewModel.DetailCd);
            //    checkListViewModel.IndependentAvg = Math.Round(((IndependentCnt + item.QuesCheckList.IndependentStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
            //    //참여기업 평균
            //    checkListViewModel.BizInCompanyAvg = Math.Round(((IndependentCnt + growthCnt + startUpCnt + 0.0) / (dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
            //    //전체 평균
            //    checkListViewModel.TotalAvg = Math.Round(((IndependentCnt + growthCnt + startUpCnt + item.QuesCheckList.TotalStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
            //    viewModel.CheckList.Add(checkListViewModel);
            //    count++;
            //}

            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "07");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("07");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        //P29 3.위험관리역량 - 정보시스템활용
        public async Task<ActionResult> RiskMgmtITSystem(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;


            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            RiskMgmtViewModel viewModel = new RiskMgmtViewModel();
            viewModel.CheckList = await reportUtil.getGrowthStepPointCheckList(paramModel, "A1A203");
            

            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "29");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("29");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        public async Task<ActionResult> OrgProductivity(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            OrgProductivityViewModel viewModel = new OrgProductivityViewModel();
            viewModel.CheckList = new List<CheckListViewModel>();
            viewModel.Productivity = new BarChartViewModel();
            viewModel.Activity = new BarChartViewModel();

            //1) 현재 사업에 참여한 업체 평균
            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);

            Dictionary<string, decimal> dicSales = new Dictionary<string, decimal>();
            Dictionary<string, decimal> dicMaterrial = new Dictionary<string, decimal>();
            Dictionary<string, decimal> dicQtEmp = new Dictionary<string, decimal>();
            Dictionary<string, decimal> dicTotalAsset = new Dictionary<string, decimal>();

            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    //문진표 작성내역 조회
                    var quesMaster = await quesMasterService.GetQuesOgranAnalysisAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    //해당기업을 찾아 점수를 별도로 저장한다.
                    if (quesMaster.QuestionSn == paramModel.QuestionSn)
                    {

                        viewModel.Productivity.Dividend = Math.Truncate(Convert.ToDouble((sboFinacialIndexT.CurrentSale.Value - sboFinacialIndexT.MaterialCost.Value) / 1000));
                        viewModel.Productivity.Divisor = Math.Round(Convert.ToDouble(sboFinacialIndexT.QtEmp.Value), 0);
                        viewModel.Productivity.Result = (viewModel.Productivity.Divisor == 0) ? 0 : Math.Truncate(viewModel.Productivity.Dividend / viewModel.Productivity.Divisor);
                        viewModel.Productivity.Company = viewModel.Productivity.Result;
                        viewModel.Productivity.AvgSMCompany = 135547;

                        viewModel.Activity.Dividend = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.CurrentSale.Value / 1000));
                        viewModel.Activity.Divisor = Math.Truncate(Convert.ToDouble(sboFinacialIndexT.TotalAsset.Value / 1000));
                        viewModel.Activity.Result = (viewModel.Activity.Divisor == 0) ? 0 : Math.Round((viewModel.Activity.Dividend / viewModel.Activity.Divisor) * 100, 1);
                        viewModel.Activity.Company = viewModel.Activity.Result;
                        viewModel.Activity.AvgSMCompany = 114.8;
                    }

                    dicSales.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.CurrentSale.Value);
                    dicMaterrial.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.MaterialCost.Value);
                    dicQtEmp.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.QtEmp.Value);
                    dicTotalAsset.Add(compMapping.ScCompInfo.RegistrationNo, sboFinacialIndexT.TotalAsset.Value);

                }
            }

            //평균값 계산
            viewModel.Productivity.AvgBizInCompany = (dicQtEmp.Values.Sum() == 0) ? 0 : Math.Truncate(Convert.ToDouble(((dicSales.Values.Sum() - dicMaterrial.Values.Sum()) / dicQtEmp.Values.Sum()) / 1000));
            viewModel.Productivity.AvgTotal = Math.Truncate(Convert.ToDouble((((dicSales.Values.Sum() - dicMaterrial.Values.Sum()) + 68138995337) / (dicQtEmp.Values.Sum() + 718)) / 1000));

            viewModel.Activity.AvgBizInCompany = (dicTotalAsset.Values.Sum() == 0) ? 0 : Math.Round(Convert.ToDouble(dicSales.Values.Sum() / dicTotalAsset.Values.Sum() * 100));
            viewModel.Activity.AvgTotal = Math.Round(Convert.ToDouble((dicSales.Values.Sum() + 58431124392) / (dicTotalAsset.Values.Sum() + 46885784174) * 100));



            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "08");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("08");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
        //31p 3.위험관리 역량 - 31p. 전문가 평가
        public async Task<ActionResult> RiskMgmtEvalProfession(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            RiskMgmtViewModel viewModel = new RiskMgmtViewModel();

            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "31");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("31");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList.Where(cl => cl.Type == "C"), listRptMentorComment.Where(rmc => rmc.RptCheckList.Type == "C").ToList());

            //체크박스 List 채우기
            var ChekcBoxList = ReportHelper.MakeCheckBoxViewModel(enumRptCheckList.Where(cl => cl.Type == "B"), listRptMentorComment.Where(rmc => rmc.RptCheckList.Type == "B").ToList());

            viewModel.CommentList = CommentList;
            viewModel.CheckBoxList = ChekcBoxList;

            ViewBag.paramModel = paramModel;

            return View(viewModel);
        }
        public async Task<ActionResult> OrgDivided(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            ReportUtil reportUtil = new ReportUtil(scBizWorkService, quesResult1Service, quesResult2Service, quesMasterService, sboFinancialIndexTService);

            var viewModel = new OrgDividedViewModel();

            //1) 현재 사업에 참여한 업체 평균
            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);

            Dictionary<string, int> dicManagement = new Dictionary<string, int>();
            Dictionary<string, int> dicProduce = new Dictionary<string, int>();
            Dictionary<string, int> dicRnd = new Dictionary<string, int>();
            Dictionary<string, int> dicSalse = new Dictionary<string, int>();

            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    //문진표 작성내역 조회
                    var quesMaster = await quesMasterService.GetQuesOgranAnalysisAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMaster == null)
                    {
                        continue;
                    }
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    foreach(var item in quesMaster.QuesOgranAnalysis)
                    {
                        var cnt = item.ChiefCount + item.OfficerCount + item.StaffCount + item.BeginnerCount;

                        //기획관리
                        if(item.DeptCd == "M")
                        {
                            dicManagement.Add(compMapping.ScCompInfo.RegistrationNo, cnt.Value);

                            if(quesMaster.QuestionSn == paramModel.QuestionSn)
                            {
                                viewModel.Management = Mapper.Map<OrgEmpCompositionViewModel>(item);
                            }
                        }
                        //생산 / 생산관리
                        else if (item.DeptCd == "P")
                        {
                            dicProduce.Add(compMapping.ScCompInfo.RegistrationNo, cnt.Value);
                            if (quesMaster.QuestionSn == paramModel.QuestionSn)
                            {
                                viewModel.Produce = Mapper.Map<OrgEmpCompositionViewModel>(item);
                            }
                        }
                        //연구개발/연구지원
                        else if (item.DeptCd == "R")
                        {
                            dicRnd.Add(compMapping.ScCompInfo.RegistrationNo, cnt.Value);
                            if (quesMaster.QuestionSn == paramModel.QuestionSn)
                            {
                                viewModel.RND = Mapper.Map<OrgEmpCompositionViewModel>(item);
                            }
                        }
                        //마케팅기획/판매영업
                        else if (item.DeptCd == "S")
                        {
                            dicSalse.Add(compMapping.ScCompInfo.RegistrationNo, cnt.Value);
                            if (quesMaster.QuestionSn == paramModel.QuestionSn)
                            {
                                viewModel.Salse = Mapper.Map<OrgEmpCompositionViewModel>(item);
                            }
                        }
                    }
                }
            }

            viewModel.StaffSumCount = viewModel.Management.StaffCount + viewModel.Produce.StaffCount + viewModel.RND.StaffCount + viewModel.Salse.StaffCount;

            viewModel.ChiefSumCount = viewModel.Management.ChiefCount + viewModel.Produce.ChiefCount + viewModel.RND.ChiefCount + viewModel.Salse.ChiefCount;

            viewModel.OfficerSumCount = viewModel.Management.OfficerCount + viewModel.Produce.OfficerCount + viewModel.RND.OfficerCount + viewModel.Salse.OfficerCount;

            viewModel.BeginnerSumCount = viewModel.Management.BeginnerCount + viewModel.Produce.BeginnerCount + viewModel.RND.BeginnerCount + viewModel.Salse.BeginnerCount;

            viewModel.TotalSumCount = viewModel.StaffSumCount + viewModel.ChiefSumCount + viewModel.OfficerSumCount + viewModel.BeginnerSumCount;


            //평균값생성

            //기획관리 평균값 생성
            if(viewModel.TotalSumCount == 0)
            {
                viewModel.Management.Company = 0;
                viewModel.Produce.Company = 0;
                viewModel.RND.Company = 0;
                viewModel.Salse.Company = 0;
                viewModel.CompanySum = 0;
            }
            else
            { 
                viewModel.Management.Company = (viewModel.TotalSumCount == 0) ? 0 : Math.Round(Convert.ToDouble((viewModel.Management.PartialSum / viewModel.TotalSumCount)) * 100, 1);
                viewModel.Produce.Company = (viewModel.TotalSumCount == 0) ? 0 : Math.Round(Convert.ToDouble((viewModel.Produce.PartialSum / viewModel.TotalSumCount)) * 100, 1);
                viewModel.RND.Company = (viewModel.TotalSumCount == 0) ? 0 : Math.Round(Convert.ToDouble((viewModel.RND.PartialSum / viewModel.TotalSumCount)) * 100, 1);
                viewModel.Salse.Company = (viewModel.TotalSumCount == 0) ? 0 : Math.Round(Convert.ToDouble((viewModel.Salse.PartialSum / viewModel.TotalSumCount)) * 100, 1);
                viewModel.CompanySum = 100;
            }

            if((dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum()) == 0)
            {
                viewModel.Management.AvgBizInCompany = 0;
                viewModel.Produce.AvgBizInCompany = 0;
                viewModel.RND.AvgBizInCompany = 0;
                viewModel.Salse.AvgBizInCompany = 0;
                viewModel.AvgBizInCompanySum = 0;
            }
            else
            { 
                viewModel.Management.AvgBizInCompany = Math.Round(Convert.ToDouble((dicManagement.Values.Sum() / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum()))) * 100, 1);
                viewModel.Produce.AvgBizInCompany = Math.Round(Convert.ToDouble((dicProduce.Values.Sum() / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum()))) * 100, 1);
                viewModel.RND.AvgBizInCompany = Math.Round(Convert.ToDouble((dicRnd.Values.Sum() / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum()))) * 100, 1);
                viewModel.Salse.AvgBizInCompany = Math.Round(Convert.ToDouble((dicSalse.Values.Sum() / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum()))) * 100, 1);
                viewModel.AvgBizInCompanySum = 100;
            }

            viewModel.Management.AvgTotal = Math.Round(((dicManagement.Values.Sum() + 112.0) / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum() + 718)) * 100, 1);
            viewModel.Produce.AvgTotal = Math.Round(Convert.ToDouble(((dicProduce.Values.Sum() + 305.0) / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum() + 718))) * 100, 1);
            viewModel.RND.AvgTotal = Math.Round(Convert.ToDouble(((dicRnd.Values.Sum() + 180.0) / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum() + 718))) * 100, 1);
            viewModel.Salse.AvgTotal = Math.Round(Convert.ToDouble(((dicSalse.Values.Sum() + 121.0) / (dicProduce.Values.Sum() + dicRnd.Values.Sum() + dicSalse.Values.Sum() + 718))) * 100, 1);
            viewModel.AvgTotalSum = 100;


            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "09");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("09");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);

            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;
            return View(viewModel);
        }
Beispiel #24
0
        public async Task<IList<CheckListViewModel>> getGrowthStepPointCheckList(BasicSurveyReportViewModel paramModel, string quesCheckListSmallClassCd)
        {
            //사업참여 기업들의 레벨(창업보육, 보육성장, 자립성장) 분류
            Dictionary<int, int> dicStartUp = new Dictionary<int, int>();
            Dictionary<int, int> dicGrowth = new Dictionary<int, int>();
            Dictionary<int, int> dicIndependent = new Dictionary<int, int>();

            var curBizWork = await scBizWorkService.GetBizWorkByBizWorkSn(paramModel.BizWorkSn);
            {
                var compMappings = curBizWork.ScCompMappings;
                foreach (var compMapping in compMappings)
                {
                    var quesMasters = await quesMasterService.GetQuesMasterAsync(compMapping.ScCompInfo.RegistrationNo, paramModel.BizWorkYear);
                    if (quesMasters == null)
                    {
                        continue;
                    }

                    //다래 재무정보 유무 체크하는 로직 추가해야함.(문진표정보, 재무정보가 있어야 보고서 생성가능.)
                    //다래 재무정보 조회해야 함.
                    var sboFinacialIndexT = await sboFinancialIndexTService.GetSHUSER_SboFinancialIndexT(compMapping.ScCompInfo.RegistrationNo, ConfigurationManager.AppSettings["CorpCode"], ConfigurationManager.AppSettings["BizCode"], paramModel.BizWorkYear.ToString());
                    if (sboFinacialIndexT == null)
                    {
                        continue;
                    }

                    //종합점수 조회하여 분류별로 딕셔너리 저장
                    var point = await GetCompanyTotalPoint(quesMasters.QuestionSn, sboFinacialIndexT);

                    if (point >= 0 && point <= 50)
                        dicStartUp.Add(compMapping.CompSn, quesMasters.QuestionSn);
                    else if (point > 50 && point <= 75)
                        dicGrowth.Add(compMapping.CompSn, quesMasters.QuestionSn);
                    else
                        dicIndependent.Add(compMapping.CompSn, quesMasters.QuestionSn);
                }
            }



            //리스트 데이터 생성
            var quesResult1s = await quesResult1Service.GetQuesResult1sAsync(paramModel.QuestionSn, quesCheckListSmallClassCd);

            int count = 1;
            var CheckList = new List<CheckListViewModel>();
            foreach (var item in quesResult1s)
            {
                CheckListViewModel checkListViewModel = new CheckListViewModel();
                checkListViewModel.Count = count.ToString();
                checkListViewModel.AnsVal = item.AnsVal.Value;
                checkListViewModel.DetailCd = item.QuesCheckList.DetailCd;
                checkListViewModel.Title = item.QuesCheckList.ReportTitle;
                //창업보육단계 평균
                int startUpCnt = await GetCheckListCnt(dicStartUp, checkListViewModel.DetailCd);
                checkListViewModel.StartUpAvg = Math.Round(((startUpCnt + item.QuesCheckList.StartUpStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
                //보육성장단계 평균
                int growthCnt = await GetCheckListCnt(dicGrowth, checkListViewModel.DetailCd);
                checkListViewModel.GrowthAvg = Math.Round(((growthCnt + item.QuesCheckList.GrowthStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
                //자립성장단계 평균
                int IndependentCnt = await GetCheckListCnt(dicIndependent, checkListViewModel.DetailCd);
                checkListViewModel.IndependentAvg = Math.Round(((IndependentCnt + item.QuesCheckList.IndependentStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
                //참여기업 평균
                checkListViewModel.BizInCompanyAvg = Math.Round(((IndependentCnt + growthCnt + startUpCnt + 0.0) / (dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
                //전체 평균
                checkListViewModel.TotalAvg = Math.Round(((IndependentCnt + growthCnt + startUpCnt + item.QuesCheckList.TotalStep.Value + 0.0) / (39 + dicStartUp.Count + dicGrowth.Count + dicIndependent.Count)) * 100, 0).ToString();
                CheckList.Add(checkListViewModel);
                count++;
            }

            return CheckList;
        }
        public async Task<ActionResult> OrgDivided(OrgHR01ViewModel viewModel, BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "09");

            foreach (var item in viewModel.CommentList)
            {
                var comment = listRptMentorComment.SingleOrDefault(i => i.DetailCd == item.DetailCd);
                if (comment == null)
                {
                    rptMentorCommentService.Insert(ReportHelper.MakeRptMentorcomment(item, paramModel));
                }
                else
                {
                    comment.Comment = item.Comment;
                }
            }
            await rptMentorCommentService.SaveDbContextAsync();

            if (viewModel.SubmitType == "T")
            {
                return RedirectToAction("OrgDivided", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
            else
            {
                return RedirectToAction("RndCost", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
        }
        //32p
        public ActionResult GrowthRoadMapCover(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            return View(paramModel);

        }
        public async Task<ActionResult> CompanyInfo(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            if(paramModel.Status == "T")
            {
                var rptMaster = await rptMasterService.GetRptMasterAsync(paramModel.QuestionSn, paramModel.CompSn, paramModel.BizWorkYear);
                rptMaster.Status = "P";
                await rptMasterService.SaveDbContextAsync();
            }

            var quesCompInfo = await quesCompInfoService.GetQuesCompInfoAsync(paramModel.QuestionSn);
            var quesCompInfoView = Mapper.Map<QuesCompanyInfoViewModel>(quesCompInfo);
            if (quesCompInfoView.PublishDt == "0001-01-01")
                quesCompInfoView.PublishDt = null;

            ViewBag.paramModel = paramModel;
            return View(quesCompInfoView);

        }
        //p36 회사핵심내용
        public async Task<ActionResult> GrowthTotalProposal(BasicSurveyReportViewModel paramModel)
        {
            ViewBag.LeftMenu = Global.Report;

            GrowthStrategyViewModel viewModel = new GrowthStrategyViewModel();

            //검토결과 데이터 생성
            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "36");

            //레포트 체크리스트
            var enumRptCheckList = await rptCheckListService.GetRptCheckListBySmallClassCd("36");

            //CommentList 채우기
            var CommentList = ReportHelper.MakeCommentViewModel(enumRptCheckList, listRptMentorComment);


            viewModel.CommentList = CommentList;

            ViewBag.paramModel = paramModel;

            return View(viewModel);
        }
        public async Task<ActionResult> RiskMgmtEvalProfession(BasicSurveyReportViewModel paramModel, RiskMgmtViewModel viewModel)
        {
            ViewBag.LeftMenu = Global.Report;

            var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "31");

            foreach (var item in viewModel.CommentList)
            {
                var comment = listRptMentorComment.SingleOrDefault(i => i.DetailCd == item.DetailCd);
                if (comment == null)
                {
                    rptMentorCommentService.Insert(ReportHelper.MakeRptMentorcomment(item, paramModel));
                }
                else
                {
                    comment.Comment = item.Comment;
                }
            }

            foreach (var item in viewModel.CheckBoxList)
            {
                var comment = listRptMentorComment.SingleOrDefault(i => i.DetailCd == item.DetailCd);
                if (comment == null)
                {
                    rptMentorCommentService.Insert(ReportHelper.MakeRptMentorcomment(item, paramModel));
                }
                else
                {
                    comment.Comment = item.CheckVal.ToString();
                }
            }


            await rptMentorCommentService.SaveDbContextAsync();


            if (viewModel.SubmitType == "T") //임시저장
            {
                return RedirectToAction("RiskMgmtEvalProfession", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
            else
            {
                return RedirectToAction("GrowthRoadMapCover", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn });
            }
        }
        public async Task<ActionResult> FinanceReport(BasicSurveyReportViewModel paramModel, string curPage)
        {
            ViewBag.LeftMenu = Global.Report;
            //사업관리기관 DownDown List Data
            ViewBag.SelectBizWorkYearList = ReportHelper.MakeYear(2015);

            var compSn = Session[Global.CompSN].ToString();
            var executorId = Session[Global.LoginID].ToString();

            if (Session[Global.UserDetailType].ToString() == "A")
                executorId = null;

            //사업 DropDown List Data
            var listScBizWork = await _scBizWorkService.GetBizWorkList(int.Parse(compSn), executorId, paramModel.BizWorkYear);
            ViewBag.SelectBizWorkList = ReportHelper.MakeBizWorkList(listScBizWork);


            //사업별 기업 조회
            int pagingSize = int.Parse(ConfigurationManager.AppSettings["PagingSize"]);

            var scCompMappings = await _scCompMappingService.GetPagedListCompMappingsAsync(int.Parse(curPage ?? "1"), pagingSize, int.Parse(compSn), executorId, paramModel.BizWorkSn);

            //뷰모델 맵핑
            var rptMasterListView = Mapper.Map<List<BasicSurveyReportViewModel>>(scCompMappings.ToList());

            return View(new StaticPagedList<BasicSurveyReportViewModel>(rptMasterListView, int.Parse(curPage ?? "1"), pagingSize, scCompMappings.TotalItemCount));

        }