using Cksoft.Data;
using Cksoft.Unity;
using DllEapEntity.Dtos;
using DllEapEntity.OFILM;
using DllEapEntity.RA;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ChartDto = DllEapEntity.OFILM.ChartDto;
namespace DllEapDal.RA
{
public class DataBoardDal
{
private IDatabase db;
public DataBoardDal(IDatabase db)
{
this.db = db;
}
public List
> Get(DateTime time, string fcode, string factory, string status, string fname, ref List> da,ref double coun)
{
DateTime starttime;
DateTime start;
DateTime endtime;
if (DateTime.Now.Subtract(time).TotalDays<1)
{
starttime = DateTime.Now.AddMinutes(-1);
start= Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
endtime = starttime;
}
else
{
start= Convert.ToDateTime(time.ToString("D").ToString());
endtime=Convert.ToDateTime(time.AddDays(1).ToString("D").ToString());
starttime = endtime.AddMinutes(-1);
}
string str = " ";
/* string sql = $@" and b.rectime=='{DateTime.Now.ToString("yyyy-MM-dd HH:mm:00")}' and c.endtime='0001-01-01 00:00:00'";
IEnumerable data = db.FindListForCondition(" a", ref error);*/
var ss = new MachineShort().GetQueryColSql();
string sql = $@"select {ss} from machine a left outer join ((select * from baseinfo where id in (select max(id) from baseinfo where modetime<'{endtime.AddMinutes(1).ToString("yyyy-MM-dd HH:mm")}' GROUP BY(MacID)))) b on a.id =b.macid
left outer join (select * from statusinfo where id in (select max(id) from statusinfo where Duration>0 and StartTime<'{endtime.ToString("yyyy-MM-dd HH:mm:ss")}' GROUP BY macid)) c on a.id =c.macid left outer join supplier d on a.SupplierID =d.id where 1=1 and a.rectime<'{endtime.ToString("yyyy-MM-dd HH:mm:ss")}' ";
if (!string.IsNullOrEmpty(fcode))
{
sql += $@" and a.fcode like '{fcode}'";
str += $@" and fcode like '{fcode}'";
}
if (!string.IsNullOrEmpty(factory))
{
sql += $@" and a.factory like '{factory}'";
str += $@" and factory like '{factory}'";
}
if (!string.IsNullOrEmpty(status))
{
sql += $@" and c.status like '{status}'";
}
if (!string.IsNullOrEmpty(fname))
{
sql += $@" and d.FName like '{fname}'";
}
sql += $@" ORDER BY FIND_IN_SET(a.Factory,'未来城,2号园区,HC园区'),a.FCode";
IEnumerable data1 = db.FindList(sql);
foreach (var item in data1)
{
if (string.IsNullOrEmpty(item.HumidPV))
item.HumidPV = "0";
if (string.IsNullOrEmpty(item.TemperaturePV))
item.TemperaturePV = "0";
if (string.IsNullOrEmpty(item.Duration))
item.Duration = "0";
if (string.IsNullOrEmpty(item.Cycle))
item.Cycle = "0";
if (string.IsNullOrEmpty(item.Step))
item.Step = "0";
if (string.IsNullOrEmpty(item.Hour))
item.Hour = "0";
if (string.IsNullOrEmpty(item.Minutes))
item.Minutes = "0";
if (string.IsNullOrEmpty(item.ProgramName))
item.ProgramName = "暂无";
if (string.IsNullOrEmpty(item.Status))
item.Status = "-1";
if (item.Status=="-1")
{
item.HumidPV = "0";
item.TemperatureSV = "0";
item.TemperaturePV = "0";
item.HumidSv = "0";
}
if (DateTime.Now.Subtract(starttime).TotalMinutes>1)
{
item.Duration = Math.Round(endtime.Subtract(item.StartTime).TotalHours,2).ToString();
}
/* item.Duration=DateTime.Now.Subtract(item.)*/
}
var data = new List>();
var li=data1?.GroupBy(c => c.Factory);
var s =new List();
if (li != null)
{
foreach (var item in li)
{
var d = new Center();
d.name = item.Key;
s.Add(item.Key);
d.list = item.ToList();
data.Add(d);
}
}
int count = 0, count1 = 0, count2 = 0, count3 = 0, count4 = 0;
/* List s1 = new List();
List s2 = new List();
List s3 = new List();
List s4 = new List();*/
var a = new Center()
{
name = "rate", list = new List()
};
var b = new Center()
{
name = "status",
list = new List()
};
string error = "";
foreach (var item in s)
{
DateTime date;
var r = db.FindList($@"select * from machine where Factory='{item}' and rectime<'{endtime.ToString("yyyy-MM-dd HH:mm:ss")}' " +str);
int total = 0;
double x = 0;
foreach (var i in r)
{
bool bl = false;
DateTime end = endtime;
var statu = db.FindListForCondition($@" and macid={i.ID} and starttime <'{endtime.ToString("yyyy-MM-dd HH:mm:ss")}' order by modetime desc", ref error).ToList();
foreach (var j in statu)
{
if (!string.IsNullOrEmpty(status))
{
if (statu[0].Status != status)
{
break;
}
}
if (j.EndTime.ToString("yyyy-MM-dd HH:mm:ss") == "0001-01-01 00:00:00")
{
if (start >j.StartTime)
{
date = end > DateTime.Now ? DateTime.Now : end;
if (j.Status == "1")
x += date.Subtract(start).TotalHours;
if (j.Status == "0")
{
count1 += 1;
/*s1.Add(i.FCode);*/
}
if (j.Status == "1")
{
count2 += 1;
/* s2.Add(i.FCode);*/
}
if (j.Status == "2")
{
count3 += 1;
/* s3.Add(i.FCode);*/
}
if (j.Status == "-1")
{
count4 += 1;
/* s4.Add(i.FCode);*/
}
count += 1;
total += 1;
break;
}
else if (end > j.StartTime)
{
date = end > DateTime.Now ? DateTime.Now : end;
if (j.Status == "1")
x += date.Subtract(j.StartTime).TotalHours;
if (j.Status == "0")
{
count1 += 1;
/* s1.Add(i.FCode);*/
}
if (j.Status == "1")
{
count2 += 1;
/* s2.Add(i.FCode);*/
}
if (j.Status == "2")
{
count3 += 1;
/* s3.Add(i.FCode);*/
}
if (j.Status == "-1")
{
count4 += 1;
/* s4.Add(i.FCode);*/
}
count += 1;
total += 1;
end = j.StartTime;
bl = true;
continue;
}
}
else
{
if (bl)
{
if (start > j.StartTime )
{
if (j.Status == "1")
{
x += end.Subtract(start).TotalHours;
}
break;
}
else if (end > j.StartTime)
{
if(j.Status == "1")
{
x += end.Subtract(j.StartTime).TotalHours;
}
end = j.StartTime;
bl = true;
continue;
}
}
else
{
if (start > j.StartTime )
{
if (j.Status == "1")
x += end.Subtract(start).TotalHours;
if (j.Status == "0")
{
count1 += 1;
/* s1.Add(i.FCode);*/
}
if (j.Status == "1")
{
count2 += 1;
/* s2.Add(i.FCode);*/
}
if (j.Status == "2")
{
count3 += 1;
/* s3.Add(i.FCode);*/
}
if (j.Status == "-1")
{
count4 += 1;
/* s4.Add(i.FCode);*/
}
count += 1;
total += 1;
break;
}
else if (end > j.StartTime )
{
if (j.Status == "1")
x += end.Subtract(j.StartTime).TotalHours;
if (j.Status == "0")
{
count1 += 1;
/* s1.Add(i.FCode);*/
}
if (j.Status == "1")
{
count2 += 1;
/* s2.Add(i.FCode);*/
}
if (j.Status == "2")
{
count3 += 1;
/*s3.Add(i.FCode);*/
}
if (j.Status == "-1")
{
count4 += 1;
/* s4.Add(i.FCode);*/
}
count += 1;
total += 1;
end = j.StartTime;
bl = true;
continue;
}
}
}
}
}
coun = Math.Round(x,2);
total = total > 0 ? total : 1;
a.list.Add(new Params() { name = item, value = Math.Round(x / (total * (endtime.Subtract(start).TotalHours))*100, 2).ToString() }
);
}
b.list.Add(new Params() { name = "总计",value = count.ToString()
});
b.list.Add(new Params() { name = "停机",value = count1.ToString()});
b.list.Add(new Params() { name = "运转",value = count2.ToString()});
b.list.Add(new Params() { name = "预约",value = count3.ToString()});
b.list.Add(new Params() { name = "离线", value = count4.ToString()
});
da.Add(a);
da.Add(b);
/* List> strr = new List>();
strr.Add(s1); strr.Add(s2); strr.Add(s3); strr.Add(s4);
data.Add(new Center() { str = strr });*/
return data;
}
public LayuiModel GetTempDetail(DateTime start, DateTime end, string fcode, int pageIndex, int pageSize)
{
string sql = $@"select a.FCode FCode,b.HumidPV HumidPV,b.TemperaturePV TemperaturePV,b.HumidSv HumidSv,b.TemperatureSV TemperatureSV,a.MacNum MacNum,b.ModeTime date from machine a left outer join baseinfo b on a.id =b.macid
left outer join supplier d on a.SupplierID =d.id where 1=1 and b.ModeTime>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and b.ModeTime<='{end.ToString("yyyy-MM-dd HH:mm:ss")}' and a.FCode='{fcode}' order by b.ModeTime desc limit {(pageIndex - 1) * pageSize},{pageSize}";
string error = "";
var data = db.FindList(sql);
var dto = GetTemp(start.ToString("yyyy-MM-dd HH:mm:ss"), end.ToString("yyyy-MM-dd HH:mm:ss"), fcode);
var total = Convert.ToInt32(db.FindObject($@"select count(1) from machine a left outer join baseinfo b on a.id =b.macid
left outer join supplier d on a.SupplierID =d.id where 1=1 and b.ModeTime>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and b.ModeTime<='{end.ToString("yyyy-MM-dd HH:mm:ss")}' and a.FCode='{fcode}'"));
return new LayuiModel()
{
code = 1,
data = data,
count=total,
extraObject = dto
};
}
public IEnumerable GetAlarmDetails(DateTime date, string fcode)
{
string str = string.Empty;
return db.FindListForCondition($@" and a.starttime >='{date.ToString("yyyy-MM-dd HH:mm:ss")}' and b.fcode='{fcode}' order by a.starttime desc" ,ref str);
}
public LayuiModel GetBase(DateTime? time, string fcode)
{
DateTime t;
var d = new List>();
if (!time.HasValue)
{
t = DateTime.Now;
}
else
{
t = time.Value;
}
double ds = 0;
var x = Get(t, fcode, string.Empty, string.Empty, string.Empty, ref d,ref ds);
MachineBase y = new MachineBase();
var dic = new Dictionary();
dic.Add("-1", "离线"); dic.Add("0", "停机"); dic.Add("1", "运转"); dic.Add("2", "预约");
if (x != null)
{
foreach (var item in x)
{
foreach (var it in item.list)
{
if (it.FCode == fcode)
{
y.FCode = it.FCode;
y.FName = it.FName;
y.Cycle = it.Cycle;
y.Time = (Convert.ToInt32(it.Hour) + Math.Round(Convert.ToDouble(it.Minutes) / 60, 2)).ToString();
y.Model = it.Model;
y.Hour = it.Hour;
y.Minutes = it.Minutes;
y.ProgramName = it.ProgramName;
y.Status = it.Status;
y.Step = it.Step;
y.IPAdress = it.IPAdress;
switch ((y.Status))
{
case "-1":
y.StatusName = "离线";
break;
case "0":
y.StatusName = "停机";
break;
case "1":
y.StatusName = "运转";
break;
case "2":
y.StatusName = "预约";
break;
default:
y.StatusName = "暂无";
break;
}
}
}
}
}
y.StatusTime = ds.ToString();
string str = string.Empty;
var dd = new Dictionary();
var z = GetAlarm(t, fcode,ref dd);
foreach (var item in dd)
{
if (item.Key == t.ToString("yyyy-MM-dd"))
{
y.AlarmNum = item.Value;
}
}
foreach (var item in d)
{
if (item.name =="rate")
{
y.Rate = item.list[0].value;
}
}
return new LayuiModel()
{
code = 1,
data = new List() { y }
};
}
public ChartDto GetAlarm(DateTime? time, string fcode,ref Dictionary dic)
{
if (!time.HasValue)
{
time = DateTime.Now;
}
string str = string.Empty;
var data = new ChartDto();
data.XData = new List();
data.SeriesData = new List();
for (int i = 0; i< 4; i++)
{
DateTime d = time.Value.AddDays(-i);
data.XData.Add(d.ToString("yyyy-MM-dd"));
string sql = $@"select count(1) from alarminfo a left outer join machine b on a.macid =b.id where b.fcode='{fcode}' and a.rectime>='{d.ToString("yyyy-MM-dd 00:00:00")}' and a.rectime<'{d.AddDays(1).ToString("yyyy-MM-dd 00:00:00")}'";
var da = db.FindObject(sql);
data.SeriesData.Add(new DllEapEntity.OFILM.Series() { Name = d.ToString("yyyy-MM-dd"), YAxis = 0, Type = "column", Data = new List() { decimal.Parse(da.ToString()) } });
dic.Add(d.ToString("yyyy-MM-dd"), da.ToString());
}
return data;
}
public List>> GetTemp(string start,string end, string fcode)
{
string str = string.Empty;
string sql = $@" and b.fcode='{fcode}' and a.modetime >='{start}' and a.modetime<'{end}'";
var x = db.FindListForCondition(sql, ref str).ToList();
var tep = new Center()
{
name = "温度实际值",
list = new List()
};
var tes = new Center()
{
name = "温度标准值",
list = new List()
};
var hp = new Center()
{
name = "湿度实际值",
list = new List()
};
var hs = new Center()
{
name = "湿度标准值",
list = new List()
};
/*foreach (var item in x)
{
ArrayList aa = new ArrayList()
{
item.RecTime.ToString("HH:mm"),
Convert.ToDouble(item.TemperaturePV.Trim())
};
tep.list.Add(aa);
ArrayList bb = new ArrayList()
{
item.RecTime.ToString("HH:mm"),
Convert.ToDouble(item.TemperatureSV.Trim())
};
tes.list.Add(bb);
ArrayList cc = new ArrayList
{
item.RecTime.ToString("HH:mm"),
Convert.ToDouble(item.HumidPV.Trim())
};
hp.list.Add(cc);
ArrayList arrayList = new ArrayList();
arrayList.Add(item.RecTime.ToString("HH:mm"));
arrayList.Add(Convert.ToDouble(item.HumidSv.Trim()));
hs.list.Add(arrayList);
}
var bs = x.LastOrDefault();
if (DateTime.Parse(bs.RecTime.ToString("HH:mm")) < DateTime.Parse(DateTime.Parse(end).AddSeconds(-1).ToString("HH: mm")))
{
for (DateTime i=bs.RecTime.AddMinutes(1); i<= DateTime.Parse(end); i=i.AddMinutes(1))
{
ArrayList array = new ArrayList()
{
i.ToString("HH:mm"),
null
};
tep.list.Add(array);
tes.list.Add(array);
hp.list.Add(array);
hs.list.Add(array);
}
}*/
for (DateTime i = DateTime.Parse(start); i <= DateTime.Parse(end); i = i.AddMinutes(1))
{
var data1 = x.FirstOrDefault(c => (c.ModeTime.ToString("yyyy-MM-dd HH:mm:00") == i.ToString("yyyy-MM-dd HH:mm:00")));
var data2 = x.Where(c => (c.ModeTime > DateTime.Parse(i.AddMinutes(-5).ToString("yyyy-MM-dd HH:mm:00")) && c.ModeTime <= DateTime.Parse(i.AddMinutes(5).ToString("yyyy-MM-dd HH:mm:00")))).ToList();
if (data1 == null)
{
if (data2.Count < 1)
{
ArrayList array = new ArrayList()
{
i.ToString("yyyy-MM-dd HH:mm:ss"),
null
};
tep.list.Add(array);
tes.list.Add(array);
hp.list.Add(array);
hs.list.Add(array);
}
}
else
{
ArrayList aa = new ArrayList()
{
i.ToString("yyyy-MM-dd HH:mm:ss"),
Convert.ToDouble(data1.TemperaturePV.Trim())
};
tep.list.Add(aa);
ArrayList bb = new ArrayList()
{
i.ToString("yyyy-MM-dd HH:mm:ss"),
Convert.ToDouble(data1.TemperatureSV.Trim())
};
tes.list.Add(bb);
ArrayList cc = new ArrayList
{
i.ToString("yyyy-MM-dd HH:mm:ss"),
Convert.ToDouble(data1.HumidPV.Trim())
};
hp.list.Add(cc);
ArrayList arrayList = new ArrayList();
arrayList.Add(i.ToString("yyyy-MM-dd HH:mm:ss"));
arrayList.Add(Convert.ToDouble(data1.HumidSv.Trim()));
hs.list.Add(arrayList);
}
}
var data = new List>>()
{
new Center>
{
name="温度",
list=new List>
{
tep,tes
}
},
new Center>
{
name="湿度",
list=new List>
{
hp,hs
}
}
};
return data;
}
public IEnumerable GetStatus(DateTime time,string fcode, out List d)
{
DateTime start, end;
var dd = new List();
if (DateTime.Now.Subtract(time).TotalDays < 1)
{
end = DateTime.Now.AddMinutes(-1);
start = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
}
else
{
start = Convert.ToDateTime(time.ToString("D").ToString());
end = Convert.ToDateTime(time.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
}
string str = string.Empty;
DateTime date = DateTime.Now;
var x = db.FindListForCondition($@" and starttime<='{end.ToString("yyyy-MM-dd HH:mm:ss")}' and macid=(select id from machine where fcode='{fcode}') ORDER BY StartTime desc ", ref str);
var y = new List();
foreach (var item in x)
{
if (item.EndTime < start && item.EndTime.ToString("yyyy-MM-dd HH:mm:ss") != "0001-01-01 00:00:00")
{
if (y.Count == 0){
y.Add(item);
}
break;
}
y.Add(item);
}
var history = new List();
var dateFormatter = "yyyy-MM-dd H:mm:ss";
var dic = new Dictionary();
dic.Add("-1", "离线"); dic.Add("0", "停机"); dic.Add("1", "运转"); dic.Add("2", "预约");
foreach (var item in dic)
{
dd.Add(new StatusRatio()
{
Status = item.Key,
StatusName = item.Value,
ratio = 0,
time = 0
});
}
double sum = 0;
if (y.Count > 0)
{
for (int i = y.Count - 1; i >= 0; i--)
{
if (y[i].StartTime <= start)
{
if (y[i].EndTime >= end)
{
var z = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = end.Hour * 100 + end.Minute,
EndTime = end.ToString(dateFormatter) ,
MacCode = fcode,
Status = y[i].Status,
TimeLen = Math.Round( end.Subtract(start).TotalHours , 2),
Duration = AppendDuration( end - start ),
/* Color=*/
};
switch ((z.Status))
{
case "-1":
z.StatusName = "离线";
break;
case "0":
z.StatusName = "停机";
break;
case "1":
z.StatusName = "运转";
break;
case "2":
z.StatusName = "预约";
break;
default:
z.StatusName = "暂无";
break;
}
history.Add(z);
foreach (var item in dd)
{
if (z.Status == item.Status)
{
item.time += z.TimeLen;
}
}
sum += z.TimeLen;
break;
}
else if(y[i].EndTime.ToString("yyyy-MM-dd HH:mm:ss") == "0001-01-01 00:00:00")
{
var z = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = date > end ? end.Hour * 100 + end.Minute : date.Hour * 100 + date.Minute,
EndTime = date > end ? end.ToString(dateFormatter) : date.ToString(dateFormatter),
MacCode = fcode,
Status = y[i].Status,
StatusName = dic[y[i].Status],
TimeLen = Math.Round(date > end ? end.Subtract(start).TotalHours : date.Subtract(start).TotalMinutes, 2),
Duration = AppendDuration(date > end ? end - start : date - start),
/* Color=*/
};
history.Add(z);
foreach (var item in dd)
{
if (z.Status == item.Status)
{
item.time += z.TimeLen;
}
}
sum += z.TimeLen;
break;
}
else
{
var z = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = y[i].EndTime.Hour * 100 + y[i].EndTime.Minute ,
EndTime = y[i].EndTime.ToString(dateFormatter) ,
MacCode = fcode,
Status = y[i].Status,
StatusName = dic[y[i].Status],
TimeLen = Math.Round(y[i].EndTime.Subtract(start).TotalHours, 2),
Duration = AppendDuration(y[i].EndTime - start ),
/* Color=*/
};
history.Add(z);
foreach (var item in dd)
{
if (z.Status == item.Status)
{
item.time += z.TimeLen;
}
}
sum += z.TimeLen;
start = y[i].EndTime;
}
}
else
{
var z1 = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = y[i].StartTime.Hour * 100 + y[i].StartTime.Minute,
EndTime = y[i].StartTime.ToString(dateFormatter),
MacCode = fcode,
Status = "-1",
StatusName = dic["-1"],
TimeLen = Math.Round(y[i].StartTime.Subtract(start).TotalHours, 2),
Duration = AppendDuration(y[i].StartTime - start),
/* Color=*/
};
history.Add(z1);
foreach (var item in dd)
{
if (z1.Status == item.Status)
{
item.time += z1.TimeLen;
}
}
sum += z1.TimeLen;
start = y[i].StartTime;
if (y[i].EndTime >= end)
{
var z = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = end.Hour * 100 + end.Minute,
EndTime = end.ToString(dateFormatter),
MacCode = fcode,
Status = y[i].Status,
StatusName = dic[y[i].Status],
TimeLen = Math.Round(end.Subtract(start).TotalHours, 2),
Duration = AppendDuration(end - start),
/* Color=*/
};
history.Add(z);
foreach (var item in dd)
{
if (z.Status == item.Status)
{
item.time += z.TimeLen;
}
}
sum += z.TimeLen;
break;
}
else if (y[i].EndTime.ToString("yyyy-MM-dd HH:mm:ss") == "0001-01-01 00:00:00")
{
var z = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = date > end ? end.Hour * 100 + end.Minute : date.Hour * 100 + date.Minute,
EndTime = date > end ? end.ToString(dateFormatter) : date.ToString(dateFormatter),
MacCode = fcode,
Status = y[i].Status,
StatusName = dic[y[i].Status],
TimeLen = Math.Round(date > end ? end.Subtract(start).TotalHours : date.Subtract(start).TotalMinutes, 2),
Duration = AppendDuration(date > end ? end - start : date - start),
/* Color=*/
};
history.Add(z);
foreach (var item in dd)
{
if (z.Status == item.Status)
{
item.time += z.TimeLen;
}
}
sum += z.TimeLen;
break;
}
else
{
var z = new RunHistroyDto()
{
Start = start.Hour * 100 + start.Minute,
StartTime = start.ToString(dateFormatter),
End = y[i].EndTime.Hour * 100 + y[i].EndTime.Minute,
EndTime = y[i].EndTime.ToString(dateFormatter),
MacCode = fcode,
Status = y[i].Status,
StatusName = dic[y[i].Status],
TimeLen = Math.Round(y[i].EndTime.Subtract(start).TotalHours, 2),
Duration = AppendDuration(y[i].EndTime - start),
/* Color=*/
};
history.Add(z);
foreach (var item in dd)
{
if (z.Status == item.Status)
{
item.time += z.TimeLen;
}
}
sum += z.TimeLen;
start = y[i].EndTime;
}
}
}
}
foreach (var item in dd)
{
item.ratio = Math.Round(item.time / sum, 2) * 100;
}
d = dd;
return history;
}
private string AppendDuration(TimeSpan timeSpan)
{
var days = timeSpan.Days;
var hours = 0;
if (days > 0)
{
hours = days * 24;
}
hours += timeSpan.Hours;
var hourPart = hours + "小时";
var minutePart = timeSpan.Minutes + "分";
var secondPart = timeSpan.Seconds + "秒";
if (timeSpan.TotalSeconds < 60)
return secondPart;
else if (timeSpan.TotalSeconds < 3600)
{
return minutePart + secondPart;
}
else
{
return hourPart + minutePart + secondPart;
}
}
}
}