You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

320 lines
15 KiB

  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架
  13. /// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司
  14. /// 创 建:超级管理员
  15. /// 日 期:2022-07-11 14:34
  16. /// 描 述:数据中心一卡通对接
  17. /// </summary>
  18. public class YKTStateMentService : RepositoryFactory
  19. {
  20. #region 获取数据
  21. /// <summary>
  22. /// 获取页面显示列表数据
  23. /// </summary>
  24. /// <param name="pagination">分页参数</param>
  25. /// <param name="queryJson">查询参数</param>
  26. /// <returns></returns>
  27. public IEnumerable<YKTStateMentEntity> GetPageList(Pagination pagination, string queryJson)
  28. {
  29. try
  30. {
  31. var queryParam = queryJson.ToJObject();
  32. var strSql = new StringBuilder();
  33. strSql.Append(@"select * from (
  34. SELECT A.OUTID AS STUPHONE,A.CUSTOMERID AS YKTNO,round(A.OPFARE/100,2) AS MONEY,round(A.ODDFARE/100,2) AS BALANCE,A.OPDT AS HAPPENTIME,A.DSCRP AS SUBJECT,B.TERMNAME,C.StuNo,C.StuName,d.DeptNo,d.DeptName,e.ClassNo,e.ClassName,c.identityno as IdentityCardNo, f.MajorName,c.GenderNo
  35. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  36. left join ds_stuinfo C on A.OUTID = C.mobile
  37. left join ds_dept d on c.deptno = d.deptno
  38. left join ds_classinfo e on c.classno = e.classno
  39. left join ds_major f on c.majorno=f.majorno
  40. where stuno is not null
  41. union all
  42. SELECT A.OUTID AS STUPHONE,A.CUSTOMERID AS YKTNO,round(A.OPFARE/100,2) AS MONEY,round(A.ODDFARE/100,2) AS BALANCE,A.OPDT AS HAPPENTIME,A.DSCRP AS SUBJECT,B.TERMNAME,C.StuNo,C.StuName,d.DeptNo,d.DeptName,e.ClassNo,e.ClassName,c.identityno as IdentityCardNo, f.MajorName,c.GenderNo
  43. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  44. left join ds_stuinfo C on A.OUTID = C.stuno
  45. left join ds_dept d on c.deptno = d.deptno
  46. left join ds_classinfo e on c.classno = e.classno
  47. left join ds_major f on c.majorno=f.majorno
  48. where stuno is not null ) aa where 1=1");
  49. if (!queryParam["StuNo"].IsEmpty())
  50. {
  51. strSql.Append($" AND StuNo like '%{queryParam["StuNo"].ToString()}%' ");
  52. }
  53. if (!queryParam["StuName"].IsEmpty())
  54. {
  55. strSql.Append($" AND StuName like '%{queryParam["StuName"].ToString()}%' ");
  56. }
  57. if (!queryParam["DeptNo"].IsEmpty())
  58. {
  59. strSql.Append($" AND DeptNo='{queryParam["DeptNo"].ToString()}' ");
  60. }
  61. if (!queryParam["ClassNo"].IsEmpty())
  62. {
  63. strSql.Append($" AND ClassNo ='{queryParam["ClassNo"].ToString()}' ");
  64. }
  65. if (!queryParam["YKTNO"].IsEmpty())
  66. {
  67. strSql.Append($" AND YKTNO like '%{queryParam["YKTNO"].ToString()}%' ");
  68. }
  69. if (!queryParam["StartDate"].IsEmpty() && !queryParam["EndDate"].IsEmpty())
  70. {
  71. strSql.Append(" and (HAPPENTIME>=to_date('" + queryParam["StartDate"] + "','yyyy-mm-dd hh24:mi:ss') and HAPPENTIME<=to_date('" + queryParam["EndDate"] + "','yyyy-mm-dd hh24:mi:ss'))");
  72. }
  73. return BaseRepository("TLMZYMIDDLEString").FindList<YKTStateMentEntity>(strSql.ToString(), pagination);
  74. }
  75. catch (Exception ex)
  76. {
  77. if (ex is ExceptionEx)
  78. {
  79. throw;
  80. }
  81. else
  82. {
  83. throw ExceptionEx.ThrowServiceException(ex);
  84. }
  85. }
  86. }
  87. /// <summary>
  88. /// 一卡通学生月统计
  89. /// </summary>
  90. /// <param name="pagination"></param>
  91. /// <param name="queryJson"></param>
  92. /// <returns></returns>
  93. public IEnumerable<YKTStateMentEntity> GetAnalysisByMonthForStudentPageList(Pagination pagination, string queryJson)
  94. {
  95. try
  96. {
  97. var queryParam = queryJson.ToJObject();
  98. var strSql = new StringBuilder();
  99. strSql.Append(
  100. @"select StuNo,StuName,GenderNo,DeptName,MajorName,ClassName,identityno as IdentityCardNo, sum(round(OPFARE/100,2)) AS MONEY,count(stuno) as PayTimes,round(sum(round(OPFARE/100,2))/count(stuno),2) as PerMoney
  101. from
  102. (SELECT C.StuNo,C.StuName,c.GenderNo,d.DeptName,d.DeptNo,f.MajorName,f.MajorNo,e.ClassName,c.ClassNo,c.identityno, A.OPFARE,a.OPDT
  103. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  104. left join ds_stuinfo C on A.OUTID = C.mobile
  105. left join ds_dept d on c.deptno = d.deptno
  106. left join ds_classinfo e on c.classno = e.classno
  107. left join ds_major f on c.majorno=f.majorno
  108. where stuno is not null
  109. union all
  110. SELECT C.StuNo,C.StuName,c.GenderNo,d.DeptName,d.DeptNo,f.MajorName,f.MajorNo,e.ClassName,c.ClassNo,c.identityno, A.OPFARE,a.OPDT
  111. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  112. left join ds_stuinfo C on A.OUTID = C.stuno
  113. left join ds_dept d on c.deptno = d.deptno
  114. left join ds_classinfo e on c.classno = e.classno
  115. left join ds_major f on c.majorno=f.majorno
  116. where stuno is not null) aa where 1=1 ");
  117. if (!queryParam["DeptNo"].IsEmpty())
  118. {
  119. strSql.Append($" AND DeptNo='{queryParam["DeptNo"].ToString()}' ");
  120. }
  121. if (!queryParam["MajorNo"].IsEmpty())
  122. {
  123. strSql.Append($" AND MajorNo='{queryParam["MajorNo"].ToString()}' ");
  124. }
  125. if (!queryParam["ClassNo"].IsEmpty())
  126. {
  127. strSql.Append($" AND ClassNo ='{queryParam["ClassNo"].ToString()}' ");
  128. }
  129. if (!queryParam["Months"].IsEmpty())
  130. {
  131. strSql.Append(" and extract(month from OPDT) in("+ queryParam["Months"].ToString() + ")");
  132. }
  133. if (!queryParam["Year"].IsEmpty())
  134. {
  135. strSql.Append(" and extract(year from OPDT) in(" + queryParam["Year"].ToString() + ")");
  136. }
  137. strSql.Append("group by StuNo,GenderNo, StuName,DeptNo, DeptName, MajorName,MajorNo, ClassNo,ClassName, identityno");
  138. return BaseRepository("TLMZYMIDDLEString").FindList<YKTStateMentEntity>(strSql.ToString(), pagination);
  139. }
  140. catch (Exception ex)
  141. {
  142. if (ex is ExceptionEx)
  143. {
  144. throw;
  145. }
  146. else
  147. {
  148. throw ExceptionEx.ThrowServiceException(ex);
  149. }
  150. }
  151. }
  152. public IEnumerable<YKTStateMentEntity> GetTeacherPageList(Pagination pagination, string queryJson)
  153. {
  154. try
  155. {
  156. var queryParam = queryJson.ToJObject();
  157. var strSql = new StringBuilder();
  158. strSql.Append(@"select * from (SELECT A.OUTID AS STUPHONE,A.CUSTOMERID AS YKTNO,round(A.OPFARE/100,2) AS MONEY,round(A.ODDFARE/100,2) AS BALANCE,A.OPDT AS HAPPENTIME,A.DSCRP AS SUBJECT,
  159. B.TERMNAME,c.EmpNo,c.EmpName,c.DepartmentId,d.Name as DepartmentName,c.identityno as IdentityCardNo,c.GenderNo
  160. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  161. left join ds_empinfo C on A.OUTID = C.mobile
  162. left join ds_department d on c.departmentid=d.id
  163. where EmpNo is not null
  164. union all
  165. SELECT A.OUTID AS STUPHONE,A.CUSTOMERID AS YKTNO,round(A.OPFARE/100,2) AS MONEY,round(A.ODDFARE/100,2) AS BALANCE,A.OPDT AS HAPPENTIME,A.DSCRP AS SUBJECT,
  166. B.TERMNAME,c.EmpNo,c.EmpName,c.DepartmentId,d.Name as DepartmentName,c.identityno as IdentityCardNo,c.GenderNo
  167. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  168. left join ds_empinfo C on A.OUTID = C.empno
  169. left join ds_department d on c.departmentid=d.id
  170. where EmpNo is not null ) aa where 1=1");
  171. if (!queryParam["EmpNo"].IsEmpty())
  172. {
  173. strSql.Append($" AND EmpNo like '%{queryParam["EmpNo"].ToString()}%' ");
  174. }
  175. if (!queryParam["EmpName"].IsEmpty())
  176. {
  177. strSql.Append($" AND EmpName like '%{queryParam["EmpName"].ToString()}%' ");
  178. }
  179. if (!queryParam["DepartmentId"].IsEmpty())
  180. {
  181. strSql.Append($" AND DepartmentId='{queryParam["DepartmentId"].ToString()}' ");
  182. }
  183. if (!queryParam["YKTNO"].IsEmpty())
  184. {
  185. strSql.Append($" AND YKTNO like '%{queryParam["YKTNO"].ToString()}%' ");
  186. }
  187. if (!queryParam["StartDate"].IsEmpty() && !queryParam["EndDate"].IsEmpty())
  188. {
  189. strSql.Append(" and (HAPPENTIME>=to_date('" + queryParam["StartDate"] + "','yyyy-mm-dd hh24:mi:ss') and HAPPENTIME<=to_date('" + queryParam["EndDate"] + "','yyyy-mm-dd hh24:mi:ss'))");
  190. }
  191. return BaseRepository("TLMZYMIDDLEString").FindList<YKTStateMentEntity>(strSql.ToString(), pagination);
  192. }
  193. catch (Exception ex)
  194. {
  195. if (ex is ExceptionEx)
  196. {
  197. throw;
  198. }
  199. else
  200. {
  201. throw ExceptionEx.ThrowServiceException(ex);
  202. }
  203. }
  204. }
  205. /// <summary>
  206. /// 一卡通教师月统计
  207. /// </summary>
  208. /// <param name="pagination"></param>
  209. /// <param name="queryJson"></param>
  210. /// <returns></returns>
  211. public IEnumerable<YKTStateMentEntity> GetAnalysisByMonthForTeacherPageList(Pagination pagination, string queryJson)
  212. {
  213. try
  214. {
  215. var queryParam = queryJson.ToJObject();
  216. var strSql = new StringBuilder();
  217. strSql.Append(
  218. @"SELECT c.EmpNo,c.EmpName,d.Name as DepartmentName,c.identityno as IdentityCardNo, sum(round(A.OPFARE/100,2)) AS MONEY,count(EmpNo) as PayTimes,round(sum(round(A.OPFARE/100,2))/count(EmpNo),2) as PerMoney
  219. FROM M_REC_CONSUME@ykt A LEFT JOIN M_BASE_TERM@ykt B ON A.TERMID = B.TERMID
  220. left join ds_empinfo C on A.OUTID = C.mobile
  221. left join ds_department d on c.departmentid=d.id
  222. where 1=1 and EmpNo is not null ");
  223. if (!queryParam["EmpNo"].IsEmpty())
  224. {
  225. strSql.Append($" AND C.EmpNo like '%{queryParam["EmpNo"].ToString()}%' ");
  226. }
  227. if (!queryParam["EmpName"].IsEmpty())
  228. {
  229. strSql.Append($" AND C.EmpName like '%{queryParam["EmpName"].ToString()}%' ");
  230. }
  231. if (!queryParam["DepartmentId"].IsEmpty())
  232. {
  233. strSql.Append($" AND C.DepartmentId='{queryParam["DepartmentId"].ToString()}' ");
  234. }
  235. if (!queryParam["Months"].IsEmpty())
  236. {
  237. strSql.Append(" and extract(month from A.OPDT) in(" + queryParam["Months"].ToString() + ")");
  238. }
  239. strSql.Append("group by c.EmpNo,c.EmpName,d.DepartmentId,d.Name,c.identityno");
  240. return BaseRepository("TLMZYMIDDLEString").FindList<YKTStateMentEntity>(strSql.ToString(), pagination);
  241. }
  242. catch (Exception ex)
  243. {
  244. if (ex is ExceptionEx)
  245. {
  246. throw;
  247. }
  248. else
  249. {
  250. throw ExceptionEx.ThrowServiceException(ex);
  251. }
  252. }
  253. }
  254. #endregion
  255. public IEnumerable<DoorEntity> GetDoorPageList(Pagination paginationobj, string queryJson)
  256. {
  257. try
  258. {
  259. var queryParam = queryJson.ToJObject();
  260. var strSql = new StringBuilder();
  261. strSql.Append(@"select a.StuNo,a.StuName,c.DeptName,d.MajorName,e.ClassName,b.devicename,b.opttype,b.opttime from ds_stuinfo a
  262. left join door.doorrecord b on a.stuno=b.personno
  263. left join ds_dept c on a.deptno=c.deptno
  264. left join ds_major d on a.majorno=d.majorno
  265. left join ds_classinfo e on a.classno=e.classno where 1=1 ");
  266. if (!queryParam["StuNo"].IsEmpty())
  267. {
  268. strSql.Append($" AND a.StuNo like '%{queryParam["StuNo"].ToString()}%' ");
  269. }
  270. if (!queryParam["StuName"].IsEmpty())
  271. {
  272. strSql.Append($" AND a.StuName like '%{queryParam["StuName"].ToString()}%' ");
  273. }
  274. if (!queryParam["DeptNo"].IsEmpty())
  275. {
  276. strSql.Append($" AND a.DeptNo='{queryParam["DeptNo"].ToString()}' ");
  277. }
  278. if (!queryParam["MajorNo"].IsEmpty())
  279. {
  280. strSql.Append($" AND a.MajorNo='{queryParam["MajorNo"].ToString()}' ");
  281. }
  282. if (!queryParam["ClassNo"].IsEmpty())
  283. {
  284. strSql.Append($" AND a.ClassNo ='{queryParam["ClassNo"].ToString()}' ");
  285. }
  286. if (!queryParam["opttype"].IsEmpty())
  287. {
  288. strSql.Append($" AND b.opttype='{queryParam["opttype"].ToString()}' ");
  289. }
  290. if (!queryParam["StartDate"].IsEmpty() && !queryParam["EndDate"].IsEmpty())
  291. {
  292. strSql.Append(" and (opttime>='"+ queryParam["StartDate"] + "' and opttime<='"+ queryParam["EndDate"] + "')");
  293. }
  294. return BaseRepository("TLMZYMIDDLEString").FindList<DoorEntity>(strSql.ToString(), paginationobj);
  295. }
  296. catch (Exception ex)
  297. {
  298. if (ex is ExceptionEx)
  299. {
  300. throw;
  301. }
  302. else
  303. {
  304. throw ExceptionEx.ThrowServiceException(ex);
  305. }
  306. }
  307. }
  308. }
  309. }