Browse Source

1. 新增RPT002 品質看板模組

PTD
Sai 2 years ago
parent
commit
0a801124af
  1. 19
      AMESCoreStudio.Web/Controllers/RPTController.cs
  2. 7
      AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs
  3. 236
      AMESCoreStudio.Web/Views/RPT/RPT002.cshtml
  4. 2
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs
  5. 104
      AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs
  6. 158
      AMESCoreStudio.WebApi/DTO/AMES/RPT002VIiewDto.cs

19
AMESCoreStudio.Web/Controllers/RPTController.cs

@ -76,5 +76,24 @@ namespace AMESCoreStudio.Web.Controllers
return View(model);
}
public async Task<IActionResult> RPT002()
{
var sdate = "";
var edate = "";
var model = await _rptApi.GetRPT002View(sdate, edate);
return View(model);
}
[HttpPost]
public async Task<IActionResult> RPT002(string SerachData)
{
var Data = DateTime.Parse(SerachData);
var sDate = new DateTime(Data.Year, Data.Month, 1).ToString("yyyy/MM/dd");
var eDate = new DateTime(Data.Year, Data.Month, DateTime.DaysInMonth(Data.Year, Data.Month)).ToString("yyyy/MM/dd");
var model = await _rptApi.GetRPT002View(sDate, eDate);
model.SerachData = SerachData;
return View(model);
}
}
}

7
AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs

@ -19,5 +19,12 @@ namespace AMESCoreStudio.Web
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RPT/GetRPT001View")]
ITask<RPT001ViewDto> GetRPT001View(string sDate, string eDate);
/// <summary>
/// 品質看板
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RPT/GetRPT002View")]
ITask<RPT002ViewDto> GetRPT002View(string sDate, string eDate);
}
}

236
AMESCoreStudio.Web/Views/RPT/RPT002.cshtml

