1118-gaofei-焊接首页

This commit is contained in:
gaofei 2021-11-18 10:34:25 +08:00
parent 0aa91d6a8f
commit ed3517280a
9 changed files with 626 additions and 362 deletions

View File

@ -42,8 +42,9 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Apache.NMS.ActiveMQ">
<HintPath>..\packages\Apache.NMS.ActiveMQ.1.7.2\lib\net40\Apache.NMS.ActiveMQ.dll</HintPath>
<Reference Include="Apache.NMS.ActiveMQ, Version=1.7.2.4108, Culture=neutral, PublicKeyToken=82756feee3957618, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\Apache.NMS.ActiveMQ.dll</HintPath>
</Reference>
<Reference Include="EmitMapper, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\EmitMapper.1.0.0\lib\EmitMapper.dll</HintPath>

View File

@ -57,7 +57,8 @@
</Target>
<ItemGroup>
<Reference Include="Apache.NMS, Version=1.8.0.0, Culture=neutral, PublicKeyToken=82756feee3957618, processorArchitecture=MSIL">
<HintPath>..\packages\Apache.NMS.1.8.0\lib\net40\Apache.NMS.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Apache.NMS.dll</HintPath>
</Reference>
<Reference Include="Apache.NMS.ActiveMQ, Version=1.7.2.4108, Culture=neutral, PublicKeyToken=82756feee3957618, processorArchitecture=MSIL">
<HintPath>..\packages\Apache.NMS.ActiveMQ.1.7.2\lib\net40\Apache.NMS.ActiveMQ.dll</HintPath>

View File

