private void SaveFile() { try { HttpFileCollection files = HttpContext.Current.Request.Files; if (files.Count > 0) { //检查文件扩展名字 HttpPostedFile postedFile = files[0]; var fileName = Path.GetFileName(Request.QueryString["filename"]); var path = SystemConfig.PathOfDataUser + @"\FrmOfficeFiles\" + this.FK_MapData; if (fileName != "") { postedFile.SaveAs(path + "\\" + fileName); var en = new GEEntityWordFrm(this.FK_MapData); en.RetrieveFromDBSources(); en.LastEditer = WebUser.Name; en.RDT = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); en.Update(); } } } catch (Exception) { throw; } }
/// <summary> /// 保存从word中提取的数据 /// </summary> private void SaveFieldInfos() { var mes = new MapExts(this.FK_MapData); if (mes.Count == 0) { return; } var item = mes.GetEntityByKey(MapExtAttr.ExtType, MapExtXmlList.PageLoadFull) as MapExt; if (item == null) { return; } var fieldCount = 0; foreach (var key in Request.Form.AllKeys) { var idx = 0; if (key.StartsWith("field") && key.Length > 5 && int.TryParse(key.Substring(5), out idx)) { fieldCount++; } } var fieldsJson = string.Empty; for (var i = 0; i < fieldCount; i++) { fieldsJson += Request["field" + i]; } var fields = LitJson.JsonMapper.ToObject <List <ReplaceField> >(fieldsJson); //更新主表数据 var en = new GEEntityWordFrm(this.FK_MapData); en.OID = this.OID; if (en.RetrieveFromDBSources() == 0) { throw new Exception("OID=" + this.OID + "的数据在" + this.FK_MapData + "中不存在,请检查!"); } //此处因为weboffice在上传的接口中,只有上传成功与失败的返回值,没有具体的返回信息参数,所以未做异常处理 foreach (var field in fields) { en.SetValByKey(field.key, field.value); } en.LastEditer = WebUser.Name; en.RDT = DataType.CurrentDataTime; en.Update(); //todo:更新明细表数据,此处逻辑可能还有待商榷 var mdtls = new MapDtls(this.FK_MapData); if (mdtls.Count == 0) { return; } var dtlsCount = 0; foreach (var key in Request.Form.AllKeys) { var idx = 0; if (key.StartsWith("dtls") && key.Length > 4 && int.TryParse(key.Substring(4), out idx)) { dtlsCount++; } } var dtlsJson = string.Empty; for (var i = 0; i < dtlsCount; i++) { dtlsJson += Request["dtls" + i]; } //var dtlsJson = Request["dtls"]; var dtls = LitJson.JsonMapper.ToObject <List <ReplaceDtlTable> >(dtlsJson); GEDtls gedtls = null; GEDtl gedtl = null; ReplaceDtlTable wdtl = null; foreach (MapDtl mdtl in mdtls) { wdtl = dtls.FirstOrDefault(o => o.dtlno == mdtl.No); if (wdtl == null || wdtl.dtl.Count == 0) { continue; } //此处不是真正意义上的更新,因为不知道明细表的主键,只能将原明细表中的数据删除掉,然后再重新插入新的数据 gedtls = new GEDtls(mdtl.No); gedtls.Delete(GEDtlAttr.RefPK, en.PKVal); foreach (var d in wdtl.dtl) { gedtl = gedtls.GetNewEntity as GEDtl; foreach (var cell in d.cells) { gedtl.SetValByKey(cell.key, cell.value); } gedtl.RefPK = en.PKVal.ToString(); gedtl.RDT = DataType.CurrentDataTime; gedtl.Rec = WebUser.No; gedtl.Insert(); } } }