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

856 lines
35 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
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 == enum_RelType._电缆);
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 == enum_RelType._电缆);
//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 == enum_RelType._电缆);
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);
}
}
}
}