Exemplo n.º 1
0
        /// <summary>
        /// 删除附件
        /// </summary>
        /// <param name="attachIds">附件Id集合,多个以逗号分隔</param>
        /// <returns></returns>
        public ActionResult DeleteAttachment(string attachIds)
        {
            if (string.IsNullOrEmpty(attachIds))
            {
                return(Json(new ReturnResult {
                    Success = false, Message = "附件Id为空!"
                }));
            }
            if (_Request == null)
            {
                _Request = Request;
            }
            string[] token = attachIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            if (token.Length == 0)
            {
                return(Json(new ReturnResult {
                    Success = false, Message = "附件Id为空!"
                }));
            }
            List <Guid> delIds = token.Select(x => x.ObjToGuid()).Where(x => x != Guid.Empty).ToList();

            if (delIds == null || delIds.Count == 0)
            {
                return(Json(new ReturnResult {
                    Success = false, Message = "附件Id为空!"
                }));
            }
            string errMsg = string.Empty;
            List <Sys_Attachment> tempAttachments = CommonOperate.GetEntities <Sys_Attachment>(out errMsg, x => delIds.Contains(x.Id), null, false);

            errMsg = SystemOperate.DeleteAttachment(tempAttachments);
            return(Json(new ReturnResult {
                Success = string.IsNullOrEmpty(errMsg), Message = errMsg
            }));
        }
        /// <summary>
        /// 获取记录附件
        /// </summary>
        /// <param name="recordId">记录ID</param>
        /// <returns></returns>
        public ActionResult GetAttachments(Guid recordId)
        {
            string errMsg = string.Empty;
            List <Sys_Attachment> attachments = CommonOperate.GetEntities <Sys_Attachment>(out errMsg, x => x.RecordId == recordId, null, false);

            return(Json(attachments));
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取所有组织
        /// </summary>
        /// <param name="expression">条件表达式</param>
        /// <returns></returns>
        public static List <Sys_Organization> GetAllOrgs(Expression <Func <Sys_Organization, bool> > expression = null)
        {
            string errMsg = string.Empty;
            Expression <Func <Sys_Organization, bool> > exp = x => !x.IsDeleted && !x.IsDraft;

            if (expression != null)
            {
                exp = ExpressionExtension.And <Sys_Organization>(exp, expression);
            }
            List <Sys_Organization> orgs = CommonOperate.GetEntities <Sys_Organization>(out errMsg, exp, null, false);

            if (orgs == null)
            {
                orgs = new List <Sys_Organization>();
            }
            return(orgs);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取所有用户
        /// </summary>
        /// <param name="expression">条件表达式</param>
        /// <returns></returns>
        public static List <Sys_User> GetAllUsers(Expression <Func <Sys_User, bool> > expression = null)
        {
            string errMsg = string.Empty;
            Expression <Func <Sys_User, bool> > exp = x => x.IsValid && x.IsActivated && !x.IsDeleted && !x.IsDraft;

            if (expression != null)
            {
                exp = ExpressionExtension.And <Sys_User>(exp, expression);
            }
            List <Sys_User> users = CommonOperate.GetEntities <Sys_User>(out errMsg, exp, null, false);

            if (users == null)
            {
                users = new List <Sys_User>();
            }
            return(users);
        }
 /// <summary>
 /// 字段操作完成后
 /// </summary>
 /// <param name="operateType">操作类型</param>
 /// <param name="t">字段对象</param>
 /// <param name="result">操作结果</param>
 /// <param name="currUser">当前用户</param>
 /// <param name="otherParams"></param>
 public void OperateCompeletedHandle(ModelRecordOperateType operateType, Sys_Field t, bool result, UserInfo currUser, object[] otherParams = null)
 {
     if (result)
     {
         string errMsg = string.Empty;
         if (operateType == ModelRecordOperateType.Edit)
         {
             if (!string.IsNullOrEmpty(t.Display)) //修改了字段显示名称
             {
                 List <Sys_GridField> gridFields = SystemOperate.GetAllGridFields(x => x.Sys_FieldId == t.Id);
                 if (gridFields.Count > 0)
                 {
                     gridFields.ForEach(x => { x.Display = t.Display; });
                     CommonOperate.OperateRecords <Sys_GridField>(gridFields, ModelRecordOperateType.Edit, out errMsg, false);
                 }
                 List <Sys_FormField> formFields = CommonOperate.GetEntities <Sys_FormField>(out errMsg, x => x.Sys_FieldId == t.Id, null, false);
                 if (formFields != null && formFields.Count > 0)
                 {
                     formFields.ForEach(x => { x.Display = t.Display; });
                     CommonOperate.OperateRecords <Sys_FormField>(formFields, ModelRecordOperateType.Edit, out errMsg, false);
                 }
                 Sys_Field tempField = SystemOperate.GetFieldById(t.Id);
                 if (tempField.Sys_ModuleId.HasValue)
                 {
                     Sys_Module module = SystemOperate.GetModuleById(tempField.Sys_ModuleId.Value);
                     if (module != null && !string.IsNullOrEmpty(module.TitleKeyDisplay))
                     {
                         module.TitleKeyDisplay = tempField.Display;
                     }
                 }
             }
         }
         else if (operateType == ModelRecordOperateType.Del)
         {
             //字段信息删除后删除相应的表单字段和列表字段
             //删除列表字段
             Sys_Module gridFieldModule = SystemOperate.GetModuleByTableName(typeof(Sys_GridField).Name);
             CommonOperate.DeleteRecordsByExpression <Sys_GridField>(x => x.Sys_FieldId == t.Id, out errMsg, gridFieldModule.IsEnabledRecycle);
             //删除表单字段
             Sys_Module formFieldModule = SystemOperate.GetModuleByTableName(typeof(Sys_FormField).Name);
             CommonOperate.DeleteRecordsByExpression <Sys_FormField>(x => x.Sys_FieldId == t.Id, out errMsg, formFieldModule.IsEnabledRecycle);
         }
     }
 }
Exemplo n.º 6
0
        /// <summary>
        /// 保存表单附件
        /// </summary>
        /// <param name="moduleId">模块Id</param>
        /// <param name="id">记录Id</param>
        /// <param name="fileMsg">文件信息</param>
        /// <param name="isAdd">是否只是添加</param>
        /// <returns></returns>
        public ActionResult SaveFormAttach(Guid moduleId, Guid id, string fileMsg, bool isAdd = false)
        {
            if (string.IsNullOrEmpty(fileMsg))
            {
                return(Json(new ReturnResult {
                    Success = true, Message = string.Empty
                }));
            }
            if (_Request == null)
            {
                _Request = Request;
            }
            SetRequest(_Request);
            string errMsg = string.Empty;
            List <AttachFileInfo> addAttachs = null;

            try
            {
                string pathFlag = "\\";
                if (WebConfigHelper.GetAppSettingValue("IsLinux") == "true")
                {
                    pathFlag = "/";
                }
                UserInfo              currUser   = GetCurrentUser(_Request);
                Guid?                 userId     = currUser != null ? currUser.UserId : (Guid?)null;
                string                userName   = currUser != null ? currUser.UserName : string.Empty;
                Sys_Module            module     = SystemOperate.GetModuleById(moduleId);
                List <AttachFileInfo> attachInfo = JsonHelper.Deserialize <List <AttachFileInfo> >(HttpUtility.UrlDecode(fileMsg, Encoding.UTF8));
                #region  除已经移除的附件
                if (!isAdd) //非新增状态
                {
                    List <Guid> existIds = new List <Guid>();
                    if (attachInfo != null && attachInfo.Count > 0)
                    {
                        existIds = attachInfo.Select(x => x.Id.ObjToGuid()).Where(x => x != Guid.Empty).ToList();
                    }
                    //对已删除的附件进行处理
                    List <Sys_Attachment> tempAttachments = CommonOperate.GetEntities <Sys_Attachment>(out errMsg, x => x.Sys_ModuleId == moduleId && x.RecordId == id, null, false);
                    if (tempAttachments != null)
                    {
                        tempAttachments = tempAttachments.Where(x => !existIds.Contains(x.Id)).ToList();
                    }
                    SystemOperate.DeleteAttachment(tempAttachments);
                }
                #endregion
                #region 添加附件
                if (attachInfo != null && attachInfo.Count > 0)
                {
                    addAttachs = new List <AttachFileInfo>();
                    //日期文件夹
                    string dateFolder = DateTime.Now.ToString("yyyyMM", DateTimeFormatInfo.InvariantInfo);
                    //记录对应的titleKey值
                    string titleKeyValue       = CommonOperate.GetModelTitleKeyValue(moduleId, id);
                    List <Sys_Attachment> list = new List <Sys_Attachment>();
                    foreach (AttachFileInfo info in attachInfo)
                    {
                        if (string.IsNullOrEmpty(info.AttachFile))
                        {
                            continue;
                        }
                        if (info.Id.ObjToGuid() != Guid.Empty)
                        {
                            continue;                                                                              //原来的附件
                        }
                        string oldAttchFile = _Request.RequestContext.HttpContext.Server.MapPath(info.AttachFile); //临时附件
                        string dir          = string.Format("{0}Upload{3}Attachment{3}{1}{3}{2}", Globals.GetWebDir(), module.TableName, dateFolder, pathFlag);
                        if (!Directory.Exists(dir))                                                                //目录不存在则创建
                        {
                            Directory.CreateDirectory(dir);
                        }
                        string newAttachFile = string.Format("{0}{4}{1}_{2}{3}", dir, Path.GetFileNameWithoutExtension(info.FileName), id, Path.GetExtension(info.FileName), pathFlag);
                        try
                        {
                            System.IO.File.Copy(oldAttchFile, newAttachFile, true); //复制文件
                        }
                        catch (Exception ex)
                        {
                            return(Json(new ReturnResult {
                                Success = false, Message = ex.Message
                            }, "text/plain"));
                        }
                        //文件复制完成后删除临时文件
                        try
                        {
                            System.IO.File.Delete(oldAttchFile);
                        }
                        catch { }
                        string newPdfFile = string.Empty; //pdf文件
                        string newSwfFile = string.Empty; //swf文件
                        //可以转换成swf的进行转换
                        if (info.FileType.Equals(".doc") || info.FileType.Equals(".docx") ||
                            info.FileType.Equals(".xls") || info.FileType.Equals(".xlsx") ||
                            info.FileType.Equals(".ppt") || info.FileType.Equals(".pptx") ||
                            info.FileType.Equals(".pdf"))
                        {
                            newPdfFile = string.Format("{0}{2}{1}.pdf", dir, Path.GetFileNameWithoutExtension(newAttachFile), pathFlag);
                            newSwfFile = string.Format("{0}{2}{1}.swf", dir, Path.GetFileNameWithoutExtension(newAttachFile), pathFlag);
                            string   exePath = _Request.RequestContext.HttpContext.Server.MapPath("~/bin/SWFTools/pdf2swf.exe");
                            string   binPath = _Request.RequestContext.HttpContext.Server.MapPath("~/bin/");
                            string[] obj     = new string[] { info.FileType, newAttachFile, newPdfFile, newSwfFile, exePath, binPath };
                            CreateSwfFile(obj);
                        }
                        //构造文件URL,保存为相对URL地址
                        string fileUrl   = string.Format("Upload/Attachment/{0}/{1}/{2}", module.TableName, dateFolder, Path.GetFileName(newAttachFile));
                        string pdfUrl    = string.IsNullOrEmpty(newPdfFile) ? string.Empty : newPdfFile.Replace(Globals.GetWebDir(), string.Empty).Replace("\\", "/");
                        string swfUrl    = string.IsNullOrEmpty(newSwfFile) ? string.Empty : newSwfFile.Replace(Globals.GetWebDir(), string.Empty).Replace("\\", "/");
                        Guid   attachiId = Guid.NewGuid();
                        info.Id = attachiId.ToString();
                        list.Add(new Sys_Attachment()
                        {
                            Id                  = attachiId,
                            Sys_ModuleId        = moduleId,
                            Sys_ModuleName      = module.Name,
                            RecordId            = id,
                            RecordTitleKeyValue = titleKeyValue,
                            FileName            = info.FileName,
                            FileType            = info.FileType,
                            FileSize            = info.FileSize,
                            FileUrl             = fileUrl,
                            PdfUrl              = pdfUrl,
                            SwfUrl              = swfUrl,
                            AttachType          = info.AttachType,
                            CreateDate          = DateTime.Now,
                            CreateUserId        = userId,
                            CreateUserName      = userName,
                            ModifyDate          = DateTime.Now,
                            ModifyUserId        = userId,
                            ModifyUserName      = userName
                        });
                        string tempUrl = "/" + fileUrl;
                        if (!string.IsNullOrEmpty(swfUrl))
                        {
                            tempUrl = string.Format("/Page/DocView.html?fn={0}&swfUrl={1}", HttpUtility.UrlEncode(info.FileName).Replace("+", "%20"), HttpUtility.UrlEncode(swfUrl).Replace("+", "%20"));
                        }
                        info.AttachFile = tempUrl;
                        info.PdfFile    = pdfUrl;
                        info.SwfFile    = swfUrl;
                        addAttachs.Add(info);
                    }
                    if (list.Count > 0)
                    {
                        Guid attachModuleId = SystemOperate.GetModuleIdByName("附件信息");
                        bool rs             = CommonOperate.OperateRecords(attachModuleId, list, ModelRecordOperateType.Add, out errMsg, false);
                        if (!rs)
                        {
                            addAttachs = null;
                        }
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                errMsg = ex.Message;
            }
            return(Json(new { Success = string.IsNullOrEmpty(errMsg), Message = errMsg, AddAttachs = addAttachs }, "text/plain"));
        }
Exemplo n.º 7
0
 /// <summary>
 /// 添加后台系统任务
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="e"></param>
 public static void SysBackgroundTaskAdd(object obj, EventArgs e)
 {
     if (WebConfigHelper.GetAppSettingValue("IsRunBgTask") == "true")
     {
         try
         {
             #region 重建索引
             //重建索引任务
             BackgroundTask reBuildIndexTask = new BackgroundTask((args) =>
             {
                 if (DateTime.Now.Hour == 4 && DateTime.Now.Minute == 0)
                 {
                     SystemOperate.RebuildAllTableIndex();
                 }
                 return(true);
             }, null, false, 45, false);
             AutoProcessTask.AddTask(reBuildIndexTask);
             #endregion
             #region 迁移历史审批数据
             //审批完成后的数据迁移到待办历史数据表中,针对审批是迁移失败的处理
             BackgroundTask todoStatusHandleTask = new BackgroundTask((args) =>
             {
                 if ((DateTime.Now.Hour == 3 && DateTime.Now.Minute == 0) ||
                     (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 40))
                 {
                     //审批完成数据迁移异常处理
                     try
                     {
                         string errMsg    = string.Empty;
                         int refuseStatus = (int)WorkFlowStatusEnum.Refused;
                         int overStatus   = (int)WorkFlowStatusEnum.Over;
                         int obsoStatus   = (int)WorkFlowStatusEnum.Obsoleted;
                         List <Bpm_WorkFlowInstance> flowInsts = CommonOperate.GetEntities <Bpm_WorkFlowInstance>(out errMsg, x => x.Status == refuseStatus || x.Status == overStatus || x.Status == obsoStatus, null, false);
                         if (flowInsts != null && flowInsts.Count > 0)
                         {
                             foreach (Bpm_WorkFlowInstance flowInst in flowInsts)
                             {
                                 BpmOperate.TransferWorkToDoHistory(flowInst, null);
                             }
                         }
                     }
                     catch { }
                 }
                 return(true);
             }, null, false, 45, false);
             AutoProcessTask.AddTask(todoStatusHandleTask);
             #endregion
             #region 附件在线预览生成
             BackgroundTask attachOnlineViewHandleTask = new BackgroundTask((args) =>
             {
                 if (DateTime.Now.Hour == 4 && DateTime.Now.Minute == 0)
                 {
                     string attachWeb = WebConfigHelper.GetAppSettingValue("AttachmentWeb");
                     if (!string.IsNullOrEmpty(attachWeb))
                     {
                         if (!attachWeb.EndsWith("/"))
                         {
                             attachWeb += "/";
                         }
                         string apiUrl        = attachWeb + "api/AnnexApi/ExecCreateSwfTask.html";
                         DataMutual dataMutal = new DataMutual(apiUrl);
                         dataMutal.Start(null);
                     }
                 }
                 return(true);
             }, null, false, 45, false);
             AutoProcessTask.AddTask(attachOnlineViewHandleTask);
             #endregion
             #region 基于DB的失效分布式锁释放
             BackgroundTask dbLockReleaseHandleTask = new BackgroundTask((args) =>
             {
                 if (WebConfigHelper.GetAppSettingValue("EnabledDistributeLock") == "true") //启用分布式锁
                 {
                     string errMsg      = string.Empty;
                     double nowTimesamp = Globals.GetTimestamp(DateTime.Now);//当前时间戳
                     CommonOperate.DeleteRecordsByExpression <Other_DistributedLock>(x => x.Invalid_Timesamp < nowTimesamp, out errMsg);
                 }
                 return(true);
             }, null, false, 60, false);
             AutoProcessTask.AddTask(dbLockReleaseHandleTask);
             #endregion
         }
         catch { }
     }
     try
     {
         InitFactory factory = InitFactory.GetInstance();
         if (factory != null)
         {
             factory.AddBackgroundTask();
         }
     }
     catch { }
 }