public async Task<ActionResult> OrgProductivity(OrgProductivityViewModel viewModel, BasicSurveyReportViewModel paramModel) { ViewBag.LeftMenu = Global.Report; var listRptMentorComment = await rptMentorCommentService.GetRptMentorCommentListAsync(paramModel.QuestionSn, paramModel.BizWorkSn, paramModel.BizWorkYear, "08"); 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("OrgProductivity", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn }); } else { return RedirectToAction("OrgDivided", "BasicSurveyReport", new { BizWorkSn = paramModel.BizWorkSn, CompSn = paramModel.CompSn, BizWorkYear = paramModel.BizWorkYear, Status = paramModel.Status, QuestionSn = paramModel.QuestionSn }); } }
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); }