@ -0,0 +1,236 @@
@model AMESCoreStudio.WebApi.DTO.AMES.RPT001ViewDto
@{
ViewData["Title"] = "品質看板";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<style>
.spanUnitClass {
font-size: 12pt;
display: inline;
}
.spanMasterTitleClass {
color: #11E1DF;
background-color: #000000;
font-size: 7vmin;
font-weight: bold;
padding: 5px;
}
.spanDetailTitleClass {
font-size: 4vmin;
font-weight: bold;
padding: 10px;
margin: 5px 0px;
}
.spanDetailNumberClass {
font-size: 9vmin;
font-weight: bold;
padding: 10px;
margin: 10px 0px;
}
.DetailRow {
text-align: center;
margin: 10px 0px;
}
.ColTitle {
color: #FFFFFF;
margin-top: -5%;
}
.ColRight {
margin-right: 5px;
background-color: #262626
}
.ColLeft {
margin-left: 5px;
background-color: #262626
}
.Link-bottom {
margin: 10px;
border-bottom: solid #FFFFFF 1px;
}
.Link-right {
border-right: solid #FFFFFF 1px;
margin-bottom: 10px;
}
</style>
<div class="layui-card">
<form enctype="multipart/form-data" method="post" asp-action="RPT002" class="layui-form">
<div class="layui-card-header" style="background-color:#404040">
<div class="layui-form">
<div class="layui-form-item" style="color:#FFFFFF">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
<div class="layui-form-item layui-layout-left">
<div class="layui-inline">
<label class="layui-form-label" style="color:#FFFFFF">查詢月份</label>
<div class="layui-input-inline" style="width:90px">
<input name="SerachData" id="SerachData" style="width:90px" class="layui-input" readonly="" value=@DateTime.Now.ToString("yyyy/MM") />
</div>
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
</form>
<div class="layui-card-body" style="background-color:#404040">
<div class="layui-row" style="text-align: center;">
<div class="layui-col-md12 spanMasterTitleClass">
<div style=" margin-top: 15px;">生產即時看板</div>
<div style="text-align:right; font-size: 12pt;color: #FFFFFF;margin-top:-10px;">系統顯示時間:@DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")</div>
</div>
</div>
<div class="layui-row DetailRow">
<div class="layui-col-md6">
<div class="layui-row ColRight">
<div class="layui-col-md12">
<div class="grid-demo spanDetailTitleClass" style="color: #FDFD00;">
生產指標
<div class="Link-bottom"></div>
</div>
</div>
<div class="layui-col-md6 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">生產力</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #A84CA8">
@Model.productiveForces
<p class="spanUnitClass">%</p>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">生產效率</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #F4A446">
@Model.productivity
<p class="spanUnitClass">%</p>
</div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-row ColLeft">
<div class="layui-col-md12">
<div class="grid-demo spanDetailTitleClass" style="color: #FDFD00;">
生產品質
<div class="Link-bottom"></div>
</div>
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">IPQC合格率</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #92D050">
@Model.ipqc
<p class="spanUnitClass">%</p>
</div>
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">測試直通率</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #F4A446">
@Model.test
<p class="spanUnitClass">%</p>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">FQC合格率</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #F4A446">
@Model.fqc
<p class="spanUnitClass">%</p>
</div>
</div>
</div>
</div>
</div>
<div class="layui-row DetailRow">
<div class="layui-col-md6">
<div class="layui-row ColRight">
<div class="layui-col-md12">
<div class="grid-demo spanDetailTitleClass" style="color: #9DC3E6">
生產資源
<div class="Link-bottom"></div>
</div>
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">出勤率</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #F4A446">
@Model.attendance
<p class="spanUnitClass">%</p>
</div>
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">加班工時</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #FFFFFF">
@Model.overtime
<p class="spanUnitClass">H</p>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">無效工時</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #A84CA8">
@Model.invalidHours
<p class="spanUnitClass">H</p>
</div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-row ColLeft">
<div class="layui-col-md12">
<div class="grid-demo spanDetailTitleClass" style="color: #9DC3E6">
線上資訊
<div class="Link-bottom"></div>
</div>
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">未結工單數</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #FFFFFF">
@Model.openOrderWipQty
<p class="spanUnitClass">張</p>
</div>
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">完工入庫數</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #FFFFFF">
@Model.finishedProducts
<p class="spanUnitClass">pcs</p>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">異常工時</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #92D050">
@Model.abnormalTime
<p class="spanUnitClass">H</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@section Scripts {
<script type="text/javascript">
layui.use(['form', 'laydate'], function () {
var form = layui.form,
laydate = layui.laydate
laydate.render({
elem: '#SerachData'
, trigger: 'click'
, format: 'yyyy/MM'
, theme: 'grid'
});
});
</script>
}

2
AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs

@ -115,7 +115,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var q = from q1 in _context.FqcInhouseMasters
join q2 in _context.FqcInhouseDetails on new { q1.InhouseNo, q1.SeqID } equals new { q2.InhouseNo, q2.SeqID } into j0
from q2 in j0.DefaultIfEmpty()
join q3 in _context.FqcResultMasters on q1.InhouseNo equals q3.InhouseNo into j1
join q3 in _context.FqcResultMasters on new { q1.InhouseNo, q1.SeqID } equals new { q3.InhouseNo, q3.SeqID } into j1
from q3 in j1.DefaultIfEmpty()
join q4 in _context.WipInfos on q1.WipNo equals q4.WipNO into s
from q4 in s.DefaultIfEmpty()

104
AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs

@ -108,7 +108,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
foreach (var data in d.Data)
{
string str = data.ToString();
string[] str2 = str.Replace("{","").Replace("}","").Split(',');
string[] str2 = str.Replace("{", "").Replace("}", "").Split(',');
string str3 = "";
for (int i = 0; i < str2.Length; i++)
{
@ -384,7 +384,107 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
result.productiveForces = double.Parse(productivity.ToString("0.00"));
result.overtime = sumPI_OverTime;
result.invalidHours = sumPI_InvalidTIme;
result.invalidHours = sumPI_InvalidTIme;
return result;
}
/// <summary>
/// 品質看板
/// </summary>
/// <param name="sDate">開始日期</param>
/// <param name="eDate">結束日期</param>
/// <returns></returns>
[HttpGet("GetRPT002View")]
public async Task<RPT002ViewDto> GetRPT002View(string sDate, string eDate)
{
if (string.IsNullOrWhiteSpace(sDate) || string.IsNullOrWhiteSpace(eDate))
{
sDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy/MM/dd");
eDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)).ToString("yyyy/MM/dd");
}
var result = new RPT002ViewDto();
// 進料批退率 電子
result.IQLRR_EE = 0.0;
// 進料批退率 機構
result.IQLRR_ME = 0.0;
// 線上材料品質
result.LQC = 0.0;
// QRC件數 新增筆數
result.QRCNew = 0;
// QRC件數 結案筆數
result.QRCClose = 0;
// QRC件數 總筆數
result.QRCTotal = 0;
//IPQC異常件數 新增筆數
result.IPQCNew = 0;
// IPQC異常件數 結案筆數
result.IPQCClose = 0;
// IPQC異常件數 總筆數
result.IPQCTotal = 0;
// FQC批退率 Board
result.FQCRRBoard = 0.0;
// FQC批退率 System
result.FQCRRSystem = 0.0;
// FQC批退率 Medical
result.FQCRRMedical = 0.0;
// DOA Board
result.DOABoard = 0.0;
// DOA System
result.DOASystem = 0.0;
// DOA Medical
result.DOAMedical = 0.0;
// FPY 立德 Board
result.FPYBoard_LEI = 0.0;
// FPY 立德 System
result.FPYSystem_LEI = 0.0;
// FPY 立德 Medical
result.FPYMedical_LEI = 0.0;
// FPY Board
result.FPYBoard = 0.0;
// FPY System
result.FPYSystem = 0.0;
// FPY Medical
result.FPYMedical = 0.0;
// RMA Board
result.RMABoard = 0.0;
// RMA System
result.RMASystem = 0.0;
// RMA Medical
result.RMAMedical = 0.0;
// CFQR件數 新增筆數
result.CFQRNew = 0;
// CFQR件數 結案筆數
result.CFQRClose = 0;
// CFQR件數 總筆數
result.CFQRTotal = 0;
return result;
}

