using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_ISystemRepository;
|
using WIDESEA_ISystemService;
|
using WIDESEA_Model.Models.System;
|
|
namespace WIDESEA_SystemService
|
{
|
public class Sys_VehiService : ServiceBase<Sys_Vehi, ISys_VehiRepository>, ISys_VehiService
|
{
|
public ISys_TraycodeinfoRepository _sys_Traycodeinfo;
|
|
public ISys_VehicleRepository _VehicleRepository;
|
|
ISys_TraycodeinfoRepository ISys_VehiService._sys_Traycodeinfo => _sys_Traycodeinfo;
|
ISys_VehicleRepository ISys_VehiService.sys_Vehicle => _VehicleRepository;
|
|
public Sys_VehiService(ISys_VehiRepository BaseDal, ISys_TraycodeinfoRepository _Traycodeinfo, ISys_VehicleRepository sys_Vehicle) : base(BaseDal)
|
{
|
_sys_Traycodeinfo = _Traycodeinfo;
|
_VehicleRepository= sys_Vehicle;
|
}
|
|
public ISys_VehiRepository Repository => BaseDal;
|
|
|
public WebResponseContent GetCachedata(string PalletCode)
|
{
|
try
|
{
|
string typeid = _sys_Traycodeinfo.QueryFirst(x => x.traycode_code == PalletCode)?.traycode_type;
|
|
if (typeid != null)
|
{
|
// 获取 Vehicletraycoid 和对应的计数
|
var traycode_counts_with_count = BaseDal.QueryData(x => x.Vehicletraycoid == typeid)
|
.GroupBy(x => x.Vehiclerpall)
|
.Select(g => new { Vehicletraycoid = g.Key, Count = g.Count() })
|
.ToList();
|
|
// 获取 Vehicletraycoid 值的列表
|
var vehicletraycoids = traycode_counts_with_count.Select(x => x.Vehicletraycoid).ToList();
|
|
// 使用 Contains 来过滤 _VehicleRepository 中的数据
|
var typedata = _VehicleRepository.QueryData(x => vehicletraycoids.Contains(x.Vehicleid.ToString()))
|
.ToList();
|
|
if (typedata != null)
|
{
|
return WebResponseContent.Instance.OK(data: typedata);
|
}
|
else
|
{
|
return WebResponseContent.Instance.OK(data: null);
|
}
|
|
}
|
return WebResponseContent.Instance.OK(data: null);
|
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.OK(data: null);
|
throw;
|
}
|
|
}
|
public WebResponseContent GetCacheList(string traycode_code,string barcode)
|
{
|
try
|
{
|
if(traycode_code != null)
|
{
|
string typeid = _sys_Traycodeinfo.QueryFirst(x => x.traycode_code.Contains(barcode))?.traycode_type;
|
List<string> traycode_materiel = BaseDal.QueryData(x => x.Vehicletraycoid == typeid && x.Vehiclerpall== traycode_code).Select(x => x.Vehi_name).ToList();
|
if (traycode_materiel != null)
|
{
|
return WebResponseContent.Instance.OK(data: traycode_materiel);
|
}
|
else
|
{
|
return WebResponseContent.Instance.Error($"未找到对应的数据,查找的字段:{typeid},类型{traycode_code}");
|
}
|
}
|
return WebResponseContent.Instance.Error("traycode_code为空");
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error(ex.Message);
|
throw;
|
}
|
|
}
|
|
|
public WebResponseContent GetdataLis(string vehiclerpall)
|
{
|
try
|
{
|
if(vehiclerpall != null)
|
{
|
List<string> traycode_materiel = BaseDal.QueryData(x => x.Vehiclerpall == vehiclerpall).Select(x => x.Vehi_name).Distinct().ToList();
|
if (traycode_materiel != null)
|
{
|
return WebResponseContent.Instance.OK(data: traycode_materiel);
|
}
|
else
|
{
|
return WebResponseContent.Instance.OK(data: null);
|
}
|
}
|
return WebResponseContent.Instance.OK(data: null);
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.OK(data: null);
|
throw;
|
}
|
|
}
|
|
|
/// <summary>
|
/// 添加数据
|
/// </summary>
|
/// <param name="saveModel"></param>
|
/// <returns></returns>
|
public virtual WebResponseContent AddData(SaveModel saveModel)
|
{
|
try
|
{
|
if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//判断参数是否传入
|
{
|
return WebResponseContent.Instance.Error("传参错误,参数不能为空");
|
}
|
string validResult = typeof(Sys_Vehi).ValidateDicInEntity(saveModel.MainData, true, TProperties);
|
|
if (!string.IsNullOrEmpty(validResult))
|
{
|
return WebResponseContent.Instance.Error(validResult);
|
}
|
|
PropertyInfo keyPro = typeof(Sys_Vehi).GetKeyProperty();
|
if (keyPro == null)
|
{
|
return WebResponseContent.Instance.Error("请先设置主键");
|
}
|
if (keyPro.PropertyType == typeof(Guid))
|
{
|
saveModel.MainData.Add(keyPro.Name, Guid.NewGuid());
|
}
|
else if (keyPro.PropertyType == typeof(int) || keyPro.PropertyType == typeof(long))
|
{
|
SugarColumn? sugarColumn = keyPro.GetCustomAttribute<SugarColumn>();
|
if (sugarColumn?.IsIdentity ?? true)
|
{
|
saveModel.MainData.Remove(keyPro.Name.FirstLetterToUpper());
|
saveModel.MainData.Remove(keyPro.Name.FirstLetterToLower());
|
}
|
}
|
Sys_Vehi entity = saveModel.MainData.DicToModel<Sys_Vehi>();
|
|
List<Sys_Vehi> sys_Vehis = BaseDal.QueryData(x => x.Vehi_name == entity.Vehi_name && x.Vehicletraycoid == entity.Vehicletraycoid && x.Vehiclerpall == entity.Vehiclerpall).ToList();
|
if (sys_Vehis.Count > 0)
|
{
|
return WebResponseContent.Instance.Error("已添加该部件名称,不可再添加相同的!!!");
|
}
|
|
if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
|
{
|
BaseDal.AddData(entity);
|
return WebResponseContent.Instance.OK();
|
}
|
|
if (typeof(Sys_Vehi).GetNavigatePro() == null)
|
{
|
return WebResponseContent.Instance.Error("未配置导航属性");
|
}
|
|
Type detailType = typeof(Sys_Vehi).GetDetailType();
|
MethodInfo? methodInfo = GetType().GetMethod("AddDataIncludesDetail");
|
methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
|
object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData });
|
return obj as WebResponseContent;
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
}
|
}
|