using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using TProduct.HttpClient;
|
|
namespace TProduct.DAL
|
{
|
/// <summary>
|
/// 测试项目
|
/// </summary>
|
public class TestProjectBase : BaseLiteSqlDAL_DataSync<Entity.TestProjectBase>
|
{
|
public override ISqlSugarClient Connection
|
{
|
get { return TProduct.DAL.SQLite.ConfigHelper.MainConn; }
|
}
|
|
/// <summary>
|
/// 插入包含扩展信息
|
/// </summary>
|
public List<Entity.TestProjectItemView> InsertEx(Entity.TestProjectBase main,
|
List<Entity.TestProjectItemBundleTree> trees)
|
{
|
if (main == null)
|
return default;
|
|
|
using (ISqlSugarClient db = Connection)
|
{
|
long project_id = 0;
|
|
try
|
{
|
|
if (trees == null || trees.Count() == 0)
|
{
|
db.Ado.BeginTran();
|
project_id = db.Insertable(main).ExecuteReturnSnowflakeId();
|
if (project_id < 1)
|
{
|
db.Ado.RollbackTran();
|
return default;
|
}
|
main.ID = project_id;
|
}
|
else
|
{
|
db.Ado.BeginTran();
|
project_id = db.Insertable(main).ExecuteReturnSnowflakeId();
|
if (project_id < 1)
|
{
|
db.Ado.RollbackTran();
|
return default;
|
}
|
main.ID = project_id;
|
|
|
//
|
foreach (var tree in trees)
|
{
|
if (tree.Items == null || tree.Items.Count <= 0)
|
{
|
continue;
|
}
|
|
tree.Bundle.ProjectID = main.ID;
|
tree.Bundle.ItemCount = tree.Items.Count;
|
|
tree.Bundle.ID = db.Insertable(tree.Bundle).ExecuteReturnSnowflakeId();
|
if (tree.Bundle.ID <= 0)
|
{
|
db.Ado.RollbackTran();
|
return default;
|
}
|
|
for (int i = 0; i < tree.Items.Count; i++)
|
{
|
tree.Items[i].BundleID = tree.Bundle.ID;
|
tree.Items[i].ID = db.Insertable(tree.Items[i]).
|
ExecuteReturnSnowflakeId();
|
if (tree.Items[i].ID <= 0)
|
{
|
db.Ado.RollbackTran();
|
return default;
|
}
|
}
|
|
}
|
}
|
|
db.Ado.CommitTran();
|
|
if (TProduct.CorpConfig.Instance.RealTimeRemoteService.IsSynMainData)
|
{
|
HttpClientHelper.Build("TestProjectBase", "Insert@V1.0").Post<bool>(main);
|
if (trees != null && trees.Count > 0)
|
{
|
var bundles = trees.Select(x => x.Bundle).ToList();
|
if (bundles != null && bundles.Count > 0)
|
{
|
HttpClientHelper.Build("TestProjectItemBundle", "Inserts@V1.0").Post<bool>(bundles);
|
}
|
var items = trees.Where(x => x.Items != null && x.Items.Count > 0).SelectMany(x => x.Items).ToList();
|
if (items != null && items.Count > 0)
|
{
|
HttpClientHelper.Build("TestProjectItem", "Inserts@V1.0").Post<bool>(items);
|
}
|
}
|
}
|
|
|
}
|
catch
|
{
|
db.Ado.RollbackTran();
|
return default;
|
}
|
|
|
return db.Queryable<Entity.TestProjectItemView>().Where(x => x.ProjectID == project_id)?.ToList();
|
}
|
|
|
|
|
}
|
|
/// <summary>
|
/// 编号是否存在
|
/// </summary>
|
public bool IsExistCode(string Code)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.TestProjectBase>().Where(x => x.Code == Code).Any();
|
}
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="ID"></param>
|
/// <param name="JudgeResult"></param>
|
/// <returns></returns>
|
public bool UpdateJudgeResult(long ID, int JudgeResult)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var result = db.
|
Updateable(new Entity.TestProjectBase() { ID = ID, JudgeResult = JudgeResult }).
|
UpdateColumns(it => new { it.JudgeResult }).ExecuteCommand();
|
|
if (result > 0 && TProduct.CorpConfig.Instance.RealTimeRemoteService.IsSynMainData)
|
{
|
var dto = GetByID(ID);
|
HttpClientHelper.Build(this.TableName, "Update@V1.0").Put<bool>(dto);
|
}
|
|
return true;
|
}
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="ID"></param>
|
/// <param name="ReportFileNO"></param>
|
/// <returns></returns>
|
public bool UpdateReportFileNO(long ID, string ReportFileNO)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
var result = db.
|
Updateable(new Entity.TestProjectBase() { ID = ID, ReportFileNO = ReportFileNO }).
|
UpdateColumns(it => new { it.ReportFileNO }).ExecuteCommand();
|
|
if (result > 0 && TProduct.CorpConfig.Instance.RealTimeRemoteService.IsSynMainData)
|
{
|
var dto = GetByID(ID);
|
HttpClientHelper.Build(this.TableName, "Update@V1.0").Put<bool>(dto);
|
}
|
|
return true;
|
}
|
}
|
|
/// <summary>
|
/// 通拓id列表获取
|
/// </summary>
|
/// <returns></returns>
|
public List<Entity.TestProjectBase> GetByProductType(int ProductType, DateTime StartTime, DateTime EndTime)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.TestProjectBase>().Where(x => x.ProductType == ProductType && x.CreateTime >= StartTime && x.CreateTime <= EndTime)?.ToList();
|
}
|
}
|
/// <summary>
|
/// 通拓id列表获取
|
/// </summary>
|
/// <returns></returns>
|
public List<Entity.TestProjectBase> GetByProductType(int ProductType, List<long> ProductID, DateTime StartTime, DateTime EndTime)
|
{
|
if (ProductID == null || ProductID.Count() == 0)
|
{
|
return GetByProductType(ProductType, StartTime, EndTime);
|
}
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.TestProjectBase>().Where(x =>
|
x.ProductType == ProductType
|
&& ProductID.Contains(x.ProductID)
|
&& x.CreateTime >= StartTime
|
&& x.CreateTime <= EndTime)?.ToList();
|
}
|
}
|
|
|
/// <summary>
|
/// 通拓id列表获取
|
/// </summary>
|
/// <returns></returns>
|
public List<Entity.TestProjectBase> GetBySeriesID(long SeriesID)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.TestProjectBase>().Where(x => x.SeriesID == SeriesID)?.ToList();
|
}
|
}
|
|
/// <summary>
|
/// 通拓id列表获取
|
/// </summary>
|
/// <returns></returns>
|
public List<Entity.TestProjectBase> GetByProductID(long ProductID)
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
return db.Queryable<Entity.TestProjectBase>().Where(x => x.ProductID == ProductID)?.ToList();
|
}
|
}
|
|
public void AlertView()
|
{
|
using (ISqlSugarClient db = Connection)
|
{
|
db.Ado.ExecuteCommand("DROP VIEW TestProjectItemView");
|
db.Ado.ExecuteCommand (@"CREATE VIEW TestProjectItemView AS SELECT
|
TestProjectBase.ProductType,
|
TestProjectBase.SeriesID,
|
TestProjectBase.ProductID,
|
TestProjectBase.PartID,
|
TestProjectBase.UseStatus AS ProjectUseStatus,
|
TestProjectBase.CreateUserID AS ProjectCreateUserID,
|
TestProjectBase.CreateTime AS ProjectCreateTime,
|
TestProjectBase.Code AS ProjectCode,
|
TestProjectBase.Name AS ProjectName,
|
TestProjectBase.IsFixed,
|
TestProjectBase.JudgeResult AS ProjectJudgeResult,
|
TestProjectBase.ReportFileNO,
|
TestProjectBase.ProjectParasStr,
|
TestProjectBase.AlarmSettingStr,
|
TestProjectBase.IStationInfoStr,
|
TestProjectBase.IStationID,
|
TestProjectBase.IStationReportFileNO,
|
|
TestProjectItemBundle.ProjectID,
|
TestProjectItemBundle.ID AS BundleID,
|
TestProjectItemBundle.ItemCount,
|
TestProjectItemBundle.TestType,
|
TestProjectItemBundle.TestStandardID,
|
TestProjectItemBundle.TestGradeID,
|
TestProjectItemBundle.BenchID,
|
TestProjectItem.ID AS ItemID,
|
TestProjectItem.Code AS ItemCode,
|
TestProjectItem.Name AS ItemName,
|
TestProjectItem.UseStatus AS ItemUseStatus,
|
TestProjectItem.CreateUserID AS ItemCreateUserID,
|
TestProjectItem.CreateTime AS ItemCreateTime,
|
TestProjectItem.LastTestUserID,
|
TestProjectItem.TestStartTime,
|
TestProjectItem.TestEndTime,
|
TestProjectItem.LogContent AS ItemLogContent,
|
TestProjectItem.JudgeResult AS ItemJudgeResult,
|
TestProjectItem.TestTarget AS ItemTestTarget,
|
TestProjectItem.ItemParas,
|
TestProjectItem.CoordinateParas,
|
TestProjectItem.PointNumber,
|
TestProjectItem.AutoTestInfoStr,
|
TestProjectItem.DurabilityTestInfoStr,
|
TestProjectItem.InstrumentInfoStr,
|
TestProjectItem.ElectricInfoStr,
|
TestProjectItem.TestResult AS ItemTestResult,
|
TestProjectItem.ParallelInfoStr
|
FROM
|
TestProjectBase
|
INNER JOIN TestProjectItemBundle ON TestProjectBase.ID = TestProjectItemBundle.ProjectID
|
INNER JOIN TestProjectItem ON TestProjectItemBundle.ID = TestProjectItem.BundleID");
|
}
|
}
|
|
}
|
}
|