@ -12,32 +12,41 @@
* {
box-sizing: border-box;
}
.pd {
padding: 20px;
}
.pd10 {
padding: 10px !important;
}
.flexV {
flex-direction: column;
}
.wrap {
height: 100%;
padding: 15px;
}
.bw-item-content{
padding: 0;
.iteml {
margin-left: 5px;
}
.itemb {
margin-bottom: 5px;
}
.bottom-wrap {
padding: 0;
margin-bottom:0;
margin-bottom: 5px;
}
.bottom-wrap:last-child {
margin-bottom: 0;
}
.top {
display: flex;
display: -webkit-flex;
overflow: hidden;
width: 100%;
}
.bw-b-bottom {
width: 100%;
height: 100%;
@ -50,133 +59,142 @@
box-shadow: none;
}
.bw-item-content {
padding: 0px;
}
.top {
display: flex;
display: -webkit-flex;
overflow: hidden;
width: 100%;
}
.top .item {
}
.bw-b {
width: 50%;
}
.bw-b-bottom-up {
}
.tab-wrap {
left: auto;
right: 15px;
top: 8px;
top: 5px;
font-size: 12px;
}
.tab-wrap .tab{
border-radius:0 !important;
border: none!important;
box-shadow: none !important;
}
.tab-wrap .tab .active {
color: rgba(0,162,233, 1);
background-color: transparent !important;
}
.tab-wrap .tab .t-item {
.tab .t-item {
width: auto;
padding: 5px 10px;
}
.tit-item {
padding: 0 10px;
color: #fff;
justify-content: space-between;
font-size: 12px;
}
.tip-item {
margin-left: 10px;
align-items: center;
font-size: 10px;
padding: 2px;
}
.itemlr{
margin: 0 5px 5px 0;
}
.mgb{
margin-bottom: 5px;
}
.flex4 {
-webkit-flex: 4;
/* Chrome */
-ms-flex: 4; /* IE 10 */
flex: 4;
/* NEW, Spec - Opera 12.1, Firefox 20+ */
/*-webkit-box-flex: 3; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 4;
/* OLD - Firefox 19- */
}
.flex6 {
-webkit-flex: 6;
/* Chrome */
-ms-flex: 6; /* IE 10 */
flex: 6;
/* NEW, Spec - Opera 12.1, Firefox 20+ */
/*-webkit-box-flex: 3; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 6;
/* OLD - Firefox 19- */
}
.flex9 {
-webkit-flex: 9;
/* Chrome */
-ms-flex: 9; /* IE 10 */
flex: 9;
/* NEW, Spec - Opera 12.1, Firefox 20+ */
/*-webkit-box-flex: 3; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 9;
/* OLD - Firefox 19- */
.tip {
width: 25px;
height: 13px;
background-color: #258F76;
border-radius: 2px;
margin-right: 5px;
}
.info-wrap {
width: 100%;
height: 100%;
padding: 5px 10px;
}
.info-wrap .info-item {
align-items: center;
margin: 0 20px;
}
.info-wrap .info-item .title {
margin-bottom: 5px;
font-size: 14px;
}
.tip-next {
background-color: #92BF55;
}
.info-wrap .info-item .item {
width: 100%;
height: 100%;
background-color: #267AA4;
border-radius:15px;
border-radius: 25px;
align-items: center;
justify-content: space-around;
}
.info-wrap .info-item .item .i-num {
color: #F48A5C;
font-size:28px;
font-size: 48px;
}
.info-wrap .info-item .item .i-num-c {
color: #C1DF8E;
}
</style>
</head>
<body>
<div class="wrap flex">
<div class="wrap flex flexV">
<div class="bottom-wrap flex1">
<div class="top flexV">
<div class="item flex4 itemlr">
<div class="bw-b-bottom">
<div class="top flex">
<div class="item flex1 flex flexV">
<div class="bw-b-bottom" style="margin-bottom: 5px;">
<div class="bw-b-bottom-up">
<div class="info-wrap flex">
<div class="info-item flex flexV flex1">
<div class="title">一次合格率</div>
<div class="item flex1 flex flexV">
<div class="specialNum i-num">87</div>
<div runat="server" id="divFirstOKRate" class="specialNum i-num">87</div>
<div style="font-size: 10px">单位:%</div>
</div>
</div>
<div class="info-item flex flexV flex1">
<div class="title">焊工总人数</div>
<div class="item flex1 flex flexV">
<div class="specialNum i-num i-num-c">176</div>
<div style="font-size:10px">单位:人</div>
</div>
</div>
</div>
<%--<div class="bw-item-content flex">
<div class="flex1 pd" >
<div id='one' style="width: 100%; height: 100%;"></div>
</div>
<div class="flex1 pd" >
<div id='one1' style="width: 100%; height: 100%;"></div>
<div class="item flex2 iteml">
<div class="bw-b-bottom">
<div class="bw-b-bottom-up">
<div class="tab-wrap">
<div class="tab" data-value="3">
<div class="t-item active">按分包商</div>
<div class="spline"></div>
<div class="t-item ">按装置</div>
</div>
</div>--%>
</div>
<div class="bw-item-content flex1 pdtb0">
<div id='four' style="width: 100%; height: 100%;"></div>
</div>
</div>
</div>
<div class="item flex6 itemlr">
</div>
</div>
</div>
<div class="bottom-wrap flex1">
<div class="top flex">
<div class="item flex1">
<div class="bw-b-bottom">
<div class="bw-b-bottom-up">
<div class="tab-wrap" style="right: 5px;">
<div class="tab" data-value="4">
<div class="t-item active">按达因量</div>
<div class="t-item ">按焊口数</div>
</div>
</div>
<div class="bw-item-content">
<div id='two' style="width: 100%; height: 100%;"></div>
@ -184,70 +202,17 @@
</div>
</div>
</div>
<div class="item flex9 itemlr">
<div class="bw-b-bottom">
<div class="bw-b-bottom-up">
<div class="tab-wrap" style="right:5px;">
<div class="tab" data-value="4">
<div class="t-item active">按分包商</div>
<div class="t-item ">按单位工程</div>
<div class="t-item">按材质类别</div>
</div>
</div>
<div class="bw-item-content">
<div id='five' style="width: 100%; height: 100%;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bottom-wrap flex3">
<div class="top flexV">
<div class="item flex1 mgb">
<div class="bw-b-bottom">
<div class="bw-b-bottom-up">
<div class="tab-wrap">
<div class="tab" data-value="3">
<div class="t-item active">按分包商</div>
<div class="t-item ">按单位工程</div>
<div class="t-item">按材质类别</div>
</div>
</div>
<div class="bw-item-content pd10">
<div id='four' style="width: 100%; height: 100%;"></div>
</div>
</div>
</div>
</div>
<div class="item flex1 mgb">
<div class="bw-b-bottom">
<div class="bw-b-bottom-up">
<div class="tab-wrap">
<div class="tab" data-value="3">
<div class="t-item active">按分包商</div>
<div class="t-item ">按单位工程</div>
<div class="t-item">按材质类别</div>
</div>
</div>
<div class="bw-item-content pd10">
<div id='six' style="width: 100%; height: 100%;"></div>
</div>
</div>
</div>
</div>
<div class="item flex1 mgb">
<div class="item flex2 iteml">
<div class="bw-b-bottom">
<div class="bw-b-bottom-up">
<div class="tab-wrap">
<div class="tab" data-value="2">
<div class="t-item active">按分包商</div>
<div class="t-item ">按单位工程</div>
<div class="t-item">按材质类别</div>
<div class="spline"></div>
<div class="t-item">按装置</div>
</div>
</div>
<div class="bw-item-content pd10">
<div class="bw-item-content">
<div id='three' style="width: 100%; height: 100%;"></div>
</div>
</div>
@ -324,6 +289,7 @@
//category_One('one1', 76, '项目焊工总人数', '{value}人');
</script>
<script type="text/javascript">
function category_two(id, xArr, data) {
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById(id))
@ -375,8 +341,8 @@
show: false
},
data: [
{ value: 35, name: '已完成' },
{ value: 10, name: '未完成' }
{ value: data.num1, name: '已完成' },
{ value: data.num2, name: '未完成' }
],
itemStyle: {
normal: {
@ -409,29 +375,163 @@
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
}
]
category_two('two', xArr, data)
var two =<%=Two %>;
category_two('two', xArr, two)
</script>
<script type="text/javascript">
function category_Three(id, xArr, series, title) {
function category_Three(id, xArr, data, num) {
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById(id))
// 指定图表的配置项和数据
var option = {
title: {
// left:'center',
text: title,
text: '焊接完成量',
textStyle: {
fontSize: 12,
color: '#fff',
fontWeight:'300'
fontWeight: 'normal',
fontSize: 12
},
show: true
},
tooltip: {},
legend: {
//data: ['销量'],
left: '10%',
show: true,
textStyle: {//图例文字的样式
color: '#ffffff',
fontSize: 10,
}
},
xAxis: {
axisTick: {
show: false
},
axisLine: {
lineStyle: {
color: 'rgba(255, 255, 255, 0.3)',
}
},
axisLabel: {
show: true,
textStyle: {
color: 'rgba(255, 255, 255, 0.8)'
},
interval: 0,
formatter: function (value) {
var ret = "";//拼接加\n返回的类目项
var maxLength = num;//每项显示文字个数
var valLength = value.length;//X轴类目项的文字个数
var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
if (rowN > 1)//如果类目项的文字大于maxLength,
{
for (var i = 0; i < rowN; i++) {
var temp = "";//每次截取的字符串
var start = i * maxLength;//开始截取的位置
var end = start + maxLength;//结束截取的位置
//这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
//temp = value.substring(start, end) + "\n";
temp = value.substring(start, end) + (i == rowN - 1 ? "" : "\n");
ret += temp; //凭借最终的字符串
}
return ret;
}
else {
return value;
}
}
},
type: 'category',
data: xArr,
boundaryGap: [0, 0.01],
},
yAxis: {
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: 'rgba(255, 255, 255, 0.3)'
}
},
axisLabel: {
show: true,
textStyle: {
color: 'rgba(255, 255, 255, 0.8)'
}
}
},
series: data,
grid: {
top: '20%',
left: '0%',
right: '0%',
bottom: '0%',
containLabel: true,
backgroundColor: 'rgba(0,162,233, 0.01)',
// borderColor: 'rgba(0,162,233, 1)'
},
backgroundColor: 'rgba(0,162,233, 0.01)',
textStyle: {
color: 'rgba(255, 255, 255, 0.3)'
}
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option)
}
var three =<%=Three %>;
//var xArr = ["分包1", "分包2", "分包3", "分包4", "分包5", "分包6", "分包7", "分包8", "分包9"]
var xArr = three.categories
var data = [
{
name: '已完成',
type: 'bar',
stack: '总量',
barWidth: 40,
//data: [3, 5, 8, 10, 6, 4, 5, 9, 12],
data: three.series[0].data,
itemStyle: { normal: { color: 'rgba(162,63,21, 1)' } }
},
{
name: '未完成',
type: 'bar',
stack: '总量',
barWidth: 40,
//data: [2, 7, 5, 9, 12, 9, 2, 8, 10],
data: three.series[1].data,
itemStyle: { normal: { color: 'rgba(206,143,135,1)' } }
}
]
category_Three('three', xArr, data, three.xFontNum)
</script>
<script type="text/javascript">
function line(id, xArr, data) {
// 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById(id))
// 指定图表的配置项和数据
var option = {
title: {
//left: 'center',
text: '一次合格率',
textStyle: {
color: '#fff',
fontWeight: 'normal',
fontSize: 12
},
show: true
},
tooltip: {
formatter: '{a}<br />{b}: {c}%'
},
legend: {
show: true,
textStyle: {
color: '#fff'
},
left: '10%',
},
xAxis: {
axisTick: {
show: false
@ -464,21 +564,22 @@
show: true,
textStyle: {
color: 'rgba(255, 255, 255, 0.8)'
}
},
formatter: '{value} %'
}
},
series: series,
series: data,
grid: {
top: '25%',
left: '0%',
right: '0%',
top: '15%',
left: '10',
right: '10',
bottom: '0%',
containLabel: true,
backgroundColor: 'rgba(0,162,233, 0.01)',
// borderColor: 'rgba(0,162,233, 1)'
},
itemStyle: {
color: 'rgba(200,201,10, 1)'
//color: 'rgba(200,201,10, 1)'
},
backgroundColor: 'rgba(0,162,233, 0.01)',
textStyle: {
@ -489,26 +590,23 @@
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option)
}
var xArr = ["类别1", "类别2", "类别3", "类别4", "类别5", "类别6", "类别7", "类别8", "类别9"]
var data = [12, 5, 28, 43, 22, 11, 23, 50, 8]
var series = [{
name: '数量',
type: 'bar',
barWidth: 40,
data: data,
itemStyle: { normal: { color: 'rgba(236,157,27, 1)' } }
}];
category_Three('three', xArr, series, '焊工业绩分析')
var series1 = [{
name: '数量',
type: 'bar',
barWidth: 40,
data: data,
itemStyle: { normal: { color: 'rgba(57,178,210, 1)' } }
}];
category_Three('four', xArr, series1, '焊接一次合格率')
var four =<%=Four %>;
var xArr1 = four.categories
var data1 = [{
name: '分包1',
type: 'line',
data: [76, 86, 96],
}, {
name: '分包2',
type: 'line',
data: [56, 66, 76],
}, {
name: '分包3',
type: 'line',
data: [51, 61, 71],
}]
var data2 = four.series3
line('four', xArr1, data2)
</script>
<script type="text/javascript">
function category_five(id, xArr, data) {
@ -748,126 +846,66 @@
//category_One('one', xArr, data)
}
else if (value == 2) {
var xArr = ["分包一", "分包二", "分包三"]
var three =<%=Three %>;
var three2 =<%=Three2 %>;
if (index == 0) {
var xArr = three.categories
var data = [
{
name: '计划值',
name: '已完成',
type: 'bar',
stack: '总量',
barWidth: 40,
data: [0.23, 0.35, 0.42],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
data: three.series[0].data,
itemStyle: { normal: { color: 'rgba(162,63,21, 1)' } }
},
{
name: '实际值',
name: '未完成',
type: 'bar',
stack: '总量',
barWidth: 40,
data: [0.2, 0.28, 0.35],
//itemStyle: { normal: { color: 'rgba(231,236,114,.9)' } }
},
{
name: '累计计划值',
type: 'line',
smooth: true,
data: [0.23, 0.58, 1],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
},
{
name: '累计实际值',
type: 'line',
smooth: true,
data: [0.2, 0.48, 0.83],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
data: three.series[1].data,
itemStyle: { normal: { color: 'rgba(206,143,135,1)' } }
}
]
if (index == 2) {
xArr = ["单位工程一", "单位工程二", "单位工程三"]
data = [
category_Three('three', xArr, data, three.xFontNum)
}
else if (index == 2) {
var xArr = three2.categories
var data = [
{
name: '计划值',
name: '已完成',
type: 'bar',
stack: '总量',
barWidth: 40,
data: [0.20, 0.33, 0.47],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
data: three2.series[0].data,
itemStyle: { normal: { color: 'rgba(162,63,21, 1)' } }
},
{
name: '实际值',
name: '未完成',
type: 'bar',
stack: '总量',
barWidth: 40,
data: [0.15, 0.25, 0.33],
//itemStyle: { normal: { color: 'rgba(231,236,114,.9)' } }
},
{
name: '累计计划值',
type: 'line',
smooth: true,
data: [0.20, 0.53, 1],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
},
{
name: '累计实际值',
type: 'line',
smooth: true,
data: [0.15, 0.4, 0.73],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
data: three2.series[1].data,
itemStyle: { normal: { color: 'rgba(206,143,135,1)' } }
}
]
category_Three('three', xArr, data, three2.xFontNum)
}
else if (index == 4) {
xArr = ["建筑", "安装"]
data = [
{
name: '计划值',
type: 'bar',
barWidth: 40,
data: [0.45, 0.55],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
},
{
name: '实际值',
type: 'bar',
barWidth: 40,
data: [0.36, 0.43],
//itemStyle: { normal: { color: 'rgba(231,236,114,.9)' } }
},
{
name: '累计计划值',
type: 'line',
smooth: true,
data: [0.45, 1],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
},
{
name: '累计实际值',
type: 'line',
smooth: true,
data: [0.36, 0.79],
//itemStyle: { normal: { color: 'rgba(200,201,10, 1)' } }
}
]
}
category_Two('two', xArr, data)
}
else if (value == 3) {
var data = [{ value: 10, name: '分包一' },
{ value: 5, name: '分包二' },
{ value: 15, name: '分包三' },
{ value: 25, name: '分包四' },
{ value: 20, name: '分包五' },
{ value: 35, name: '分包六' }];
if (index == 2) {
data = [{ value: 25, name: '单位工程一' },
{ value: 35, name: '单位工程二' },
{ value: 30, name: '单位工程三' }];
var four =<%=Four %>;
var four2 =<%=Four2 %>;
if (index == 0) {
var xArr1 = four.categories
var data2 = four.series3
line('four', xArr1, data2)
}
else if (index == 4) {
data = [{ value: 45, name: '建筑' },
{ value: 55, name: '安装' }];
else if (index == 2) {
var xArr1 = four2.categories
var data2 = four2.series3
line('four', xArr1, data2)
}
else if (index == 6) {
data = [{ value: 35, name: '质量不合格' },
{ value: 65, name: '质量缺陷' }];
}
pie('three', data)
}
else if (value == 4) {
var xArr = ["主项一", "主项二", "主项三", "主项四", "主项五"]

View File

@ -4,6 +4,8 @@ using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Newtonsoft.Json;
namespace FineUIPro.Web
{
@ -11,7 +13,203 @@ namespace FineUIPro.Web
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var firstOKRates = from x in Funs.DB.HJGL_FirstOKRate where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "unit" orderby x.Months descending select x;
var units = firstOKRates.Where(x => x.Type == "unit").Select(x => x.Name).Distinct();
if (firstOKRates.Count() > 0)
{
int totalNum = 0, oKNum = 0;
foreach (var item in units)
{
var f = firstOKRates.FirstOrDefault(x => x.Name == item); //取每个单位最后一个月的一次合格率数据进行汇总
if (f != null)
{
totalNum += f.TotalNum ?? 0;
oKNum += f.OKNum ?? 0;
}
}
if (totalNum > 0)
{
var a = Convert.ToDouble(oKNum);
var b = Convert.ToDouble(totalNum);
this.divFirstOKRate.InnerHtml = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 2)).ToString();
}
}
else
{
this.divFirstOKRate.InnerHtml = "0";
}
}
}
#region
protected string Two
{
get
{
Model.Num num = new Model.Num();
var finishRates = from x in Funs.DB.HJGL_FinishRate where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "unit" select x;
int totalNum = 0, finishNum = 0;
foreach (var item in finishRates)
{
totalNum += item.TotalNum ?? 0;
finishNum += item.FinishNum ?? 0;
}
int notFinishNum = totalNum - finishNum;
num.num1 = finishNum;
num.num2 = notFinishNum;
return JsonConvert.SerializeObject(num);
}
}
#endregion
#region
protected string Four
{
get
{
List<Model.SingleSerie2> series = new List<Model.SingleSerie2>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "一次合格率";
var views = (from x in Funs.DB.HJGL_FirstOKRate where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "unit" orderby x.Months select x).ToList();
var months = views.Select(x => x.Months).Distinct().ToList();
var units = views.Select(x => x.Name).Distinct().ToList();
for (int i = 0; i < months.Count; i++)
{
listCategories.Add(string.Format("{0:yyyy-MM}", views[i].Months));
}
for (int i = 0; i < units.Count; i++)
{
Model.SingleSerie2 s = new Model.SingleSerie2();
s.name = units[i];
s.type = "line";
List<double?> listdata = new List<double?>();
for (int j = 0; j < months.Count; j++)
{
var item = views.FirstOrDefault(x => x.Name == units[i] && x.Months == months[j]);
if (item != null)
{
listdata.Add(Convert.ToDouble(item.Rate.Replace("%", "")));
}
else
{
listdata.Add(null);
}
}
s.data = listdata;
series.Add(s);
}
businessColumn.categories = listCategories;
businessColumn.series3 = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Four2
{
get
{
List<Model.SingleSerie2> series = new List<Model.SingleSerie2>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "一次合格率";
var views = (from x in Funs.DB.HJGL_FirstOKRate where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "device" orderby x.Months select x).ToList();
var months = views.Select(x => x.Months).Distinct().ToList();
var devices = views.Select(x => x.Name).Distinct().ToList();
for (int i = 0; i < months.Count; i++)
{
listCategories.Add(string.Format("{0:yyyy-MM}", views[i].Months));
}
for (int i = 0; i < devices.Count; i++)
{
Model.SingleSerie2 s = new Model.SingleSerie2();
s.name = devices[i];
s.type = "line";
List<double?> listdata = new List<double?>();
for (int j = 0; j < months.Count; j++)
{
var item = views.FirstOrDefault(x => x.Name == devices[i] && x.Months == months[j]);
if (item != null)
{
listdata.Add(Convert.ToDouble(item.Rate.Replace("%", "")));
}
else
{
listdata.Add(null);
}
}
s.data = listdata;
series.Add(s);
}
businessColumn.categories = listCategories;
businessColumn.series3 = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
#endregion
#region
protected string Three
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "焊接完成量";
businessColumn.xFontNum = 18;
var views = (from x in Funs.DB.HJGL_FinishRate where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "unit" orderby x.Code select x).ToList();
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
foreach (var item in views)
{
listCategories.Add(item.Name);
listdata.Add(item.FinishNum ?? 0);
listdata2.Add((item.TotalNum ?? 0) - (item.FinishNum ?? 0));
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Three2
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "焊接完成量";
businessColumn.xFontNum = 18;
var views = (from x in Funs.DB.HJGL_FinishRate where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "device" orderby x.Code select x).ToList();
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
foreach (var item in views)
{
listCategories.Add(item.Name);
listdata.Add(item.FinishNum ?? 0);
listdata2.Add((item.TotalNum ?? 0) - (item.FinishNum ?? 0));
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
#endregion
}
}

View File

@ -20,5 +20,14 @@ namespace FineUIPro.Web {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlHead Head1;
/// <summary>
/// divFirstOKRate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divFirstOKRate;
}
}

View File

@ -16,5 +16,6 @@ namespace Model
public List<SingleSerie> series { get; set; }
public List<SingleSerie> series2 { get; set; }
public List<SingleSerie2> series3 { get; set; }
}
}

View File

@ -71204,7 +71204,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_QualifiedProjectCode", DbType="NVarChar(50)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_QualifiedProjectCode", DbType="NVarChar(500)")]
public string QualifiedProjectCode
{
get
@ -245489,7 +245489,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(2000)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(200)")]
public string Address
{
get
@ -245553,7 +245553,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(200)")]
public string WorkAreaName
{
get
@ -327152,7 +327152,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(2000)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(200)")]
public string Address
{
get
@ -327168,7 +327168,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(200)")]
public string WorkAreaName
{
get
@ -334640,7 +334640,7 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(100)")]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(102)")]
public string Name
{
get

View File

@ -184,6 +184,7 @@
<Compile Include="PieData.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SingleSerie.cs" />
<Compile Include="SingleSerie2.cs" />
<Compile Include="SpSysMenuItem.cs" />
<Compile Include="SpSysUserItem.cs" />
<Compile Include="APIItem\ResponeData.cs" />

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public class SingleSerie2
{
public string name { get; set; }
public string type { get; set; }
public List<double?> data { get; set; }
}
}