276 lines
10 KiB
C#
276 lines
10 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|||
|
|
using Nirvana.Common;
|
|||
|
|
using YBDevice.Application;
|
|||
|
|
using YBDevice.Entity;
|
|||
|
|
|
|||
|
|
namespace YBDevice.NWeb.Pages.Result
|
|||
|
|
{
|
|||
|
|
public class PrintModel : BaseModel
|
|||
|
|
{
|
|||
|
|
private readonly IResultService _resultService;
|
|||
|
|
public UserMeasureDetailDto data = new UserMeasureDetailDto();
|
|||
|
|
public List<string> weightlist = new List<string>();
|
|||
|
|
public List<decimal> musclevallist = new List<decimal>();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
|
public List<decimal> musclelist = new List<decimal>();
|
|||
|
|
public List<decimal> fat_rlist = new List<decimal>();
|
|||
|
|
public List<decimal> fat_wlist = new List<decimal>();
|
|||
|
|
public List<decimal> waterlist = new List<decimal>();
|
|||
|
|
public List<decimal> skeletalmusclelist = new List<decimal>();
|
|||
|
|
public List<decimal> bonelist = new List<decimal>();
|
|||
|
|
public List<decimal> bmilist = new List<decimal>();
|
|||
|
|
public List<decimal> sfrlist = new List<decimal>();
|
|||
|
|
public List<decimal> sfrvallist = new List<decimal>();
|
|||
|
|
public List<decimal> viscerallist = new List<decimal>();
|
|||
|
|
|
|||
|
|
|
|||
|
|
public decimal weight_pro = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٷֱ<D9B7>
|
|||
|
|
public decimal muscleval_pro = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٷֱ<D9B7>
|
|||
|
|
public decimal muscle_pro = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٷֱ<D9B7>
|
|||
|
|
public decimal fat_r_pro = 1;//֬<><D6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public decimal fat_w_pro = 1;//֬<><D6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public decimal water_pro = 1;//ˮ<><CBAE><EFBFBD><EFBFBD>
|
|||
|
|
public decimal skeletalmuscle_pro = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public decimal bone_pro = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public decimal bmi_pro = 1;//BMI<4D><49>
|
|||
|
|
public decimal sfr_pro = 1;//Ƥ<><C6A4>֬<EFBFBD><D6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public decimal sfrval_pro = 1;//Ƥ<><C6A4>֬<EFBFBD><D6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public decimal visceral_pro = 1;//<2F><>֬<EFBFBD><D6AC>
|
|||
|
|
|
|||
|
|
public string musclevalscope = "-";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|||
|
|
public string musclescope = "-";//<2F><><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Χ
|
|||
|
|
public string fat_rscope = "-";//֬<><D6AC><EFBFBD>ʷ<EFBFBD>Χ
|
|||
|
|
public string fat_wscope = "-";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|||
|
|
public string waterscope = "-";//ˮ<>ַ<EFBFBD>Χ
|
|||
|
|
public string skescope = "-";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|||
|
|
public string bonescope = "-";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|||
|
|
public string bmiscope = "-";//bmi<6D><69>Χ
|
|||
|
|
public string sfrscope = "-";//Ƥ<><C6A4>֬<EFBFBD><D6AC><EFBFBD>ʷ<EFBFBD>Χ
|
|||
|
|
public string sfrvalscope = "-";//Ƥ<><C6A4>֬<EFBFBD><D6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|||
|
|
public string visceralscope = "-";//<2F><>֬<EFBFBD><D6AC>Χ
|
|||
|
|
public PrintModel(IResultService resultService)
|
|||
|
|
{
|
|||
|
|
_resultService = resultService;
|
|||
|
|
}
|
|||
|
|
public async Task OnGetAsync(Guid? id = null)
|
|||
|
|
{
|
|||
|
|
data = await _resultService.GetDetailAsync(id.Value);
|
|||
|
|
if (data != null)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
var maxweight = data.idealweight;
|
|||
|
|
decimal sweight = data.idealweight / 2;
|
|||
|
|
if (data.weight > data.idealweight)
|
|||
|
|
{
|
|||
|
|
maxweight = data.idealweight - 2 * sweight <= 0 ? data.weight : data.idealweight - 2 * sweight;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
maxweight = data.idealweight + 3 * sweight;
|
|||
|
|
}
|
|||
|
|
weight_pro = CalcProgress(data.weight, maxweight);
|
|||
|
|
muscleval_pro = CalcProgress(data.muscleval, data.values.muscleval_value);
|
|||
|
|
muscle_pro = CalcProgress(data.muscle, data.values.muscle_value);
|
|||
|
|
fat_r_pro = CalcProgress(data.fat_r, data.values.fa_r_value);
|
|||
|
|
fat_w_pro = CalcProgress(data.fat_w, data.values.fat_w_value);
|
|||
|
|
water_pro = CalcProgress(data.water, data.values.water_value);
|
|||
|
|
bone_pro = CalcProgress(data.bone, data.values.bone_value);
|
|||
|
|
bmi_pro = CalcProgress(data.bmi, data.values.bmi_value);
|
|||
|
|
sfr_pro = CalcProgress(data.sfr, data.values.sfr_value);
|
|||
|
|
sfrval_pro = CalcProgress(data.sfrval, data.values.sfrval_value);
|
|||
|
|
skeletalmuscle_pro = CalcProgress(data.SkeletalMuscle, data.values.skeletalmusclekg_value);
|
|||
|
|
visceral_pro = CalcProgress(data.visceral, data.values.visceral_value);
|
|||
|
|
|
|||
|
|
musclevallist = GetProcessList(data.values.muscleval_value);
|
|||
|
|
musclelist = GetProcessList(data.values.muscle_value);
|
|||
|
|
fat_rlist = GetProcessList(data.values.fa_r_value);
|
|||
|
|
fat_wlist = GetProcessList(data.values.fat_w_value);
|
|||
|
|
waterlist = GetProcessList(data.values.water_value);
|
|||
|
|
bonelist = GetProcessList(data.values.bone_value);
|
|||
|
|
bmilist = GetProcessList(data.values.bmi_value);
|
|||
|
|
sfrlist = GetProcessList(data.values.sfr_value);
|
|||
|
|
sfrvallist = GetProcessList(data.values.sfrval_value);
|
|||
|
|
viscerallist = GetProcessList(data.values.visceral_value);
|
|||
|
|
skeletalmusclelist = GetProcessList(data.values.skeletalmusclekg_value);
|
|||
|
|
|
|||
|
|
musclevalscope = StandVal(data.values.muscleval_value);
|
|||
|
|
musclescope = StandVal(data.values.muscle_value);
|
|||
|
|
fat_rscope = StandVal(data.values.fa_r_value);
|
|||
|
|
fat_wscope = StandVal(data.values.fat_w_value);
|
|||
|
|
waterscope = StandVal(data.values.water_value);
|
|||
|
|
bonescope = StandVal(data.values.bone_value);
|
|||
|
|
bmiscope = StandVal(data.values.bmi_value);
|
|||
|
|
sfrscope = StandVal(data.values.sfr_value);
|
|||
|
|
sfrvalscope = StandVal(data.values.sfrval_value);
|
|||
|
|
visceralscope = StandVal(data.values.visceral_value);
|
|||
|
|
skescope = StandVal(data.values.skeletalmusclekg_value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ȷֶ<C8B7><D6B6>б<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="list"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private List<decimal> GetProcessList(List<MeasureInfoItemValue> list)
|
|||
|
|
{
|
|||
|
|
List<decimal> lists = new List<decimal>();
|
|||
|
|
if (list.Count == 4)
|
|||
|
|
{
|
|||
|
|
foreach (var item in list)
|
|||
|
|
{
|
|||
|
|
var minval = item.minvalue.ToDecimal(1);
|
|||
|
|
var maxval = item.maxvalue.ToDecimal(1);
|
|||
|
|
var index = list.IndexOf(item);
|
|||
|
|
if (minval == 0)
|
|||
|
|
{
|
|||
|
|
minval = 1;
|
|||
|
|
}
|
|||
|
|
if (index == 0)
|
|||
|
|
{
|
|||
|
|
lists.Add(minval);
|
|||
|
|
}
|
|||
|
|
if (index == 1)
|
|||
|
|
{
|
|||
|
|
lists.Add(minval);
|
|||
|
|
lists.Add(maxval);
|
|||
|
|
}
|
|||
|
|
if (index == list.Count - 1)
|
|||
|
|
{
|
|||
|
|
lists.Add(maxval);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
foreach (var item in list)
|
|||
|
|
{
|
|||
|
|
var minval = item.minvalue.ToDecimal(1);
|
|||
|
|
if (minval == 0)
|
|||
|
|
{
|
|||
|
|
minval = 1;
|
|||
|
|
}
|
|||
|
|
if (!lists.Contains(minval))
|
|||
|
|
{
|
|||
|
|
lists.Add(minval);
|
|||
|
|
}
|
|||
|
|
var maxval = item.maxvalue.ToDecimal(1);
|
|||
|
|
if (!lists.Contains(maxval))
|
|||
|
|
{
|
|||
|
|
lists.Add(maxval);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return lists;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="val"></param>
|
|||
|
|
/// <param name="list"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private decimal CalcProgress(decimal val, List<MeasureInfoItemValue> list)
|
|||
|
|
{
|
|||
|
|
decimal maxval = MaxVal(list);
|
|||
|
|
//ȡ<>м<EFBFBD>ֵ
|
|||
|
|
decimal sminval = 1;
|
|||
|
|
decimal smaxval = 1;
|
|||
|
|
if (list.Count == 3)
|
|||
|
|
{
|
|||
|
|
var data = list.Skip(1).Take(1).FirstOrDefault();
|
|||
|
|
smaxval = data.maxvalue;
|
|||
|
|
sminval = data.minvalue;
|
|||
|
|
}
|
|||
|
|
else if (list.Count == 4)
|
|||
|
|
{
|
|||
|
|
var data = list.Skip(1).Take(1).FirstOrDefault();
|
|||
|
|
sminval = data.minvalue;
|
|||
|
|
data = list.Skip(2).Take(1).FirstOrDefault();
|
|||
|
|
smaxval = data.maxvalue;
|
|||
|
|
}
|
|||
|
|
if (val >= maxval)
|
|||
|
|
{
|
|||
|
|
return 100;
|
|||
|
|
}
|
|||
|
|
decimal returnval = 1;
|
|||
|
|
if (val > smaxval)
|
|||
|
|
{
|
|||
|
|
var v = (val - smaxval) / (maxval - smaxval) * 100 / 4;
|
|||
|
|
returnval = 60 + v;
|
|||
|
|
if (returnval > 100)
|
|||
|
|
returnval = 100;
|
|||
|
|
}
|
|||
|
|
else if (val < sminval)
|
|||
|
|
{
|
|||
|
|
var v = val / sminval * 100;
|
|||
|
|
returnval = v * 0.4m;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
var v = ((val - sminval) / (smaxval - sminval) * 100) / 2;
|
|||
|
|
returnval = 45 + v;
|
|||
|
|
if (returnval > 60)
|
|||
|
|
returnval = 60;
|
|||
|
|
}
|
|||
|
|
return returnval.ToDecimal(2);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="val"><3E><>ǰֵ</param>
|
|||
|
|
/// <param name="maxval"><3E><><EFBFBD><EFBFBD>ֵ</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private decimal CalcProgress(decimal val, decimal maxval)
|
|||
|
|
{
|
|||
|
|
var pval = (val / (maxval + 1)) * 100;
|
|||
|
|
if (pval <= 0)
|
|||
|
|
{
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
if (pval > 100)
|
|||
|
|
{
|
|||
|
|
pval = 100;
|
|||
|
|
}
|
|||
|
|
return pval.ToDecimal(1);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="list"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private decimal MaxVal(List<MeasureInfoItemValue> list)
|
|||
|
|
{
|
|||
|
|
decimal maxval = 0;
|
|||
|
|
foreach (var item in list)
|
|||
|
|
{
|
|||
|
|
if (item.maxvalue > maxval)
|
|||
|
|
{
|
|||
|
|
maxval = item.maxvalue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return maxval;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><D7BC>Χ
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="list"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private string StandVal(List<MeasureInfoItemValue> list)
|
|||
|
|
{
|
|||
|
|
if (list == null || list.Count == 0)
|
|||
|
|
{
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
var data = list.Skip(1).Take(1).FirstOrDefault();
|
|||
|
|
return $"{data.minvalue}~{data.maxvalue}";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|