593 lines
21 KiB
C#
593 lines
21 KiB
C#
using Furion.DependencyInjection;
|
|
using Mapster;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using MiniExcelLibs;
|
|
using Nirvana.Common;
|
|
using Nirvana.Common.ApiBase;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using YBDevice.Entity;
|
|
using YBDevice.NApi.Application.UserInfo;
|
|
|
|
namespace YBDevice.NApi.Application.DeviceInfo
|
|
{
|
|
public class DeviceService : IDeviceService, ITransient
|
|
{
|
|
private readonly ISqlSugarRepository<YB_Device> repository;
|
|
private readonly SqlSugarClient dbClient;
|
|
private readonly IWebHostEnvironment _hostingEnvironment;
|
|
|
|
public DeviceService(ISqlSugarRepository<YB_Device> sqlSugarRepository, IWebHostEnvironment hostingEnvironment)
|
|
{
|
|
repository = sqlSugarRepository;
|
|
dbClient = repository.Context;
|
|
_hostingEnvironment = hostingEnvironment;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据扫码的设备列表导出EXCEL
|
|
/// </summary>
|
|
/// <param name="data"></param>
|
|
/// <returns></returns>
|
|
public async Task<ResultInfo> ExportExcelByScanListAsync(ScanListC2SDto data)
|
|
{
|
|
var list = data.Data.Split(',').ToList();
|
|
string savefolder = _hostingEnvironment.WebRootPath;
|
|
string rootname = $"/files/scan/download";
|
|
string filename = $"{data.Name}_{DateTime.Now.ToString("yyyyMMdd")}.csv";
|
|
string path = Path.Combine(savefolder + "/" + rootname, filename);
|
|
string virtualpath = $"{rootname}/{filename}";
|
|
if (!Directory.Exists(Path.GetDirectoryName(path)))
|
|
{
|
|
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
|
}
|
|
else
|
|
{
|
|
//检查文件是否存在
|
|
if (File.Exists(path))
|
|
{
|
|
return new ResultInfo(ResultState.SUCCESS, "success", virtualpath);
|
|
}
|
|
}
|
|
var savedata = list.Select(x => new { code = x }).ToList();
|
|
|
|
var config = new MiniExcelLibs.Csv.CsvConfiguration()
|
|
{
|
|
StreamReaderFunc = (stream) => new StreamReader(stream, Encoding.UTF8)
|
|
};
|
|
await MiniExcel.SaveAsAsync(path, savedata, excelType: ExcelType.CSV, configuration: config);
|
|
return new ResultInfo(ResultState.SUCCESS, "success", virtualpath);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取设备信息
|
|
/// </summary>
|
|
/// <param name="facecode">设备序列号</param>
|
|
/// <returns></returns>
|
|
public async Task<YB_Device> GetDeviceAsync(string facecode)
|
|
{
|
|
var equ = await dbClient.Queryable<YB_Device>().FirstAsync(x => x.FacCode == facecode);
|
|
//如果设备类型是53或者54,则使用默认设备
|
|
if(equ !=null && (equ.Type == 53 || equ.Type == 54))
|
|
{
|
|
equ = equ.Type == 53? await dbClient.Queryable<YB_Device>().FirstAsync(x => x.Id == 29107): await dbClient.Queryable<YB_Device>().FirstAsync(x => x.Id == 29108);
|
|
}
|
|
return equ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取设备信息
|
|
/// </summary>
|
|
/// <param name="ecode">设备机器码</param>
|
|
/// <returns></returns>
|
|
public async Task<YB_Device> GetDeviceByEcodeAsync(string ecode)
|
|
{
|
|
return await dbClient.Queryable<YB_Device>().FirstAsync(x => x.Ecode == ecode);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取设备
|
|
/// </summary>
|
|
/// <param name="ecode"></param>
|
|
/// <returns></returns>
|
|
public async Task<DeviceAndTypeModel> GetEquAsync(string ecode)
|
|
{
|
|
var data = await dbClient.Queryable<YB_Device>().FirstAsync(x => x.Ecode == ecode);
|
|
var types = await dbClient.Queryable<YB_DeviceType>().ToListAsync();
|
|
return new DeviceAndTypeModel
|
|
{
|
|
equ = data,
|
|
types = types
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<List<YB_Device>> GetListAsync()
|
|
{
|
|
return await dbClient.Queryable<YB_Device>().ToListAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据设备确定要使用的公众号或者小程序
|
|
/// </summary>
|
|
/// <param name="data"></param>
|
|
/// <returns></returns>
|
|
public async Task<string> GetOfficeByDeviceAsync(YB_Device data)
|
|
{
|
|
var devicetype = await dbClient.Queryable<YB_DeviceType>().FirstAsync(x => x.Code == data.Type);
|
|
if (devicetype.VerType == DeviceVerType.Base)
|
|
{
|
|
return "gh_e2e73d281def"; //每日一称
|
|
}
|
|
return "gh_5efb6d7330a5";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取设备类型列表
|
|
/// </summary>
|
|
///<param name="appid">小程序appid</param >
|
|
/// <returns></returns>
|
|
public async Task<ResultInfo> GetTypeListAsync(string appid)
|
|
{
|
|
var newlist = new List<YB_DeviceTypeExt>();
|
|
var AppData = await dbClient.Queryable<YB_DeviceTypeApp>().Where(x => x.Status == StatusType.Enabled && x.AppId == appid).FirstAsync();
|
|
if (AppData != null)
|
|
{
|
|
var ids = AppData.DevType.Split(",").ToList();
|
|
var types = await dbClient.Queryable<YB_DeviceType>().ToListAsync();
|
|
// var InIds = new List<string>();
|
|
types.ForEach(x =>
|
|
{
|
|
//List<string> newids = x.Content.Split(",").ToList();
|
|
//bool IsExist = false;
|
|
//for (var i = 0; i < InIds.Count; i++)
|
|
//{
|
|
// if (newids.Contains(InIds[i]))
|
|
// {
|
|
// IsExist = true;
|
|
// break;
|
|
// }
|
|
//}
|
|
if (ids.Contains($"{x.Code}")
|
|
// && !IsExist
|
|
)
|
|
{
|
|
newlist.Add(new YB_DeviceTypeExt
|
|
{
|
|
Name = x.ExtName,
|
|
HeadImg = x.HeadImg,
|
|
Id = x.Code == 911 ? 11 : x.Code
|
|
});
|
|
// InIds.Add($"{x.Code}");
|
|
}
|
|
});
|
|
}
|
|
var returnlist = newlist.Adapt<List<UserDevTypeS2CDto>>();
|
|
return new ResultInfo(ResultState.SUCCESS, "success", returnlist);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设备注册
|
|
/// </summary>
|
|
/// <param name="yB_Device">设备资料</param>
|
|
/// <returns></returns>
|
|
public async Task<ResultInfo> RegAsync(YB_Device yB_Device)
|
|
{
|
|
yB_Device.Ecode = yB_Device.Ecode.ToStr();
|
|
yB_Device.FacCode = yB_Device.FacCode.ToStr();
|
|
if (await dbClient.Queryable<YB_Device>().AnyAsync(x => x.Ecode == yB_Device.Ecode))
|
|
{
|
|
return new ResultInfo(ResultState.FAIL, "此机器码已存在");
|
|
}
|
|
if (await dbClient.Queryable<YB_Device>().AnyAsync(x => x.FacCode == yB_Device.FacCode))
|
|
{
|
|
return new ResultInfo(ResultState.FAIL, "此序列号已存在");
|
|
}
|
|
//注册设备
|
|
yB_Device.Name = yB_Device.FacCode;
|
|
yB_Device.BusinessId = 0;
|
|
yB_Device.Status = DeviceStatus.UnActive;
|
|
yB_Device.Remark = string.Empty;
|
|
yB_Device.CreateTime = DateTime.Now;
|
|
await dbClient.Insertable(yB_Device).ExecuteCommandAsync();
|
|
return new ResultInfo(ResultState.SUCCESS, "注册成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// YB_Result迁移到YB_nResult
|
|
/// </summary>
|
|
public void Result2NewResult()
|
|
{
|
|
//获取所有的YB_ResultExt,YB_Measure,YB_BodyMeasure
|
|
|
|
//var starttime = DateTime.Parse("2021-09-06 07:37:01");
|
|
//var list = dbClient.Queryable<YB_ResultExt, YB_Measure, YB_BodyMeasure>((r, m, s) => new JoinQueryInfos(
|
|
// JoinType.Left, r.ResultId == m.ResultId,
|
|
// JoinType.Left, m.ResultId == s.ResultId
|
|
// ))
|
|
// .Where((r, m, s) => r.CreateTime > starttime)
|
|
// .Select((r, m,s) => new ttt
|
|
// {
|
|
// Id=r.Id,
|
|
// ResultId = r.ResultId,
|
|
// sfr = m.sfr,
|
|
// Sex=m.Sex,
|
|
// SfrVal=s.SfrVal,
|
|
// SkeletalMuscle=s.SkeletalMuscle,
|
|
// SourceType=r.SourceType,
|
|
// TakeStatus=1,
|
|
// Age=m.Age,
|
|
// bmi=m.bmi,
|
|
// cmi=m.cmi,
|
|
// body=m.body,
|
|
// bodyage=m.bodyage,
|
|
// BodyFat=s.BodyFat,
|
|
// BodyFatVal=s.BodyFatVal,
|
|
// BodyMuscle=s.BodyMuscle,
|
|
// BodyMuscleVal=s.BodyMuscleVal,
|
|
// bone=m.bone,
|
|
// BusinessId=r.BusinessId,
|
|
// createtime=r.CreateTime,
|
|
// CreateTime=r.CreateTime,
|
|
// Ecode=r.Ecode,
|
|
// EquId=r.EquId,
|
|
// FacEcode=r.FacEcode,
|
|
// FamilyId=m.FamilyId,
|
|
// FansId=r.FansId,
|
|
// fatlevel=m.fatlevel,
|
|
// fat_r=m.fat_r,
|
|
// fat_w=m.fat_w,
|
|
// Height=m.Height,
|
|
// IdealWeight=s.IdealWeight,
|
|
// Imp=r.Imp,
|
|
// kcal=m.kcal,
|
|
// lbm=m.lbm,
|
|
// LeftFootFat=s.LeftFootFat,
|
|
// LeftFootFatVal=s.LeftFootFatVal,
|
|
// LeftFootMuscle=s.LeftFootMuscle,
|
|
// LeftFootMuscleVal=s.LeftFootMuscleVal,
|
|
// LeftHandFat=s.LeftHandFat,
|
|
// LeftHandFatVal=s.LeftHandFatVal,
|
|
// LeftHandMuscle=s.LeftHandMuscle,
|
|
// LeftHandMuscleVal=s.LeftHandMuscleVal,
|
|
// LevelJson=s.LevelJson,
|
|
// Month=m.Month,
|
|
// muscle=m.muscle,
|
|
// muscleval=m.muscleval,
|
|
// OrderId=r.OrderId,
|
|
// protein=m.protein,
|
|
// proteinval=m.proteinval,
|
|
// PublicId=r.PublicId,
|
|
// RightFootFat=s.RightFootFat,
|
|
// RightFootFatVal=s.RightFootFatVal,
|
|
// RightFootMuscle=s.RightFootMuscle,
|
|
// RightFootMuscleVal=s.RightFootMuscleVal,
|
|
// RightHandFat=s.RightHandFat,
|
|
// RightHandFatVal=s.RightHandFatVal,
|
|
// RightHandMuscle=s.RightHandMuscle,
|
|
// RightHandMuscleVal=s.RightHandMuscleVal,
|
|
// UserId=r.UserId,
|
|
// visceral= m.visceral,
|
|
// water = m.water,
|
|
// Weight = m.Weight
|
|
// })
|
|
// .ToList();
|
|
//List<YB_nResult> rlist = new List<YB_nResult>();
|
|
//List<YB_nMeasureResult> mlist = new List<YB_nMeasureResult>();
|
|
//List<YB_nUserResult> ulist = new List<YB_nUserResult>();
|
|
//List<YB_nResultAdd> alist = new List<YB_nResultAdd>();
|
|
//list.ForEach(x => {
|
|
// //添加yb_nresult
|
|
// var equ = dbClient.Queryable<YB_Device>().First(e => e.Id == x.EquId);
|
|
// var ybresult = new YB_nResult
|
|
// {
|
|
// Id = IDGen.NextID(),
|
|
// SourceType = x.SourceType,
|
|
// BusinessId = x.BusinessId,
|
|
// CreateTime = x.CreateTime,
|
|
// DevType = equ !=null?equ.Type:1,
|
|
// EquId = x.EquId,
|
|
// Height = x.Height,
|
|
// Imp = x.Imp,
|
|
// LeftArmImp = 0,
|
|
// LeftLegImp =0,
|
|
// RightArmImp = 0,
|
|
// RightLegImp =0,
|
|
// Weight = x.Weight
|
|
// };
|
|
// rlist.Add(ybresult);
|
|
// //添加yb_nmeasureresult
|
|
// var measureresult = new YB_nMeasureResult {
|
|
// Id = ybresult.Id,
|
|
// DevType = ybresult.DevType,
|
|
// sfr = x.sfr,
|
|
// Sex = x.Sex,
|
|
// SfrVal =x.SfrVal,
|
|
// SkeletalMuscle = x.SkeletalMuscle,
|
|
// Age = x.Age,
|
|
// bmi = x.bmi,
|
|
// body = x.body.ToStr(),
|
|
// bodyage = x.bodyage,
|
|
// BodyFat = x.BodyFat,
|
|
// BodyFatVal = x.BodyFatVal,
|
|
// BodyMuscle =x.BodyMuscle,
|
|
// BodyMuscleVal =x.BodyMuscleVal,
|
|
// bone = x.bone,
|
|
// cmi = x.cmi,
|
|
// createtime = x.createtime,
|
|
// fatlevel = x.fatlevel.ToStr(),
|
|
// fat_r = x.fat_r,
|
|
// fat_w = x.fat_w,
|
|
// Height = x.Height,
|
|
// IdealWeight = x.IdealWeight,
|
|
// kcal = x.kcal,
|
|
// lbm = x.lbm,
|
|
// LeftFootFat =x.LeftFootFat,
|
|
// LeftFootFatVal = x.LeftFootFatVal,
|
|
// LeftFootMuscle = x.LeftFootMuscle,
|
|
// LeftFootMuscleVal =x.LeftFootMuscleVal,
|
|
// LeftHandFat =x.LeftHandFat,
|
|
// LeftHandFatVal =x.LeftHandFatVal,
|
|
// LeftHandMuscle = x.LeftHandMuscle,
|
|
// LeftHandMuscleVal = x.LeftHandMuscleVal,
|
|
// Month = x.Month,
|
|
// muscle = x.muscle,
|
|
// muscleval = x.muscleval,
|
|
// protein = x.protein,
|
|
// proteinval = x.proteinval,
|
|
// RightFootFat = x.RightFootFat,
|
|
// RightFootFatVal = x.RightFootFatVal,
|
|
// RightFootMuscle = x.RightFootMuscle,
|
|
// RightFootMuscleVal = x.RightFootMuscleVal,
|
|
// RightHandFat = x.RightHandFat,
|
|
// RightHandFatVal = x.RightHandFatVal,
|
|
// RightHandMuscle = x.RightHandMuscle,
|
|
// RightHandMuscleVal = x.RightHandMuscleVal,
|
|
// visceral = x.visceral,
|
|
// water = x.water,
|
|
// Weight = x.Weight
|
|
// };
|
|
// mlist.Add(measureresult);
|
|
// //添加yb_nuserreasult
|
|
// var userresult = new YB_nUserResult {
|
|
// CreateTime = x.CreateTime,
|
|
// DevType = ybresult.DevType,
|
|
// FamilyId = x.FamilyId,
|
|
// FansId = !string.IsNullOrEmpty(x.FansId)?Guid.Parse(x.FansId):null,
|
|
// Id = ybresult.Id,
|
|
// UserId = x.UserId
|
|
// };
|
|
// ulist.Add(userresult);
|
|
//});
|
|
//if (rlist.Count > 0)
|
|
//{
|
|
// dbClient.Insertable(rlist).ExecuteCommand();
|
|
//}
|
|
//if (mlist.Count > 0)
|
|
//{
|
|
// dbClient.Insertable(mlist).ExecuteCommand();
|
|
//}
|
|
//if (ulist.Count > 0)
|
|
//{
|
|
// dbClient.Insertable(ulist).ExecuteCommand();
|
|
//}
|
|
}
|
|
|
|
//public class ttt:YB_Measure
|
|
//{
|
|
// /// <summary>
|
|
// /// 躯干肌肉率
|
|
// /// </summary>
|
|
// public System.Decimal BodyMuscle { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左脚肌肉率 ///
|
|
// </summary>
|
|
// public System.Decimal LeftFootMuscle { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右脚肌肉率 ///
|
|
// </summary>
|
|
// public System.Decimal RightFootMuscle { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左手肌肉率 ///
|
|
// </summary>
|
|
// public System.Decimal LeftHandMuscle { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右手肌肉率 ///
|
|
// </summary>
|
|
// public System.Decimal RightHandMuscle { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 躯干脂肪率 ///
|
|
// </summary>
|
|
// public System.Decimal BodyFat { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左脚脂肪率 ///
|
|
// </summary>
|
|
// public System.Decimal LeftFootFat { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右脚脂肪率 ///
|
|
// </summary>
|
|
// public System.Decimal RightFootFat { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左手脂肪率 ///
|
|
// </summary>
|
|
// public System.Decimal LeftHandFat { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右手脂肪率 ///
|
|
// </summary>
|
|
// public System.Decimal RightHandFat { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 躯干肌肉量 ///
|
|
// </summary>
|
|
// public System.Decimal BodyMuscleVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左脚肌肉量 ///
|
|
// </summary>
|
|
// public System.Decimal LeftFootMuscleVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右脚肌肉量 ///
|
|
// </summary>
|
|
// public System.Decimal RightFootMuscleVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左手肌肉量 ///
|
|
// </summary>
|
|
// public System.Decimal LeftHandMuscleVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右手肌肉量 ///
|
|
// </summary>
|
|
// public System.Decimal RightHandMuscleVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 躯干脂肪量 ///
|
|
// </summary>
|
|
// public System.Decimal BodyFatVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左脚脂肪量 ///
|
|
// </summary>
|
|
// public System.Decimal LeftFootFatVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右脚脂肪量 ///
|
|
// </summary>
|
|
// public System.Decimal RightFootFatVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 左手脂肪量 ///
|
|
// </summary>
|
|
// public System.Decimal LeftHandFatVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 右手脂肪量 ///
|
|
// </summary>
|
|
// public System.Decimal RightHandFatVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 皮下脂肪量,kg ///
|
|
// </summary>
|
|
// public System.Decimal SfrVal { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 理想体重 ///
|
|
// </summary>
|
|
// public System.Decimal IdealWeight { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 骨骼肌量,kg ///
|
|
// </summary>
|
|
// public System.Decimal SkeletalMuscle { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 等级标准 ///
|
|
// </summary>
|
|
// public System.String LevelJson { get; set; } ///
|
|
// <summary>
|
|
// /// 阻抗值 ///
|
|
// </summary>
|
|
// public System.Decimal Imp { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 设备ID ///
|
|
// </summary>
|
|
// public System.Int32 EquId { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 设备机器码 ///
|
|
// </summary>
|
|
// public System.String Ecode { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 设备序列号 ///
|
|
// </summary>
|
|
// public System.String FacEcode { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 来源,1-蓝牙传输,2-手动记录,3-扫码记录 ///
|
|
// </summary>
|
|
// public System.Int32 SourceType { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 使用的订单ID ///
|
|
// </summary>
|
|
// public System.Guid OrderId { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 所属的公众号/小程序 ///
|
|
// </summary>
|
|
// public System.String PublicId { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 扫码时使用的用户唯一标识 ///
|
|
// </summary>
|
|
// public System.String FansId { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 用户ID ///
|
|
// </summary>
|
|
// public System.Int32 UserId { get; set; }
|
|
|
|
// ///
|
|
// <summary>
|
|
// /// 客户ID ///
|
|
// </summary>
|
|
// public System.Int32 BusinessId { get; set; }
|
|
|
|
// /// <summary>
|
|
// /// 创建时间
|
|
// /// </summary>
|
|
// public System.DateTime CreateTime { get; set; }
|
|
//}
|
|
}
|
|
} |