009_DI-Elec/Learun.Application.Web/AppApi/IOModuleApiController.cs
2025-09-04 23:45:29 +08:00

932 lines
35 KiB
C#
Raw Permalink 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 Learun.Application.Organization;
using Learun.Application.TwoDevelopment.ZZDT_EC;
using Learun.Loger;
using Learun.Util;
using Learun.Util.SqlSugar;
using log4net.Config;
using Microsoft.Practices.ObjectBuilder2;
using Newtonsoft.Json;
using Org.BouncyCastle.Bcpg.OpenPgp;
using Pipelines.Sockets.Unofficial.Arenas;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web.Http;
using static Learun.Application.TwoDevelopment.ZZDT_EC.IO_WorkFlowService;
namespace Learun.Application.Web.AppApi
{
/// <summary>
/// IO模块By YuXH
/// </summary>
[HandlerApiLogin(FilterMode.Ignore)]
public class IOModuleApiController : WebApiControllerBase
{
#region
private ec_CableBLL ec_CableBLL = new ec_CableBLL();
private ec_PanelBLL ec_PanelBLL = new ec_PanelBLL();
private ec_PanelStripBLL ec_PanelStripBLL = new ec_PanelStripBLL();
private ec_PanelStripTermBLL ec_PanelStripTermBLL = new ec_PanelStripTermBLL();
private ec_PanelChannelBLL ec_PanelChannelBLL = new ec_PanelChannelBLL();
#endregion
#region
#endregion
/// <summary>
/// IO分配主界面查询查询所有的位置 - 采集箱 - 模块 - 通道
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public IHttpActionResult GetPanelTree(string projectId)
{
//2023 05 22从用户所在的role的lr base authorize里去查
//UserInfo userInfo = LoginUserInfo.Get();
//UserRelationIBLL userRelationIBLL = new UserRelationBLL();
//var roles = userRelationIBLL.GetObjectIds(userInfo.userId, 1, projectId);
var stopWatch = new Stopwatch();
var Locations = GetLocList(projectId);
if (Locations == null)
{
return Fail("系统设置中找不到“系统柜位置”这一项内容。联系管理员");
}
var ec_PanelStripTermService = new ec_PanelStripTermBLL();
var ec_WireTerminalService = new ec_WireTerminalService();
var ec_Wire_GroupService = new ec_Wire_GroupBLL();
stopWatch.Start();
var Panels = ec_PanelBLL.GetList("{ProjectId:\"" + projectId + "\"}").OrderBy(x => x.TagNumber).ToList();
stopWatch.Stop();
this.Logger.Info($"Panel查询 {stopWatch.ElapsedMilliseconds}" + "\r\n");
stopWatch.Start();
var Strips = ec_PanelStripBLL.GetList("{ProjectId:\"" + projectId + "\"}").OrderBy(x => x.Panel_Strip_Seq).OrderBy(x => x.StripName);
stopWatch.Stop();
this.Logger.Info($"Strip查询 {stopWatch.ElapsedMilliseconds}" + "\r\n");
stopWatch.Start();
var Channels = ec_PanelChannelBLL.GetList("{ProjectId:\"" + projectId + "\"}");
stopWatch.Stop();
this.Logger.Info($"Channel查询 {stopWatch.ElapsedMilliseconds}" + "\r\n");
stopWatch.Start();
var AllTerms = ec_PanelStripTermService.GetList("{ProjectId:\"" + projectId + "\"}");
stopWatch.Stop();
this.Logger.Info($"Term查询 {stopWatch.ElapsedMilliseconds}" + "\r\n");
stopWatch.Start();
var AllWTs = ec_WireTerminalService.GetList("{ProjectId:\"" + projectId + "\"}", true);
stopWatch.Stop();
this.Logger.Info($"WireTerminal查询 {stopWatch.ElapsedMilliseconds}" + "\r\n");
stopWatch.Start();
var AllSignals = ec_Wire_GroupService.GetList("{ProjectId:\"" + projectId + "\"}", true);
stopWatch.Stop();
this.Logger.Info($"Signals查询 {stopWatch.ElapsedMilliseconds}" + "\r\n");
stopWatch.Start();
List<TreeModel> treeList = new List<TreeModel>();
foreach (var Loc in Locations)
{
TreeModel nodeCatalogue = new TreeModel();
nodeCatalogue.id = Loc.DataItemDetailID;
nodeCatalogue.text = Loc.DataItemName;
nodeCatalogue.value = Loc.DataItemName;
nodeCatalogue.nodeType = "0";
nodeCatalogue.showcheck = false;
nodeCatalogue.checkstate = 0;
nodeCatalogue.isexpand = false;
nodeCatalogue.parentId = Loc.UpDataItemDetailID;
nodeCatalogue.NodeExtData = Loc;
treeList.Add(nodeCatalogue);
var listPanel = Panels.Where(x => x.Panel_Loc_ID == Loc.DataItemDetailID && x.systempanel == GlobalEnum.specialType..ToString()).ToList();
if (listPanel != null && listPanel.Count > 0)
{
foreach (var Panel in listPanel)
{
TreeModel nodeFile = new TreeModel();
nodeFile.id = Panel.PanelID;
nodeFile.text = Panel.TagNumber;
nodeFile.value = Panel.EngineerDataID;
nodeFile.nodeType = "1";
nodeFile.showcheck = false;
nodeFile.checkstate = 0;
nodeFile.isexpand = false;
nodeFile.parentId = Panel.Panel_Loc_ID; //后面会根据变为tree
nodeFile.NodeExtData = Panel;
//判断下是不是有效的类型
treeList.Add(nodeFile);
var StripsInPanel = Strips.Where(x => x.PanelID == Panel.PanelID).ToList();
if (StripsInPanel != null && StripsInPanel.Count > 0)
{
//StripsInPanel = StripsInPanel.OrderBy(x => x.Panel_Strip_Seq).ToList();
foreach (var Strip in StripsInPanel)
{
#region
var ChannelsInStrip = Channels.Where(x => x.StripID == Strip.StripID).ToList();//("{ProjectId:\"" + projectId + "\",StripID:\"" + Strip.StripID + "\",PanelID:\"" + Strip.PanelID + "\"}");
//Strip.Channels = ChannelsInStrip.ToList();
foreach (var Channel in ChannelsInStrip)
{
var Terms = AllTerms.Where(x => x.StripID == Strip.StripID && x.ChannelID == Channel.ChannelID).ToList();//ec_PanelStripTermService.GetList("{ProjectId:\"" + projectId + "\",StripID:\"" + Strip.StripID + "\",ChannelID:\"" + Channel.ChannelID + "\"}");
//wire termianl
var conns = AllWTs.Where(x => Terms.Select(y => y.TermID).ToList().Contains(x.TermID)).ToList(); //.GetList(("{ProjectId:\"" + projectId + "\",PanelID:\"" + Strip.PanelID + "\",StripID:\"" + Strip.StripID + "\"}"));
bool bUsed = false;
if (conns != null && conns.Count() > 0)
{
bUsed = true;
}
//foreach (ec_PanelStripTermEntity term in Terms)
//{
// var conn = conns.FirstOrDefault(x => x.TermID == term.TermID);
// if (conn != null)
// {
// bUsed = true;
// break;
// }
//}
if (bUsed)
{
//wire group
var signal = AllSignals.FirstOrDefault(x => x.ChannelID == Channel.ChannelID);//.GetList("{ProjectId:\"" + projectId + "\",StripID:\"" + Strip.StripID + "\",ChannelID:\"" + Channel.ChannelID + "\"}").FirstOrDefault();
if (signal != null)
{
Strip.ChannelsUsed += 1;
}
else
{
Strip.ChannelsUsedNoSignal += 1;
}
}
else
{
Strip.ChannelsSpared += 1;
}
}
#endregion
TreeModel nodeStrip = new TreeModel();
nodeStrip.id = Strip.StripID;
nodeStrip.text = Strip.StripName;
nodeStrip.value = Strip.Panel_Strip_Seq;
nodeStrip.nodeType = "1";
nodeStrip.showcheck = false;
nodeStrip.checkstate = 0;
nodeStrip.isexpand = false;
nodeStrip.parentId = Strip.PanelID;
nodeStrip.NodeExtData = Strip;
treeList.Add(nodeStrip);
}
}
}
}
}
stopWatch.Stop();
this.Logger.Info($"循环位置耗时 {stopWatch.ElapsedMilliseconds}" + "\r\n");
return Success(treeList.ToTree());
}
/// <summary>
/// 根据ID拿。只查询ec panel表本身
/// </summary>
/// <param name="PanelID"></param>
/// <param name="projId"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetPanel(string PanelID, string projId)
{
var res = ec_PanelBLL.GetEntity(projId, PanelID);
return Success(res);
}
/// <summary>
/// 根据EngineerDataID拿。包括set wire以及from to信息
/// </summary>
/// <param name="EngineerDataID"></param>
/// <param name="projId"></param>
/// <param name="OnlySelf"></param>
/// <param name="PreAssign"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetCableByEngID(string EngineerDataID, string projId, bool OnlySelf = false, bool PreAssign = false)
{
if (PreAssign)
{
var res = ec_CableBLL.GetCablePreAssign(projId, EngineerDataID);
return Success(res);
}
else
{
var res = ec_CableBLL.GetCableByEngID(projId, EngineerDataID, OnlySelf);
return Success(res);
}
}
/// <summary>
/// 自动分配通道(点表信号自动分配)
/// </summary>
/// <param name="projId"></param>
/// <param name="AcceptUnmatchedPanel">如果没有匹配的采集箱则提示“未找到具有XX类型的采集箱请新增后再次分配是否取消自动分配进程</param>
/// <returns></returns>
public IHttpActionResult AutoAssignCable2Channel(string projId, bool AcceptUnmatchedPanel)
{
#region
var cbll = new ec_CableBLL();
var panelTable = ProjectSugar.TableName<ec_PanelEntity>(projId);
var stripTable = ProjectSugar.TableName<ec_PanelStripEntity>(projId);
#endregion
#region
var cablesNeedAssigned = cbll.GetCablesPreAssign(projId, true);
#endregion
//涉及到哪些箱子
var panelsNeed = SqlSugarHelper.Db.Queryable<ec_PanelEntity>().AS(panelTable).
Where(x => cablesNeedAssigned.Select(xx => xx.PanelID).Contains(x.PanelID)).ToList();
var stripsNeed = SqlSugarHelper.Db.Queryable<ec_PanelStripEntity>().AS(stripTable).
Where(x => panelsNeed.Select(xx => xx.PanelID).Contains(x.PanelID)).
ToList();
#region 1.1()
var cablesNotMatchIO = cablesNeedAssigned.Where(x => !x.IOTypeMatch).ToList(); // GetCablesPreAssign 查询时已经处理过io是否匹配了
if (cablesNotMatchIO != null && cablesNotMatchIO.Count > 0)
{
if (!AcceptUnmatchedPanel)//允许进行
{
//
}
else
{
//不继续自动分配,中断进程,等添加完正确的模块后再继续自动分配
return Fail("等电缆的预分配IO类型和其预分配的采集箱的IO类型无法匹配。等添加完正确的模块后再继续自动分配。");
}
}
#endregion
#region 1.2
#region 1.2.2
cablesNeedAssigned = cablesNeedAssigned.OrderBy(x => new { x.PreAssignIOType, x.System, x.PanelID }).ToList();
var curPanel = new ec_PanelEntity();
curPanel = panelsNeed.FirstOrDefault(x => x.PanelID == cablesNeedAssigned[0].PanelID);//先定位到第一个电缆所在的箱子
curPanel.strips = stripsNeed.Where(x => x.PanelID == curPanel.PanelID).ToList();
var curStrip = new ec_PanelStripEntity();
#endregion
for (var i = 0; i < cablesNeedAssigned.Count; i++)
{
#region 1.2.1
if (curPanel.PanelID != cablesNeedAssigned[i].PanelID)
{
curPanel = panelsNeed.FirstOrDefault(x => x.PanelID == cablesNeedAssigned[0].PanelID);//切换箱子
curPanel.strips = stripsNeed.Where(x => x.PanelID == curPanel.PanelID).ToList();
}
foreach (var set in cablesNeedAssigned[i].Sets)
{
var availableStrips = curPanel.strips.Where(x => x.IO_TYPE.ToUpper() == set.IOType.ToString().ToUpper()).ToList();
if (availableStrips != null && availableStrips.Count > 0)
{
//已经存在端子排
}
else
{
//没有端子排根据信号数里自动新建端子排通道数里根据端子io模板的默认值获得
//
}
}
cable循环好strip循环好
#endregion
}
#endregion
return Success("自动关联完成");
}
/// <summary>
/// 把电缆分配到空余的模块的通道上。
/// </summary>
/// <param name="projId"></param>
/// <param name="execute"></param>
/// <returns></returns>
[HttpPost]
public IHttpActionResult AssignCable2Channel(string projId, bool execute = false)
{
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var cableIds = asyncContent.ToObject<List<string>>();
return Success("res");
}
/// <summary>
/// 查询所有需要预分配的电缆
/// </summary>
/// <param name="projId"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetCablePreAssignPreview(string projId)
{
var bll = new ec_CableBLL();
var res = bll.GetCablesPreAssign(projId);
return Success(res);
}
/// <summary>
/// 查询所有的电缆
/// </summary>
/// <param name="projId"></param>
/// <param name="homerun">true或false</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetCables(string projId, bool homerun = true)
{
var res = ec_CableBLL.GetCables(projId, homerun);//这有个问题 如果一开始不知道要关联到那个通道 就不会有ec cable出来
return Success(res);
}
/// <summary>
/// PanelStrip参考库
/// </summary>
/// <param name="projId"></param>
/// <param name="OnlySelf">false时带上下面的通道和端子。true时就是返回端子排自己</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetPanelStrips(string projId, bool OnlySelf = false)
{
var res = ec_PanelStripBLL.GetList("{ProjectId:\"" + projId + "\",OnlySelf:\"" + OnlySelf + "\"}");
return Success(res);
}
/// <summary>
/// 在IO分配界面从左侧目录树中选择一个“端子排”后进行查询
/// </summary>
/// <param name="StripID"></param>
/// <param name="projId"></param>
/// <param name="OnlySelf">false时带上下面的通道和端子。true时就是返回端子排自己</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetPanelStrip(string StripID, string projId, bool OnlySelf = false, bool HaveChannel = true)
{
var res = ec_PanelStripBLL.GetEntity(projId, StripID, OnlySelf, HaveChannel);
return Success(res);
}
/// <summary>
/// 新增或者修改。
/// 新建相当于强行因为正常流程是和engineerdata一起新建出来的。
/// 改的话只是改location和端子排数量这些。常规属性依旧通过objectTypeAPI去做
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
/// <returns></returns>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SavePanel(ec_PanelEntity entity, string projId)
{
try
{
ec_PanelBLL.SaveEntity(projId, entity.PanelID, entity);
return Success("OK");
}
catch (System.Exception E)
{
return Fail(E.Message);
}
}
/// <summary>
/// SaveConnections 专用
/// </summary>
private class Connections
{
public string ID { get; set; }
public List<ec_WireTerminalEntity> Conns { get; set; }
}
/// <summary>
/// 处理 接线关系同时对cableset和wire的个别属性进行修改
/// </summary>
/// <param name="projId"></param>
/// <returns></returns>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SaveConnections(string projId)
{
try
{
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var entity = asyncContent.ToObject<Connections>();
var res = entity.Conns;
new ec_WireTerminalBLL().SaveConnections(projId, ref res);
return Success(res);
}
catch (System.Exception E)
{
return Fail(E.Message);
}
}
/// <summary>
///
/// </summary>
/// <param name="projId"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetConnections(string projId, string ID)
{
try
{
var res = new ec_WireTerminalService().GetEntity(projId, ID);
return Success(res);
}
catch (System.Exception E)
{
return Fail(E.Message);
}
}
/// <summary>
///
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
/// <returns></returns>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SaveCable(ec_CableEntity entity, string projId)
{
try
{
if (!string.IsNullOrEmpty(entity.CableID))
{
ec_CableBLL.SaveEntity(projId, entity.CableID, entity);
}
return Success("OK");
}
catch (System.Exception E)
{
return Fail(E.Message);
}
}
/// <summary>
/// 通过预设模式,批量创建端子排 通道 端子
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult CreatePanelStripByProfile(string projId)
{
try
{
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var entity = asyncContent.ToObject<ec_PanelStripEntity>();
string NewID = "";
ec_PanelStripBLL.SaveEntity(projId, "", entity, out NewID);
var res = ec_PanelStripBLL.GetEntity(projId, NewID);
return Success(res);
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
///// <summary>
///// 通过预设模式,批量创建端子排 端子(不需要了因为预设模式只有对IO有通道的那边才有用)
///// </summary>
///// <param name="entity"></param>
///// <param name="projId"></param>
//[HttpPost]
//[HandlerApiLogin(FilterMode.Enforce)]
//public IHttpActionResult CreatePanelStripByProfileNoChannel(string projId, ec_PanelStripEntity entity)
//{
// try
// {
// string NewID = "";
// ec_PanelStripBLL.SaveEntity(projId, "", entity, out NewID, false);
// var res = ec_PanelStripBLL.GetEntity(projId, NewID);
// return Success(res);
// }
// catch (System.Exception e)
// {
// return Fail(e.Message);
// }
//}
/// <summary>
/// GetCableByEngID先去判断这个cable是否已经有了IO Module这边的记录
/// 电缆-端子连接,从图面上选择一个电缆对象
/// </summary>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult CreateCableByProfile(string projId)
{
try
{
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var entity = asyncContent.ToObject<ec_CableEntity>();
ec_CableBLL.SaveEntity(projId, entity.CableID, entity);
var res = ec_CableBLL.GetCableByEngID(projId, entity.EngineerDataID);
return Success(res);
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 批量保存电缆的set wire 名字等
/// </summary>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SaveCables(string projId)
{
try
{
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var entitys = asyncContent.ToObject<List<ec_CableEntity>>();
foreach (var entity in entitys)
{
ec_CableBLL.SaveEntity(projId, entity.CableID, entity);
}
return Success(entitys);
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 创建、修改 端子排和端子(一般是为非监测设备的端子排)
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SavePanelStripNoChannel(string projId, ec_PanelStripEntity entity)
{
try
{
string NewID = "";
ec_PanelStripBLL.SaveEntity(projId, entity.StripID, entity, out NewID, false);
var res = ec_PanelStripBLL.GetEntity(projId, NewID, false, false);
return Success(res);
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 保存端子排 通道 端子的信息(不管信号和接线关系)。
/// 迁移通道也是这里。
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SavePanelStrip(string projId, ec_PanelStripEntity entity)
{
XmlConfigurator.Configure();
var log = log4net.LogManager.GetLogger("Debug"); //参数就是config里logger节点的名字
try
{
//var asyncContent = Request.Content.ReadAsStringAsync().Result;
//var entity = asyncContent.ToObject<ec_PanelStripEntity>();
ec_PanelStripBLL.SaveEntity(projId, entity.StripID, entity, out string NewID);
var res = ec_PanelStripBLL.GetEntity(projId, NewID);
return Success(res);
}
catch (System.Exception e)
{
log.Debug($"★★★{DateTime.Now.ToString()}★★★{e}★★★");
return Fail(e.Message);
}
}
/// <summary>
///
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SavePanelStripTerm(ec_PanelStripTermEntity entity, string projId)
{
try
{
ec_PanelStripTermBLL.SaveEntity(projId, entity.TermID, entity);
return Success("OK");
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
///
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SavePanelChannel(ec_PanelChannelEntity entity, string projId)
{
try
{
var newId = ec_PanelChannelBLL.SaveEntity(projId, entity.ChannelID, entity);
foreach (var term in entity.Terms)
{
ec_PanelStripTermBLL.SaveEntity(projId, term.TermID, term);
}
var res = ec_PanelChannelBLL.GetEntity(projId, newId);
return Success(res);
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 调端子排所属Panel
/// </summary>
/// <param name="StripID">端子排ID</param>
/// <param name="PanelID">PanelID</param>
/// <param name="ProjectId">项目ID</param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SwitchPanelStrip(string StripID, string PanelID, string ProjectId)
{
try
{
ec_PanelStripBLL.SwitchPanelStrip(StripID, PanelID, ProjectId);
return Success("OK");
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 调换电缆的from/to信息
/// </summary>
/// <param name="CableID">Cable的工程ID</param>
/// <param name="ProjectId">项目ID</param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SwitchCableFromTo(string ProjectId)
{
try
{
var asyncContent = Request.Content.ReadAsStringAsync().Result;
var entityCol = asyncContent.ToObject<List<string>>();
var res = new ec_enginedata_relService().SwitchCableFromTo(entityCol, ProjectId);
if (res)
{
return Success("OK");
}
else
{
return Fail("From/To 交换出现问题。");
}
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 比如 移动通道时,进行保存
/// </summary>
/// <param name="entity"></param>
/// <param name="projId"></param>
/// <returns></returns>
[Obsolete]
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SavePanelChannels(List<ec_PanelChannelEntity> entitys, string projId)
{
try
{
foreach (var entity in entitys)
{
var newId = ec_PanelChannelBLL.SaveEntity(projId, entity.ChannelID, entity);
foreach (var term in entity.Terms)
{
ec_PanelStripTermBLL.SaveEntity(projId, term.TermID, term);
}
}
return Success("OK");
}
catch (System.Exception e)
{
return Fail(e.Message);
}
}
/// <summary>
/// 根据某个数据字典的编号来。默认有个id=1的枚举
/// </summary>
/// <param name="ProjectId"></param>
/// <returns></returns>
private List<ec_dataitemdetailEntity> GetLocList(string ProjectId)
{
var ec_dataitemBLL = new ec_dataitemBLL();
var settings = new ec_projectSettingsBLL();
var ListFlg = settings.GetEntity(GlobalObject.projSetting_enumlist_IORackPosition, ProjectId);
if (ListFlg != null)
{
List<ec_dataitemdetailEntity> frameLists = new List<ec_dataitemdetailEntity>();
frameLists.Add(new ec_dataitemdetailEntity() { DataItemName = "默认", DataItemCode = "默认", DataItemDetailID = "1", UpDataItemDetailID = "", DataItemID = "" }); //{ Name = "默认", Desc = "默认", Id = "1", ParentID = "" });
var ListName = ec_dataitemBLL.GetList("{ProjectId:\"" + ProjectId + "\",keyword:\"" + ListFlg.SettingValue + "\"}").FirstOrDefault();
if (ListName == null)
{
return null;
}
else
{
frameLists[0].DataItemID = ListName.DataItemID;
}
var res = ec_dataitemBLL.GetDetailList(ListFlg.SettingValue, "", ProjectId, false); //区域
foreach (var item in res)
{
//frameLists.Add(new ec_dataitemdetailEntity()
//{
// Name = item.DataItemName,
// ParentID = item.UpDataItemDetailID,
// Desc = item.DataItemCode,
// Id = item.DataItemDetailID,
// DataItemId = item.DataItemID
//});
frameLists.Add(item);
}
return frameLists;
}
else
{
return null;
}
}
/// <summary>
/// 位置。缺省都放到“默认”下
/// </summary>
/// <param name="ProjectId"></param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult GetLocationList(string ProjectId)
{
var RES = GetLocList(ProjectId);
if (RES != null)
{
return Success(RES);
}
else
{
return Fail("未找到合适的数据字典,可以当做位置");
}
}
/// <summary>
/// 根据id来删除
/// </summary>
/// <param name="keyValue"></param>
/// <param name="ProjectId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult DeletePanel(string PanelID, string ProjectId)
{
new ec_enginedataBLL().DeleteEntity(PanelID, ProjectId);
return Success("删除成功!");
}
/// <summary>
/// 根据id来删除
/// </summary>
/// <param name="CableID"></param>
/// <param name="ProjectId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult DeleteCableProfile(string CableID, string ProjectId)
{
ec_CableBLL.DeleteEntity(ProjectId, CableID);
return Success("OK");
}
/// <summary>
/// 根据id来删除
/// </summary>
/// <param name="keyValue"></param>
/// <param name="ProjectId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult DeletePanelStrip(string StripID, string ProjectId)
{
ec_PanelStripBLL.DeleteEntity(ProjectId, StripID);
return Success("删除成功!");
}
/// <summary>
/// 根据id来删除
/// </summary>
/// <param name="ChannelID"></param>
/// <param name="ProjectId"></param>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult DeletePanelChannel(string ChannelID, string ProjectId)
{
ec_PanelChannelBLL.DeleteEntity(ProjectId, ChannelID);
return Success("OK");
}
}
/// <summary>
///
/// </summary>
//public class Panel_Location
//{
/// <summary>
///
/// </summary>
//public string ParentID { get; set; }
/// <summary>
///
/// </summary>
//public string Id { set; get; }
/// <summary>
/// 所在数据字典的ID
/// </summary>
// public string DataItemId { set; get; }
/// <summary>
///
/// </summary>
//public string Name { get; set; }
/// <summary>
/// 数据字典里的code
/// </summary>
//public string Desc { get; set; }
//}
}