using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DocumentFormat.OpenXml.Office2010.Excel;
using DocumentFormat.OpenXml.Spreadsheet;
using Learun.Application.TwoDevelopment.ZZDT_EC;
using Learun.Util;
using Learun.Util.SqlSugar;
using NPOI.XWPF.UserModel;
using SqlSugar.DistributedSystem.Snowflake;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Description;
using static Learun.Application.TwoDevelopment.ZZDT_EC.ec_enginedataBLL;
using ec_projectEntity = Learun.Application.TwoDevelopment.ZZDT_EC.ec_projectEntity;
namespace Learun.Application.Web.AppApi
{
///
/// 工程数据
///
[RoutePrefix("api/EnginedataApi")]
[HandlerApiLogin(FilterMode.Enforce)]
[TokenAuthorize]
public class EnginedataApiController : WebApiControllerBase
{
///
/// 更新工程数据属性默认值
///
///
[HttpPost]
public IHttpActionResult UpdateEnginedataPropertyByDefaultValue()
{
try
{
new ec_enginedataBLL().UpdateEngineDataByDefaultValue();
return Success("更新成功");
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
///
/// 获取位号的pixel对象(仅有位号).
/// 插件端的设计浏览处用到
///
/// 项目ID
/// 对象类型ID
///
[HttpGet]
[ResponseType(typeof(TreeModelLite))]
public IHttpActionResult GetTagPixelsById(string projectId, string EngineDataID)
{
try
{
List res = new List();
var ec_enginedata_pixelBLL = new ec_enginedata_pixelBLL();
var data = ec_enginedata_pixelBLL.GetList("{\"ProjectId\":\"" + projectId + "\",\"EngineDataID\":\"" + EngineDataID + "\"}",projectId);
return Success(data);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
///
/// 查询一个系统内的所有设备的所有电缆连接关系,用于如系统图的绘制
///
///
/// 所属系统的名字
/// 开关类型
/// 需要绘制的图纸风格,0(电力一次),1(驾控台),2(集控台)
///
[HttpPost]
public async Task GetTagCableConnsBySystemAsync(string projectId, string systemName, string breakerType, string StyleType, [FromBody] string DwgIDs)
{
var res = new List();
if (DwgIDs == null)
{
return Success(null) ;
}
var relBll = new ec_enginedata_relBLL();
switch (StyleType)
{
case "0":
break;
case "1":
breakerType = "";
break;
case "2":
breakerType = "";
break;
default:
break;
}
res = await relBll.GetTagCableConnsBySystem(projectId, systemName, breakerType, DwgIDs);
return Success(res);
}
///
/// 查询一个“设备单元”内的所有设备的所有电缆连接关系,用于如系统图的绘制
///
///
/// 设备单元 wcc ecc
/// 开关类型
/// 需要绘制的图纸风格,0(电力一次),1(驾控台),2(集控台)
///
[HttpPost]
public async Task GetTagCableConnsByUnitAsync(string projectId, string unitName, string breakerType,string StyleType, [FromBody] string DwgIDs)
{
var res = new List();
var relBll = new ec_enginedata_relBLL();
unitName = WebHelper.UrlDecode(unitName);
Stopwatch stopwatch = Stopwatch.StartNew();
stopwatch.Start();
switch (StyleType)
{
case "0":
break;
case "1":
breakerType = "";
break;
case "2":
breakerType = "";
break;
default:
break;
}
res = await relBll.GetTagCableConnsByUnit(projectId, unitName, breakerType,DwgIDs);
stopwatch.Stop();
var time = stopwatch.ElapsedMilliseconds.ToString();
return Success(res);
}
///
/// 查询多个设备上的所有电缆连接关系,用于如系统图的绘制
///
///
/// 开关类型
/// 需要绘制的图纸风格,0(电力一次),1(驾控台),2(集控台)
///
[HttpPost]
public async Task GetTagCableConnsByIdsAsync(string projectId, string breakerType, string StyleType, [FromBody] List Ids)
{
// var asyncContent = Request.Content.ReadAsStringAsync().Result;
// List body = asyncContent.ToObject>();
string Enginedataids = Ids[0];
var DwgIds = Ids[1];
var res = new List();
var relBll = new ec_enginedata_relBLL();
var propTbName = ProjectSugar.TableName(projectId);
var TbName = ProjectSugar.TableName(projectId);
var allTag = SqlSugarHelper.Db.Queryable().AS(TbName).ToList();
var RefCBs = SqlSugarHelper.Db.Queryable().
Where(x => x.breakerType == "MCCB").
OrderBy(x => x.Capacity_Max).ToList();
var cbTbName = ProjectSugar.TableName(projectId);
var allCBs =SqlSugarHelper.Db.Queryable().AS(cbTbName).ToList();
var relTbName = ProjectSugar.TableName(projectId);
var allRels = SqlSugarHelper.Db.Queryable().AS(relTbName).ToList();
var pixelTbName = ProjectSugar.TableName(projectId);
var allPixels = SqlSugarHelper.Db.Queryable().AS(pixelTbName).
Where(x => x.DeleteFlg != 1).ToList();
var relTypeTbName = ProjectSugar.TableName(projectId);
var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString());
var propBll = new ec_enginedata_propertyBLL();
var allTagProps = SqlSugarHelper.Db.Queryable().AS(propTbName).ToList();
var tagIds = new List();
tagIds.AddRange(Enginedataids.Split(','));
#region 图纸过滤
var tagsOnDwgRange = new List();
if (!string.IsNullOrEmpty(DwgIds) && DwgIds.Split(',').Count() > 0)
{
tagsOnDwgRange = allPixels.Where(x => DwgIds.Split(',').Contains(x.DrawingFileID)).Select(x => x.EngineDataID).Distinct().ToList();
tagIds = tagIds.Intersect(tagsOnDwgRange).ToList();
}
#endregion
switch (StyleType)
{
case "0":
break;
case "1":
breakerType = "";
break;
case "2":
breakerType = "";
break;
default:
break;
}
var dataitembll = new ec_dataitemBLL();
var systems = dataitembll.GetDetailList(GlobalObject.enumlist_System, "", projectId);
foreach (var id in tagIds)
{
var CBs = allCBs.Where(x => x.PDBId == id).ToList();
var res2 = await relBll.GetTagCableConns(projectId, id, breakerType, RefCBs, allTag, CBs, allRels, allPixels, relType, allTagProps, tagsOnDwgRange, systems);
res.Add(res2);
}
return Success(res.OrderBy(X => X.SystemName).ToList());
}
///
/// 查询多个设备上的所有电缆连接关系,用于如系统图的绘制
///
///
///
///
///
public async Task GetTagCableConnsByPixelsAsync(string projectId, string Pixels, string dwgId)
{
var res = new List();
var relBll = new ec_enginedata_relBLL();
var pixelTbName = ProjectSugar.TableName(projectId);
var list_pixel = Pixels.Split(',').ToList();
var Ids = SqlSugarHelper.Db.Queryable().AS(pixelTbName).
Where(x => x.DrawingFileID == dwgId && list_pixel.Contains(x.PixelCode)).
Select(X => X.EngineDataID).Distinct().ToList();
var propTBName = ProjectSugar.TableName(projectId);
var TbName = ProjectSugar.TableName(projectId);
var allTag = SqlSugarHelper.Db.Queryable().AS(TbName).ToList();
var RefCBs = SqlSugarHelper.Db.Queryable().
Where(x => x.breakerType == "MCCB").
OrderBy(x => x.Capacity_Max).ToList();
var cbTbName = ProjectSugar.TableName(projectId);
var allCBs = SqlSugarHelper.Db.Queryable().AS(cbTbName).ToList();
var relTbName = ProjectSugar.TableName(projectId);
var allRels = SqlSugarHelper.Db.Queryable().AS(relTbName).ToList();
var allPixels = SqlSugarHelper.Db.Queryable().AS(pixelTbName).
Where(x => x.DeleteFlg != 1).ToList();
var relTypeTbName = ProjectSugar.TableName(projectId);
var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString());
//var propBll = new ec_enginedata_propertyBLL();
var allTagProps = SqlSugarHelper.Db.Queryable().AS(propTBName).ToList();
var dataitembll = new ec_dataitemBLL();
var systems = dataitembll.GetDetailList(GlobalObject.enumlist_System, "", projectId);
foreach (var id in Ids)
{
var CBs = allCBs.Where(x => x.PDBId == id).ToList();
var res2 = await relBll.GetTagCableConns(projectId, id, "", RefCBs, allTag, CBs, allRels, allPixels, relType, allTagProps,null, systems);
res.Add(res2);
}
return Success(res.OrderBy(X => X.SystemName).ToList());
}
///
/// 查询一个设备上的所有电缆连接关系,用于如系统图的绘制
///
///
///
///
public async Task GetTagCableConnsByIdAsync(string projectId, string Enginedataid, string breakerType)
{
var res = new ec_enginedataEquipBrief();
var relBll = new ec_enginedata_relBLL();
var propTbName = ProjectSugar.TableName(projectId);
var TbName = ProjectSugar.TableName(projectId);
var allTag =SqlSugarHelper.Db.Queryable().AS(TbName).ToList();
var RefCBs = SqlSugarHelper.Db.Queryable().
Where(x => x.breakerType == "MCCB").
OrderBy(x => x.Capacity_Max).ToList();
var cbTbName = ProjectSugar.TableName(projectId);
var allCBs = SqlSugarHelper.Db.Queryable().AS(cbTbName).ToList();
var relTbName = ProjectSugar.TableName(projectId);
var allRels = SqlSugarHelper.Db.Queryable().AS(relTbName).ToList();
var pixelTbName = ProjectSugar.TableName(projectId);
var allPixels = SqlSugarHelper.Db.Queryable().AS(pixelTbName).
Where(x => x.DeleteFlg != 1).ToList();
var relTypeTbName = ProjectSugar.TableName(projectId);
var relType = SqlSugarHelper.Db.Queryable().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType.设备_电缆).ToString());
var propBll = new ec_enginedata_propertyBLL();
var CBs = allCBs.Where(x => x.PDBId == Enginedataid).ToList();
var allTagProps = SqlSugarHelper.Db.Queryable().AS(propTbName).ToList();
var dataitembll = new ec_dataitemBLL();
var systems = dataitembll.GetDetailList(GlobalObject.enumlist_System, "", projectId);
res = await relBll.GetTagCableConns(projectId, Enginedataid, breakerType, RefCBs, allTag, CBs, allRels, allPixels, relType, allTagProps,null, systems);
return Success(res);
}
///
/// 查询所有
///
///
///
public IHttpActionResult GetAllTagsAsync(string projectId)
{
var bll = new ec_enginedataBLL();
var res = bll.GetList("{\"ProjectId\":\"" + projectId + "\"}");
return Success(res);
}
///
/// 查询多个设备上的所有端子连接关系,用于如端子图的绘制
///
///
/// 逗号分开
/// 是否为监测系统
///
public async Task GetTagTermConnsByIdsAsync(string projectId, string Enginedataids, string dwgId, bool IsAlarmSystem = true)
{
var res = new List