using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Central.Control.Domain; using Ant.Service.Common; using MES.Production.Service.IService; using Ant.Service.Common.Enums; using ChangFa.Machinery.WebPage.Controllers; namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers { /// /// 消息控制器 /// edit huafg by 2015-11-22 /// public class MsgController : BaseController { #region 声明容器 /// /// 消息管理 /// IMsgManage MsgManage { get; set; } /// ///消息章附件管理 /// IMsgAttachManage MsgAttachManage { get; set; } /// /// 接收人管理 /// IMsgRevManage MsgRevManage { get; set; } /// /// 编码 /// ICodeManage CodeManage { get; set; } #endregion #region 公共变量 private string msgtype = string.Empty; #endregion #region 基本视图 /// /// 首页加载 /// [UserAuthorizeAttribute(ModuleAlias = "JSXX", OperaAction = "View")] public ActionResult Index() { try { ViewBag.Search = base.keywords; msgtype = Request["msgtype"] ?? ""; ViewData["msgtype"] = msgtype; ViewData["msgtypelist"] = this.CodeManage.GetCode("XXLX"); return View(BindList()); } catch(Exception e) { WriteLog(enumOperator.Select, "消息管理加载首页:", e); throw e.InnerException; } } /// /// 详情加载 /// [UserAuthorizeAttribute(ModuleAlias = "JSXX", OperaAction = "Detail")] public ActionResult Detail() { ViewData["userid"] = Request.QueryString["userid"] ?? ""; return View(new SYS_MSG()); } /// /// 详情展示页 /// public ActionResult Show(int? id) { var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG(); //附件信息 ViewData["Attach"] = GetAttach(entity.ID, false); //接收人 ViewData["ReadUser"] = GetUser(id); return View(entity); } /// /// 提交保存 /// [ValidateInput(false)] public ActionResult Save(SYS_MSG entity) { JsonHelper json = new JsonHelper() { Status = "n", Msg = "操作成功" }; try { if (entity != null) { #region 处理Request参数 //接收人 string userid = Request["hidsendUserid"] ?? ""; if (string.IsNullOrEmpty(userid)) { json.Msg = "请选择接收人"; return Json(json); } //附件集合 var attachlist = Request["attchs"] ?? ""; #endregion #region 处理消息 entity.CREATEPER = this.CurrentUser.Id; entity.CREATEDATE = DateTime.Now; entity.MSGTYPE = "0"; if (this.MsgManage.Save(entity)) { #region 处理接收人 if (this.MsgRevManage.SaveOrgPerson(entity.ID.ToString(), userid.Trim(','))) { #region 处理消息附件 if (!string.IsNullOrEmpty(attachlist.Trim(','))) { this.MsgAttachManage.SaveAttachs(entity.ID.ToString(), attachlist.Trim(',')); } #endregion } #endregion } #endregion json.Status = "y"; } else { json.Msg = "未收到要提交的数据"; } WriteLog(enumOperator.Add, "发送消息,结果:" + json.Msg, enumLog4net.INFO); return Json(json); } catch (Exception e) { json.Msg = e.InnerException.Message; WriteLog(enumOperator.Add, "发送消息:", e); return Json(json); } } #endregion #region 接收人视图 /// /// 接收人显示页面 /// /// public ActionResult RevIndex() { string msg_status = Request["msg_status"] ?? ""; return View(BindRevList(msg_status)); } /// /// 接收人弹出页 /// public ActionResult RevShow(int? id) { var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG(); if (entity.ID>0) { //已阅读 var entityRev = this.MsgRevManage.Get(p => p.USERID == CurrentUser.Id && p.MSGID == id); if (entityRev != null) { entityRev.READSTATUS = 1; this.MsgRevManage.Update(entityRev); } } //附件信息 ViewData["Attach"] = GetAttach(entity.ID, false); //回复人 ViewData["RevUser"] = this.UserManage.GetUserName(entity.CREATEPER); return View(entity); } /// /// 转发 /// /// public ActionResult Transpond(int? id) { var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG(); //附件信息 ViewData["Attach"] = GetAttach(entity.ID, false); return View(entity); } /// /// 回复详情加载 /// /// public ActionResult RevDetail(int? id) { var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG(); //回复人 ViewData["RevUser"] = this.UserManage.Get(p => p.ID == entity.CREATEPER) ?? new SYS_USER(); //附件信息 ViewData["Attach"] = GetAttach(entity.ID, false); return View(entity); } #endregion #region 帮助方法 /// /// 绑定列表 /// private PageInfo BindList() { //where var predicate = PredicateBuilder.True().And(p => p.DELETESTATUS == 0 && p.CREATEPER == CurrentUser.Id); if (!string.IsNullOrEmpty(base.keywords)) { predicate = predicate.And(p => p.MSGNAME.Contains(keywords)); } if (!string.IsNullOrEmpty(msgtype)) { predicate = predicate.And(p => p.MSGTYPE == msgtype); } var query = this.MsgManage.LoadAll(predicate).OrderByDescending(p => p.CREATEDATE); var codetype=this.CodeManage.GetCode("XXLX"); //Executed var pageInfo = this.MsgManage.Query(query, base.page, base.pagesize); var result = pageInfo.List.Select(p => new { p.ID, p.MSGNAME, CREATEPER = this.UserManage.GetUserName(p.CREATEPER), READUSER = GetUser(p.ID), p.CREATEDATE, MSGTYPE = (codetype.Find(c => c.CODEVALUE == p.MSGTYPE) != null ? codetype.Find(c => c.CODEVALUE == p.MSGTYPE).NAMETEXT : "") }).ToList(); return new PageInfo(pageInfo.Index, pageInfo.PageSize, pageInfo.Count, JsonConverter.JsonClass(result)); } /// /// 接收人绑定列表 /// /// private PageInfo BindRevList(string status) { decimal state = 0m; if (!string.IsNullOrEmpty(status)) { state = decimal.Parse(status); } var config = this.MsgManage.Config; var result = (from r in config.SYS_MSG join u in config.SYS_MSGREV on r.ID equals u.MSGID into u_join from x in u_join.DefaultIfEmpty() join s in config.SYS_USER on r.CREATEPER equals s.ID into s_join from v in s_join.DefaultIfEmpty() where r.DELETESTATUS == 0 && x.USERID == CurrentUser.Id orderby x.READSTATUS, r.CREATEDATE select new { r.ID, userid = x.USERID, r.CREATEDATE, r.MSGNAME, r.MSGCONTENT, r.CREATEPER, READSTATUS = x.READSTATUS == 0 ? "未读" : "已读", state = x.READSTATUS, v.NAME }); //where var predicate = PredicateBuilder.True().And(p => p.DELETESTATUS == 0 && p.USERID == CurrentUser.Id); if (!string.IsNullOrEmpty(base.keywords)) { result = result.Where(p => p.MSGNAME.Contains(keywords)); } //状态 if (state > 0) { result = result.Where(p => p.state == state); } result = result.OrderByDescending(p => p.CREATEDATE); //Executed var pageInfo = this.MsgManage.Query(result, base.page, base.pagesize); return new PageInfo(pageInfo.Index, pageInfo.PageSize, pageInfo.Count, JsonConverter.JsonClass(result)); } /// /// 得到用户 /// private string GetUser(int? id) { var config = this.MsgRevManage.Config; var result = (from r in config.SYS_MSGREV join u in config.SYS_USER on r.USERID equals u.ID where r.MSGID == id && r.DELETESTATUS == 0 select new { r.ID, r.USERID, u.NAME, r.READSTATUS }).ToList(); return result.Aggregate(string.Empty, (current, t) => current + t.READSTATUS + "|" + t.NAME + ",").Trim(','); } /// /// 详情页附件信息 /// /// 消息ID private dynamic GetAttach(int id, bool isimg) { var config = this.MsgManage.Config; //var query = (from r in config.SYS_MSGATTACH // join u in config.COM_UPLOAD // on r.FK_UPLOADID equals u.ID // where r.MSGID == id // select new { r, u }); //var result = query.Select(p => new //{ // p.r.ID, // p.r.MSGID, // p.u.FK_USERID, // p.u.UPFILEPATH, // p.u.UPFILESIZE, // p.u.UPNEWNAME, // p.u.UPOLDNAME, // p.u.UPOPEATOR, // p.u.UPFILEUNIT, // p.u.UPTIME //}); //return JsonConverter.JsonClass(result.ToList()); return ""; } #endregion #region 其他调用 #endregion } }