protected void Page_Load(object sender, EventArgs e) { if (string.IsNullOrEmpty(FK_Node.ToString()) || string.IsNullOrEmpty(WorkID.ToString())) { divMenu.InnerHtml = "<h1 style='color:red'>传入参数错误!<h1>"; return; } if (!IsPostBack) { ReadFile(); string type = Request["action"]; if (string.IsNullOrEmpty(type)) { LoadMenu(true); } else { LoadMenu(false); if (type.Equals("LoadFile")) { LoadFile(); } else if (type.Equals("SaveFile")) { SaveFile(); } else if (type.Equals("LoadOver")) { GetFileBytes(); } else if (type.Equals("SaveBak")) { SaveBak(); } else { throw new Exception("传入的参数不正确!"); } } } }
//多附件上传方法 public void MoreAttach() { string PKVal = this.GetRequestVal("PKVal"); string attachPk = this.GetRequestVal("AttachPK"); // 多附件描述. BP.Sys.FrmAttachment athDesc = new BP.Sys.FrmAttachment(attachPk); MapData mapData = new MapData(athDesc.FK_MapData); string msg = null; GEEntity en = new GEEntity(athDesc.FK_MapData); en.PKVal = PKVal; en.Retrieve(); for (int i = 0; i < context.Request.Files.Count; i++) { HttpPostedFile file = context.Request.Files[i]; #region 文件上传的iis服务器上 or db数据库里. if (athDesc.AthSaveWay == AthSaveWay.IISServer) { string savePath = athDesc.SaveTo; if (savePath.Contains("@") == true || savePath.Contains("*") == true) { /*如果有变量*/ savePath = savePath.Replace("*", "@"); savePath = BP.WF.Glo.DealExp(savePath, en, null); if (savePath.Contains("@") && this.FK_Node != 0) { /*如果包含 @ */ BP.WF.Flow flow = new BP.WF.Flow(this.FK_Flow); BP.WF.Data.GERpt myen = flow.HisGERpt; myen.OID = this.WorkID; myen.RetrieveFromDBSources(); savePath = BP.WF.Glo.DealExp(savePath, myen, null); } if (savePath.Contains("@") == true) { throw new Exception("@路径配置错误,变量没有被正确的替换下来." + savePath); } } else { savePath = athDesc.SaveTo + "\\" + PKVal; } //替换关键的字串. savePath = savePath.Replace("\\\\", "\\"); try { savePath = context.Server.MapPath("~/" + savePath); } catch (Exception) { } try { if (System.IO.Directory.Exists(savePath) == false) { System.IO.Directory.CreateDirectory(savePath); } } catch (Exception ex) { throw new Exception("@创建路径出现错误,可能是没有权限或者路径配置有问题:" + context.Server.MapPath("~/" + savePath) + "===" + savePath + "@技术问题:" + ex.Message); } string exts = System.IO.Path.GetExtension(file.FileName).ToLower().Replace(".", ""); string guid = BP.DA.DBAccess.GenerGUID(); string fileName = file.FileName.Substring(0, file.FileName.LastIndexOf('.')); if (fileName.LastIndexOf("\\") > 0) { fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1); } string ext = System.IO.Path.GetExtension(file.FileName); string realSaveTo = savePath + "\\" + guid + "." + fileName + ext; realSaveTo = realSaveTo.Replace("~", "-"); realSaveTo = realSaveTo.Replace("'", "-"); realSaveTo = realSaveTo.Replace("*", "-"); file.SaveAs(realSaveTo); //执行附件上传前事件,added by liuxc,2017-7-15 msg = mapData.DoEvent(FrmEventList.AthUploadeBefore, en, "@FK_FrmAttachment=" + athDesc.MyPK + "@FileFullName=" + realSaveTo); if (!string.IsNullOrEmpty(msg)) { BP.Sys.Glo.WriteLineError("@AthUploadeBefore事件返回信息,文件:" + file.FileName + "," + msg); try { File.Delete(realSaveTo); } catch { } //note:此处如何向前uploadify传递失败信息,有待研究 //this.Alert("上传附件错误:" + msg, true); return; } FileInfo info = new FileInfo(realSaveTo); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.MyPK = guid; // athDesc.FK_MapData + oid.ToString(); dbUpload.NodeID = this.FK_Node.ToString(); dbUpload.FK_FrmAttachment = attachPk; dbUpload.FK_MapData = athDesc.FK_MapData; dbUpload.FK_FrmAttachment = attachPk; dbUpload.FileExts = info.Extension; #region 处理文件路径,如果是保存到数据库,就存储pk. if (athDesc.AthSaveWay == AthSaveWay.IISServer) { //文件方式保存 dbUpload.FileFullName = realSaveTo; } if (athDesc.AthSaveWay == AthSaveWay.FTPServer) { //保存到数据库 dbUpload.FileFullName = dbUpload.MyPK; } #endregion 处理文件路径,如果是保存到数据库,就存储pk. dbUpload.FileName = fileName + ext; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDataTimess; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; dbUpload.RefPKVal = PKVal; dbUpload.FID = this.FID; //if (athDesc.IsNote) // dbUpload.MyNote = this.Pub1.GetTextBoxByID("TB_Note").Text; //if (athDesc.Sort.Contains(",")) // dbUpload.Sort = this.Pub1.GetDDLByID("ddl").SelectedItemStringVal; dbUpload.UploadGUID = guid; dbUpload.Insert(); if (athDesc.AthSaveWay == AthSaveWay.DB) { //执行文件保存. BP.DA.DBAccess.SaveFileToDB(realSaveTo, dbUpload.EnMap.PhysicsTable, "MyPK", dbUpload.MyPK, "FDB"); } //执行附件上传后事件,added by liuxc,2017-7-15 msg = mapData.DoEvent(FrmEventList.AthUploadeAfter, en, "@FK_FrmAttachment=" + dbUpload.FK_FrmAttachment + "@FK_FrmAttachmentDB=" + dbUpload.MyPK + "@FileFullName=" + dbUpload.FileFullName); if (!string.IsNullOrEmpty(msg)) { BP.Sys.Glo.WriteLineError("@AthUploadeAfter事件返回信息,文件:" + dbUpload.FileName + "," + msg); } } #endregion 文件上传的iis服务器上 or db数据库里. #region 保存到数据库 / FTP服务器上. if (athDesc.AthSaveWay == AthSaveWay.DB || athDesc.AthSaveWay == AthSaveWay.FTPServer) { string guid = DBAccess.GenerGUID(); //把文件临时保存到一个位置. string temp = SystemConfig.PathOfTemp + "" + guid + ".tmp"; try { file.SaveAs(temp); } catch (Exception ex) { System.IO.File.Delete(temp); file.SaveAs(temp); } // fu.SaveAs(temp); //执行附件上传前事件,added by liuxc,2017-7-15 msg = mapData.DoEvent(FrmEventList.AthUploadeBefore, en, "@FK_FrmAttachment=" + athDesc.MyPK + "@FileFullName=" + temp); if (string.IsNullOrEmpty(msg) == false) { BP.Sys.Glo.WriteLineError("@AthUploadeBefore事件返回信息,文件:" + file.FileName + "," + msg); try { File.Delete(temp); } catch { } throw new Exception("err@上传附件错误:" + msg); } FileInfo info = new FileInfo(temp); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.MyPK = BP.DA.DBAccess.GenerGUID(); dbUpload.NodeID = FK_Node.ToString(); dbUpload.FK_FrmAttachment = athDesc.MyPK; dbUpload.FID = this.FID; //流程id. if (athDesc.AthUploadWay == AthUploadWay.Inherit) { /*如果是继承,就让他保持本地的PK. */ dbUpload.RefPKVal = PKVal.ToString(); } if (athDesc.AthUploadWay == AthUploadWay.Interwork) { /*如果是协同,就让他是PWorkID. */ Paras ps = new Paras(); ps.SQL = "SELECT PWorkID FROM WF_GenerWorkFlow WHERE WorkID=" + SystemConfig.AppCenterDBVarStr + "WorkID"; ps.Add("WorkID", PKVal); string pWorkID = BP.DA.DBAccess.RunSQLReturnValInt(ps, 0).ToString(); if (pWorkID == null || pWorkID == "0") { pWorkID = PKVal; } dbUpload.RefPKVal = pWorkID; } dbUpload.FK_MapData = athDesc.FK_MapData; dbUpload.FK_FrmAttachment = athDesc.MyPK; dbUpload.FileName = file.FileName; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDataTimess; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; //if (athDesc.IsNote) // dbUpload.MyNote = this.Pub1.GetTextBoxByID("TB_Note").Text; //if (athDesc.Sort.Contains(",")) //{ // string[] strs = athDesc.Sort.Contains("@") == true ? athDesc.Sort.Substring(athDesc.Sort.LastIndexOf("@") + 1).Split(',') : athDesc.Sort.Split(','); // BP.Web.Controls.DDL ddl = this.Pub1.GetDDLByID("ddl"); // dbUpload.Sort = strs[0]; // if (ddl != null) // { // int selectedIndex = string.IsNullOrEmpty(ddl.SelectedItemStringVal) ? 0 : int.Parse(ddl.SelectedItemStringVal); // dbUpload.Sort = strs[selectedIndex]; // } //} dbUpload.UploadGUID = guid; if (athDesc.AthSaveWay == AthSaveWay.DB) { dbUpload.Insert(); //把文件保存到指定的字段里. dbUpload.SaveFileToDB("FileDB", temp); } if (athDesc.AthSaveWay == AthSaveWay.FTPServer) { /*保存到fpt服务器上.*/ FtpSupport.FtpConnection ftpconn = new FtpSupport.FtpConnection(SystemConfig.FTPServerIP, SystemConfig.FTPUserNo, SystemConfig.FTPUserPassword); string ny = DateTime.Now.ToString("yyyy_MM"); //判断目录年月是否存在. if (ftpconn.DirectoryExist(ny) == false) { ftpconn.CreateDirectory(ny); } ftpconn.SetCurrentDirectory(ny); //判断目录是否存在. if (ftpconn.DirectoryExist(athDesc.FK_MapData) == false) { ftpconn.CreateDirectory(athDesc.FK_MapData); } //设置当前目录,为操作的目录。 ftpconn.SetCurrentDirectory(athDesc.FK_MapData); //把文件放上去. ftpconn.PutFile(temp, guid + "." + dbUpload.FileExts); ftpconn.Close(); //设置路径. dbUpload.FileFullName = ny + "//" + athDesc.FK_MapData + "//" + guid + "." + dbUpload.FileExts; dbUpload.Insert(); } //执行附件上传后事件,added by liuxc,2017-7-15 msg = mapData.DoEvent(FrmEventList.AthUploadeAfter, en, "@FK_FrmAttachment=" + dbUpload.FK_FrmAttachment + "@FK_FrmAttachmentDB=" + dbUpload.MyPK + "@FileFullName=" + temp); if (!string.IsNullOrEmpty(msg)) { BP.Sys.Glo.WriteLineError("@AthUploadeAfter事件返回信息,文件:" + dbUpload.FileName + "," + msg); } } #endregion 保存到数据库. } }
protected void Page_Load(object sender, EventArgs e) { //WebUser.SignInOfGener(new BP.Port.Emp("fuhui")); UserName = WebUser.Name; if (string.IsNullOrEmpty(this.FK_MapData)) { divMenu.InnerHtml = "<h1 style='color:red'>必须传入参数FK_Mapdata!<h1>"; return; } fk_mapdatas = FK_MapData.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); //获得外部的标记。 string type = Request["action"]; if (string.IsNullOrEmpty(type)) { /** 第一次进来,的时候,没有标记。 */ //初始化它的解决方案. add by stone. 2015-01-25. 增加权限控制方案,以在不同的节点实现不同的控制. IsEdit = string.IsNullOrWhiteSpace(Request.QueryString["IsEdit"]) ? true : Request.QueryString["IsEdit"] == "1"; IsPrint = string.IsNullOrWhiteSpace(Request.QueryString["IsPrint"]) ? true : Request.QueryString["IsPrint"] == "1"; GenerateToolbarSlns(); } else { if (type.Equals("LoadFile")) { LoadFile(); return; } if (type.Equals("SaveFile")) { SaveFile(fk_mapdatas); SaveFieldInfos(fk_mapdatas); return; } throw new Exception("@没有处理的标记错误:" + type); } firsts = new Dictionary <string, bool>(); GEEntityExcelFrm en = null; FileInfo tmpFile = null; FileInfo excelFile = null; FrmFields frmFields = null; //检查数据文件是否存在?如果存在并打开不存在并copy模版。 var root = SystemConfig.PathOfDataUser + "\\FrmOfficeTemplate\\"; var rootInfo = new DirectoryInfo(root); var isFirst = false; if (!rootInfo.Exists) { rootInfo.Create(); } ReplaceParams = "["; ReplaceFields = "["; ReplaceDtlNos = "["; ReplaceDtls = "["; IsFirsts = "["; FK_MapDatas = "["; ReplaceFieldCtrls = "["; //根据excel表单no来处理各自的信息 var pk = 0; foreach (var fk_md in fk_mapdatas) { //创建excel数据实体. en = new GEEntityExcelFrm(fk_md); var files = rootInfo.GetFiles(fk_md + ".*"); // 判断是否有这个数据文件. if (files.Length == 0) { Response.Write("<h3>Excel表单模板文件不存在,请确认已经上传Excel表单模板,该模版的位于服务器:" + rootInfo.FullName + "</h3>"); Response.End(); return; } FK_MapDatas += "{\"Name\":\"" + en.ClassID + "\",\"Text\":\"" + en.EnDesc + "\"},"; // 检查数据目录文件是否存在? var pathDir = SystemConfig.PathOfDataUser + @"\FrmOfficeFiles\" + fk_md; if (!Directory.Exists(pathDir)) { Directory.CreateDirectory(pathDir); } // 判断who is pk pk = GetPK(fk_md); if (pk == 0) { return; } // 初始化数据文件. tmpFile = files[0]; excelFile = new FileInfo(pathDir + "\\" + pk + tmpFile.Extension); if (excelFile.Exists == false) { /*如果不存在就copy 一个副本。*/ File.Copy(tmpFile.FullName, excelFile.FullName); isFirst = true; } else { //edited by liuxc,2015-3-25,此处增加判断,如果模板文件与生成的数据文件的最后修改时间是一致的,表明此数据文件还没有经过修改,也标识为第一次,加载填充数据信息 isFirst = excelFile.LastWriteTime.Equals(tmpFile.LastWriteTime); } firsts.Add(fk_md, isFirst); IsFirsts += "{\"" + fk_md + "\":" + isFirst.ToString().ToLower() + "},"; //edited by liuxc,2015-1-30,如果在构造中使用传递OID的构造函数,则下面的Save时,第一次会插入不成功,此处是因为insert时判断OID不为0则认为是已经存在的记录,实际上此处还没有存在,所以使用下面的逻辑进行判断,如果没有该条记录,则插入新记录 en.OID = pk; if (en.IsExits == false) { en.InsertAsOID(pk); } else { en.Retrieve(); } //给实体赋值. en.FilePath = excelFile.FullName; en.RDT = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); en.LastEditer = WebUser.Name; en.SetPara(FK_Node.ToString(), true); en.ResetDefaultVal(); //接受外部参数数据。 string[] paras = this.RequestParas.Split('&'); foreach (string str in paras) { if (string.IsNullOrEmpty(str) || str.Contains("=") == false) { continue; } string[] kvs = str.Split('='); en.SetValByKey(kvs[0], kvs[1]); } en.Save(); //执行保存. //装载数据。 ReplaceParams += "{\"" + fk_md + "\":"; ReplaceFields += "{\"" + fk_md + "\":"; ReplaceDtlNos += "{\"" + fk_md + "\":"; ReplaceDtls += "{\"" + fk_md + "\":"; ReplaceFieldCtrls += "{\"" + fk_md + "\":["; this.LoadFrmData(fk_md, en); //字段控制 frmFields = new FrmFields(fk_md, FK_Node); foreach (FrmField frmField in frmFields) { ReplaceFieldCtrls += string.Format("{{\"{0}\":{{\"Name\":\"{1}\",\"UIVisible\":{2},\"UIIsEnable\":{3},\"IsNotNull\":{4},\"OldValue\":\"{5}\"}}}},", frmField.KeyOfEn, frmField.Name, frmField.UIVisible.ToString().ToLower(), frmField.UIIsEnable.ToString().ToLower(), frmField.IsNotNull.ToString().ToLower(), frmField.UIIsEnable ? "" : en.GetValStringByKey(frmField.KeyOfEn, "")); } ReplaceParams += "},"; ReplaceFields += "},"; ReplaceDtlNos += "},"; ReplaceDtls += "},"; ReplaceFieldCtrls = ReplaceFieldCtrls.TrimEnd(',') + "]},"; } ReplaceParams = ReplaceParams.TrimEnd(',') + "]"; ReplaceFields = ReplaceFields.TrimEnd(',') + "]"; ReplaceDtlNos = ReplaceDtlNos.TrimEnd(',') + "]"; ReplaceDtls = ReplaceDtls.TrimEnd(',') + "]"; IsFirsts = IsFirsts.TrimEnd(',') + "]"; FK_MapDatas = FK_MapDatas.TrimEnd(',') + "]"; ReplaceFieldCtrls = ReplaceFieldCtrls.TrimEnd(',') + "]"; //替换掉 word 里面的数据. fileName.Text = string.Format(@"\{0}\{1}{2}", fk_mapdatas[0], pk, excelFile.Extension); fileType.Text = excelFile.Extension.TrimStart('.'); }
/// <summary> /// 保存文件,在这里做修改就可以了. /// </summary> public void SaveFile() { BP.Sys.FrmAttachment athDesc = new BP.Sys.FrmAttachment(this.FK_FrmAttachment); System.Web.UI.WebControls.FileUpload fu = null; //this.Pub1.FindControl("file")as System.Web.UI.WebControls.FileUpload; if (fu.HasFile == false || fu.FileName.Length <= 2) { this.Alert("请选择上传的文件."); return; } string exts = System.IO.Path.GetExtension(fu.FileName).ToLower().Replace(".", ""); //如果有上传类型限制,进行判断格式 if (athDesc.Exts == "*.*" || athDesc.Exts == "") { /*任何格式都可以上传*/ } else { if (athDesc.Exts.ToLower().Contains(exts) == false) { this.Alert("您上传的文件,不符合系统的格式要求,要求的文件格式:" + athDesc.Exts + ",您现在上传的文件格式为:" + exts); return; } } string savePath = athDesc.SaveTo; if (savePath.Contains("@") == true || savePath.Contains("*") == true) { /*如果有变量*/ savePath = savePath.Replace("*", "@"); GEEntity en = new GEEntity(athDesc.FK_MapData); en.PKVal = this.PKVal; en.Retrieve(); savePath = BP.WF.Glo.DealExp(savePath, en, null); if (savePath.Contains("@") && this.FK_Node != null) { /*如果包含 @ */ BP.WF.Flow flow = new BP.WF.Flow(this.FK_Flow); BP.WF.Data.GERpt myen = flow.HisGERpt; myen.OID = this.WorkID; myen.RetrieveFromDBSources(); savePath = BP.WF.Glo.DealExp(savePath, myen, null); } if (savePath.Contains("@") == true) throw new Exception("@路径配置错误,变量没有被正确的替换下来." + savePath); } else { //savePath = athDesc.SaveTo + "\\" + this.PKVal; } //替换关键的字串. savePath = savePath.Replace("\\\\", "\\"); savePath = Server.MapPath("~/" + savePath); try { if (System.IO.Directory.Exists(savePath) == false) System.IO.Directory.CreateDirectory(savePath); } catch (Exception ex) { throw new Exception("@创建路径出现错误,可能是没有权限或者路径配置有问题:" + Server.MapPath("~/" + savePath) + "===" + savePath + "@技术问题:" + ex.Message); } string guid = BP.DA.DBAccess.GenerGUID(); string fileName = fu.FileName.Substring(0, fu.FileName.LastIndexOf('.')); string ext = System.IO.Path.GetExtension(fu.FileName); //string realSaveTo = Server.MapPath("~/" + savePath) + "/" + guid + "." + fileName + "." + ext; //string realSaveTo = Server.MapPath("~/" + savePath) + "\\" + guid + "." + fu.FileName.Substring(fu.FileName.LastIndexOf('.') + 1); //string saveTo = savePath + "/" + guid + "." + fileName + "." + ext; string realSaveTo = savePath + "/" + guid + "." + fileName + ext; string saveTo = realSaveTo; try { fu.SaveAs(realSaveTo); } catch (Exception ex) { this.Response.Write("@文件存储失败,有可能是路径的表达式出问题,导致是非法的路径名称:" + ex.Message); return; } FileInfo info = new FileInfo(realSaveTo); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.MyPK = guid; // athDesc.FK_MapData + oid.ToString(); dbUpload.NodeID = FK_Node.ToString(); dbUpload.FK_FrmAttachment = this.FK_FrmAttachment; if (athDesc.AthUploadWay == AthUploadWay.Inherit) { /*如果是继承,就让他保持本地的PK. */ dbUpload.RefPKVal = this.PKVal.ToString(); } if (athDesc.AthUploadWay == AthUploadWay.Interwork) { /*如果是协同,就让他是PWorkID. */ string pWorkID = BP.DA.DBAccess.RunSQLReturnValInt("SELECT PWorkID FROM WF_GenerWorkFlow WHERE WorkID=" + this.PKVal, 0).ToString(); if (pWorkID == null || pWorkID == "0") pWorkID = this.PKVal; dbUpload.RefPKVal = pWorkID; } dbUpload.FK_MapData = athDesc.FK_MapData; dbUpload.FK_FrmAttachment = this.FK_FrmAttachment; dbUpload.FileExts = info.Extension; dbUpload.FileFullName = saveTo; dbUpload.FileName = fu.FileName; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDataTimess; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; //if (athDesc.IsNote) // dbUpload.MyNote = this.Pub1.GetTextBoxByID("TB_Note").Text; //if (athDesc.Sort.Contains(",")) // dbUpload.Sort = this.Pub1.GetDDLByID("ddl").SelectedItemStringVal; dbUpload.UploadGUID = guid; dbUpload.Insert(); }
protected void Page_Load(object sender, EventArgs e) { this.Response.ContentEncoding = System.Text.UTF8Encoding.UTF8; this.Request.ContentEncoding = System.Text.UTF8Encoding.UTF8; #region 功能执行. if (this.DoType == "Del") { FrmAttachmentDB delDB = new FrmAttachmentDB(); delDB.MyPK = this.DelPKVal == null ? this.MyPK : this.DelPKVal; delDB.DirectDelete(); } if (this.DoType == "Down") { FrmAttachmentDB downDB = new FrmAttachmentDB(); downDB.MyPK = this.DelPKVal == null ? this.MyPK : this.DelPKVal; downDB.Retrieve(); string downpath = GetRealPath(downDB.FileFullName); BP.Sys.PubClass.DownloadFile(downpath, downDB.FileName); this.WinClose(); return; } if (this.DoType == "WinOpen") { FrmAttachmentDB downDB = new FrmAttachmentDB(); downDB.MyPK = this.MyPK; downDB.Retrieve(); Response.ContentType = "Application/pdf"; string downpath = GetRealPath(downDB.FileFullName); Response.WriteFile(downpath); Response.End(); return; } #endregion 功能执行. #region 处理权限控制. BP.Sys.FrmAttachment athDesc = new BP.Sys.FrmAttachment(); athDesc.MyPK = this.FK_FrmAttachment; if (this.FK_Node == null || this.FK_Flow == null) { athDesc.RetrieveFromDBSources(); } else { #region 判断是否可以查询出来,如果查询不出来,就可能是公文流程。 athDesc.MyPK = this.FK_FrmAttachment; if (athDesc.RetrieveFromDBSources() == 0 && string.IsNullOrEmpty(this.FK_Flow) == false) { /*如果没有查询到它,就有可能是公文多附件被删除了.*/ athDesc.MyPK = this.FK_FrmAttachment; athDesc.NoOfObj = "DocMultiAth"; athDesc.FK_MapData = this.FK_MapData; athDesc.Exts = "*.*"; //存储路径. athDesc.SaveTo = "/DataUser/UploadFile/"; athDesc.IsNote = false; //不显示note字段. athDesc.IsVisable = false; // 让其在form 上不可见. //位置. athDesc.X = (float)94.09; athDesc.Y = (float)333.18; athDesc.W = (float)626.36; athDesc.H = (float)150; //多附件. athDesc.UploadType = AttachmentUploadType.Multi; athDesc.Name = "公文多附件(系统自动增加)"; athDesc.SetValByKey("AtPara", "@IsWoEnablePageset=1@IsWoEnablePrint=1@IsWoEnableViewModel=1@IsWoEnableReadonly=0@IsWoEnableSave=1@IsWoEnableWF=1@IsWoEnableProperty=1@IsWoEnableRevise=1@IsWoEnableIntoKeepMarkModel=1@FastKeyIsEnable=0@IsWoEnableViewKeepMark=1@FastKeyGenerRole=@IsWoEnableTemplete=1"); athDesc.Insert(); //有可能在其其它的节点上没有这个附件,所以也要循环增加上它. BP.WF.Nodes nds = new BP.WF.Nodes(this.FK_Flow); foreach (BP.WF.Node nd in nds) { athDesc.FK_MapData = "ND" + nd.NodeID; athDesc.MyPK = athDesc.FK_MapData + "_" + athDesc.NoOfObj; if (athDesc.IsExits == true) { continue; } athDesc.Insert(); } //重新查询一次,把默认值加上. athDesc.RetrieveFromDBSources(); } #endregion 判断是否可以查询出来,如果查询不出来,就可能是公文流程。 #region 处理权限方案。 /*首先判断是否具有权限方案*/ string at = BP.Sys.SystemConfig.AppCenterDBVarStr; Paras ps = new BP.DA.Paras(); ps.SQL = "SELECT FrmSln FROM WF_FrmNode WHERE FK_Node=" + at + "FK_Node AND FK_Flow=" + at + "FK_Flow AND FK_Frm=" + at + "FK_Frm"; ps.Add("FK_Node", this.FK_Node); ps.Add("FK_Flow", this.FK_Flow); ps.Add("FK_Frm", this.FK_MapData); DataTable dt = DBAccess.RunSQLReturnTable(ps); if (dt.Rows.Count == 0) { athDesc.RetrieveFromDBSources(); } else { int sln = int.Parse(dt.Rows[0][0].ToString()); if (sln == 0) { athDesc.RetrieveFromDBSources(); } else { int result = athDesc.Retrieve(FrmAttachmentAttr.FK_MapData, this.FK_MapData, FrmAttachmentAttr.FK_Node, this.FK_Node, FrmAttachmentAttr.NoOfObj, this.Ath); if (result == 0) /*如果没有定义,就获取默认的.*/ { athDesc.RetrieveFromDBSources(); } // throw new Exception("@该流程表单在该节点("+this.FK_Node+")使用的是自定义的权限控制,但是没有定义该附件的权限。"); } } #endregion 处理权限方案。 } BP.Sys.FrmAttachmentDBs dbs = new BP.Sys.FrmAttachmentDBs(); if (athDesc.HisCtrlWay == AthCtrlWay.PWorkID) { string pWorkID = BP.DA.DBAccess.RunSQLReturnValInt("SELECT PWorkID FROM WF_GenerWorkFlow WHERE WorkID=" + this.PKVal, 0).ToString(); if (pWorkID == null || pWorkID == "0") { pWorkID = this.PKVal; } if (athDesc.AthUploadWay == AthUploadWay.Inherit) { /* 继承模式 */ BP.En.QueryObject qo = new BP.En.QueryObject(dbs); qo.AddWhere(FrmAttachmentDBAttr.RefPKVal, pWorkID); qo.addOr(); qo.AddWhere(FrmAttachmentDBAttr.RefPKVal, int.Parse(this.PKVal)); qo.addOrderBy("RDT"); qo.DoQuery(); } if (athDesc.AthUploadWay == AthUploadWay.Interwork) { /*共享模式*/ dbs.Retrieve(FrmAttachmentDBAttr.RefPKVal, pWorkID); } } else { int num = dbs.Retrieve(FrmAttachmentDBAttr.FK_FrmAttachment, this.FK_FrmAttachment, FrmAttachmentDBAttr.RefPKVal, this.PKVal, "RDT"); if (num == 0 && this.IsCC == "1") { CCList cc = new CCList(); int nnn = cc.Retrieve(CCListAttr.FK_Node, this.FK_Node, CCListAttr.WorkID, this.WorkID, CCListAttr.CCTo, WebUser.No); if (cc.NDFrom != 0) { this._fk_node = cc.NDFrom; dbs.Retrieve(FrmAttachmentDBAttr.FK_FrmAttachment, this.FK_FrmAttachmentExt, FrmAttachmentDBAttr.FK_MapData, "ND" + cc.NDFrom, FrmAttachmentDBAttr.RefPKVal, this.WorkID.ToString()); //重新设置文件描述。 athDesc.Retrieve(FrmAttachmentAttr.FK_MapData, this.FK_MapData, FrmAttachmentAttr.NoOfObj, "DocMultiAth"); } } } #endregion 处理权限控制. #region 生成表头表体. this.Title = athDesc.Name; #region 如果图片显示. if (athDesc.FileShowWay == FileShowWay.Pict) { /* 如果是图片轮播,就在这里根据数据输出轮播的html代码.*/ if (dbs.Count == 0 && athDesc.IsUpload == true) { /*没有数据并且,可以上传,就转到上传的界面上去.*/ this.Response.Redirect("AttachmentUploadImg.aspx?1=1" + this.RequestParas, true); return; } if (dbs.Count != 0) { /*有数据,就输出.*/ this.Pub1.Add("<div class='slideBox' id='" + athDesc.MyPK + "' style='width:" + athDesc.W + "px;height:" + athDesc.H + "px; position:relative; overflow:hidden;'>"); this.Pub1.Add("<ul class='items'> "); foreach (FrmAttachmentDB db in dbs) { if (BP.DA.DataType.IsImgExt(db.FileExts) == false) { continue; } if (athDesc.IsDelete != false) { if (athDesc.IsDelete == true) { this.Pub1.Add("<li> <a title='" + db.MyNote + "'><img src = '" + db.FileFullName + "' width=" + athDesc.W + " height=" + athDesc.H + "/></a> | <a href=\"javascript:Del('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">删除</a></li>"); } else if (athDesc.IsDeleteInt == 2) { if (db.Rec.Equals(WebUser.No)) { this.Pub1.Add("<li> <a title='" + db.MyNote + "'><img src = '" + db.FileFullName + "' width=" + athDesc.W + " height=" + athDesc.H + "/></a> | <a href=\"javascript:Del('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">删除</a></li>"); } } else { this.Pub1.Add("<li> <a title='" + db.MyNote + "'><img src = '" + db.FileFullName + "' width=" + athDesc.W + " height=" + athDesc.H + "/></a> </li>"); } } else { this.Pub1.Add("<li> <a title='" + db.MyNote + "'><img src = '" + db.FileFullName + "' width=" + athDesc.W + " height=" + athDesc.H + "/></a> </li>"); } } this.Pub1.Add("</ul>"); this.Pub1.Add("</div>"); this.Pub1.Add("<script>$(function(){$('#" + athDesc.MyPK + "').slideBox({duration : 0.3,easing : 'linear',delay : 5,hideClickBar : false,clickBarRadius : 10});})</script>"); } if (athDesc.IsUpload == true) { /*可以上传,就显示上传的按钮.. */ this.Pub1.Add("<a href='AttachmentUploadImg.aspx?1=1" + this.RequestParas + "' >上传</a>"); } return; } #endregion 如果图片显示. float athWidth = athDesc.W - 20; // 执行装载模版. if (dbs.Count == 0 && athDesc.IsWoEnableTemplete == true) { /*如果数量为0,就检查一下是否有模版如果有就加载模版文件.*/ string templetePath = BP.Sys.SystemConfig.PathOfDataUser + "AthTemplete\\" + athDesc.NoOfObj.Trim(); if (Directory.Exists(templetePath) == false) { Directory.CreateDirectory(templetePath); } /*有模版文件夹*/ DirectoryInfo mydir = new DirectoryInfo(templetePath); FileInfo[] fls = mydir.GetFiles(); if (fls.Length == 0) { throw new Exception("@流程设计错误,该多附件启用了模版组件,模版目录:" + templetePath + "里没有模版文件."); } foreach (FileInfo fl in fls) { if (System.IO.Directory.Exists(athDesc.SaveTo) == false) { System.IO.Directory.CreateDirectory(athDesc.SaveTo); } int oid = BP.DA.DBAccess.GenerOID(); string saveTo = athDesc.SaveTo + "\\" + oid + "." + fl.Name.Substring(fl.Name.LastIndexOf('.') + 1); if (saveTo.Contains("@") == true || saveTo.Contains("*") == true) { /*如果有变量*/ saveTo = saveTo.Replace("*", "@"); if (saveTo.Contains("@") && this.FK_Node != null) { /*如果包含 @ */ BP.WF.Flow flow = new BP.WF.Flow(this.FK_Flow); BP.WF.Data.GERpt myen = flow.HisGERpt; myen.OID = this.WorkID; myen.RetrieveFromDBSources(); saveTo = BP.WF.Glo.DealExp(saveTo, myen, null); } if (saveTo.Contains("@") == true) { throw new Exception("@路径配置错误,变量没有被正确的替换下来." + saveTo); } } fl.CopyTo(saveTo); FileInfo info = new FileInfo(saveTo); FrmAttachmentDB dbUpload = new FrmAttachmentDB(); dbUpload.CheckPhysicsTable(); dbUpload.MyPK = athDesc.FK_MapData + oid.ToString(); dbUpload.NodeID = FK_Node.ToString(); dbUpload.FK_FrmAttachment = this.FK_FrmAttachment; if (athDesc.AthUploadWay == AthUploadWay.Inherit) { /*如果是继承,就让他保持本地的PK. */ dbUpload.RefPKVal = this.PKVal.ToString(); } if (athDesc.AthUploadWay == AthUploadWay.Interwork) { /*如果是协同,就让他是PWorkID. */ string pWorkID = BP.DA.DBAccess.RunSQLReturnValInt("SELECT PWorkID FROM WF_GenerWorkFlow WHERE WorkID=" + this.PKVal, 0).ToString(); if (pWorkID == null || pWorkID == "0") { pWorkID = this.PKVal; } dbUpload.RefPKVal = pWorkID; } dbUpload.FK_MapData = athDesc.FK_MapData; dbUpload.FK_FrmAttachment = this.FK_FrmAttachment; dbUpload.FileExts = info.Extension; dbUpload.FileFullName = saveTo; dbUpload.FileName = fl.Name; dbUpload.FileSize = (float)info.Length; dbUpload.RDT = DataType.CurrentDataTime; dbUpload.Rec = BP.Web.WebUser.No; dbUpload.RecName = BP.Web.WebUser.Name; //if (athDesc.IsNote) // dbUpload.MyNote = this.Pub1.GetTextBoxByID("TB_Note").Text; //if (athDesc.Sort.Contains(",")) // dbUpload.Sort = this.Pub1.GetDDLByID("ddl").SelectedItemStringVal; dbUpload.Insert(); dbs.AddEntity(dbUpload); } //BP.Sys.FrmAttachmentDBs dbs = new BP.Sys.FrmAttachmentDBs(); } #region 处理权限问题. // 处理权限问题, 有可能当前节点是可以上传或者删除,但是当前节点上不能让此人执行工作。 bool isDel = athDesc.IsDeleteInt == 0 ? false : true; bool isUpdate = athDesc.IsUpload; if (isDel == true || isUpdate == true) { if (this.WorkID != 0 && string.IsNullOrEmpty(this.FK_Flow) == false && this.FK_Node != 0) { isDel = BP.WF.Dev2Interface.Flow_IsCanDoCurrentWork(this.FK_Flow, this.FK_Node, this.WorkID, WebUser.No); if (isDel == false) { isUpdate = false; } } } #endregion 处理权限问题. if (athDesc.FileShowWay == FileShowWay.Free) { this.Pub1.AddTable("border='0' cellspacing='0' cellpadding='0' style='width:" + athWidth + "px'"); foreach (FrmAttachmentDB db in dbs) { this.Pub1.AddTR(); if (CanEditor(db.FileExts)) { if (athDesc.IsWoEnableWF) { this.Pub1.AddTD("<a href=\"javascript:OpenOfiice('" + this.FK_FrmAttachment + "','" + this.WorkID + "','" + db.MyPK + "','" + this.FK_MapData + "','" + this.Ath + "','" + this.FK_Node + "')\"><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } else { this.Pub1.AddTD("<a href=\"javascript:OpenView('" + this.PKVal + "','" + db.MyPK + "')\"><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } } else if (DataType.IsImgExt(db.FileExts) || db.FileExts.ToUpper() == "PDF" || db.FileExts.ToUpper() == "CEB") { this.Pub1.AddTD("<a href=\"javascript:OpenView('" + this.PKVal + "','" + db.MyPK + "')\"><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } else { this.Pub1.AddTD("<a href='AttachmentUpload.aspx?DoType=Down&MyPK=" + db.MyPK + "' target=_blank ><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } if (athDesc.IsDownload) { this.Pub1.AddTD("<a href=\"javascript:Down('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">下载</a>"); } else { this.Pub1.AddTD(""); } if (this.IsReadonly != "1") { if (athDesc.IsDelete != false) { if (athDesc.IsDelete == true) { this.Pub1.AddTD("style='border:0px'", "<a href=\"javascript:Del('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">删除</a>"); } else if (athDesc.IsDeleteInt == 2) { if (db.Rec.Equals(WebUser.No)) { this.Pub1.AddTD("style='border:0px'", "<a href=\"javascript:Del('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">删除</a>"); } } else { this.Pub1.AddTD(""); } } else { this.Pub1.AddTD(""); } } else { this.Pub1.AddTD(""); this.Pub1.AddTD(""); } this.Pub1.AddTREnd(); } AddFileUpload(isUpdate, athDesc); this.Pub1.AddTableEnd(); return; } this.Pub1.AddTable("border='0' cellspacing='0' cellpadding='0' style='width:" + athWidth + "px'"); if (athDesc.IsShowTitle == true) { this.Pub1.AddTR("style='border:0px'"); this.Pub1.AddTDTitleExt("序号"); if (athDesc.Sort.Contains(",")) { this.Pub1.AddTD("style='background:#f4f4f4; font-size:12px; padding:3px;'", "类别"); } this.Pub1.AddTDTitleExt("文件名"); this.Pub1.AddTDTitleExt("大小KB"); this.Pub1.AddTDTitleExt("上传时间"); this.Pub1.AddTDTitleExt("上传人"); this.Pub1.AddTDTitleExt("操作"); this.Pub1.AddTREnd(); } int i = 0; StringBuilder picHtml = new StringBuilder(); foreach (FrmAttachmentDB db in dbs) { i++; this.Pub1.AddTR(); this.Pub1.AddTDIdx(i); if (athDesc.Sort.Contains(",")) { this.Pub1.AddTD(db.Sort); } // this.Pub1.AddTDIdx(i++); if (athDesc.IsDownload) { if (athDesc.IsWoEnableWF && CanEditor(db.FileExts)) { this.Pub1.AddTD("<a href=\"javascript:OpenOfiice('" + this.FK_FrmAttachment + "','" + this.WorkID + "','" + db.MyPK + "','" + this.FK_MapData + "','" + this.Ath + "','" + this.FK_Node + "')\"><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } else if (db.FileExts.ToUpper() == "TXT" || db.FileExts.ToUpper() == "JPG" || db.FileExts.ToUpper() == "JPEG" || db.FileExts.ToUpper() == "GIF" || db.FileExts.ToUpper() == "PNG" || db.FileExts.ToUpper() == "BMP" || db.FileExts.ToUpper() == "PDF" || db.FileExts.ToUpper() == "CEB") { this.Pub1.AddTD("<a href=\"javascript:OpenView('" + this.PKVal + "','" + db.MyPK + "')\"><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } else { this.Pub1.AddTD("<a href='AttachmentUpload.aspx?DoType=Down&MyPK=" + db.MyPK + "' target=_blank ><img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName + "</a>"); } } else { this.Pub1.AddTD("<img src='../Img/FileType/" + db.FileExts + ".gif' border=0 onerror=\"src='../Img/FileType/Undefined.gif'\" />" + db.FileName); } this.Pub1.AddTD(db.FileSize); this.Pub1.AddTD(db.RDT); this.Pub1.AddTD(db.RecName); //输出操作部分. this.Pub1.AddTDBegin(); if (athDesc.IsDownload) { this.Pub1.Add("<a href=\"javascript:Down('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">下载</a>"); } if (this.IsReadonly != "1") { string op = null; if (isDel == true) { if (athDesc.IsDelete == true) { op = " <a href=\"javascript:Del('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">删除</a>"; } else if (athDesc.IsDeleteInt == 2) { if (db.Rec.Equals(WebUser.No)) { op = " <a href=\"javascript:Del('" + this.FK_FrmAttachment + "','" + this.PKVal + "','" + db.MyPK + "')\">删除</a>"; } } } this.Pub1.Add(op); } this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); } if (i == 0) { this.Pub1.AddTR(); this.Pub1.AddTD("0"); if (athDesc.Sort.Contains(",")) { this.Pub1.AddTD("  "); } this.Pub1.AddTD("style='width:100px'", "<span style='color:red;' >上传附件</span>"); this.Pub1.AddTD("  "); this.Pub1.AddTD("  "); this.Pub1.AddTD("  "); this.Pub1.AddTD("  "); this.Pub1.AddTREnd(); } AddFileUpload(isUpdate, athDesc); this.Pub1.AddTableEnd(); #endregion 生成表头表体. }