初学GIS项目研发阶段性总结 仿《黄埔区慢病地理信息系統》

开发工具与关键技术: 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);
        }
       // 代碼有參考老師的,結合自己理解
任务分配图

在这里插入图片描述
项目总结:
這個項目是三個合作做的,途中出現了些問題,所以我沒有參與到什麼前台的,只做了後台的一些功能。

猜你喜欢

转载自blog.csdn.net/weixin_44498138/article/details/86549571