您的位置:首页 > 其它

初学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);
}
// 代碼有參考老師的,結合自己理解
任务分配图


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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: