Просмотр исходного кода

修改工单类型试剂获取列表和导出excel接口

machenyang лет назад: 8
Родитель
Сommit
5783664ff2

+ 265 - 0
codegit/CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/report/GDLXSJController.cs

@@ -0,0 +1,265 @@
1
+using CallCenter.Utility;
2
+using CallCenterApi.DB;
3
+using CallCenterApi.Interface.Controllers.Base;
4
+using System;
5
+using System.Collections.Generic;
6
+using System.Data;
7
+using System.Linq;
8
+using System.Web;
9
+using System.Web.Mvc;
10
+
11
+namespace CallCenterApi.Interface.Controllers.report
12
+{
13
+    public class GDLXSJController : BaseController
14
+    {
15
+        //// GET: GDLXSJ
16
+        //public ActionResult Index()
17
+        //{
18
+        //    return View();
19
+        //}
20
+        /// <summary>
21
+        /// 获取报表头
22
+        /// </summary>
23
+        /// <returns></returns>
24
+        public ActionResult GetHeadList()
25
+        {
26
+            ActionResult res = NoToken("未知错误,请重新登录");
27
+            DataTable dtNew = new DataTable();
28
+            //添加第一行标题
29
+            //DataColumn dc1 = new DataColumn("");
30
+            //dtNew.Columns.Add(dc1);
31
+            var sqlGDLY1 = "select F_CategoryId,F_CategoryName from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId in (select F_CategoryId from T_RepositoryCategory where F_CategoryType = 1 and F_DeleteFlag = 0 and F_CategoryName = '试剂')";
32
+            var dtGDLY1 = DbHelperSQL.Query(sqlGDLY1).Tables[0];
33
+            int dtGDLY1rowcount = dtGDLY1.Rows.Count;
34
+            //列名
35
+            string[] dtGDLY1_name = new string[dtGDLY1rowcount + 2];
36
+            dtGDLY1_name[0] = "";
37
+            //列数
38
+            int[] dtGDLY1_count = new int[dtGDLY1rowcount + 2];
39
+            dtGDLY1_count[0] = 1;
40
+
41
+            for (int v = 0; v < dtGDLY1rowcount; v++)
42
+            {
43
+                string catename = dtGDLY1.Rows[v]["F_CategoryName"].ToString();
44
+                var count_sub = int.Parse(DbHelperSQL.GetSingle("select count(*) from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId=" + int.Parse(dtGDLY1.Rows[v]["F_CategoryId"].ToString()) + "").ToString());
45
+                dtGDLY1_name[v + 1] = catename;
46
+                dtGDLY1_count[v + 1] = count_sub;
47
+            }
48
+            dtGDLY1_name[dtGDLY1rowcount + 1] = "总计";
49
+            dtGDLY1_count[dtGDLY1rowcount + 1] = 1;
50
+            res = Success("获取工单类型试剂报表表头成功", dtNew);
51
+
52
+            return res;
53
+        }
54
+
55
+        /// <summary>
56
+        /// 获取工单类型试剂报表
57
+        /// </summary>
58
+        /// <param name="stime"></param>
59
+        /// <param name="endtime"></param>
60
+        /// <returns></returns>
61
+        public ActionResult GetDataList(string stime, string endtime)
62
+        {
63
+            ActionResult res = NoToken("未知错误,请重新登录");
64
+            DataTable dtNew = new DataTable();
65
+            //添加第一行标题
66
+            //DataColumn dc1 = new DataColumn("");
67
+            //dtNew.Columns.Add(dc1);
68
+            var sqlGDLY1 = "select F_CategoryId,F_CategoryName from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId in (select F_CategoryId from T_RepositoryCategory where F_CategoryType = 1 and F_DeleteFlag = 0 and F_CategoryName = '试剂')";
69
+            var dtGDLY1 = DbHelperSQL.Query(sqlGDLY1).Tables[0];
70
+            int dtGDLY1rowcount = dtGDLY1.Rows.Count;
71
+            //列名
72
+            string[] dtGDLY1_name = new string[dtGDLY1rowcount + 2];
73
+            dtGDLY1_name[0] = "";
74
+            //列数
75
+            int[] dtGDLY1_count = new int[dtGDLY1rowcount + 2];
76
+            dtGDLY1_count[0] = 1;
77
+
78
+            for (int v = 0; v < dtGDLY1rowcount; v++)
79
+            {
80
+                string catename = dtGDLY1.Rows[v]["F_CategoryName"].ToString();
81
+                var count_sub = int.Parse(DbHelperSQL.GetSingle("select count(*) from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId=" + int.Parse(dtGDLY1.Rows[v]["F_CategoryId"].ToString()) + "").ToString());
82
+                dtGDLY1_name[v + 1] = catename;
83
+                dtGDLY1_count[v + 1] = count_sub;
84
+            }
85
+            dtGDLY1_name[dtGDLY1rowcount + 1] = "总计";
86
+            dtGDLY1_count[dtGDLY1rowcount + 1] = 1;
87
+            dtNew = getData(stime, endtime);
88
+            var obj = new
89
+            {
90
+                linename = dtGDLY1_name,
91
+                linecount = dtGDLY1_count,
92
+                dtlist = dtNew
93
+            };
94
+            res = Success("获取工单来源数据成功", obj);
95
+
96
+            return res;
97
+        }
98
+
99
+        private DataTable getData(string stime, string endtime)
100
+        {
101
+            DataTable dtNew = new DataTable();
102
+            #region 添加表格标题
103
+            ////添加第一行标题
104
+            ////DataColumn dc1 = new DataColumn("");
105
+            ////dtNew.Columns.Add(dc1);
106
+            //var sqlGDLY1 = "select F_CategoryId,F_CategoryName from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId in (select F_CategoryId from T_RepositoryCategory where F_CategoryType = 1 and F_DeleteFlag = 0 and F_CategoryName = '试剂'))";
107
+            //var dtGDLY1 = DbHelperSQL.Query(sqlGDLY1).Tables[0];
108
+            //int dtGDLY1rowcount = dtGDLY1.Rows.Count;
109
+            ////列名
110
+            //string[] dtGDLY1_name = new string[dtGDLY1rowcount + 1];
111
+            //dtGDLY1_name[0] = "";
112
+            ////列数
113
+            //int[] dtGDLY1_count = new int[dtGDLY1rowcount + 1];
114
+            //dtGDLY1_count[0] = 1;
115
+
116
+            //for (int v = 0; v < dtGDLY1rowcount; v++)
117
+            //{
118
+            //    string catename = dtGDLY1.Rows[v]["F_CategoryName"].ToString();
119
+            //    var count_sub = int.Parse(DbHelperSQL.GetSingle("select count(*) from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId=" + int.Parse(dtGDLY1.Rows[v]["F_CategoryId"].ToString()) + "").ToString());
120
+            //    dtGDLY1_name[v + 1] = catename;
121
+            //    dtGDLY1_count[v + 1] = count_sub;
122
+            //}
123
+
124
+            //添加第二行标题
125
+            DataColumn dc = new DataColumn("姓名");
126
+            dtNew.Columns.Add(dc);
127
+            var sqlGDLY = " and F_CategoryType=1 and F_ParentId in (select F_CategoryId from T_RepositoryCategory where F_CategoryType = 1 and F_ParentId in (select F_CategoryId from T_RepositoryCategory where F_CategoryType = 1 and F_DeleteFlag = 0 and F_CategoryName = '试剂'))";
128
+            var recordCount = 0;
129
+            var dtGDLY = BLL.PagerBLL.GetListPager(
130
+              "T_RepositoryCategory",
131
+              "F_CategoryId",
132
+              "*",
133
+              sqlGDLY,
134
+              "ORDER BY F_ParentId asc",
135
+              10,
136
+              1,
137
+              true,
138
+              out recordCount);
139
+            int[] cateid = new int[recordCount];
140
+            List<Model.T_RepositoryCategory> modelList = new BLL.T_RepositoryCategory().DataTableToList(dtGDLY);
141
+
142
+            for (int i = 0; i < modelList.Count; i++)
143
+            {
144
+                string colname = modelList[i].F_CategoryName;
145
+                if (dtNew.Columns.Contains(colname))
146
+                    colname += "_1";
147
+                dtNew.Columns.Add(new DataColumn(colname));
148
+                cateid[i] = modelList[i].F_CategoryId;
149
+            }
150
+            dtNew.Columns.Add("总计");
151
+            #endregion
152
+
153
+            string sqltimeCallRecords = "";
154
+            if (stime != null && stime.Trim() != "")
155
+            {
156
+                sqltimeCallRecords += " and CONVERT(varchar , CreateTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
157
+            }
158
+            if (endtime != null && endtime.Trim() != "")
159
+            {
160
+                sqltimeCallRecords += " and CONVERT(varchar , CreateTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
161
+            }
162
+
163
+            double day = 0;
164
+            if (stime != null && endtime != null && endtime.Trim() != "" && stime.Trim() != "")
165
+            {
166
+                TimeSpan time = Convert.ToDateTime(endtime) - Convert.ToDateTime(stime);
167
+                day = time.Days + 1;
168
+            }
169
+            //获取坐席数据
170
+            DataTable dt = new DataTable();
171
+            string sql = "SELECT * from T_Sys_UserAccount where F_DeleteFlag=0 order by F_Userid asc";
172
+            dt = DbHelperSQL.Query(sql).Tables[0];
173
+            for (int i = 0; i < dt.Rows.Count; i++)
174
+            {
175
+                DataRow drNew = dtNew.NewRow();
176
+                drNew["姓名"] = dt.Rows[i]["F_UserName"].ToString();
177
+                //获取工单类型数据
178
+                int sum = 0;
179
+                for (int j = 0; j < cateid.Length; j++)
180
+                {
181
+                    string str = "select count(*) from T_Wo_WorkOrder where IsDel=0 and typeclass=" + cateid[j] + " and CreateUserID='" + dt.Rows[i]["F_Userid"].ToString() + "'" + sqltimeCallRecords;
182
+                    int ecount = int.Parse(DbHelperSQL.GetSingle(str).ToString());
183
+
184
+                    sum += ecount;
185
+                    drNew[j + 1] = ecount.ToString();
186
+                }
187
+                drNew["总计"] = sum;
188
+                dtNew.Rows.Add(drNew);
189
+            }
190
+            DataRow drsum = dtNew.NewRow();
191
+            drsum[0] = "总计";
192
+
193
+            for (int i = 1; i < dtNew.Columns.Count; i++)
194
+            {
195
+                int ecount = 0;
196
+                int sum = 0;
197
+                for (int j = 1; j < dtNew.Rows.Count; j++)
198
+                {
199
+                    if (dtNew.Rows[j][i] != null)
200
+                    {
201
+                        ecount = int.Parse(dtNew.Rows[j][i].ToString());
202
+                        sum += ecount;
203
+                    }
204
+                }
205
+                drsum[i] = sum;
206
+            }
207
+            dtNew.Rows.Add(drsum);
208
+            return dtNew;
209
+        }
210
+
211
+        //导出数据
212
+        public ActionResult ExptList(string stime, string endtime)
213
+        {
214
+            ActionResult res = NoToken("未知错误,请重新登录");
215
+            if (Request.IsAuthenticated)
216
+            {
217
+                DataTable dtNew = new DataTable();
218
+                //添加第一行标题
219
+                //DataColumn dc1 = new DataColumn("");
220
+                //dtNew.Columns.Add(dc1);
221
+                var sqlGDLY1 = "select F_CategoryId,F_CategoryName from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId in (select F_CategoryId from T_RepositoryCategory where F_CategoryType = 1 and F_DeleteFlag = 0 and F_CategoryName = '试剂')";
222
+                var dtGDLY1 = DbHelperSQL.Query(sqlGDLY1).Tables[0];
223
+                int dtGDLY1rowcount = dtGDLY1.Rows.Count;
224
+                //每块占的列数
225
+                int[] colpos = new int[dtGDLY1rowcount + 1];
226
+                colpos[0] = 1;
227
+                //列名
228
+                string[] dtGDLY1_name = new string[dtGDLY1rowcount + 2];
229
+                dtGDLY1_name[0] = "";
230
+                //列数
231
+                int[] dtGDLY1_count = new int[dtGDLY1rowcount + 2];
232
+                dtGDLY1_count[0] = 1;
233
+
234
+                for (int v = 0; v < dtGDLY1rowcount; v++)
235
+                {
236
+                    string catename = dtGDLY1.Rows[v]["F_CategoryName"].ToString();
237
+                    var count_sub = int.Parse(DbHelperSQL.GetSingle("select count(*) from T_RepositoryCategory where 1=1 and F_CategoryType = 1 and F_ParentId=" + int.Parse(dtGDLY1.Rows[v]["F_CategoryId"].ToString()) + "").ToString());
238
+                    dtGDLY1_name[v + 1] = catename;
239
+                    dtGDLY1_count[v + 1] = count_sub;
240
+                    colpos[v + 1] = count_sub;
241
+                }
242
+                dtGDLY1_name[dtGDLY1rowcount + 1] = "总计";
243
+                dtGDLY1_count[dtGDLY1rowcount + 1] = 1;
244
+
245
+                NPOIHelper npoi = new NPOIHelper();
246
+                DataTable dt = getData(stime, endtime);
247
+                if (npoi.ExportToExcelForGDLX("工单类型试剂报表", dt, "试剂", dtGDLY1_name, colpos) == "")
248
+                {
249
+                    var obj = new
250
+                    {
251
+                        datatable = dt,
252
+                        dtnames = dtGDLY1_name,
253
+                        dtcols = colpos
254
+                    };
255
+                    return Success("导出成功", obj);
256
+                }
257
+                else
258
+                {
259
+                    return Error("导出失败");
260
+                }
261
+            }
262
+            return res;
263
+        }
264
+    }
265
+}