009_DI-Elec/Learun.Application.Web/AppApi/EnginedataApiController.cs

856 lines
35 KiB
C#
Raw Normal View History

2025-08-13 11:14:39 +08:00
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
{
/// <summary>
/// 工程数据
/// </summary>
[RoutePrefix("api/EnginedataApi")]
[HandlerApiLogin(FilterMode.Enforce)]
[TokenAuthorize]
public class EnginedataApiController : WebApiControllerBase
{
/// <summary>
/// 更新工程数据属性默认值
/// </summary>
/// <returns></returns>
[HttpPost]
public IHttpActionResult UpdateEnginedataPropertyByDefaultValue()
{
try
{
new ec_enginedataBLL().UpdateEngineDataByDefaultValue();
return Success("更新成功");
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 获取位号的pixel对象仅有位号.
/// 插件端的设计浏览处用到
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="EngineDataID">对象类型ID</param>
/// <returns></returns>
[HttpGet]
[ResponseType(typeof(TreeModelLite))]
public IHttpActionResult GetTagPixelsById(string projectId, string EngineDataID)
{
try
{
List<TreeModelLite> res = new List<TreeModelLite>();
var ec_enginedata_pixelBLL = new ec_enginedata_pixelBLL();
var data = ec_enginedata_pixelBLL.GetList("{\"ProjectId\":\"" + projectId + "\",\"EngineDataID\":\"" + EngineDataID + "\"}",projectId);
2025-08-13 11:14:39 +08:00
return Success(data);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 查询一个系统内的所有设备的所有电缆连接关系,用于如系统图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="systemName">所属系统的名字</param>
/// <param name="breakerType">开关类型</param>
/// <param name="StyleType">需要绘制的图纸风格0电力一次1驾控台2集控台</param>
/// <returns></returns>
[HttpPost]
public async Task<IHttpActionResult> GetTagCableConnsBySystemAsync(string projectId, string systemName, string breakerType, string StyleType, [FromBody] string DwgIDs)
{
var res = new List<ec_enginedataEquipBrief>();
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);
}
/// <summary>
/// 查询一个“设备单元”内的所有设备的所有电缆连接关系,用于如系统图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitName">设备单元 wcc ecc</param>
/// <param name="breakerType">开关类型</param>
/// <param name="StyleType">需要绘制的图纸风格0电力一次1驾控台2集控台</param>
/// <returns></returns>
[HttpPost]
public async Task<IHttpActionResult> GetTagCableConnsByUnitAsync(string projectId, string unitName, string breakerType,string StyleType, [FromBody] string DwgIDs)
{
var res = new List<ec_enginedataEquipBrief>();
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);
}
/// <summary>
/// 查询多个设备上的所有电缆连接关系,用于如系统图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="breakerType">开关类型</param>
/// <param name="StyleType">需要绘制的图纸风格0电力一次1驾控台2集控台</param>
/// <returns></returns>
[HttpPost]
public async Task<IHttpActionResult> GetTagCableConnsByIdsAsync(string projectId, string breakerType, string StyleType, [FromBody] List<string> Ids)
{
// var asyncContent = Request.Content.ReadAsStringAsync().Result;
// List<string> body = asyncContent.ToObject<List<string>>();
string Enginedataids = Ids[0];
var DwgIds = Ids[1];
var res = new List<ec_enginedataEquipBrief>();
var relBll = new ec_enginedata_relBLL();
var propTbName = ProjectSugar.TableName<ec_enginedata_propertyEntity>(projectId);
var TbName = ProjectSugar.TableName<ec_enginedataEntity>(projectId);
var allTag = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(TbName).ToList();
var RefCBs = SqlSugarHelper.Db.Queryable<ec_RefCircuitBreakerEntity>().
Where(x => x.breakerType == "MCCB").
OrderBy(x => x.Capacity_Max).ToList();
var cbTbName = ProjectSugar.TableName<ec_CircuitBreakerEntity>(projectId);
var allCBs =SqlSugarHelper.Db.Queryable<ec_CircuitBreakerEntity>().AS(cbTbName).ToList();
var relTbName = ProjectSugar.TableName<ec_enginedata_relEntity>(projectId);
var allRels = SqlSugarHelper.Db.Queryable<ec_enginedata_relEntity>().AS(relTbName).ToList();
var pixelTbName = ProjectSugar.TableName<ec_enginedata_pixelEntity>(projectId);
var allPixels = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
Where(x => x.DeleteFlg != 1).ToList();
var relTypeTbName = ProjectSugar.TableName<ec_reltypeEntity>(projectId);
var relType = SqlSugarHelper.Db.Queryable<ec_reltypeEntity>().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType._电缆).ToString());
var propBll = new ec_enginedata_propertyBLL();
var allTagProps = SqlSugarHelper.Db.Queryable<ec_enginedata_propertyEntity>().AS(propTbName).ToList();
var tagIds = new List<string>();
tagIds.AddRange(Enginedataids.Split(','));
#region
var tagsOnDwgRange = new List<string>();
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());
}
/// <summary>
/// 查询多个设备上的所有电缆连接关系,用于如系统图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="Pixels"></param>
/// <param name="dwgId"></param>
/// <returns></returns>
public async Task<IHttpActionResult> GetTagCableConnsByPixelsAsync(string projectId, string Pixels, string dwgId)
{
var res = new List<ec_enginedataEquipBrief>();
var relBll = new ec_enginedata_relBLL();
var pixelTbName = ProjectSugar.TableName<ec_enginedata_pixelEntity>(projectId);
var list_pixel = Pixels.Split(',').ToList();
var Ids = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
Where(x => x.DrawingFileID == dwgId && list_pixel.Contains(x.PixelCode)).
Select(X => X.EngineDataID).Distinct().ToList();
var propTBName = ProjectSugar.TableName<ec_enginedata_propertyEntity>(projectId);
var TbName = ProjectSugar.TableName<ec_enginedataEntity>(projectId);
var allTag = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(TbName).ToList();
var RefCBs = SqlSugarHelper.Db.Queryable<ec_RefCircuitBreakerEntity>().
Where(x => x.breakerType == "MCCB").
OrderBy(x => x.Capacity_Max).ToList();
var cbTbName = ProjectSugar.TableName<ec_CircuitBreakerEntity>(projectId);
var allCBs = SqlSugarHelper.Db.Queryable<ec_CircuitBreakerEntity>().AS(cbTbName).ToList();
var relTbName = ProjectSugar.TableName<ec_enginedata_relEntity>(projectId);
var allRels = SqlSugarHelper.Db.Queryable<ec_enginedata_relEntity>().AS(relTbName).ToList();
var allPixels = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
Where(x => x.DeleteFlg != 1).ToList();
var relTypeTbName = ProjectSugar.TableName<ec_reltypeEntity>(projectId);
var relType = SqlSugarHelper.Db.Queryable<ec_reltypeEntity>().AS(relTypeTbName).ToList().FirstOrDefault(x => x.RelType == ((int)enum_RelType._电缆).ToString());
//var propBll = new ec_enginedata_propertyBLL();
var allTagProps = SqlSugarHelper.Db.Queryable<ec_enginedata_propertyEntity>().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());
}
/// <summary>
/// 查询一个设备上的所有电缆连接关系,用于如系统图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="Enginedataid"></param>
/// <returns></returns>
public async Task<IHttpActionResult> GetTagCableConnsByIdAsync(string projectId, string Enginedataid, string breakerType)
{
var res = new ec_enginedataEquipBrief();
var relBll = new ec_enginedata_relBLL();
var propTbName = ProjectSugar.TableName<ec_enginedataEntity>(projectId);
var TbName = ProjectSugar.TableName<ec_enginedataEntity>(projectId);
var allTag =SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(TbName).ToList();
var RefCBs = SqlSugarHelper.Db.Queryable<ec_RefCircuitBreakerEntity>().
Where(x => x.breakerType == "MCCB").
OrderBy(x => x.Capacity_Max).ToList();
var cbTbName = ProjectSugar.TableName<ec_CircuitBreakerEntity>(projectId);
var allCBs = SqlSugarHelper.Db.Queryable<ec_CircuitBreakerEntity>().AS(cbTbName).ToList();
var relTbName = ProjectSugar.TableName<ec_enginedata_relEntity>(projectId);
var allRels = SqlSugarHelper.Db.Queryable<ec_enginedata_relEntity>().AS(relTbName).ToList();
var pixelTbName = ProjectSugar.TableName<ec_enginedata_pixelEntity>(projectId);
var allPixels = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
Where(x => x.DeleteFlg != 1).ToList();
var relTypeTbName = ProjectSugar.TableName<ec_reltypeEntity>(projectId);
var relType = SqlSugarHelper.Db.Queryable<ec_reltypeEntity>().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<ec_enginedata_propertyEntity>().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);
}
/// <summary>
/// 查询所有
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public IHttpActionResult GetAllTagsAsync(string projectId)
{
var bll = new ec_enginedataBLL();
var res = bll.GetList("{\"ProjectId\":\"" + projectId + "\"}");
return Success(res);
}
/// <summary>
/// 查询多个设备上的所有端子连接关系,用于如端子图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="Enginedataids">逗号分开</param>
/// <param name="IsAlarmSystem">是否为监测系统</param>
/// <returns></returns>
public async Task<IHttpActionResult> GetTagTermConnsByIdsAsync(string projectId, string Enginedataids, string dwgId, bool IsAlarmSystem = true)
{
var res = new List<object>();
var relBll = new ec_enginedata_relBLL();
foreach (var id in Enginedataids.Split(','))
{
var res2 = await relBll.GetTagTermConns(projectId, id, dwgId, IsAlarmSystem);
res.Add(res2);
}
return Success(res);
}
/// <summary>
/// 解锁、加锁
/// </summary>
/// <param name="projectId"></param>
/// <param name="Enginedataids">逗号分开</param>
/// <param name="action">加锁1或解锁0</param>
/// <returns></returns>
public async Task<IHttpActionResult> LockTag(string projectId, string Enginedataids, string action)
{
var res = new List<object>();
var Bll = new ec_enginedataBLL();
foreach (var id in Enginedataids.Split(','))
{
await Bll.LockTag(projectId, id, action);
}
return Success("OK");
}
/// <summary>
/// 查询多个设备上的所有端子连接关系,用于如端子图的绘制
/// </summary>
/// <param name="projectId"></param>
/// <param name="Enginedataids">逗号分开</param>
/// <param name="IsAlarmSystem">是否为监测系统</param>
/// <returns></returns>
public async Task<IHttpActionResult> GetTagTermConnsByPixelsAsync(string projectId, string pixels, string dwgId, bool IsAlarmSystem = true)
{
var res = new List<object>();
var relBll = new ec_enginedata_relBLL();
//
var pixelTbName = ProjectSugar.TableName<ec_enginedata_pixelEntity>(projectId);
var list_pixel = pixels.Split(',').ToList();
var Ids = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
Where(x => x.DrawingFileID == dwgId && list_pixel.Contains(x.PixelCode)).
Select(X => X.EngineDataID).Distinct().ToList();
foreach (var id in Ids)
{
var res2 = await relBll.GetTagTermConns(projectId, id, dwgId, IsAlarmSystem);
res.Add(res2);
}
return Success(res);
}
/// <summary>
/// 获取最新流水号
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="TagLeftPart">位号前面的内容</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetLatestSerialNumber(string projectId, string TagLeftPart, int Number = 1)
{
try
{
// && Regex.IsMatch(x.TagNumber.Substring(TagLeftPart.Length), @"^\d+$")
// Select(x => int.Parse(x.TagNumber.ToUpper().Substring(TagLeftPart.Length))).
var res = new List<string>();
TagLeftPart = TagLeftPart.ToUpper() + "-";
var tbName = ProjectSugar.TableName<ec_enginedataEntity>(projectId);
var existTagsNumber = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(tbName).
Where(x => x.TagNumber.ToUpper().StartsWith(TagLeftPart)).
Select(x => x.TagNumber).
ToList();
List<int> seqs = new List<int>();
foreach (var id in existTagsNumber)
{
var RightPart = id.Substring(TagLeftPart.Length);
if (int.TryParse(RightPart, out int seq))
{
seqs.Add(seq);
}
}
int minMissingNumber = 1;
for (int i = 0; i < Number; i++)
{
while (seqs.Contains(minMissingNumber))
{
minMissingNumber++;//已有这个序号
};
res.Add(minMissingNumber.ToString("D5"));
minMissingNumber++;//本来需要循环+1
}
// 将最小缺失数字格式化为5位数字字符串前面补0
return Success(res);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 获取位号的工程属性(根据位号)
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="tagNumber">位号</param>
/// <returns></returns>
[HttpGet]
[ResponseType(typeof(ec_enginedataEntity))]
public IHttpActionResult GetTagsByTag(string projectId, string tagNumber, string caseId = "")
{
try
{
var ec_enginedataIBLL = new ec_enginedataBLL();
var ec_enginedata_propertyIBLL = new ec_enginedata_propertyBLL();
var data = ec_enginedataIBLL.GetList("{\"ProjectId\":\"" + projectId + "\",\"TagNumber\":\"" + tagNumber + "\"}").ToList();
if (data != null && data.Count > 0)
{
//获取工程数据属性
data[0].EngineDataProperty = ec_enginedata_propertyIBLL.GetEnginePropById(projectId, data[0].EngineDataID).ToList();
}
return Success(data);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 获取某个图上的所有pixel对象
/// </summary>
/// <param name="projectId"></param>
/// <param name="drawingFileID"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetTagPixelsByDrawing(string projectId, string drawingFileID)
{
try
{
//var engineData = new ec_enginedataBLL().GetList("{\"ProjectId\":\"" + projectId + "\",\"DrawingFileID\":\"" + drawingFileID + "\",\"PixelCodes\":\"" + pixels + "\"}").ToList();
var res = new ec_enginedata_pixelBLL().GetDrawingEnginePixel("{\"ProjectId\":\"" + projectId + "\",\"DrawingFileID\":\"" + drawingFileID + "\"}").ToList();
return Success(res);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 成品导出xlsx
/// </summary>
/// <param name="projectId">项目编号</param>
/// <param name="drawingId">图纸ID</param>
/// <param name="mode">0=web,1=app</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult CheckIsRequiredPropsByDrawing(string projectId, string drawingId, int mode = 1)
{
try
{
var BLL = new ec_enginedataBLL();
var bytes = BLL.CheckIsRequiredPropsByDrawing(projectId, drawingId);
if (mode == 1)
{
//app
var stream = new MemoryStream(bytes);
FileDownHelper.DownLoad(stream, $"必填属性缺失检查{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx");//自动化平台导出excel
}
else
{
//web
ExcelHelper.DownloadIWorkbook(bytes, $"必填属性缺失检查{DateTime.Now.ToString("yyyyMMddHHmmss")}");
}
return Success("数据已导出");
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 获取某个图上的所有位号(前端再根据情况进行过滤)
/// </summary>
/// <param name="projectId"></param>
/// <param name="drawingFileID"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetTagsByDrawing(string projectId, string drawingFileID)
{
try
{
//var engineData = new ec_enginedataBLL().GetList("{\"ProjectId\":\"" + projectId + "\",\"DrawingFileID\":\"" + drawingFileID + "\",\"PixelCodes\":\"" + pixels + "\"}").ToList();
var res = new ec_enginedataBLL().GetListByDrawing(projectId, drawingFileID);
return Success(res);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 根据图纸ID, CAD图元句柄获取该图元在数据库中对应的位号、对象类型ID、对象类型名称、对象EngineDataID。
/// 系统图识别,和求设备连接关系时会用到。
/// </summary>
/// <param name="projId"></param>
/// <param name="drawingFileID"></param>
/// <param name="pixelIds">多个逗号隔开</param>
/// <returns></returns>
public IHttpActionResult GetTagInfoByPixels(string projId, string drawingFileID, string pixelIds)
{
try
{
var res2 = new List<object>();
var Ids = pixelIds.Split(',');
var pixelTbName = ProjectSugar.TableName<ec_enginedata_pixelEntity>(projId);
var tagTbName = ProjectSugar.TableName<ec_enginedataEntity>(projId);
var typeTbName = ProjectSugar.TableName<ec_objecttypeEntity>(projId);
var propTbName = ProjectSugar.TableName<ec_enginedata_propertyEntity>(projId);
var allPixels = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
Where(x => x.DrawingFileID == drawingFileID && Ids.Contains(x.PixelCode)).ToList();
var TagIds = allPixels.Select(x => x.EngineDataID).Distinct().ToList();
var allProps = SqlSugarHelper.Db.Queryable<ec_enginedata_propertyEntity>().AS(propTbName).
Where(x => TagIds.Contains(x.EngineDataID)).ToList();
if (TagIds != null)
{
foreach (var TagId in TagIds)
{
//对应的句柄有哪些
var tagPixelsOnThisDwg = allPixels.Where(x => x.EngineDataID == TagId).Select(x => x.PixelCode).ToList();
if (tagPixelsOnThisDwg == null)
{
tagPixelsOnThisDwg = new List<string>();
}
var stringPixels = string.Join(",", tagPixelsOnThisDwg);
var desc = allProps.FirstOrDefault(x => x.EngineDataID == TagId && x.PropertyName == "中文名称")?.PropertyValue;
var descEN = allProps.FirstOrDefault(x => x.EngineDataID == TagId && x.PropertyName == "英文名称")?.PropertyValue;
var supplyBy = allProps.FirstOrDefault(x => x.EngineDataID == TagId && x.PropertyName == "电缆供货类型")?.PropertyValue;
var TagObj = SqlSugarHelper.Db.Queryable<ec_enginedataEntity>().AS(tagTbName).
LeftJoin<ec_objecttypeEntity>((a, b) => a.ObjectTypeID == b.ObjectTypeID).AS<ec_objecttypeEntity>(typeTbName).
Select((a, b) => new
{
a.TagNumber,
a.EngineDataID,
a.ObjectTypeID,
b.ObjectTypeName,
stringPixels,
desc,
descEN,
supplyBy
}).
First(a => a.EngineDataID == TagId);
//var allPixels = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS(pixelTbName).
//Where(x => x.EngineDataID == TagId).
//Select(x => new
//{
// x.PixelCode,
// x.DrawingFileID
//}).
//ToList();
if (TagObj != null)
{
res2.Add(TagObj);
}
}
return Success(res2);
}
else
{
return Success(null);
}
}
catch (Exception)
{
return Success(null);
}
}
/// <summary>
/// 获取某个所属系统的所有位号
/// </summary>
/// <param name="projectId"></param>
/// <param name="system"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetTagsBySystem(string projectId, string system)
{
try
{
//var engineData = new ec_enginedataBLL().GetList("{\"ProjectId\":\"" + projectId + "\",\"DrawingFileID\":\"" + drawingFileID + "\",\"PixelCodes\":\"" + pixels + "\"}").ToList();
var res = new object();
return Success(res);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 获取某个设备单元如wcc、ecc的所有位号
/// </summary>
/// <param name="projectId"></param>
/// <param name="system"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetTagsByUnit(string projectId, string unit)
{
try
{
var res = new object();
return Success(res);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 批量反向关联
/// </summary>
/// <param name="projId"></param>
/// <param name="entity">ID是设备的而不是开关的</param>
/// <returns></returns>
[HttpPost]
public IHttpActionResult QuickAssign(string projId, [FromBody] IEnumerable<ec_enginedata_pixelEntity> entity)
{
#region
if (entity == null)
{
return Success("OK");
}
var ProjectEntity = SqlSugarHelper.Db.Queryable<ec_projectEntity>().Single(x => x.ProjectId == projId);
foreach (var pixel in entity)
{
var existPixel = SqlSugarHelper.Db.Queryable<ec_enginedata_pixelEntity>().AS($"ec_enginedata_pixel_{ProjectEntity.ProjectIndex}").
First(x => x.DrawingFileID == pixel.DrawingFileID && x.PixelCode == pixel.PixelCode);
if (existPixel != null)
{
existPixel.Modify(existPixel.EngineDataPixelID);
existPixel.DeleteFlg = 0;
existPixel.EngineDataID = pixel.EngineDataID;
existPixel.LibraryFileID = pixel.LibraryFileID;
existPixel.MaxPointX = pixel.MaxPointX;
existPixel.MinPointX = pixel.MinPointX;
existPixel.MaxPointY = pixel.MaxPointY;
existPixel.MinPointY = pixel.MinPointY;
SqlSugarHelper.Db.Updateable(existPixel).AS($"ec_enginedata_pixel_{ProjectEntity.ProjectIndex}").ExecuteCommand();
}
else
{
pixel.Create();
pixel.DeleteFlg = 0;
pixel.EngineDataID = pixel.EngineDataID;
SqlSugarHelper.Db.Insertable(pixel).AS($"ec_enginedata_pixel_{ProjectEntity.ProjectIndex}").ExecuteCommand();
}
//SqlSugarHelper.Db.Ado.ExecuteCommand($" DELETE FROM ec_enginedata_pixel_{ProjectEntity.ProjectIndex} WHERE DrawingFileID = '{pixel.DrawingFileID}' AND PixelCode = '{pixel.PixelCode}';");
}
return Success("OK");
//db.InsertByNoMap(entity.EngineDataPixel, $"ec_enginedata_pixel_{ProjectEntity.ProjectIndex}");
#endregion
}
/// <summary>
/// 成品导出xlsx,用于二三维联动用的,三维坐标信息。
/// </summary>
/// <param name="projectId">项目编号</param>
/// <param name="exportType"></param>
/// <returns></returns>
[HttpGet]
public void ExportExcel(string projectId, ExportType exportType)
{
var BLL = new ec_enginedataBLL();
var bytes = BLL.ExportExcel(projectId, exportType);
var stream = new MemoryStream(bytes);
FileDownHelper.DownLoad(stream, $"BricsCAD_Coordinates_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx");
}
/// <summary>
/// 批量的去判断位号是否存在
/// </summary>
/// <param name="projId"></param>
/// <param name="tagInfo">每个元素都是aaa,BBB。aaa为位号bbb为对象类型ID</param>
/// <returns></returns>
public IHttpActionResult CheckTagsExist(string projId, List<string> tagInfo)
{
var tagBll = new ec_enginedataBLL();
var resAll = new List<string>();
foreach (string tag in tagInfo)
{
int lastCommaIndex = tag.LastIndexOf(',');
if (lastCommaIndex != -1)
{
}
else
{
return Fail("http请求格式错误。没有逗号");
}
}
var allDistinctTag = tagInfo.Select(x => x.Split(',')[0]).Distinct().ToList();
foreach (string tag in allDistinctTag)
{
var type = tagInfo.Where(x => x.Split(',')[0] == tag).Select(x => x.Split(',')[1]).Distinct().ToList();
if (type.Count > 1)
{
return Fail($"不同类型对象位号有重复,如{tag}");
}
}
foreach (string tag in tagInfo)
{
int lastCommaIndex = tag.LastIndexOf(',');
if (lastCommaIndex != -1)
{
Console.WriteLine($"最右侧的逗号位置是: {lastCommaIndex}");
string LeftPart = tag.Substring(0, lastCommaIndex);
string lastPart = tag.Substring(lastCommaIndex + 1);
if (LeftPart.Length == 0 || lastPart.Length == 0)
{
return Fail("http请求格式错误。逗号两侧的长度有为0的");
}
var res = "";
var res2 = tagBll.CheckTagExist(projId, LeftPart, lastPart, out res);
if (res2)
{
resAll.Add(LeftPart + "," + res);
}
}
else
{
return Fail("http请求格式错误。没有逗号");
}
}
return Success(resAll);
}
/// <summary>
/// 检查同一根电缆是否存在于2份图纸中
/// </summary>
/// <param name="projectId">项目编号</param>
/// <param name="drawingFileID">图纸编号</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult CheckIsNotExistInOtherDrawings(string projectId, string drawingFileID)
{
try
{
var res = new ec_enginedata_pixelBLL().CheckTagIsNotExistInOtherDrawings(projectId, drawingFileID);
if (res.IsEmpty())
{
return Fail("没有错误数据");
}
var stream = new MemoryStream(res);
FileDownHelper.DownLoad(stream, $"BricsCAD_ShortageOfCables_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx"
, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
return Success("数据已导出");
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
}
}