GetMainInfoExcutor.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Linq;
  5. using System.Text;
  6. using JLHHJSvr.BLL;
  7. using JLHHJSvr.Com.APP;
  8. using JLHHJSvr.Com.Model;
  9. using JLHHJSvr.DBA.DBModle;
  10. using LJLib.DAL.SQL;
  11. using LJLib.Net.SPI.Server;
  12. namespace JLHHJSvr.Excutor.APP
  13. {
  14. internal sealed class GetMainInfoExcutor : ExcutorBase<GetMainInfoRequest, GetMainInfoResponse>
  15. {
  16. protected override void ExcuteInternal(GetMainInfoRequest request, object state, GetMainInfoResponse rslt)
  17. {
  18. var tokendata = BllHelper.GetToken(request.token);
  19. if (tokendata == null)
  20. {
  21. rslt.ErrMsg = "会话已经中断,请重新登录";
  22. return;
  23. }
  24. using (var con = new SqlConnection(GlobalVar.ConnectionString))
  25. using (var cmd = con.CreateCommand())
  26. {
  27. con.Open();
  28. var dtNow = DateTime.Now;
  29. var optionTime = DateTime.Parse(new st_option().GetValue(cmd, 5));
  30. var todayTime = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day, optionTime.Hour, optionTime.Minute, 0);
  31. if ((dtNow.Hour + dtNow.Minute/60) < (optionTime.Hour + optionTime.Minute/60))
  32. {
  33. todayTime = todayTime.AddDays(-1);
  34. }
  35. var yesterdayTime = todayTime.AddDays(-1);
  36. //未处理违停数
  37. cmd.CommandText = @"
  38. SELECT COUNT(billid) AS violateCnt
  39. FROM st_bill
  40. WHERE flag = 0";
  41. rslt.violateCnt = Convert.ToInt32(cmd.ExecuteScalar());
  42. //报备数
  43. cmd.CommandText = @"
  44. SELECT COUNT(pid) AS recordCnt
  45. FROM st_permit
  46. WHERE iftmp = 1
  47. AND inuse = 1
  48. AND st_permit.begindate > @today";
  49. cmd.Parameters.Clear();
  50. cmd.Parameters.AddWithValue("@today", todayTime);
  51. rslt.recordCnt = Convert.ToInt32(cmd.ExecuteScalar());
  52. //已到期备案数
  53. cmd.CommandText = @"
  54. SELECT COUNT(pid) AS expiredCnt
  55. FROM st_permit
  56. WHERE iftmp = 1
  57. AND inuse = 1
  58. AND begindate > @yesterday
  59. AND enddate < GETDATE()";
  60. cmd.Parameters.Clear();
  61. cmd.Parameters.AddWithValue("@yesterday", yesterdayTime);
  62. rslt.expiredCnt = Convert.ToInt32(cmd.ExecuteScalar());
  63. // PC端附加字段
  64. if (request.type == 1)
  65. {
  66. //总车位数
  67. cmd.CommandText = @"
  68. SELECT SUM(cnt) AS totalPermitCnt
  69. FROM st_road";
  70. cmd.Parameters.Clear();
  71. rslt.totalPermitCnt = Convert.ToInt32(cmd.ExecuteScalar());
  72. var stOption = new st_option {optionid = 4};
  73. var expiringOption = Convert.ToInt32(stOption.GetValue(cmd));
  74. var expiringDate = DateTime.Now.AddDays(expiringOption);
  75. cmd.CommandText = @"
  76. SELECT
  77. COUNT(pid) AS soldCnt,
  78. SUM(CASE WHEN enddate < @expiringDate
  79. AND enddate > GETDATE() THEN 1 ELSE 0 END) AS expiringPermitCnt,
  80. SUM(CASE WHEN enddate < GETDATE() THEN 1 ELSE 0 END) AS expiredPermitCnt
  81. FROM st_permit
  82. WHERE st_permit.inuse = 1 AND st_permit.iftmp = 0";
  83. cmd.Parameters.Clear();
  84. cmd.Parameters.AddWithValue("@expiringDate", expiringDate);
  85. using (var reader = cmd.ExecuteReader())
  86. {
  87. if (reader.Read())
  88. {
  89. //剩余车位
  90. rslt.leftPermitCnt = rslt.totalPermitCnt - Convert.ToInt32(reader["soldCnt"]);
  91. //过期车辆
  92. rslt.expiredPermitCnt = Convert.ToInt32(reader["expiredPermitCnt"]);
  93. //即将过期
  94. rslt.expiringPermitCnt = Convert.ToInt32(reader["expiringPermitCnt"]);
  95. }
  96. }
  97. //已到期备案列表
  98. var selectStr = @"
  99. SELECT
  100. st_permit.pid,
  101. st_road.roadname,
  102. st_road.roadid,
  103. st_permit.carnum,
  104. st_permit.owner,
  105. st_permit.owner_tel,
  106. st_permit.begindate,
  107. st_permit.enddate,
  108. st_permit.inuse,
  109. st_permit.dscrp,
  110. st_permit.paytype,
  111. st_permit.payamt,
  112. st_permit.opemp,
  113. st_permit.opdate,
  114. st_permit.modemp,
  115. st_permit.moddate
  116. FROM st_permit
  117. INNER JOIN st_road ON st_permit.roadid = st_road.roadid
  118. WHERE st_permit.iftmp = 1
  119. AND st_permit.inuse = 1
  120. AND st_permit.begindate > @yesterday
  121. AND st_permit.enddate < GETDATE()";
  122. var today = DateTime.Now;
  123. DateTime dateHelper;
  124. if (today.Hour < 8)
  125. {
  126. dateHelper = today.AddDays(-2);
  127. }
  128. else
  129. {
  130. dateHelper = today.AddDays(-1);
  131. }
  132. var yesterday = new DateTime(dateHelper.Year, dateHelper.Month, dateHelper.Day, 8, 0, 0);
  133. var outputFields =
  134. "pid,roadname,roadid,carnum,owner,owner_tel,begindate,enddate,inuse,dscrp,paytype,payamt,opemp,opdate,modemp,moddate";
  135. rslt.expiredRecordList = new List<Permit>();
  136. DbSqlHelper.SelectJoin(cmd, selectStr, null,
  137. new Dictionary<string, object> {{"@yesterday", yesterday}}, null, outputFields, 0, 0,
  138. rslt.expiredRecordList);
  139. }
  140. }
  141. }
  142. }
  143. }