private void SaveFile(string[] fk_mds) { try { HttpFileCollection files = HttpContext.Current.Request.Files; if (files.Count > 0) { //检查文件扩展名字 HttpPostedFile postedFile = files[0]; var fileName = Path.GetFileName(Request.QueryString["filename"]); foreach (var fk_md in fk_mds) { var path = SystemConfig.PathOfDataUser + @"\FrmOfficeFiles\" + fk_md; if (fileName != "") { postedFile.SaveAs(path + "\\" + fileName); var en = new GEEntityExcelFrm(fk_md); en.RetrieveFromDBSources(); en.LastEditer = WebUser.Name; en.RDT = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); en.Update(); } } } } catch (Exception) { throw; } }
/// <summary> /// 保存从word中提取的数据 /// <param name="fk_mds">excel表单的编号</param> /// </summary> private void SaveFieldInfos(string[] fk_mds) { foreach (var fk_md in fk_mds) { var mes = new MapExts(fk_md); if (mes.Count == 0) { return; } var item = mes.GetEntityByKey(MapExtAttr.ExtType, MapExtXmlList.PageLoadFull) as MapExt; if (item == null) { return; } var fieldCount = 0; var prefix = "field_" + fk_md; foreach (var key in Request.Form.AllKeys) { var idx = 0; if (key.StartsWith(prefix) && key.Length > prefix.Length && int.TryParse(key.Substring(prefix.Length), out idx)) { fieldCount++; } } var fieldsJson = string.Empty; for (var i = 0; i < fieldCount; i++) { fieldsJson += Request[prefix + i]; } //var fieldsJson = Request["field"]; var fields = LitJson.JsonMapper.ToObject <List <ReplaceField> >(HttpUtility.UrlDecode(fieldsJson)); //更新主表数据 var en = new GEEntityExcelFrm(fk_md); var pk = en.OID = GetPK(fk_md); if (en.RetrieveFromDBSources() == 0) { throw new Exception("OID=" + pk + "的数据在" + fk_md + "中不存在,请检查!"); } //此处因为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(fk_md); if (mdtls.Count == 0) { return; } var dtlsCount = 0; prefix = "dtls_" + fk_md; foreach (var key in Request.Form.AllKeys) { var idx = 0; if (key.StartsWith(prefix) && key.Length > prefix.Length && int.TryParse(key.Substring(prefix.Length), out idx)) { dtlsCount++; } } var dtlsJson = string.Empty; for (var i = 0; i < dtlsCount; i++) { dtlsJson += Request[prefix + i]; } //var dtlsJson = Request["dtls"]; var dtls = LitJson.JsonMapper.ToObject <List <ReplaceDtlTable> >(HttpUtility.UrlDecode(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(); } } } }