105040 Update 将Service移动到WPFUI包中

This commit is contained in:
lihanbo 2024-12-23 11:57:55 +08:00
parent c257842321
commit 32f3bc54b5
1 changed files with 242 additions and 0 deletions

View File

@ -0,0 +1,242 @@
using Sinvo.EplanHpD.Plugin.Service.Model;
using Sinvo.EplanHpD.Plugin.WPFUI.Enum;
using Sinvo.EplanHpD.Plugin.WPFUI.Models;
using Sinvo.EplanHpD.Plugin.WPFUI.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sinvo.EplanHpD.Plugin.Service
{
public class MotorLectotypeService
{
public void AddMotor(Motor motor)
{
DBHelper.DB.Insertable(motor).ExecuteCommand();
}
public Motor GetMotorById(string occPartId)
{
var data = DBHelper.DB.Queryable<Motor>("mt")
.Where(mt => mt.OccPartId == occPartId)
.First();
return data;
}
//public string GetMotorLectotypeData(string motorOccId)
//{
// var data = DBHelper.DB.Queryable<MotorDataModel>("mt")
// .Where(mt => mt.ID == motorOccId)
// .First();
// if (data != null)
// {
// return data.Data;
// }
// else
// {
// return "";
// }
//}
public CableLectotypeViewModel GetMotorLectotypeData(string motorOccId)
{
// 查询 Motor 数据
var motor = DBHelper.DB.Queryable<Motor>()
.Where(m => m.OccPartId == motorOccId)
.First();
if (motor == null)
{
return null;
}
// 查询关联的 CableLectotype 数据
var cableLectotype = DBHelper.DB.Queryable<CableLectotype>()
.Where(cl => cl.MotorId == motor.OccPartId)
.First();
if (cableLectotype == null)
{
return null;
}
// 查询关联的 LectotypeLine 数据
var selectedLines = DBHelper.DB.Queryable<LectotypeLine>()
.Where(ll => ll.CableLectotypeId == cableLectotype.CableLectotypeId)
//.OrderBy(ll => ll.SeqNo)
.ToList();
// 构建 CableLectotypeViewModel
var viewModel = new CableLectotypeViewModel
{
Motor = new MotorModel
{
MotorPower = motor.MotorPower,
Brand = motor.Brand,
MotorSerie = motor.MotorSerie,
MotorModelStr = motor.MotorModelStr,
AxisNo = motor.AxisNo,
OccPartId = motor.OccPartId
},
CableConnectionType = (ConnectionType)Enum.Parse(typeof(ConnectionType), cableLectotype.CableConnectionType.ToString()),
AxisNo = cableLectotype.AxisNo,
CableType = cableLectotype.CableType,
EncoderLineParagraph = cableLectotype.EncoderLineParagraph,
PowerLineParagraph = cableLectotype.PowerLineParagraph,
CableModelStr = cableLectotype.CableModelStr,
IsEnableParagraph = cableLectotype.IsEnableParagraph,
};
viewModel.SelectedLines = selectedLines.Select(line => new LectotypeLineModel
{
CableLectotypeId = line.CableLectotypeId,
SeqNo = line.SeqNo,
AxisNo = line.AxisNo,
CableConnectionClass = line.CableConnectionClass,
CableType = line.CableType,
IsFlexibility = line.IsFlexibility,
Motor = viewModel.Motor,
PowerLineLength = line.PowerLineLength,
EncoderLineLength = line.EncoderLineLength,
DrawingNo = line.DrawingNo,
CableModelNo = line.CableModelNo,
LineCount = line.LineCount,
CurrentLine = line.CurrentLine,
IsLectotype = line.IsLectotype,
CableModel = line.CableModel,
IsChecked = line.IsChecked,
SubLines = GetSubLines(line.LectotypeLineId)
}).OrderBy(it => it.CurrentLine).ToList();
return viewModel;
}
// 获取子线数据
private List<LectotypeLineModel> GetSubLines(string parentLineId)
{
var subLines = DBHelper.DB.Queryable<LectotypeLine>()
.Where(sl => sl.ParentLectotypeLineId == parentLineId)
.ToList();
return subLines.Select(subLine => new LectotypeLineModel
{
SeqNo = subLine.SeqNo,
CableModel = subLine.CableModel,
CableType = subLine.CableType,
IsChecked = subLine.IsChecked
}).ToList();
}
public bool SaveMotorLectotypeData(string motorOccId, CableLectotypeViewModel data)
{
var db = DBHelper.DB;
db.BeginTran();
try
{
var motor = GetMotorById(data.Motor.OccPartId);//.FirstOrDefault(m => m.OccPartId == Motor.OccPartId);
if (motor == null)
{
motor = new Motor
{
//MotorId = Guid.NewGuid().ToString(),
//motorOccId
MotorPower = data.Motor.MotorPower,
Brand = data.Motor.Brand,
MotorSerie = data.Motor.MotorSerie,
MotorModelStr = data.Motor.MotorModelStr,
AxisNo = data.Motor.AxisNo,
OccPartId = data.Motor.OccPartId,
CableLectotypeLines = []
};
AddMotor(motor);
}
else
{
motor.CableLectotypeLines = [];
}
// 创建 CableLectotype
var cableLectotype = new CableLectotype
{
//Motor = motor,
CableLectotypeId = Guid.NewGuid().ToString(),
MotorId = motor.OccPartId,
CableConnectionType = (int)data.CableConnectionType,
AxisNo = data.AxisNo,
CableType = data.CableType,
EncoderLineParagraph = data.EncoderLineParagraph,
PowerLineParagraph = data.PowerLineParagraph,
CableModelStr = data.CableModelStr,
IsEnableParagraph = data.IsEnableParagraph,
SelectedLines = []
};
// 添加 SelectedLines
foreach (var line in data.SelectedLines)
{
var lectotypeLine = new LectotypeLine
{
CableLectotypeId = cableLectotype.CableLectotypeId,
MotorId = motor.OccPartId,
LectotypeLineId = Guid.NewGuid().ToString(),
SeqNo = line.SeqNo,
AxisNo = line.AxisNo,
CableConnectionClass = line.CableConnectionClass,
CableType = line.CableType,
IsFlexibility = line.IsFlexibility,
PowerLineLength = line.PowerLineLength,
EncoderLineLength = line.EncoderLineLength,
DrawingNo = line.DrawingNo,
CableModelNo = line.CableModelNo,
LineCount = line.LineCount,
CurrentLine = line.CurrentLine,
IsLectotype = line.IsLectotype,
CableModel = line.CableModel,
IsChecked = line.IsChecked,
SubLines = []
};
// 添加 SubLines
if (line.SubLines != null)
{
foreach (var subLine in line.SubLines)
{
var subLectotypeLine = new LectotypeLine
{
LectotypeLineId = Guid.NewGuid().ToString(),
MotorId = motor.OccPartId,
SeqNo = subLine.SeqNo,
ParentLectotypeLineId = lectotypeLine.LectotypeLineId,
CableModel = subLine.CableModel,
CableType = subLine.CableType,
IsChecked = subLine.IsChecked
};
lectotypeLine.SubLines.Add(subLectotypeLine);
}
}
motor.CableLectotypeLines.Add(lectotypeLine);
}
db.Storageable(motor).ExecuteCommand();
// 清空后再保存
db.Deleteable<CableLectotype>().Where(it => it.MotorId == motor.OccPartId).ExecuteCommand();
db.Storageable(cableLectotype).ExecuteCommand();
db.Deleteable<LectotypeLine>().Where(it => it.MotorId == motor.OccPartId).ExecuteCommand();
db.Storageable(motor.CableLectotypeLines.ToList()).ExecuteCommand();
db.Storageable(motor.CableLectotypeLines.SelectMany(it => it.SubLines).ToList()).ExecuteCommand();
db.CommitTran();
return true;
}
catch (Exception)
{
db.RollbackTran();
return false;
}
}
}
}