MsgController.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using Central.Control.Domain;
  7. using Ant.Service.Common;
  8. using MES.Production.Service.IService;
  9. using Ant.Service.Common.Enums;
  10. using ChangFa.Machinery.WebPage.Controllers;
  11. namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers
  12. {
  13. /// <summary>
  14. /// 消息控制器
  15. /// edit huafg by 2015-11-22
  16. /// </summary>
  17. public class MsgController : BaseController
  18. {
  19. #region 声明容器
  20. /// <summary>
  21. /// 消息管理
  22. /// </summary>
  23. IMsgManage MsgManage { get; set; }
  24. /// <summary>
  25. ///消息章附件管理
  26. /// </summary>
  27. IMsgAttachManage MsgAttachManage { get; set; }
  28. /// <summary>
  29. /// 接收人管理
  30. /// </summary>
  31. IMsgRevManage MsgRevManage { get; set; }
  32. /// <summary>
  33. /// 编码
  34. /// </summary>
  35. ICodeManage CodeManage { get; set; }
  36. #endregion
  37. #region 公共变量
  38. private string msgtype = string.Empty;
  39. #endregion
  40. #region 基本视图
  41. /// <summary>
  42. /// 首页加载
  43. /// </summary>
  44. [UserAuthorizeAttribute(ModuleAlias = "JSXX", OperaAction = "View")]
  45. public ActionResult Index()
  46. {
  47. try
  48. {
  49. ViewBag.Search = base.keywords;
  50. msgtype = Request["msgtype"] ?? "";
  51. ViewData["msgtype"] = msgtype;
  52. ViewData["msgtypelist"] = this.CodeManage.GetCode("XXLX");
  53. return View(BindList());
  54. }
  55. catch(Exception e)
  56. {
  57. WriteLog(enumOperator.Select, "消息管理加载首页:", e);
  58. throw e.InnerException;
  59. }
  60. }
  61. /// <summary>
  62. /// 详情加载
  63. /// </summary>
  64. [UserAuthorizeAttribute(ModuleAlias = "JSXX", OperaAction = "Detail")]
  65. public ActionResult Detail()
  66. {
  67. ViewData["userid"] = Request.QueryString["userid"] ?? "";
  68. return View(new SYS_MSG());
  69. }
  70. /// <summary>
  71. /// 详情展示页
  72. /// </summary>
  73. public ActionResult Show(int? id)
  74. {
  75. var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
  76. //附件信息
  77. ViewData["Attach"] = GetAttach(entity.ID, false);
  78. //接收人
  79. ViewData["ReadUser"] = GetUser(id);
  80. return View(entity);
  81. }
  82. /// <summary>
  83. /// 提交保存
  84. /// </summary>
  85. [ValidateInput(false)]
  86. public ActionResult Save(SYS_MSG entity)
  87. {
  88. JsonHelper json = new JsonHelper() { Status = "n", Msg = "操作成功" };
  89. try
  90. {
  91. if (entity != null)
  92. {
  93. #region 处理Request参数
  94. //接收人
  95. string userid = Request["hidsendUserid"] ?? "";
  96. if (string.IsNullOrEmpty(userid))
  97. {
  98. json.Msg = "请选择接收人";
  99. return Json(json);
  100. }
  101. //附件集合
  102. var attachlist = Request["attchs"] ?? "";
  103. #endregion
  104. #region 处理消息
  105. entity.CREATEPER = this.CurrentUser.Id;
  106. entity.CREATEDATE = DateTime.Now;
  107. entity.MSGTYPE = "0";
  108. if (this.MsgManage.Save(entity))
  109. {
  110. #region 处理接收人
  111. if (this.MsgRevManage.SaveOrgPerson(entity.ID.ToString(), userid.Trim(',')))
  112. {
  113. #region 处理消息附件
  114. if (!string.IsNullOrEmpty(attachlist.Trim(',')))
  115. {
  116. this.MsgAttachManage.SaveAttachs(entity.ID.ToString(), attachlist.Trim(','));
  117. }
  118. #endregion
  119. }
  120. #endregion
  121. }
  122. #endregion
  123. json.Status = "y";
  124. }
  125. else
  126. {
  127. json.Msg = "未收到要提交的数据";
  128. }
  129. WriteLog(enumOperator.Add, "发送消息,结果:" + json.Msg, enumLog4net.INFO);
  130. return Json(json);
  131. }
  132. catch (Exception e)
  133. {
  134. json.Msg = e.InnerException.Message;
  135. WriteLog(enumOperator.Add, "发送消息:", e);
  136. return Json(json);
  137. }
  138. }
  139. #endregion
  140. #region 接收人视图
  141. /// <summary>
  142. /// 接收人显示页面
  143. /// </summary>
  144. /// <returns></returns>
  145. public ActionResult RevIndex()
  146. {
  147. string msg_status = Request["msg_status"] ?? "";
  148. return View(BindRevList(msg_status));
  149. }
  150. /// <summary>
  151. /// 接收人弹出页
  152. /// </summary>
  153. public ActionResult RevShow(int? id)
  154. {
  155. var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
  156. if (entity.ID>0)
  157. {
  158. //已阅读
  159. var entityRev = this.MsgRevManage.Get(p => p.USERID == CurrentUser.Id && p.MSGID == id);
  160. if (entityRev != null)
  161. {
  162. entityRev.READSTATUS = 1;
  163. this.MsgRevManage.Update(entityRev);
  164. }
  165. }
  166. //附件信息
  167. ViewData["Attach"] = GetAttach(entity.ID, false);
  168. //回复人
  169. ViewData["RevUser"] = this.UserManage.GetUserName(entity.CREATEPER);
  170. return View(entity);
  171. }
  172. /// <summary>
  173. /// 转发
  174. /// </summary>
  175. /// <returns></returns>
  176. public ActionResult Transpond(int? id)
  177. {
  178. var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
  179. //附件信息
  180. ViewData["Attach"] = GetAttach(entity.ID, false);
  181. return View(entity);
  182. }
  183. /// <summary>
  184. /// 回复详情加载
  185. /// </summary>
  186. /// <returns></returns>
  187. public ActionResult RevDetail(int? id)
  188. {
  189. var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
  190. //回复人
  191. ViewData["RevUser"] = this.UserManage.Get(p => p.ID == entity.CREATEPER) ?? new SYS_USER();
  192. //附件信息
  193. ViewData["Attach"] = GetAttach(entity.ID, false);
  194. return View(entity);
  195. }
  196. #endregion
  197. #region 帮助方法
  198. /// <summary>
  199. /// 绑定列表
  200. /// </summary>
  201. private PageInfo BindList()
  202. {
  203. //where
  204. var predicate = PredicateBuilder.True<SYS_MSG>().And(p => p.DELETESTATUS == 0 && p.CREATEPER == CurrentUser.Id);
  205. if (!string.IsNullOrEmpty(base.keywords))
  206. {
  207. predicate = predicate.And(p => p.MSGNAME.Contains(keywords));
  208. }
  209. if (!string.IsNullOrEmpty(msgtype))
  210. {
  211. predicate = predicate.And(p => p.MSGTYPE == msgtype);
  212. }
  213. var query = this.MsgManage.LoadAll(predicate).OrderByDescending(p => p.CREATEDATE);
  214. var codetype=this.CodeManage.GetCode("XXLX");
  215. //Executed
  216. var pageInfo = this.MsgManage.Query(query, base.page, base.pagesize);
  217. var result = pageInfo.List.Select(p => new
  218. {
  219. p.ID,
  220. p.MSGNAME,
  221. CREATEPER = this.UserManage.GetUserName(p.CREATEPER),
  222. READUSER = GetUser(p.ID),
  223. p.CREATEDATE,
  224. MSGTYPE = (codetype.Find(c => c.CODEVALUE == p.MSGTYPE) != null ? codetype.Find(c => c.CODEVALUE == p.MSGTYPE).NAMETEXT : "")
  225. }).ToList();
  226. return new PageInfo(pageInfo.Index, pageInfo.PageSize, pageInfo.Count, JsonConverter.JsonClass(result));
  227. }
  228. /// <summary>
  229. /// 接收人绑定列表
  230. /// </summary>
  231. /// <returns></returns>
  232. private PageInfo BindRevList(string status)
  233. {
  234. decimal state = 0m;
  235. if (!string.IsNullOrEmpty(status))
  236. {
  237. state = decimal.Parse(status);
  238. }
  239. var config = this.MsgManage.Config;
  240. var result = (from r in config.SYS_MSG
  241. join u in config.SYS_MSGREV on r.ID equals u.MSGID into u_join
  242. from x in u_join.DefaultIfEmpty()
  243. join s in config.SYS_USER on r.CREATEPER equals s.ID into s_join
  244. from v in s_join.DefaultIfEmpty()
  245. where r.DELETESTATUS == 0 && x.USERID == CurrentUser.Id
  246. orderby x.READSTATUS, r.CREATEDATE
  247. select new
  248. {
  249. r.ID,
  250. userid = x.USERID,
  251. r.CREATEDATE,
  252. r.MSGNAME,
  253. r.MSGCONTENT,
  254. r.CREATEPER,
  255. READSTATUS = x.READSTATUS == 0 ? "未读" : "已读",
  256. state = x.READSTATUS,
  257. v.NAME
  258. });
  259. //where
  260. var predicate = PredicateBuilder.True<SYS_MSGREV>().And(p => p.DELETESTATUS == 0 && p.USERID == CurrentUser.Id);
  261. if (!string.IsNullOrEmpty(base.keywords))
  262. {
  263. result = result.Where(p => p.MSGNAME.Contains(keywords));
  264. }
  265. //状态
  266. if (state > 0)
  267. {
  268. result = result.Where(p => p.state == state);
  269. }
  270. result = result.OrderByDescending(p => p.CREATEDATE);
  271. //Executed
  272. var pageInfo = this.MsgManage.Query(result, base.page, base.pagesize);
  273. return new PageInfo(pageInfo.Index, pageInfo.PageSize, pageInfo.Count, JsonConverter.JsonClass(result));
  274. }
  275. /// <summary>
  276. /// 得到用户
  277. /// </summary>
  278. private string GetUser(int? id)
  279. {
  280. var config = this.MsgRevManage.Config;
  281. var result = (from r in config.SYS_MSGREV
  282. join u in config.SYS_USER on r.USERID equals u.ID
  283. where r.MSGID == id && r.DELETESTATUS == 0
  284. select new
  285. {
  286. r.ID,
  287. r.USERID,
  288. u.NAME,
  289. r.READSTATUS
  290. }).ToList();
  291. return result.Aggregate(string.Empty, (current, t) => current + t.READSTATUS + "|" + t.NAME + ",").Trim(',');
  292. }
  293. /// <summary>
  294. /// 详情页附件信息
  295. /// </summary>
  296. /// <param name="id">消息ID</param>
  297. private dynamic GetAttach(int id, bool isimg)
  298. {
  299. var config = this.MsgManage.Config;
  300. //var query = (from r in config.SYS_MSGATTACH
  301. // join u in config.COM_UPLOAD
  302. // on r.FK_UPLOADID equals u.ID
  303. // where r.MSGID == id
  304. // select new { r, u });
  305. //var result = query.Select(p => new
  306. //{
  307. // p.r.ID,
  308. // p.r.MSGID,
  309. // p.u.FK_USERID,
  310. // p.u.UPFILEPATH,
  311. // p.u.UPFILESIZE,
  312. // p.u.UPNEWNAME,
  313. // p.u.UPOLDNAME,
  314. // p.u.UPOPEATOR,
  315. // p.u.UPFILEUNIT,
  316. // p.u.UPTIME
  317. //});
  318. //return JsonConverter.JsonClass(result.ToList());
  319. return "";
  320. }
  321. #endregion
  322. #region 其他调用
  323. #endregion
  324. }
  325. }