using KGIS.Framework.DBOperator; using KGIS.Framework.Maps; using KGIS.Framework.Platform; using KGIS.Framework.Platform.Helper; using KGIS.Framework.Utils; using KGIS.Framework.Utils.Helper; using Kingo.Plugin.YJJK.Interface; using Kingo.PluginServiceInterface; using System; using System.Collections.Generic; using System.Data; using System.Linq; namespace Kingo.Plugin.YJJK.ModelEntity { public class ExportHelper : IStatisticExport { public List GetReportEntityClassList() { List result = new List(); result = new List(); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.TDLYXZYJFLMJHZB, Name = "土地利用现状一级分类面积汇总表", TempalateFileName = "土地利用现状一级分类面积汇总表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.LDTDLYXZYJFLMJHZB, Name = "土地利用现状一级分类面积汇总表", TempalateFileName = "土地利用现状一级分类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.HDTDLYXZYJFLMJHZB, Name = "海岛土地利用现状一级分类面积汇总表", TempalateFileName = "海岛土地利用现状一级分类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.FRDTDLYXZYJFLMJHZB, Name = "飞入地土地利用现状一级分类面积汇总表", TempalateFileName = "飞入地土地利用现状一级分类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.TDLYXZEJFLMJHZB, Name = "土地利用现状分类面积汇总表", TempalateFileName = "土地利用现状分类面积汇总表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.LDTDLYXZEJFLMJHZB, Name = "土地利用现状分类面积汇总表", TempalateFileName = "土地利用现状分类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.HDTDLYXZEJFLMJHZB, Name = "海岛土地利用现状分类面积汇总表", TempalateFileName = "海岛土地利用现状分类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.FRDTDLYXZEJFLMJHZB, Name = "飞入地土地利用现状分类面积汇总表", TempalateFileName = "飞入地土地利用现状分类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.TDLYXZYJFLMJAQSXZHZB, Name = "土地利用现状一级分类面积按权属性质汇总表", TempalateFileName = "土地利用现状一级分类面积按权属性质汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.FRDTDLYXZYJFLMJAQSXZHZB, Name = "飞入地土地利用现状一级分类面积按权属性质汇总表", TempalateFileName = "飞入地土地利用现状一级分类面积按权属性质汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.CZCJGKYDMJHZB, Name = "城镇村及工矿用地面积汇总表", TempalateFileName = "城镇村及工矿用地面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.FRDCZCJGKYDMJHZB, Name = "飞入地城镇村及工矿用地面积汇总表", TempalateFileName = "飞入地城镇村及工矿用地面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GDPDFJMJHZB, Name = "耕地坡度分级面积汇总表", TempalateFileName = "耕地坡度分级面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GDZZLXMJTJB, Name = "耕地种植类型面积统计表", TempalateFileName = "耕地种植类型面积统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.LXFWNYDHZTJB, Name = "林区范围内种植园用地汇总统计表", TempalateFileName = "林区范围内种植园用地汇总统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GCCDXSCDHZQKTJB, Name = "灌丛草地汇总情况统计表", TempalateFileName = "灌丛草地汇总情况统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GYYDALXHZTJB, Name = "工业用地按类型汇总统计表", TempalateFileName = "工业用地按类型汇总统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.KTZDLMJHZB, Name = "可调整地类面积汇总表", TempalateFileName = "可调整地类面积汇总表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.BFXHDLMJHZB, Name = "部分细化地类面积汇总表", TempalateFileName = "部分细化地类面积汇总表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.SDDCMJTJB, Name = "湿地调查面积统计表", TempalateFileName = "湿地调查面积统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GDXHDCQKTJB, Name = "耕地细化调查情况统计表", TempalateFileName = "耕地细化调查情况统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.PZWJSDJSYDYTQKTJB, Name = "批准未建设的建设用地用途情况统计表", TempalateFileName = "批准未建设的建设用地用途情况统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.PZWJSDJSYDXZQKTJB, Name = "批准未建设的建设用地现状情况统计表", TempalateFileName = "批准未建设的建设用地现状情况统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.DSCGTDCYGQKTJB, Name = "第三次全国国土调查有关情况统计表(生空模板)", TempalateFileName = "第三次全国国土调查有关情况统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.QSDWDMB, Name = "权属单位代码表", TempalateFileName = "权属单位代码表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.TDDCJLB, Name = "土地调查记录表(生空模板)", TempalateFileName = "土地调查记录表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.YFTKXSCSB, Name = "样方田坎系数测算表(生空模板)", TempalateFileName = "样方田坎系数测算表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.KCXS, Name = "田坎系数(生空模板)", TempalateFileName = "田坎系数" }); //白明雅 2018-12-03 // 王靖 2019-01-24 //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.YFTKXSCS, Name = "样方田坎系数测算表", TempalateFileName = "样方田坎系数测算表" }); //result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.TKXS, Name = "田坎系数", TempalateFileName = "田坎系数" }); //----------------------------------- //霍岩 2019-02-22 添加永久基本农田现状情况统计表 result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.YJJBNTXZQKTJB, Name = "永久基本农田现状情况统计表", TempalateFileName = "永久基本农田现状情况统计表" }); //霍岩 2019-04-02 添加无居民海岛统计表 result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.WJMHDTJB, Name = "无居民海岛现状调查分类面积汇总表", TempalateFileName = "无居民海岛现状调查分类面积汇总表" }); //霍岩 2019-04-03 添加即可恢复与工程恢复种植属性汇总统计表 result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.JKHFGCHFZZTJB, Name = "即可恢复与工程恢复种植属性汇总统计表", TempalateFileName = "即可恢复与工程恢复种植属性汇总统计表" }); //霍岩 2019-04-03 添加废弃细化标注汇总统计表 result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.FQXHBZTJB, Name = "废弃与垃圾填埋细化标注汇总统计表", TempalateFileName = "废弃与垃圾填埋细化标注汇总统计表" }); return result; } /// /// 文字输出报表列 /// /// /// 白明雅 2018-12-03 public List GetReportlanguageOutEntityClassList() { List result = new List(); result = new List(); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GTDCGZBG, Name = "第三次国土调查工作报告", TempalateFileName = "第三次国土调查工作报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GTDCJSBG, Name = "第三次国土调查技术报告", TempalateFileName = "第三次国土调查技术报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GTDCSJKJSBG, Name = "第三次国土调查数据库建设报告", TempalateFileName = "第三次国土调查数据库建设报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.GTDCCGFXBG, Name = "第三次国土调查成果分析报告", TempalateFileName = "第三次国土调查成果分析报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.CZCZTDLYXZFXBG, Name = "城镇村庄土地利用状况分析报告", TempalateFileName = "城镇村庄土地利用状况分析报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.TDDCSJKZLJCBG, Name = "第三次国土调查数据库质量检查报告", TempalateFileName = "第三次国土调查数据库质量检查报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.ZXDCCGBG, Name = "专项调查成果报告", TempalateFileName = "专项调查成果报告" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.HDDCCGBG, Name = "海岛调查成果报告", TempalateFileName = "海岛调查成果报告" }); return result; } /// /// 增量管理导出列表 王欢 2018-12-03 /// /// public List GetReportEntityZLGLClassList() { List result = new List(); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.土地变更一览表, Name = "土地变更一览表", TempalateFileName = "土地变更一览表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.土地利用现状变更表, Name = "土地利用现状变更表", TempalateFileName = "土地利用现状变更表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.土地利用现状一级分类面积按权属性质变化统计表, Name = "土地利用现状一级分类面积按权属性质变化统计表", TempalateFileName = "土地利用现状一级分类面积按权属性质变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.土地利用现状二级分类面积按权属性质变化统计表, Name = "土地利用现状二级分类面积按权属性质变化统计表", TempalateFileName = "土地利用现状二级分类面积按权属性质变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.城镇村及工矿用地面积变化统计表, Name = "城镇村及工矿用地面积变化统计表", TempalateFileName = "城镇村及工矿用地面积变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.城市内部土地利用变化统计表, Name = "城市内部土地利用变化统计表", TempalateFileName = "城市内部土地利用变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.建制镇内部土地利用变化统计表, Name = "建制镇内部土地利用现状表", TempalateFileName = "建制镇内部土地利用现状表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.村庄内部土地利用变化统计表, Name = "村庄内部土地利用变化统计表", TempalateFileName = "村庄内部土地利用变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.工矿用地内部土地利用变化统计表, Name = "工矿用地内部土地利用变化统计表", TempalateFileName = "工矿用地内部土地利用变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.特殊用地内部土地利用变化统计表, Name = "特殊用地内部土地利用变化统计表", TempalateFileName = "特殊用地内部土地利用变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.耕地坡度分级面积变化统计表, Name = "耕地坡度分级面积变化统计表", TempalateFileName = "耕地坡度分级面积变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.耕地种植类型面积变化统计表, Name = "耕地种植类型面积变化统计表", TempalateFileName = "耕地种植类型面积变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.林区范围内园地变化统计表, Name = "林区范围内园地变化统计表", TempalateFileName = "林区范围内园地变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.灌丛草地汇总情况变化统计表, Name = "灌丛草地汇总情况变化统计表", TempalateFileName = "灌丛草地汇总情况变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.工业用地按类型汇总变化统计表, Name = "工业用地按类型汇总变化统计表", TempalateFileName = "工业用地按类型汇总变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.可调整地类面积变化统计表, Name = "可调整地类面积变化统计表", TempalateFileName = "可调整地类面积变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.部分细化地类面积变化统计表, Name = "部分细化地类面积变化统计表", TempalateFileName = "部分细化地类面积变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.废弃与垃圾填埋细化标注变化统计表, Name = "废弃与垃圾填埋细化标注变化统计表", TempalateFileName = "废弃与垃圾填埋细化标注变化统计表" }); result.Add(new ReportEntityClass() { ReportType = ReportTypeEnum.三大类土地利用现状变更表, Name = "三大类土地利用现状变更表", TempalateFileName = "三大类土地利用现状变更表" }); return result; } public List TreeList { get { List dicList = Platform.Instance.DicHelper.GetDic(DicTypeEnum.QSDM, true); if (dicList == null) return null; return GetTree(dicList); } } #region 构造复选TreeView 王欢 2018-09-29 public List CheckBoxTreeList { get { //List dicList = DicAPI.GetDic(DicTypeEnum.QSDM, true); //if (dicList == null) // return null; //return GetTreeParent(dicList); List XZQTreeNodeList = new List(); List dicList = null;// Env.Instance.Platfrom.BasicData.GetXZQDic(1).ToList(); List dicList2 = null;//Env.Instance.Platfrom.BasicData.GetXZQDicQC(2, true).ToList(); foreach (var item in dicList) { XZQTreeNode tvi = new XZQTreeNode(); tvi.XZQDM = item.Code; tvi.XZQMC = item.Name; tvi.Tag = item; tvi.IsChecked = true; tvi.GroupName = "XZQ"; foreach (var item2 in dicList2.Where(x => x.Code.Substring(0, 6) == item.Code)) { XZQTreeNode tvi2 = new XZQTreeNode(); tvi2.XZQDM = item2.Code; tvi2.XZQMC = item2.Name; tvi2.Tag = item2; tvi2.IsChecked = true; tvi2.GroupName = "XZQ"; //Bug-16276 霍岩 2019-07-01 子节点的父级属性赋值 tvi2.Parent = tvi; tvi.Nodes.Add(tvi2); } XZQTreeNodeList.Add(tvi); } return XZQTreeNodeList; } } private List GetTreeParent(List dicList) { try { var list = new List(); foreach (DataDicTionary item in dicList) { if (item.CODE.Length < 6 || item.CODE.Length > 12) { if (item.SubDic != null && item.SubDic.Count > 0) { list.AddRange(GetTreeParent(item.SubDic)); } continue; } XZQTreeNode tvi = new XZQTreeNode(); tvi.XZQDM = item.CODE; tvi.XZQMC = item.NAME; tvi.Tag = item; tvi.GroupName = "XZQ"; list.Add(tvi); RecursiveAddChildren(tvi, item.SubDic); tvi.IsExpanded = true; } list = list.OrderBy(x => x.XH).ToList(); return list; } catch (Exception ex) { LogAPI.Debug(ex); } return null; } private XZQTreeNode RecursiveAddChildren(XZQTreeNode parent, List dicList) { try { //王欢 2018-12-11 系统日志报错问题 if (dicList == null) { return null; } //parent.Nodes = new List(); foreach (DataDicTionary item in dicList) { if (item == null) { continue; } if (item.CODE.Length < 6 || item.CODE.Length > 12) { continue; } XZQTreeNode tvi = new XZQTreeNode(); tvi.XZQDM = item.CODE; tvi.XZQMC = item.NAME; tvi.Tag = item; tvi.GroupName = "XZQ"; tvi.Parent = parent; parent.Nodes.Add(tvi); RecursiveAddChildren(tvi, item.SubDic); tvi.IsExpanded = true; } return parent; } catch (Exception ex) { LogAPI.Debug(ex); } return null; } #endregion private List GetTree(List dicList) { try { if (dicList == null) return null; List result = new List(); foreach (DataDicTionary dic in dicList) { if (dic.CODE.Length < 6 || dic.CODE.Length > 12) { if (dic.SubDic != null && dic.SubDic.Count > 0) { result.AddRange(GetTree(dic.SubDic)); } continue; } var n1 = new XZQTreeNode(); n1.XZQDM = dic.CODE; n1.XZQMC = dic.NAME; n1.Tag = dic; n1.GroupName = "XZQ"; result.Add(n1); if (dic.SubDic != null && dic.SubDic.Count > 0) { n1.Nodes = GetTree(dic.SubDic); } if (n1.XZQDM.Length == 6) { n1.IsExpanded = true; } } result = result.OrderBy(x => x.XH).ToList(); return result; } catch (Exception ex) { LogAPI.Debug(ex); } return null; } public ReportEntityClass GetReportEntityClass(ReportTypeEnum re) { var relist = GetReportEntityClassList(); return relist.FirstOrDefault(x => x.ReportType == re); } public ReportEntityClass GetWordReportEntityClass(ReportTypeEnum re) { var relist = GetReportlanguageOutEntityClassList(); return relist.FirstOrDefault(x => x.ReportType == re); } public void Export(ReportTypeEnum re) { } #region IStatisticExport接口实现 public string OutPath { get; set; } public ReportFileTypeEnum AreaUnit { get; set; } ReportFileTypeEnum IStatisticExport.AreaUnit { get; set; } public void ExportReport(ReportTypeEnum pReportType) { IRDBHelper dbHelper = null; try { //RegionAuthorize regionAuthorize = new RegionAuthorize(); int validateType = 0; //if (!regionAuthorize.ValidateAuthorizeByXZQDM(ref validateType)) //{ // if (validateType.Equals(1)) // { // MessageHelper.ShowError("地类图斑数据区域授权未通过"); // } // else if (validateType.Equals(2)) // { // MessageHelper.ShowError("行政区数据区域授权未通过"); // } // else // { // MessageHelper.ShowError("区域授权验证失败"); // } // return; //} string connStr = SysConfigsOprator.GetDBConnectionByName("MDBOledbConnection"); string SourcePath = "";// string.Format(connStr, Env.Instance.Project.GetProjMDBPath()); //创建数据库连接 dbHelper = RDBFactory.CreateDbHelper(SourcePath, DatabaseType.MSAccess); //第一步:首先判断是否已经缓存过表 string cjhzsqlsql = "select sum(TBZMJ) from MJHZJCTJB "; DataTable cjmjhzdt = null; try { cjmjhzdt = dbHelper.ExecuteDatatable("cjmjhz", cjhzsqlsql, true); } catch { } //if (cjmjhzdt == null || cjmjhzdt.Rows.Count == 0 || cjmjhzdt.Rows[0][0].ToDecimal(2) != (Env.Instance.Project.LDKZMJ2 + Env.Instance.Project.HDKZMJ2).ToDecimal(2)) //{ // //MessageBox.Show("请先进行数据汇总!"); // LogAPI.Debug("请先进行数据汇总!"); // return; //} StatisticalReportClass reportClass = new StatisticalReportClass(); reportClass.ReportFileType = AreaUnit; ReportEntityClass reportEntity = GetReportEntityClass(pReportType); string saveCurrentPath = OutPath + ".xlsx"; if (TreeList != null) { reportEntity.XZQTreeNode = TreeList[0]; } bool isRst = reportClass.Export(saveCurrentPath, dbHelper, reportEntity); //ProgressHelper.CloseProcessBar(); } catch (Exception ex) { //ProgressHelper.CloseProcessBar(); //MessageBox.Show("导出失败!"); LogAPI.Debug("导出失败:" + ex); } finally { //ProgressHelper.CloseProcessBar(); if (dbHelper != null) dbHelper.DisConnect(); } } public void ExportWordReport(ReportTypeEnum pReportType) { IRDBHelper dbHelper = null; try { StatisticalReportClass reportClass = new StatisticalReportClass(); reportClass.ReportFileType = AreaUnit; ReportEntityClass reportEntity = GetWordReportEntityClass(pReportType); string saveCurrentPath = OutPath + ".docx"; if (TreeList != null) { reportEntity.XZQTreeNode = TreeList[0]; } bool isRst = reportClass.Export(saveCurrentPath, dbHelper, reportEntity, new System.Collections.Hashtable()); //ProgressHelper.CloseProcessBar(); } catch (Exception ex) { //ProgressHelper.CloseProcessBar(); //MessageBox.Show("导出失败!"); LogAPI.Debug("导出失败:" + ex); } finally { //ProgressHelper.CloseProcessBar(); if (dbHelper != null) dbHelper.DisConnect(); } } public void ExportBGNMKReport(ReportTypeEnum pReportType, string sNMKMDBPath) { IRDBHelper dbHelper = null; try { string connStr = SysConfigsOprator.GetDBConnectionByName("MDBOledbConnection"); string sBGNMK_HZPCResults_MDBPath = sNMKMDBPath; if (System.IO.File.Exists(sBGNMK_HZPCResults_MDBPath) == false) { MessageHelper.ShowError("未能找到变更年末库汇总平差结果,故汇总表格导出失败"); return; } string SourcePath = string.Format(connStr, sBGNMK_HZPCResults_MDBPath); //创建数据库连接 dbHelper = RDBFactory.CreateDbHelper(SourcePath, DatabaseType.SQLite); //第一步:首先判断是否已经缓存过表 string cjhzsqlsql = "select sum(TBZMJ) from MJHZJCTJB "; DataTable cjmjhzdt = null; try { cjmjhzdt = dbHelper.ExecuteDatatable("cjmjhz", cjhzsqlsql, true); } catch { } //if (cjmjhzdt == null || cjmjhzdt.Rows.Count == 0 || cjmjhzdt.Rows[0][0].ToDecimal(2) != (Env.Instance.Project.LDKZMJ2 + Env.Instance.Project.HDKZMJ2).ToDecimal(2)) //{ // //MessageBox.Show("请先进行数据汇总!"); // LogAPI.Debug("请先进行数据汇总!"); // return; //} StatisticalReportClass reportClass = new StatisticalReportClass(); reportClass.ReportFileType = AreaUnit; ReportEntityClass reportEntity = GetReportEntityClass(pReportType); string saveCurrentPath = OutPath + ".xlsx"; if (TreeList != null) { reportEntity.XZQTreeNode = TreeList[0]; } bool isRst = reportClass.Export(saveCurrentPath, dbHelper, reportEntity, sBGNMK_HZPCResults_MDBPath); //ProgressHelper.CloseProcessBar(); } catch (Exception ex) { //ProgressHelper.CloseProcessBar(); //MessageBox.Show("导出失败!"); LogAPI.Debug("导出失败:" + ex); } finally { //ProgressHelper.CloseProcessBar(); if (dbHelper != null) dbHelper.DisConnect(); } } #endregion } }