using FLY.Thick.Blowing.IService; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FLY.Thick.Blowing.Server.Model { /// <summary> /// 厚度记录 /// </summary> public class Lc_ScanData { public Int64 ID { get; set; } /// <summary> /// 测量数据开始时间 /// </summary> public DateTime Time { get; set; } /// <summary> /// 测量数据结束时间 /// </summary> public DateTime EndTime { get; set; } /// <summary> /// 旋转方向 是反向 /// </summary> public bool IsBackw { get; set; } /// <summary> /// 旋转1周的时间 /// </summary> public TimeSpan RPeriod { get; set; } /// <summary> /// 旋转次数 /// </summary> public int RCnt { get; set; } /// <summary> /// 复位区号 /// </summary> public int OrgBoltNo { get; set; } /// <summary> /// 旋转角度 ° /// </summary> public double RAngle { get; set; } /// <summary> /// 膜距离 m /// </summary> public double FilmLength { get; set; } /// <summary> /// 线速度 /// </summary> public double FilmVelocity { get; set; } /// <summary> /// 斜率补偿 /// </summary> public double K { get; set; } /// <summary> /// 1幅数据 /// </summary> public double[] Thicks { get; set; } /// <summary> /// 分区表 /// </summary> public List<BoltMapCell> Boltmap { get; set; } } /// <summary> /// 纵向厚度记录 /// </summary> public class Lc_TrendData { public Int64 ID { get; set; } /// <summary> /// 测量数据开始时间 /// </summary> public DateTime Time { get; set; } /// <summary> /// 斜率补偿 /// </summary> public double K { get; set; } /// <summary> /// 纵向厚度 double[] /// 追边时,1分钟1次,1秒一个数据,60个数据 /// 扫描时,一趟1次,分为螺丝总数/2 个数据 /// </summary> public double[] Thicks { get; set; } } /// <summary> /// LC 与 DB 类的映射关系, 会在程序入口处, 手动使用 /// var assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); /// var cfg = new MapperConfigurationExpression(); /// cfg.AddMaps(assemblies); /// Mapper.Initialize(cfg); /// /// 枚举全部程序集 中的AutoMapper.Profile 全部加载!!! /// </summary> public class Lc_AutoMapperProfile : AutoMapper.Profile { public Lc_AutoMapperProfile() { CreateMap<Lc_ScanData, Db_ScanData>() .ForMember(s => s.RPeriod, opt => { opt.MapFrom(s => s.RPeriod.TotalMinutes); }) .ForMember(s => s.Thicks, opt => { opt.MapFrom(s => Newtonsoft.Json.JsonConvert.SerializeObject(s.Thicks)); }) .ForMember(s => s.Boltmap, opt => { opt.MapFrom(s => Newtonsoft.Json.JsonConvert.SerializeObject(s.Boltmap)); }) .ReverseMap() .ForMember(s => s.RPeriod, opt => { opt.MapFrom(s => TimeSpan.FromMinutes(s.RPeriod)); }) .ForMember(s => s.Thicks, opt => { opt.MapFrom(s => Newtonsoft.Json.JsonConvert.DeserializeObject<double[]>(s.Thicks)); }) .ForMember(s => s.Boltmap, opt => { opt.MapFrom(s => Newtonsoft.Json.JsonConvert.DeserializeObject<List<BoltMapCell>>(s.Boltmap)); }); CreateMap<RenZiJiaDataEventArgs, Lc_ScanData>(); CreateMap<Lc_TrendData, Db_TrendData>() .ForMember(s => s.Thicks, opt => { opt.MapFrom(s => Newtonsoft.Json.JsonConvert.SerializeObject(s.Thicks)); }) .ReverseMap() .ForMember(s => s.Thicks, opt => { opt.MapFrom(s => Newtonsoft.Json.JsonConvert.DeserializeObject<double[]>(s.Thicks)); }) ; } double[] ToRealThicks(int[] frame) { return frame.Select(t => { if (Misc.MyBase.ISVALIDATA(t)) return t / 100.0; else return double.NaN; }).ToArray(); } } }