/// <summary> /// 인적자원관리 /// </summary> /// <param name="questionSn"></param> /// <returns></returns> public async Task<double> GetHumanResourceMng(int questionSn, SHUSER_SboFinancialIndexT sboFinancialIndexT) { double totalPoint = 0; // A1D101 : 인적자윈의 확보와 개발관리 var quesResult1sHrMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1D101"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sHrMng)), 11); // A1D102 : 이적자원의 보상 및 유지관리 var quesResult1sMaintenance = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1D102"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sMaintenance)), 8); //재무적성과 // 다래 DB를 통한 계산 totalPoint = totalPoint + ((ReportHelper.CalcFinancialPoint(sboFinancialIndexT) / 100) * 26); // A1E102 : 지적재산권성과 var quesResult2sPatent = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1E102"); //등록 특허 var RegPatent = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10201"); //등록 실용신안 var RegUtilityModel = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10202"); //출원 특허 var ApplyPatent = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10203"); //출원 실용신안 var ApplyUtilityModel = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10204"); //기타 var Etc = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10205"); { double avg = (int.Parse(RegPatent.D) * 3) + (int.Parse(ApplyPatent.D) * 2) + (int.Parse(RegUtilityModel.D) * 2) + int.Parse(ApplyUtilityModel.D) + int.Parse(Etc.D); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeH(avg), 3); } // A1E103 : 임직원 수 var quesResult2sTotalEmp = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1E103"); //전체 임직원 var TotalEmploy = quesResult2sTotalEmp.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10301"); if (int.Parse(TotalEmploy.D451) != 0) { double avg = (int.Parse(TotalEmploy.D) / int.Parse(TotalEmploy.D451)) - 1; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeI(avg), 3); } return totalPoint; }
/// <summary> /// 기술경영,마케팅 /// </summary> public async Task<double> GetTechMng(int questionSn, SHUSER_SboFinancialIndexT sboFinancialIndexT) { double totalPoint = 0; // 연구개발 투자 { double avg = Convert.ToDouble(sboFinancialIndexT.ReserchAmt / sboFinancialIndexT.CurrentSale) * 100; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeM(avg), 2); } //연구개발 인력의 비율 var quesResult2sEmpRate = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1B102"); //전체임직원수 var TotalEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10202"); //연구개발인력 var RndEmp = quesResult2sEmpRate.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10201"); if (int.Parse(TotalEmp.D) != 0) { double avg = (int.Parse(RndEmp.D) / int.Parse(TotalEmp.D)) * 100; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 1); } //연구개발 인력의 능력 var quesResult2sEmpCapa = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1B103"); //박사급 var DoctorEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10301"); //석사급 var MasterEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10302"); //학사급 var CollegeEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10303"); //기능사급 var TechEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10304"); //고졸이하급 var HighEmp = quesResult2sEmpCapa.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10305"); if ((int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D) + int.Parse(CollegeEmp.D) + int.Parse(TechEmp.D) + int.Parse(HighEmp.D)) != 0) { double avg = (int.Parse(DoctorEmp.D) * 5) + (int.Parse(MasterEmp.D) * 4) + (int.Parse(CollegeEmp.D) * 3) + (int.Parse(TechEmp.D) * 2) + (int.Parse(HighEmp.D) * 1) / (int.Parse(DoctorEmp.D) + int.Parse(MasterEmp.D) + int.Parse(CollegeEmp.D) + int.Parse(TechEmp.D) + int.Parse(HighEmp.D)); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeF(avg), 3); } // A1B104 : 사업화역량 var quesResult1sBizCapa = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B104"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sBizCapa)), 5); // A1B105 : 사업화실적 var quesResult2sBizResult = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1B105"); //사업화실적 총 건수 var BizResultCnt = quesResult2sBizResult.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1B10502"); { double avg = int.Parse(BizResultCnt.D) + int.Parse(BizResultCnt.D451) + int.Parse(BizResultCnt.D452) / 3; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeE(avg), 4); } // A1B106 : 생산설비의 운영체제 및 관리 var quesResult1sFacMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B106"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sFacMng)), 2); // A1B107 : 공정관리 var quesResult1sProcess = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B107"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sProcess)), 2); // A1B108 : 품질관리 var quesResult1sQaMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1B108"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeC(ReportHelper.CalcCheckCount(quesResult1sQaMng)), 3); // A1C101 : 마케팅 전략의 수립 및 실행 var quesResult1sMarketing = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1C101"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeG(ReportHelper.CalcCheckCount(quesResult1sMarketing)), 8); // A1C102 : 고객관리 var quesResult1sCustMng = await quesResult1Service.GetQuesResult1sAsync(questionSn, "A1C102"); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeA(ReportHelper.CalcCheckCount(quesResult1sCustMng)), 9); return totalPoint; }
public async Task<double> GetCompanyTotalPoint(int qustionSn, SHUSER_SboFinancialIndexT sboFinancialIndexT) { double totalPoint = 0; totalPoint = totalPoint + await GetOverAllManagementTotalPoint(qustionSn); totalPoint = totalPoint + await GetTechMng(qustionSn, sboFinancialIndexT); totalPoint = totalPoint + await GetHumanResourceMng(qustionSn, sboFinancialIndexT); return totalPoint; }
public async Task<double> GetFinanceMng(int questionSn, SHUSER_SboFinancialIndexT sboFinancialIndexT) { //산식엑셀 1-20 ~ 1-22 double totalPoint = 0; //재무적성과 // 다래 DB를 통한 계산 totalPoint = totalPoint + ((ReportHelper.CalcFinancialPoint(sboFinancialIndexT) / 100) * 26); // A1E102 : 지적재산권성과 var quesResult2sPatent = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1E102"); //등록 특허 var RegPatent = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10201"); //등록 실용신안 var RegUtilityModel = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10202"); //출원 특허 var ApplyPatent = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10203"); //출원 실용신안 var ApplyUtilityModel = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10204"); //기타 var Etc = quesResult2sPatent.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10205"); { double avg = (int.Parse(RegPatent.D) * 3) + (int.Parse(ApplyPatent.D) * 2) + (int.Parse(RegUtilityModel.D) * 2) + int.Parse(ApplyUtilityModel.D) + int.Parse(Etc.D); totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeH(avg), 3); } // A1E103 : 임직원 수 var quesResult2sTotalEmp = await quesResult2Service.GetQuesResult2sAsync(questionSn, "A1E103"); //전체 임직원 var TotalEmploy = quesResult2sTotalEmp.SingleOrDefault(i => i.QuesCheckList.DetailCd == "A1E10301"); if (int.Parse(TotalEmploy.D451) != 0) { //double avg = (int.Parse(TotalEmploy.D) / double.Parse(TotalEmploy.D451)) - 1; double avg = (int.Parse(TotalEmploy.D) - double.Parse(TotalEmploy.D451)) / double.Parse(TotalEmploy.D451) * 100; totalPoint = totalPoint + ReportHelper.CalcPoint(ReportHelper.GetCodeTypeI(avg), 3); } return totalPoint; }
public static double CalcFinancialPoint(SHUSER_SboFinancialIndexT sboFinancialIndexT) { //각 항목의 계산값이 0보다 작을경우는 0점으로 처리한다. //매출영업이익률(영업이익 ÷ 매출액)×100 //if(sboFinancialIndexT.CurrentSale.Value == 0) ? double a = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.CurrentSale.Value) * 100); double aPoint = (a / (5.24 + a)) * 17; if (a < 0) { aPoint = 0; } //자기자본순이익률(당기순이익 ÷ 자본총계)×100 double b = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentEarning.Value / sboFinancialIndexT.TotalCapital.Value) * 100); double bPoint = (b / (5.19 + b)) * 6; if (b < 0) { bPoint = 0; } //매출증가율((당기매출액 - 전기매출액) ÷ 전기매출액)×100 double c = (sboFinancialIndexT.PrevSale.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentSale.Value - sboFinancialIndexT.PrevSale.Value) / sboFinancialIndexT.PrevSale.Value) * 100); double cPoint = ((c / (4.93 + c)) * 9); if (c < 0 ) { cPoint = 0; } //전기매출액이 0 이고 당기매출액이 0 일때 = 0점 //전기매출액이 0 이고 당기매출액이 0 이상일때 = 9점 if (sboFinancialIndexT.PrevSale.Value == 0 && sboFinancialIndexT.CurrentSale.Value > 0) { cPoint = 9; } if(sboFinancialIndexT.PrevSale.Value == 0 && sboFinancialIndexT.CurrentSale.Value == 0) { cPoint = 0; } //순이익증가율((당기순이익 - 전기순이익) ÷ 전기순이익)×100 double d = (sboFinancialIndexT.PrevEarning.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentEarning.Value - sboFinancialIndexT.PrevEarning.Value) / sboFinancialIndexT.PrevEarning.Value) * 100); double dPoint = (d / (19.96 + d)) * 14; if (d < 0) { dPoint = 0; } //당기손익이 0또는 손실(음수)일때에는 전기손익에 관계없이 = 0점 //당기손익이 이익(양수)이고 전기손익이 0 또는 손실(음수) 일때 = 14점 if (sboFinancialIndexT.CurrentEarning.Value <= 0) { dPoint = 0; } if (sboFinancialIndexT.CurrentEarning.Value > 0 && sboFinancialIndexT.PrevEarning.Value <= 0) { dPoint = 14; } //당좌비율((유동자산 - 재고자산) ÷ 유동부채)×100 double e = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) / sboFinancialIndexT.CurrentLiability.Value) * 100); double ePoint = (e / (102.09 + e)) * 4; if (e < 0) { ePoint = 0; } //유동비율(유동자산 ÷ 유동부채)×100 double f = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentAsset.Value / sboFinancialIndexT.CurrentLiability.Value) * 100); double fPoint = (f / (136.27 + f)) * 13; if (f < 0) { f = 0; } //부채비율(부채 ÷ 자본총계)×100 double g = (sboFinancialIndexT.TotalAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.TotalLiability.Value / sboFinancialIndexT.TotalCapital.Value) * 100); double gPoint = (g / (141.66 + g)) * 9; if (g < 0) { gPoint = 0; } //이자보상비율(영업이익 ÷ 이자비용)×100 double h = (sboFinancialIndexT.InterstCost.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.InterstCost.Value) * 100); double hPoint = (h / (333.63 + h)) * 7; if (h < 0) { hPoint = 0; } //총자산회전율(매출액 ÷ 총자산)×100 double i = (sboFinancialIndexT.TotalAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.TotalAsset.Value) * 100); double iPoint = (i / (114.75 + i)) * 3; if (i < 0) { iPoint = 0; } //매출채권회전율(매출액 ÷ 매출채권(=외상매출금,미수금,받을어음))×100 double j = (sboFinancialIndexT.SalesCredit.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.SalesCredit.Value) * 100); double jPoint = (j / (569.36 + j)) * 3; if (j < 0) { jPoint = 0; } //재고자산회전율(매출액 ÷ 재고자산)×100 double k = (sboFinancialIndexT.InventoryAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.InventoryAsset.Value) * 100); double kPoint = (k / (915.48 + k)) * 4; if (k < 0) { kPoint = 0; } //재고자산이 0일때 = 4점 if(sboFinancialIndexT.InventoryAsset.Value == 0) { kPoint = 4; } //부가가치율(부가가치 ÷ 매출액)×100 double l = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.CurrentSale.Value) * 100); double lPoint = (l / (24.02 + l)) * 4; if (l < 0) { lPoint = 0; } //노동생산성(매출액-재료비) ÷ 종업원수 double m = (sboFinancialIndexT.QtEmp.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value - sboFinancialIndexT.MaterialCost.Value) / sboFinancialIndexT.QtEmp.Value); double mPoint = (m / (16163671 + m)) * 4; if (m < 0) { mPoint = 0; } //자본생산성((부가가치 ÷ 자본총계)×100 double n = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.TotalCapital.Value) * 100); double nPoint = (n / (137.01 + n)) * 3; if (n < 0) { nPoint = 0; } //재무점수로 환산 double point = aPoint + bPoint + cPoint + dPoint + ePoint + fPoint + gPoint + hPoint + iPoint + jPoint + kPoint + lPoint + mPoint + nPoint; return point; }
public static double CalcFinancialPoint(SHUSER_SboFinancialIndexT sboFinancialIndexT) { //매출영업이익률(영업이익 ÷ 매출액)×100 //if(sboFinancialIndexT.CurrentSale.Value == 0) ? double a = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.CurrentSale.Value) * 100); //자기자본순이익률(당기순이익 ÷ 자본총계)×100 double b = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentEarning.Value / sboFinancialIndexT.TotalCapital.Value) * 100); //매출증가율((당기매출액 - 전기매출액) ÷ 전기매출액)×100 double c = (sboFinancialIndexT.PrevSale.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentSale.Value - sboFinancialIndexT.PrevSale.Value) / sboFinancialIndexT.PrevSale.Value) * 100); //순이익증가율((당기순이익 - 전기순이익) ÷ 전기순이익)×100 double d = (sboFinancialIndexT.PrevEarning.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentEarning.Value - sboFinancialIndexT.PrevEarning.Value) / sboFinancialIndexT.PrevEarning.Value) * 100); //당좌비율((유동자산 - 재고자산) ÷ 유동부채)×100 double e = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble(((sboFinancialIndexT.CurrentAsset.Value - sboFinancialIndexT.InventoryAsset.Value) / sboFinancialIndexT.CurrentLiability.Value) * 100); //유동비율(유동자산 ÷ 유동부채)×100 double f = (sboFinancialIndexT.CurrentLiability.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentAsset.Value / sboFinancialIndexT.CurrentLiability.Value) * 100); //부채비율(부채 ÷ 자산총계)×100 double g = (sboFinancialIndexT.TotalAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.TotalLiability.Value / sboFinancialIndexT.TotalAsset.Value) * 100); //이자보상비율(영업이익 ÷ 이자비용)×100 double h = (sboFinancialIndexT.InterstCost.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.OperatingEarning.Value / sboFinancialIndexT.InterstCost.Value) * 100); //총자산회전율(매출액 ÷ 총자산)×100 double i = (sboFinancialIndexT.TotalAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.TotalAsset.Value) * 100); //매출채권회전율(매출액 ÷ 매출채권(=외상매출금,미수금,받을어음))×100 double j = (sboFinancialIndexT.SalesCredit.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.SalesCredit.Value) * 100); //재고자산회전율(매출액 ÷ 재고자산)×100 double k = (sboFinancialIndexT.InventoryAsset.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value / sboFinancialIndexT.InventoryAsset.Value) * 100); //부가가치율(부가가치 ÷ 매출액)×100 double l = (sboFinancialIndexT.CurrentSale.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.CurrentSale.Value) * 100); //노동생산성(매출액-재료비) ÷ 종업원수 double m = (sboFinancialIndexT.QtEmp.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.CurrentSale.Value - sboFinancialIndexT.MaterialCost.Value) / sboFinancialIndexT.QtEmp.Value); //자본생산성((부가가치 ÷ 자본총계)×100 double n = (sboFinancialIndexT.TotalCapital.Value == 0) ? 0 : Convert.ToDouble((sboFinancialIndexT.ValueAdded.Value / sboFinancialIndexT.TotalCapital.Value) * 100); //재무점수로 환산 double point = ((a / (5.24 + a)) * 17) + ((b / (5.19 + b)) * 6) + ((c / (4.93 + c)) * 9) + ((d / (19.96 + d)) * 14) + ((e / (102.09 + e)) * 4) + ((f / (136.27 + f)) * 13) + ((g / (141.66 + g)) * 9) + ((h / (333.63 + h)) * 7) + ((i / (114.75 + i)) * 3) + ((j / (569.36 + j)) * 3) + ((k / (915.48 + k)) * 4) + ((l / (24.02 + l)) * 4) + ((m / (16163671 + m)) * 4) + ((n / (137.01 + n)) * 3); return point; }