예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
        }
예제 #5
0
        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;

        }
예제 #6
0
        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;

        }