GetMainInfoExcutor.cs 6.6 KB

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