年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

192 lines
7.2 KiB

using KGIS.Framework.Common.Interface;
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.BGResultManager.Interface;
using kingo.Plugin.BGResultManager.Utility;
using Kingo.Plugin.BGResultManager.Model;
using Kingo.PluginServiceInterface;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using UIShell.OSGi;
namespace kingo.Plugin.BGResultManager.Helper
{
public class BGExportHelper : IStatisticExport
{
public string OutPath { get; set; }
public string NCDataDir { get; set; }
public Kingo.Plugin.BGResultManager.Utility.ReportFileTypeEnum AreaUnit { get; set; }
/// <summary>
/// 获取变更报表列表
/// </summary>
/// <returns></returns>
public List<ReportEntityClass> GetReportEntityClassList()
{
List<ReportEntityClass> result = new List<ReportEntityClass>();
return result;
}
/// <summary>
/// 获取变更文字输出报表列表
/// </summary>
/// <returns></returns>
public List<ReportEntityClass> GetReportlanguageOutEntityClassList()
{
List<ReportEntityClass> result = new List<ReportEntityClass>();
return result;
}
public List<XZQTreeNode> TreeList
{
get
{
List<DataDicTionary> dicList = Platform.Instance.DicHelper.GetDic(DicTypeEnum.QSDM, true);
if (dicList == null)
return null;
return GetTree(dicList);
}
}
private List<XZQTreeNode> GetTree(List<DataDicTionary> dicList)
{
try
{
if (dicList == null)
return null;
List<XZQTreeNode> result = new List<XZQTreeNode>();
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(Kingo.Plugin.BGResultManager.Utility.BGReportTypeEnum re)
{
var relist = GetReportEntityClassList();
return relist.FirstOrDefault(x => x.BGReportType == re);
}
public ReportEntityClass GetWordReportEntityClass(Kingo.Plugin.BGResultManager.Utility.BGReportTypeEnum re)
{
var relist = GetReportlanguageOutEntityClassList();
return relist.FirstOrDefault(x => x.BGReportType == re);
}
IReportService _ReportService = null;
public void Export(Kingo.Plugin.BGResultManager.Utility.ReportTypeEnum re)
{
//IRDBHelper dbHelper = null;
try
{
if (string.IsNullOrWhiteSpace((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE))
{
MessageHelper.Show("县行政区划代码不能为空,请在工程属性界面中填写6位县区划代码!");
return;
}
if (System.IO.File.Exists(OutPath))
{
System.IO.File.Delete(OutPath);
}
string dbPath = System.IO.Path.GetDirectoryName((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetProjFilePath()) + @"\BGTJ.sqlite";
//创建数据库连接
//dbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
////第一步:首先判断是否已经缓存过表
//string sql = " select * from BGYLB ";
//DataTable dtBGYLB = null;
//try
//{
// dtBGYLB = dbHelper.ExecuteDatatable("BGYLB", sql, true);
//}
//catch
//{
//}
//if (dtBGYLB == null || dtBGYLB.Rows.Count == 0)
//{
// LogAPI.Debug("BGYLB 数据为空");
//}
string saveCurrentPath = string.Format("{0}.xlsx", OutPath);
if (_ReportService == null)
_ReportService = BundleRuntime.Instance.GetFirstOrDefaultService<IReportService>();
if (_ReportService != null)
{
_ReportService.ExportBGReportNEW(saveCurrentPath, null, re.ToString(), NCDataDir);
}
else
{
LogAPI.Debug("未能获取到报表输出服务,无法进行报表输出!");
}
}
catch (Exception ex)
{
ProgressHelper.CloseProcessBar();
MessageHelper.ShowError("导出失败!");
LogAPI.Debug("导出失败:" + ex);
}
finally
{
//if (dbHelper != null)
// dbHelper.DisConnect();
}
}
public void ExportReport(Kingo.Plugin.BGResultManager.Utility.ReportTypeEnum pReportType)
{
}
public void ExportWordReport(Kingo.Plugin.BGResultManager.Utility.ReportTypeEnum pReportType)
{
//if (string.IsNullOrWhiteSpace((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE))
//{
// MessageHelper.Show("县行政区划代码不能为空,请在工程属性界面中填写6位县区划代码!");
// return;
//}
//if (System.IO.File.Exists(OutPath))
//{
// System.IO.File.Delete(OutPath);
//}
//ExportHelper eh = new ExportHelper();
//List<ReportEntityClass> exportTypes = eh.GetReportEntityBGWordClassList();
//string name = System.IO.Path.GetFileName(OutPath);
//name = name.Substring(name.IndexOf(")") + 1);
//System.IO.File.Copy(SysAppPath.GetCurrentAppPath() + "TempalateReports\\统一时点更新文档\\" + exportTypes.Where(x => x.Name == name).ToList()[0].TempalateFileName, OutPath + ".docx");
}
}
}