|
|
@@ -649,130 +649,62 @@ namespace CallCenterApi.Interface.Controllers.MedicalFollowup
|
|
649
|
649
|
//获取数据
|
|
650
|
650
|
public ActionResult GetSFList()
|
|
651
|
651
|
{
|
|
652
|
|
- #region 添加表格标题
|
|
653
|
|
- var columns = new List<string>();
|
|
654
|
|
- columns.Add("科室");
|
|
655
|
|
- columns.Add("随访量");
|
|
656
|
|
- columns.Add("以随访量");
|
|
657
|
|
- columns.Add("科室随访率");
|
|
658
|
|
- #endregion
|
|
659
|
|
- return Success("获取随访率标题成功", columns);
|
|
660
|
|
- }
|
|
661
|
|
-
|
|
662
|
|
-
|
|
663
|
|
- public ActionResult GetSFDataList(string ks, string stime, string etime)
|
|
664
|
|
- {
|
|
665
|
|
- ActionResult res = NoToken("未知错误,请重新登录");
|
|
666
|
|
- DataTable dtNew = new DataTable();
|
|
667
|
|
- dtNew = GetDataKSSL();
|
|
668
|
|
- res = Success("获取科室随访率统计数据成功", dtNew);
|
|
669
|
|
-
|
|
670
|
|
- return res;
|
|
|
652
|
+ //if (Request.IsAuthenticated)
|
|
|
653
|
+ //{
|
|
|
654
|
+ return Success("获取随访率成功", GetSFData());
|
|
|
655
|
+ //}
|
|
|
656
|
+ //return NoToken("未知错误,请重新登录");
|
|
671
|
657
|
}
|
|
672
|
658
|
|
|
673
|
|
- //获取数据源
|
|
674
|
|
- private DataTable GetDataKSSL()
|
|
|
659
|
+ private DataTable GetSFData()
|
|
675
|
660
|
{
|
|
676
|
|
- BLL.O_SF_BINGRENQK o_SF_BINGRENQK = new BLL.O_SF_BINGRENQK();
|
|
677
|
|
- DataTable dtNew = new DataTable();
|
|
678
|
|
- #region 编辑表头
|
|
679
|
|
- DataColumn dc1 = new DataColumn("科室名称", Type.GetType("System.String"));
|
|
680
|
|
- DataColumn dc2 = new DataColumn("随访量", Type.GetType("System.String"));
|
|
681
|
|
- DataColumn dc3 = new DataColumn("以随访量", Type.GetType("System.String"));
|
|
682
|
|
- DataColumn dc4 = new DataColumn("科室随访率", Type.GetType("System.String"));
|
|
683
|
|
-
|
|
684
|
|
- dtNew.Columns.Add(dc1);
|
|
685
|
|
- dtNew.Columns.Add(dc2);
|
|
686
|
|
- dtNew.Columns.Add(dc3);
|
|
687
|
|
- dtNew.Columns.Add(dc4);
|
|
688
|
|
- #endregion
|
|
|
661
|
+ DataTable dt = new DataTable();
|
|
|
662
|
+ dt.Columns.Add("科室");
|
|
|
663
|
+ dt.Columns.Add("总量");
|
|
|
664
|
+ dt.Columns.Add("随访量");
|
|
|
665
|
+ dt.Columns.Add("随访率");
|
|
|
666
|
+ dt.Columns.Add("rate",typeof(double));
|
|
|
667
|
+
|
|
|
668
|
+ var kslist = DbHelperSQL.Query("select distinct CYKS FROM SF_BINGRENQK").Tables[0];
|
|
|
669
|
+ var tlist = DbHelperSQL.Query("select count(1) Num,CYKS FROM SF_BINGRENQK group by CYKS").Tables[0];
|
|
|
670
|
+ var sflist = DbHelperSQL.Query("select CYKS,COUNT(1) Num from SF_BINGRENQK a,SF_Result b where a.BINGRENZYID=b.F_Id and b.F_Result='正常接通' group by CYKS").Tables[0];
|
|
|
671
|
+
|
|
|
672
|
+ foreach (DataRow dr in kslist.Rows)
|
|
|
673
|
+ {
|
|
|
674
|
+ var drnew = dt.NewRow();
|
|
|
675
|
+ var cyks = dr["CYKS"].ToString();
|
|
|
676
|
+ drnew["科室"] = cyks;
|
|
|
677
|
+ var zl = tlist.Select("CYKS='" + cyks + "'").FirstOrDefault()?.ItemArray[0].ToString() ?? "";
|
|
|
678
|
+ if (zl != "")
|
|
|
679
|
+ {
|
|
|
680
|
+ drnew["总量"] = zl;
|
|
|
681
|
+ var sfl = sflist.Select("CYKS='" + cyks + "'").FirstOrDefault()?.ItemArray[1].ToString() ?? "0";
|
|
|
682
|
+ drnew["随访量"] = sfl;
|
|
|
683
|
+ var Rate = Math.Round(double.Parse(sfl)*100 / double.Parse(zl),2);
|
|
|
684
|
+ drnew["rate"] = Rate;
|
|
|
685
|
+ drnew["随访率"] = Rate + "%";
|
|
|
686
|
+ }
|
|
689
|
687
|
|
|
690
|
|
-
|
|
691
|
|
- DataTable ks = o_SF_BINGRENQK.GetKSList().Tables[0];
|
|
692
|
|
- for (int i = 0; i < ks.Rows.Count; i++)
|
|
693
|
|
- {
|
|
694
|
|
- DataRow drNew = dtNew.NewRow();
|
|
695
|
|
- drNew["科室名称"] = ks;
|
|
|
688
|
+ dt.Rows.Add(drnew);
|
|
696
|
689
|
}
|
|
697
|
|
- DataTable zl = o_SF_BINGRENQK.GetKSSFCount().Tables[0];
|
|
698
|
|
- for (int i = 0; i < zl.Rows.Count; i++)
|
|
699
|
|
- {
|
|
700
|
|
- DataRow drNew = dtNew.NewRow();
|
|
701
|
|
- drNew["随访量"] = zl;
|
|
702
|
|
- }
|
|
703
|
|
- DataTable YSF = o_SF_BINGRENQK.GetYSFCount().Tables[0];
|
|
704
|
|
-
|
|
705
|
|
- #region
|
|
706
|
|
- //一天24小时
|
|
707
|
|
- //for (int i = 0; i < 24; i++)
|
|
708
|
|
- //{
|
|
709
|
|
- // DateTime stimes = Convert.ToDateTime(stime + " 00:00:00").AddHours(i);
|
|
710
|
|
- // DateTime etimes = Convert.ToDateTime(stime + " 00:59:59").AddHours(i);
|
|
711
|
|
- // DataRow drNew = dtNew.NewRow();
|
|
712
|
690
|
|
|
713
|
|
- //SELECT BeginTime, * FROM T_Call_CallRecords WHERE DATEPART(hh,BeginTime) = DATEPART(hh, DATEADD(hh,-2,GETDATE())) and DATEPART(dd,BeginTime) = DATEPART(dd, GETDATE()) and DATEPART(mm, BeginTime) = DATEPART(mm, GETDATE()) and DATEPART(yy, BeginTime) = DATEPART(yy, GETDATE())
|
|
|
691
|
+ var dtnew = dt.Select("1=1", "rate desc").CopyToDataTable();
|
|
|
692
|
+ dtnew.Columns.Remove("rate");
|
|
714
|
693
|
|
|
715
|
|
- //var a = "";
|
|
716
|
|
- //var callInTimes ="";
|
|
717
|
|
- ////list.Where(x => x.CallType == 0 && x.BeginTime >= stimes && x.BeginTime <= etimes).Count(); //呼入量
|
|
718
|
|
- //if (a=0)
|
|
719
|
|
- //{
|
|
720
|
|
- // callInTimes=
|
|
721
|
|
- //}
|
|
722
|
|
- //var callOutTimes = list.Where(x => x.CallType == 1 && x.BeginTime >= stimes && x.BeginTime <= etimes).Count(); //呼出量
|
|
723
|
|
- //var calledTimes = list.Where(x => x.CallState == 1 && x.BeginTime >= stimes && x.BeginTime <= etimes).Count(); //接通量
|
|
724
|
|
- //var nocalledTimes = list.Where(x => x.CallState == 0 && x.BeginTime >= stimes && x.BeginTime <= etimes).Count();//未接通量
|
|
725
|
|
-
|
|
726
|
|
- ////var calledRate = list.Where(x => x.CallType == 1 && x.BeginTime >= stimes && x.BeginTime <= etimes).Count();
|
|
727
|
|
- //drNew["时间"] = (i + 1).ToString();
|
|
728
|
|
- //drNew["呼入量"] = callInTimes.ToString();
|
|
729
|
|
- //drNew["呼出量"] = callOutTimes.ToString();
|
|
730
|
|
- //drNew["接通量"] = calledTimes.ToString();
|
|
731
|
|
- //drNew["未接通量"] = nocalledTimes.ToString();
|
|
732
|
|
- ////计算未结案率
|
|
733
|
|
- //var calledTotal = calledTimes + nocalledTimes;
|
|
734
|
|
- //Double notRate = 0.00;
|
|
735
|
|
- //if (calledTotal > 0)
|
|
736
|
|
- // notRate = (double)calledTimes / (double)calledTotal;
|
|
737
|
|
- //drNew["接通率"] = (notRate * 100).ToString("0.00") + "%";
|
|
738
|
|
- //////统计结案,未结案数
|
|
739
|
|
- //callInCount += callInTimes;
|
|
740
|
|
- //callOutCount += callOutTimes;
|
|
741
|
|
- //calledCount += calledTimes;
|
|
742
|
|
- //nocalledCount += nocalledTimes;
|
|
743
|
|
- //dtNew.Rows.Add(drNew);
|
|
744
|
|
- // }
|
|
745
|
|
- //#region 获取一条统计信息
|
|
746
|
|
- //DataRow drzj = dtNew.NewRow();
|
|
747
|
|
- //drzj["时间"] = "总计";
|
|
748
|
|
- //drzj["呼入量"] = callInCount.ToString();
|
|
749
|
|
- //drzj["呼出量"] = callOutCount.ToString();
|
|
750
|
|
- //drzj["接通量"] = calledCount.ToString();
|
|
751
|
|
- //drzj["未接通量"] = nocalledCount.ToString();
|
|
752
|
|
- ////计算未结案率
|
|
753
|
|
- //int totalAllCount = calledCount + nocalledCount;
|
|
754
|
|
- //Double calledAllRate = 0.00;
|
|
755
|
|
- //if (totalAllCount > 0)
|
|
756
|
|
- // calledAllRate = (double)calledCount / (double)totalAllCount;
|
|
757
|
|
- //drzj["接通率"] = (calledAllRate * 100).ToString("0.00") + "%";
|
|
758
|
|
- //dtNew.Rows.Add(drzj);
|
|
759
|
|
- #endregion
|
|
760
|
|
- return dtNew;
|
|
|
694
|
+ return dtnew;
|
|
761
|
695
|
}
|
|
|
696
|
+
|
|
762
|
697
|
/// <summary>
|
|
763
|
698
|
/// 导出数据
|
|
764
|
699
|
/// </summary>
|
|
765
|
|
- /// <param name="stime"></param>
|
|
766
|
|
- /// <param name="ks"></param>
|
|
767
|
|
- /// <param name="etime"></param>
|
|
768
|
700
|
/// <returns></returns>
|
|
769
|
|
- public ActionResult ExportExcel(string stime, string ks, string etime)
|
|
|
701
|
+ public ActionResult ExportExcel()
|
|
770
|
702
|
{
|
|
771
|
|
- ActionResult res = NoToken("未知错误,请重新登录");
|
|
772
|
|
- if (Request.IsAuthenticated)
|
|
773
|
|
- {
|
|
|
703
|
+ //ActionResult res = NoToken("未知错误,请重新登录");
|
|
|
704
|
+ //if (Request.IsAuthenticated)
|
|
|
705
|
+ //{
|
|
774
|
706
|
NPOIHelper npoi = new NPOIHelper();
|
|
775
|
|
- DataTable dt = GetDataKSSL();
|
|
|
707
|
+ DataTable dt = GetSFData();
|
|
776
|
708
|
if (npoi.ExportToExcel("科室随访率数据", dt) == "")
|
|
777
|
709
|
{
|
|
778
|
710
|
return Success("导出成功");
|
|
|
@@ -781,45 +713,43 @@ namespace CallCenterApi.Interface.Controllers.MedicalFollowup
|
|
781
|
713
|
{
|
|
782
|
714
|
return Error("导出失败");
|
|
783
|
715
|
}
|
|
784
|
|
- }
|
|
785
|
|
- return res;
|
|
|
716
|
+ //}
|
|
|
717
|
+ //return res;
|
|
786
|
718
|
}
|
|
787
|
719
|
//获取图形数据
|
|
788
|
|
- public ActionResult GetKSSFData(string years)
|
|
|
720
|
+ public ActionResult GetSFChartData()
|
|
789
|
721
|
{
|
|
790
|
722
|
ActionResult res = NoToken("未知错误,请重新登录");
|
|
791
|
|
- if (Request.IsAuthenticated)
|
|
792
|
|
- {
|
|
793
|
|
- string[] arr = new string[12];
|
|
|
723
|
+ //if (Request.IsAuthenticated)
|
|
|
724
|
+ //{
|
|
|
725
|
+ var kslist = DbHelperSQL.Query("select distinct CYKS FROM SF_BINGRENQK").Tables[0];
|
|
|
726
|
+ var tlist = DbHelperSQL.Query("select count(1) Num,CYKS FROM SF_BINGRENQK group by CYKS").Tables[0];
|
|
|
727
|
+ var sflist = DbHelperSQL.Query("select CYKS,COUNT(1) Num from SF_BINGRENQK a,SF_Result b where a.BINGRENZYID=b.F_Id and b.F_Result='正常接通' group by CYKS").Tables[0];
|
|
|
728
|
+ var ksc = kslist.Rows.Count;
|
|
794
|
729
|
|
|
795
|
|
- DataTable dt = new BLL.T_Call_CallRecords().GetList("1=1").Tables[0];
|
|
796
|
|
- DateTime dtNow;
|
|
|
730
|
+ Dictionary<string, double> dics = new Dictionary<string, double>();
|
|
|
731
|
+ for (int i = 0; i < ksc; i++)
|
|
|
732
|
+ {
|
|
|
733
|
+ var cyks = kslist.Rows[i]["CYKS"].ToString();
|
|
797
|
734
|
|
|
798
|
|
- if (string.IsNullOrEmpty(years))
|
|
799
|
|
- {
|
|
800
|
|
- dtNow = DateTime.Now;
|
|
801
|
|
- }
|
|
802
|
|
- else
|
|
803
|
|
- {
|
|
804
|
|
- dtNow = DateTime.Parse(years + "年");
|
|
805
|
|
- }
|
|
806
|
|
- for (int i = 1; i <= 12; i++)
|
|
|
735
|
+ var zl = tlist.Select("CYKS='" + cyks + "'").FirstOrDefault()?.ItemArray[0].ToString() ?? "";
|
|
|
736
|
+ if (zl != "")
|
|
807
|
737
|
{
|
|
808
|
|
- DateTime beginTime = Convert.ToDateTime(dtNow.Year + "-" + i + "-01 00:00:00");
|
|
809
|
|
- int days = DateTime.DaysInMonth(dtNow.Year, beginTime.Month);
|
|
810
|
|
- DataRow[] dtRow = dt.Select("begintime >='" + beginTime.ToString() + "' and beginTime<'" + beginTime.AddDays(days).AddSeconds(-1) + "'");
|
|
811
|
|
- if (dtRow.Length > 0)
|
|
812
|
|
- {
|
|
813
|
|
- arr[i - 1] = dtRow.Length.ToString();
|
|
814
|
|
- }
|
|
815
|
|
- else
|
|
816
|
|
- {
|
|
817
|
|
- arr[i - 1] = "0";
|
|
818
|
|
- }
|
|
|
738
|
+ var sfl = sflist.Select("CYKS='" + cyks + "'").FirstOrDefault()?.ItemArray[1].ToString() ?? "0";
|
|
|
739
|
+ var Rate = Math.Round(double.Parse(sfl)*100 / double.Parse(zl), 2);
|
|
|
740
|
+ dics.Add(cyks, Rate);
|
|
819
|
741
|
}
|
|
820
|
|
-
|
|
821
|
|
- res = Success("获取呼叫量图形数据成功", arr);
|
|
822
|
742
|
}
|
|
|
743
|
+
|
|
|
744
|
+ dics = dics.OrderByDescending(p => p.Value).ToDictionary(p => p.Key, p => p.Value);
|
|
|
745
|
+ var obj = new
|
|
|
746
|
+ {
|
|
|
747
|
+ ks = dics.Keys,
|
|
|
748
|
+ rate=dics.Values
|
|
|
749
|
+ };
|
|
|
750
|
+
|
|
|
751
|
+ res = Success("获取科室随访数据成功", obj);
|
|
|
752
|
+ //}
|
|
823
|
753
|
return res;
|
|
824
|
754
|
}
|
|
825
|
755
|
#endregion
|