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

249 lines
11 KiB
C#
Raw Normal View History

2025-08-13 11:14:39 +08:00
using Learun.Application.Base.SystemModule;
using Learun.Application.TwoDevelopment.ZZDT_EC;
using Learun.Util;
using Learun.Util.SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Description;
namespace Learun.Application.Web.AppApi
{
/// <summary>
/// 数据字典接口dataitem和dataitemdetail
/// </summary>
[RoutePrefix("api/DataItemApi")]
[HandlerApiLogin(FilterMode.Ignore)]
public class DataItemApiController : WebApiControllerBase
{
private DataItemIBLL dataItemIBLL = new DataItemBLL();
private ec_dataitemIBLL ec_dataitemIBLL = new ec_dataitemBLL();
///// <summary>
///// 根据分类编号获取数据字典明细(公司级)
///// </summary>
///// <param name="itemCode">分类编号</param>
///// <returns></returns>
//[HttpGet]
//public IHttpActionResult GetCodeList(string itemCode)
//{
// try
// {
// var data = dataItemIBLL.GetDetailList(itemCode);
// return Success(data);
// }
// catch (Exception ex)
// {
// return Fail(ex.Message);
// }
//}
/// <summary>
///
/// </summary>
/// <param name="strEntity"></param>
/// <param name="ProjectId"></param>
/// <returns></returns>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult SaveDetailForm(ec_dataitemdetailEntity strEntity, string ProjectId)
{
var tableName = ProjectSugar.TableName<ec_dataitemEntity>(ProjectId);
var list = SqlSugarHelper.Db.Queryable<ec_dataitemEntity>().AS(tableName).Where(x => x.DataItemID == strEntity.DataItemID || x.DataItemCode == strEntity.ItemCode).ToList();
if (list != null && !string.IsNullOrEmpty(strEntity.DataItemName) && !string.IsNullOrEmpty(strEntity.DataItemCode))
{
strEntity.IsEnabled = 1;
var res = ec_dataitemIBLL.SaveDetailEntity(strEntity.DataItemDetailID, strEntity, ProjectId);
return Success(res);
}
return Fail("分类不存在");
}
/// <summary>
///
/// </summary>
/// <param name="strEntity"></param>
/// <param name="ProjectId"></param>
/// <returns></returns>
[HttpPost]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult DeleteDetail(string DetailID, string ProjectId)
{
ec_dataitemIBLL.DeleteDetail(DetailID, ProjectId);
return Success("保存成功!");
}
/// <summary>
/// 根据分类编号获取数据字典明细(项目级)
/// </summary>
/// <param name="itemCode">分类编号</param>
/// <param name = "projectId" >项目ID如果为空就是公司级。</param >
/// <returns></returns>
[HttpGet]
[HandlerApiLogin(FilterMode.Enforce)]
public IHttpActionResult GetDetails(string projectId, string itemCode)
{
try
{
if (string.IsNullOrEmpty(projectId))
{
var dataCompanyLevel = dataItemIBLL.GetDetailList(itemCode);
return Success(dataCompanyLevel);
}
SqlSugarHelper.Db.BeginTran();
var dataitemTableName = ProjectSugar.TableName<ec_dataitemEntity>(projectId);
var itemcodes = new List<string>() { "自动化平台", "Be_Signal_Group", "Exten_Alarm_Group", "Alarm_Blocking_Group", "Maker", "Alarm" };
#region
var items = SqlSugarHelper.Db.Queryable<ec_dataitemEntity>().AS(dataitemTableName).Where(x => itemcodes.Contains(x.DataItemCode)).ToList();
var upDataItem = items.FirstOrDefault(x => x.DataItemCode == "自动化平台");
if (upDataItem == null)
{
upDataItem = new ec_dataitemEntity();
upDataItem.Create();//DataItemID
upDataItem.UpDataItemID = "0";
upDataItem.DataItemName = "自动化平台";
upDataItem.DataItemCode = "自动化平台";
upDataItem.OrderID = 6;
upDataItem.IsEnabled = 1;
upDataItem.IsAllowEdit = 1;
SqlSugarHelper.Db.Insertable(upDataItem).AS(dataitemTableName).ExecuteCommand();
}
if (!items.Any(x => x.DataItemCode == "Be_Signal_Group"))
{
var item = new ec_dataitemEntity();
item.Create();
item.UpDataItemID = upDataItem.DataItemID;
item.DataItemName = "信号分组";
item.DataItemCode = "Be_Signal_Group";
item.OrderID = 1;
item.IsEnabled = 1;
item.IsAllowEdit = 1;
SqlSugarHelper.Db.Insertable(item).AS(dataitemTableName).ExecuteCommand();
}
if (!items.Any(x => x.DataItemCode == "Exten_Alarm_Group"))
{
var item = new ec_dataitemEntity();
item.Create();
item.UpDataItemID = upDataItem.DataItemID;
item.DataItemName = "延伸报警组";
item.DataItemCode = "Exten_Alarm_Group";
item.OrderID = 2;
item.IsEnabled = 1;
item.IsAllowEdit = 1;
SqlSugarHelper.Db.Insertable(item).AS(dataitemTableName).ExecuteCommand();
}
if (!items.Any(x => x.DataItemCode == "Alarm_Blocking_Group"))
{
var item = new ec_dataitemEntity();
item.Create();
item.UpDataItemID = upDataItem.DataItemID;
item.DataItemName = "报警阻断组";
item.DataItemCode = "Alarm_Blocking_Group";
item.OrderID = 4;
item.IsEnabled = 1;
item.IsAllowEdit = 1;
SqlSugarHelper.Db.Insertable(item).AS(dataitemTableName).ExecuteCommand();
}
if (!items.Any(x => x.DataItemCode == "Maker"))
{
var item = new ec_dataitemEntity();
item.Create();
item.UpDataItemID = upDataItem.DataItemID;
item.DataItemName = "厂商";
item.DataItemCode = "Maker";
item.OrderID = 10;
item.IsEnabled = 1;
item.IsAllowEdit = 1;
SqlSugarHelper.Db.Insertable(item).AS(dataitemTableName).ExecuteCommand();
}
if (!items.Any(x => x.DataItemCode == "Alarm"))
{
var item = new ec_dataitemEntity();
item.Create();
item.UpDataItemID = upDataItem.DataItemID;
item.DataItemName = "报警";
item.DataItemCode = "Alarm";
item.OrderID = 6;
item.IsEnabled = 1;
item.IsAllowEdit = 1;
SqlSugarHelper.Db.Insertable(item).AS(dataitemTableName).ExecuteCommand();
}
#endregion
if (itemCode == "Be_Signal_Group")
{
var tableName = ProjectSugar.TableName<ec_Wire_GroupEntity>(projectId);
//数据字典
var groups = SqlSugarHelper.Db.Queryable<ec_Wire_GroupEntity>().AS(tableName)
.Where(x => !string.IsNullOrEmpty(x.Signal_Group))
.GroupBy(x => x.Signal_Group).Select(x => x.Signal_Group).ToList();//这里可能为空的,因为现在虚拟点也在这里
var dataitemDetailTableName = ProjectSugar.TableName<ec_dataitemdetailEntity>(projectId);
var item = SqlSugarHelper.Db.Queryable<ec_dataitemEntity>().AS(dataitemTableName).First(x => x.DataItemCode == "Be_Signal_Group");
if (item == null)
{
item = new ec_dataitemEntity();
item.Create();
item.UpDataItemID = "0";
item.DataItemName = "信号分组";
item.DataItemCode = "Be_Signal_Group";
item.OrderID = 5;
item.IsEnabled = 1;
SqlSugarHelper.Db.Insertable(item).AS(dataitemTableName).ExecuteCommand();
}
var list = SqlSugarHelper.Db.Queryable<ec_dataitemdetailEntity>().AS(dataitemDetailTableName)
.Where(x => x.DataItemID == item.DataItemID && groups.Contains(x.DataItemCode)).ToList();
var details = new List<ec_dataitemdetailEntity>();
var max = list.Max(x => x.OrderID);
groups.ForEach(x =>
{
if (!list.Any(y => y.DataItemID == item.DataItemID && y.DataItemCode == x))
{
var detail = new ec_dataitemdetailEntity();
detail.Create();
detail.DataItemID = item.DataItemID;
detail.UpDataItemDetailID = "0";
detail.DataItemName = "excel导入时新增请编辑其正确含义";
detail.DataItemCode = x;
detail.OrderID = ++max;
detail.IsEnabled = 1;
details.Add(detail);
}
});
SqlSugarHelper.Db.Insertable(details).AS(dataitemDetailTableName).ExecuteCommand();
}//遍历信号里的组,如果没有就加枚举
SqlSugarHelper.Db.CommitTran();
var data = ec_dataitemIBLL.GetDetailList(itemCode, "", projectId, false);
return Success(data);
}
catch (Exception ex)
{
SqlSugarHelper.Db.RollbackTran();
return Fail(ex.Message);
}
}
/// <summary>
/// (计量单位)根据计量单位分类ID获取计量单位数据
/// </summary>
/// <param name = "projectId" >项目ID</param >
/// <param name="measuringUnitTypeID">计量单位分类ID。如果是空就是所有的</param>
/// <returns></returns>
[HttpGet]
[ResponseType(typeof(List<ec_measuring_unitEntity>))]
public IHttpActionResult GetMeasuringUnitList(string projectId, string measuringUnitTypeID = "")
{
try
{
//相当于用一个dataitem来查询下面的所有字典详细列表
var data = new ec_measuring_unitBLL().GetList("{ ProjectId :\"" + projectId + "\",MeasuringUnitTypeID :\"" + measuringUnitTypeID + "\"}");
return Success(data);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
}
}