初学GIS项目研发阶段性总结 仿《黄埔区慢病地理信息系統》
2019-01-19 10:29
239 查看
开发工具与关键技术: Visual Studio 2015 + SQL Server 2014 Management Studio + SuperMap iDesktop 8C
仿《黄埔区慢病地理信息系統》初学GIS项目研发阶段性总结
作者:吕海安·HAIANLV
完成模块功能:后台部分功能
地图:
数据管理
后台登录界面:账号:admin 密码:123
点击登录来到后台主界面:
点击左边导航栏:数据管理 模块
点击导出模板:
点击模板导出:
点击下载:
导出完成:打开刚刚导出的Excel
SQL:
SQL: --导出 数据 IF @type = 'ExportTemplate' BEGIN SELECT dt_illnessCase.illnessCase_id AS 病例ID, dt_illnessCase.CardNumber AS 卡片编号, dt_illnessCase.CardStatus AS 卡片状态, dt_illnessCase.ItemRegistrationMark AS 项目登记号, dt_illnessCase.Name AS 患儿家长姓名, dt_illnessCase.IDCard AS 有效证件号, dt_illnessCase.Sex AS 性别, dt_illnessCase.Age AS 年龄, dt_illnessCase.CompanyName AS 工作单位, dt_illnessCase.CensusRegister AS 户籍, dt_Disease.Disease_name AS 疾病名称, dt_DiseaseSubtype.DiseaseSubtype_name AS 疾病亚型名称, dt_illnessCase.CommunityHealth AS 隶属社康, dt_illnessCase.Address AS 地址 FROM dt_illnessCase INNER JOIN dt_Disease ON dt_illnessCase.Disease_id = dt_Disease.Disease_id INNER JOIN dt_DiseaseSubtype ON dt_illnessCase.DiseaseSubtype_id = dt_DiseaseSubtype.DiseaseSubtype_id; END; /// <summary> /// 导出模板数据 Controller 层 /// </summary> public ActionResult Print_ExportExcel() { //查询数据库得到List对象 DataTable dt = new DataTable(); try { dt = DALMethod.DTChaXunShuJu("System_DataManageController", new Dictionary<string, object> { {"@type", "ExportTemplate"} }); // ListReturn = DALMethod.DtToList(dt); } catch (Exception exc) { return Json(exc.ToString(), JsonRequestBehavior.AllowGet); //return Json("查询失败", JsonRequestBehavior.AllowGet); } if (dt.Rows.Count == 0) { return Content("该查询无数据"); } string strTableName = "黄埔区病例信息"; dt.TableName = strTableName; PublicMethodController myPublicMethodController = new PublicMethodController(); return myPublicMethodController.ExportExcel(dt, strTableName + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff")); }
点击导入数据:
点击打开表格:
点击选择文件选择要导入的Excel表格:
导入后的Excel,加载到table:
然后点击开始上传 —— 上传到数据库:
如果数据库已经有相同的数据,则不能到入相同的数据。
/// <summary> /// 导入Excel数据 Controller 层 /// </summary> /// <param name="file"></param> /// <returns></returns> public ActionResult ImportExcel(HttpPostedFileBase file) { try { string fileExtension = System.IO.Path.GetExtension(file.FileName); if (".xls".Equals(fileExtension) || ".XLS".Equals(fileExtension)) { byte[] fileBytes = new byte[file.ContentLength];//获取Excel数据的大小 file.InputStream.Read(fileBytes, 0, file.ContentLength);//读取文件内容 // 转为 内存流 System.IO.MemoryStream excelFileStream = new System.IO.MemoryStream(fileBytes); //将内存流转为 工作簿 NPOI.SS.UserModel.IWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(excelFileStream); //判断工作簿中的工作表(Sheet)的个数 if (workbook.NumberOfSheets > 0) { //查询相应的信息 List<dt_illnessCase> dbillnessCase = (from tbillnessCase in MyGIS_HuangpuEntities.dt_illnessCase select tbillnessCase).ToList(); List<dt_Disease> dbDisease = (from tbDisease in MyGIS_HuangpuEntities.dt_Disease select tbDisease).ToList(); List<dt_DiseaseSubtype> dbDiseaseSubtype = (from tbDiseaseSubtype in MyGIS_HuangpuEntities.dt_DiseaseSubtype select tbDiseaseSubtype).ToList(); List<PatientVo> lsitPatientVos = new List<PatientVo>(); // 获取第一个工作表 NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); //PhysicalNumberOfRows 获取的是物理行数,也就是不包括那些空行(隔行)的情况。 //判断 工作表(sheet)中有数据 if (sheet.PhysicalNumberOfRows > 0) { //将数据先装到datatable中 // 定义datatable DataTable dtExcel = new DataTable(); //获取标题行 第一行 NPOI.SS.UserModel.IRow headerRow = sheet.GetRow(0); //获取一行单元格个数 LastCellNum 获取列数,比最后一列列标大 1 int cellCount = headerRow.LastCellNum; //获取数据总行数 LastRowNum 最后一行行标,比行数小 1 int rowCount = sheet.LastRowNum + 1; //创建DataTable的列Columns for (int i = headerRow.FirstCellNum; i < cellCount; i++) { DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); dtExcel.Columns.Add(column); } //读取Excel中的数据 //(sheet.FirstRowNum) 第一行是标题 for (int i = (sheet.FirstRowNum + 1); i < rowCount; i++) { NPOI.SS.UserModel.IRow row = sheet.GetRow(i);//获取行 DataRow dataRow = dtExcel.NewRow();//DataTable创建一行 if (row != null) { //遍历Excel一行的所有单元格 for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) { string s = row.GetCell(j).ToString(); dataRow[j] = row.GetCell(j).ToString(); } } } //添加行DataRow到DataTable dtExcel.Rows.Add(dataRow); } //遍历datatable 获取数据 foreach (DataRow row in dtExcel.Rows) { //创建一个 PatientVo的对象 PatientVo Patient = new PatientVo(); string s = row["疾病名称"].ToString(); Patient.Disease_id = dbDisease.Where(p => p.Disease_name == row["疾病名称"].ToString()).SingleOrDefault().Disease_id; Patient.Disease_name = row["疾病名称"].ToString(); Patient.DiseaseSubtype_id = dbDiseaseSubtype.Where(p => p.DiseaseSubtype_name == row["疾病亚型名称"].ToString()).SingleOrDefault().DiseaseSubtype_id; Patient.DiseaseSubtype_name = row["疾病亚型名称"].ToString(); Patient.CardNumber = row["卡片编号"].ToString(); Patient.CardStatus = row["卡片状态"].ToString(); Patient.ItemRegistrationMark = row["项目登记号"].ToString(); Patient.Name = row["患儿家长姓名"].ToString(); Patient.IDCard = row["有效证件号"].ToString(); Patient.Sex = row["性别"].ToString(); Patient.Age = row["年龄"].ToString(); Patient.CompanyName = row["工作单位"].ToString(); Patient.CensusRegister = row["户籍"].ToString(); Patient.CommunityHealth = row["隶属社康"].ToString(); Patient.Address = row["地址"].ToString(); lsitPatientVos.Add(Patient); } Session["ImportExcel"] = lsitPatientVos; return Json(true, JsonRequestBehavior.AllowGet); } else { //物理行数为0 } } else { //没有工作表 } } else { //上传的文件类型不正确 } } catch (Exception e) { Console.WriteLine(e); } return Json(false, JsonRequestBehavior.AllowGet); } /// <summary> /// 查看导入文件 /// </summary> /// <param name="bsgridPage"></param> /// <returns></returns> public ActionResult SelectSessImportPatient(BsgridPage bsgridPage) { List<PatientVo> lsitpatientVos = new List<PatientVo>(); if (Session["ImportExcel"] != null) { lsitpatientVos = Session["ImportExcel"] as List<PatientVo>; } List<PatientVo> listPatient = lsitpatientVos .OrderBy(p => p.illnessCase_id) .Skip(bsgridPage.GetStartIndex()) .Take(bsgridPage.pageSize) .ToList(); Bsgrid<PatientVo> bsgrid = new Bsgrid<PatientVo>(); bsgrid.success = true; bsgrid.curPage = bsgridPage.curPage; bsgrid.totalRows = lsitpatientVos.Count; bsgrid.data = lsitpatientVos; return Json(bsgrid, JsonRequestBehavior.AllowGet); } #endregion #region 上传数据 /// <summary> /// 开始上传 到数据库 /// </summary> /// <returns></returns> public ActionResult UploadExcel() { string returnstr = ""; try { int savedCount = 0;//保存成功的条数 int oldCount = 0;//已经存在的数据条数 List<PatientVo> patientVos = new List<PatientVo>(); if (Session["ImportExcel"] != null) { patientVos = Session["ImportExcel"] as List<PatientVo>; } if (patientVos.Count > 0) { foreach (PatientVo patientVo in patientVos) { int intOld = (from tbillnessCase in MyGIS_HuangpuEntities.dt_illnessCase join tbDisease in MyGIS_HuangpuEntities.dt_Disease on tbillnessCase.Disease_id equals tbDisease.Disease_id join tbDiseaseSubtype in MyGIS_HuangpuEntities.dt_DiseaseSubtype on tbillnessCase.DiseaseSubtype_id equals tbDiseaseSubtype.DiseaseSubtype_id where tbDisease.Disease_name == patientVo.Disease_name || tbDiseaseSubtype.DiseaseSubtype_name == patientVo.DiseaseSubtype_name select tbillnessCase).Count(); //没有重复的 if (intOld == 0) { dt_Disease disease = new dt_Disease(); disease.Disease_name = patientVo.Disease_name; dt_DiseaseSubtype diseaseSubtype = new dt_DiseaseSubtype(); diseaseSubtype.DiseaseSubtype_name = patientVo.DiseaseSubtype_name; MyGIS_HuangpuEntities.dt_Disease.Add(disease); MyGIS_HuangpuEntities.dt_DiseaseSubtype.Add(diseaseSubtype); MyGIS_HuangpuEntities.SaveChanges(); if (MyGIS_HuangpuEntities.SaveChanges() > 0) { dt_illnessCase illnessCase = new dt_illnessCase(); illnessCase.Disease_id = disease.Disease_id; illnessCase.DiseaseSubtype_id = diseaseSubtype.DiseaseSubtype_id; illnessCase.CardNumber = patientVo.CardNumber; illnessCase.CardStatus = patientVo.CardStatus; illnessCase.ItemRegistrationMark = patientVo.ItemRegistrationMark; illnessCase.Name = patientVo.Name; illnessCase.IDCard = patientVo.IDCard; illnessCase.Sex = patientVo.Sex; illnessCase.Age = patientVo.Age; illnessCase.CompanyName = patientVo.CompanyName; illnessCase.CensusRegister = patientVo.CensusRegister; //illnessCase.Disease_name = patientVo.Disease_name; //illnessCase.DiseaseSubtype_name = patientVo.DiseaseSubtype_name; illnessCase.CommunityHealth = patientVo.CommunityHealth; illnessCase.Address = patientVo.Address; } } else { oldCount++; } } returnstr = "导入" + patientVos.Count + "条数据,存在的数据有" + oldCount + "条,成功上传了" + savedCount + "条数据到数据库"; } else { returnstr = "没有新要上传的"; } } catch (Exception e) { Console.WriteLine(e); } return Json(returnstr, JsonRequestBehavior.AllowGet); } // 代碼有參考老師的,結合自己理解
任务分配图
项目总结:
這個項目是三個合作做的,途中出現了些問題,所以我沒有參與到什麼前台的,只做了後台的一些功能。
相关文章推荐
- GIS—项目研发阶段性总结
- 使用国际开源项目构建一个完整的GIS(地理信息)应用系统
- MVS—《客运售票管理系统》项目研发阶段性总结
- 如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统
- [转]如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统
- 如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统
- 如何使用国际开源项目构建一个完整的GIS(地理信息)应用系统
- GIS+=地理信息+容器技术(6)——Dockerfile介绍
- 初学rails项目总结(二)
- 1.16Android 学习+进度之十六-项目阶段性总结(没有更高的需求可能是最终总结)
- 项目开发总结(联想GIS)-----上传附件,动态创建文件夹
- 奉献给大家的地理資訊系統 GIS(Geographic Information System) 一些资源,从一个台湾网站上找到的,可以得到借鉴所用
- GIS+=地理信息+云计算技术——私有云架构设计(5)云安全规划
- GIS+=地理信息+容器技术(2)——Dockers技术介绍
- 初学Java,阶段性总结(随笔日记)
- 项目总结| 学生信息管理系统
- GIS+=地理信息+云计算技术——SPARK for IntelliJ IDEA 开发环境部署
- 初学rails项目总结(三)
- 没头没尾--项目开发笔记:项目问题的阶段性总结,下一步…………
- GIS+=地理信息+云计算技术——[网络公开课]云GIS解决方案及应用案例