Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        /// <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();
                    }
                }
            }
        }