158
AMESCoreStudio.WebApi/DTO/AMES/RPT002VIiewDto.cs

@ -0,0 +1,158 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
#nullable disable
namespace AMESCoreStudio.WebApi.DTO.AMES
{
public partial class RPT002ViewDto
{
public RPT002ViewDto()
{
}
/// <summary>
/// 查詢月份
/// </summary>
public string SerachData { get; set; }
/// <summary>
/// 進料批退率 電子
/// </summary>
public double IQLRR_EE { get; set; } = 0.0;
/// <summary>
/// 進料批退率 機構
/// </summary>
public double IQLRR_ME { get; set; } = 0.0;
/// <summary>
/// 線上材料品質
/// </summary>
public double LQC { get; set; } = 0.0;
/// <summary>
/// QRC件數 新增筆數
/// </summary>
public int QRCNew { get; set; } = 0;
/// <summary>
/// QRC件數 結案筆數
/// </summary>
public int QRCClose { get; set; } = 0;
/// <summary>
/// QRC件數 總筆數
/// </summary>
public int QRCTotal { get; set; } = 0;
/// <summary>
/// IPQC異常件數 新增筆數
/// </summary>
public int IPQCNew { get; set; } = 0;
/// <summary>
/// IPQC異常件數 結案筆數
/// </summary>
public int IPQCClose { get; set; } = 0;
/// <summary>
/// IPQC異常件數 總筆數
/// </summary>
public int IPQCTotal { get; set; } = 0;
/// <summary>
/// FQC批退率 Board
/// </summary>
public double FQCRRBoard { get; set; } = 0.0;
/// <summary>
/// FQC批退率 System
/// </summary>
public double FQCRRSystem { get; set; } = 0.0;
/// <summary>
/// FQC批退率 Medical
/// </summary>
public double FQCRRMedical { get; set; } = 0.0;
/// <summary>
/// DOA Board
/// </summary>
public double DOABoard { get; set; } = 0.0;
/// <summary>
/// DOA System
/// </summary>
public double DOASystem { get; set; } = 0.0;
/// <summary>
/// DOA Medical
/// </summary>
public double DOAMedical { get; set; } = 0.0;
/// <summary>
/// FPY 立德 Board
/// </summary>
public double FPYBoard_LEI { get; set; } = 0.0;
/// <summary>
/// FPY 立德 System
/// </summary>
public double FPYSystem_LEI { get; set; } = 0.0;
/// <summary>
/// FPY 立德 Medical
/// </summary>
public double FPYMedical_LEI { get; set; } = 0.0;
/// <summary>
/// FPY Board
/// </summary>
public double FPYBoard { get; set; } = 0.0;
/// <summary>
/// FPY System
/// </summary>
public double FPYSystem { get; set; } = 0.0;
/// <summary>
/// FPY Medical
/// </summary>
public double FPYMedical { get; set; } = 0.0;
/// <summary>
/// RMA Board
/// </summary>
public double RMABoard { get; set; } = 0.0;
/// <summary>
/// RMA System
/// </summary>
public double RMASystem { get; set; } = 0.0;
/// <summary>
/// RMA Medical
/// </summary>
public double RMAMedical { get; set; } = 0.0;
/// <summary>
/// CFQR件數 新增筆數
/// </summary>
public int CFQRNew { get; set; } = 0;
/// <summary>
/// CFQR件數 結案筆數
/// </summary>
public int CFQRClose { get; set; } = 0;
/// <summary>
/// CFQR件數 總筆數
/// </summary>
public int CFQRTotal { get; set; } = 0;
}
}
Loading…
Cancel
Save