Browse Source

1. 生產即時看板

PTD
Sai 2 years ago
parent
commit
a8816faa40
  1. 38
      AMESCoreStudio.Web/Controllers/RPTController.cs
  2. 23
      AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs
  3. 74
      AMESCoreStudio.Web/Views/RPT/RPT001.cshtml
  4. 73
      AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs
  5. 73
      AMESCoreStudio.WebApi/DTO/AMES/RPT001VIiewDto.cs

38
AMESCoreStudio.Web/Controllers/RPTController.cs

@ -3,9 +3,17 @@ using AspNetCore.Reporting;
using Microsoft.AspNetCore.Hosting;
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
using System.Data;
using Oracle.EntityFrameworkCore;
using Oracle.ManagedDataAccess.Client;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.Web.Models;
using AMESCoreStudio.WebApi.DTO.AMES;
using DocumentFormat.OpenXml.Math;
using AMESCoreStudio.Web.ViewModels.PCS;
using Microsoft.AspNetCore.Http;
// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
@ -14,18 +22,28 @@ namespace AMESCoreStudio.Web.Controllers
public class RPTController : Controller
{
private readonly IWebHostEnvironment environment = null;
public readonly IPCS _pcsApi;
public readonly IRPT _rptApi;
public RPTController(IWebHostEnvironment environment,IPCS pcsApi)
public RPTController(IWebHostEnvironment environment, IRPT rptApi)
{
this.environment = environment;
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
_pcsApi = pcsApi;
_rptApi = rptApi;
}
public async Task<IActionResult> RPT001()
{
var sdate = "";
var edate = "";
var model = await _rptApi.GetRPT001View(sdate, edate);
// 異常工時
//var a = await _whsApi.GetExceptionWorktimeByQueryWHS009("", "", "", "", sdate: sdate, edate: edate);
// 未結工單數
//var b = await _pcsApi.GetWipInfoPCS008(date_str: sdate, date_end: edate);
// 完工入庫數
//var c = await _pcsApi.GetFqcInhouseMasterMultiQuery(date_str: sdate, date_end: edate);
//string mimeType = "";
//int extension = 1;
//var path = $"{this.environment.WebRootPath}\\Reports\\TEST02.rdlc";
@ -39,8 +57,18 @@ namespace AMESCoreStudio.Web.Controllers
//var result = localReport.Execute(RenderType.Pdf, extension, param, mimeType);
//return File(result.MainStream, "application/pdf");
//var model = new WebApi.DTO.AMES.RPT001VIiewDto();
return View(model);
}
return View();
[HttpPost]
public async Task<IActionResult> RPT001(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.GetRPT001View(sDate, eDate);
return View(model);
}
}
}

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

@ -0,0 +1,23 @@
using System.Collections.Generic;
using WebApiClient;
using WebApiClient.Attributes;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Mvc;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.Web
{
[JsonReturn]
public interface IRPT: IHttpApi
{
/// <summary>
/// 生產即時效率
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RPT/GetRPT001View")]
ITask<RPT001ViewDto> GetRPT001View(string sDate, string eDate);
}
}

74
AMESCoreStudio.Web/Views/RPT/RPT001.cshtml

@ -1,4 +1,6 @@
@{
@model AMESCoreStudio.WebApi.DTO.AMES.RPT001ViewDto
@{
ViewData["Title"] = "生產即時看板";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
@ -63,14 +65,28 @@
</style>
<div class="layui-card">
<form enctype="multipart/form-data" method="post" asp-action="RPT001" 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">
@ -90,7 +106,7 @@
<div class="layui-col-md6 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">生產力</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #A84CA8">
71.20
@Model.productiveForces
<p class="spanUnitClass">%</p>
</div>
</div>
@ -98,7 +114,7 @@
<div class="layui-col-md6">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">生產效率</div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #F4A446">
93.88
@Model.productivity
<p class="spanUnitClass">%</p>
</div>
</div>
@ -115,21 +131,21 @@
<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">
99.8
@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">
96.2
<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">
97.7
<div class="layui-col-md12 spanDetailNumberClass" style="color: #F4A446">
@Model.fqc
<p class="spanUnitClass">%</p>
</div>
</div>
@ -147,22 +163,22 @@
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">出勤率</div>
<div class="layui-col-md12 spanDetailNumberClass">
91.2
<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">
324
<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">
109.4
<div class="layui-col-md12 spanDetailNumberClass" style="color: #A84CA8">
@Model.invalidHours
<p class="spanUnitClass">H</p>
</div>
</div>
@ -178,22 +194,22 @@
</div>
<div class="layui-col-md4 Link-right">
<div class="layui-col-md12 spanDetailTitleClass ColTitle">未結工單數</div>
<div class="layui-col-md12 spanDetailNumberClass">
11
<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">
94
<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">
39.7
<div class="layui-col-md12 spanDetailNumberClass" style="color: #92D050">
@Model.abnormalTime
<p class="spanUnitClass">H</p>
</div>
</div>
@ -201,4 +217,20 @@
</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>
}

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

@ -0,0 +1,73 @@
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.Models.BAS;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System;
using System.Net.Mail;
using Microsoft.Extensions.Configuration;
using System.Net;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
using AMESCoreStudio.WebApi.Controllers.AMES;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.WebApi.Controllers.BLL
{
/// <summary>
/// 報表資料
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class RPTController : Controller
{
private readonly AMESContext _context;
private readonly IConfiguration _config;
/// <summary>
/// 建構式
/// </summary>
/// <param name="context"></param>
public RPTController(AMESContext context, IConfiguration config)
{
_config = config;
_context = context;
}
/// <summary>
/// 生產即時效率
/// </summary>
/// <param name="sDate">開始日期</param>
/// <param name="eDate">結束日期</param>
/// <returns></returns>
[HttpGet("GetRPT001View")]
public async Task<RPT001ViewDto> GetRPT001View(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 RPT001ViewDto();
// 未結工單數
var a = await new WipInfosController(_context).GetWipInfoPCS008(new DTO.AMES.WipInfoDto
{
date_str = sDate,
date_end = eDate
});
result.openOrderWipQty = a.DataTotal;
// 完工入庫數:GetFqcInhouseMasterMultiQuery
var b = await new FqcInhouseMasterController(_context).GetFqcInhouseMasteMultiQuery("", "", "", "", date_str: sDate, date_end: eDate, "");
result.finishedProducts = b.DataTotal;
//異常工時:GetExceptionWorktimeByQueryWHS009
//var c = new ExceptionWorktimesController(_context).GetExceptionWorktimeByQueryWHS009("*", "*", "*", "*", sDate, eDate);
return result;
}
}
}

73
AMESCoreStudio.WebApi/DTO/AMES/RPT001VIiewDto.cs

@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
#nullable disable
namespace AMESCoreStudio.WebApi.DTO.AMES
{
public partial class RPT001ViewDto
{
public RPT001ViewDto()
{
}
/// <summary>
/// 生產力
/// </summary>
public double productiveForces { get; set; } = 0.0;
/// <summary>
/// 生產效率
/// </summary>
public double productivity { get; set; } = 0.0;
/// <summary>
/// IPQC合格率
/// </summary>
public double ipqc { get; set; } = 0.0;
/// <summary>
/// 測試直通率
/// </summary>
public double test { get; set; } = 0.0;
/// <summary>
/// FQC合格率
/// </summary>
public double fqc { get; set; } = 0.0;
/// <summary>
/// 出勤率
/// </summary>
public double attendance { get; set; } = 0.0;
/// <summary>
/// 加班工時
/// </summary>
public double overtime { get; set; } = 0.0;
/// <summary>
/// 無效工時
/// </summary>
public double invalidHours { get; set; } = 0.0;
/// <summary>
/// 未結工單數
/// </summary>
public int openOrderWipQty { get; set; } = 0;
/// <summary>
/// 完工入庫數
/// </summary>
public int finishedProducts { get; set; } = 0;
/// <summary>
/// 異常工時
/// </summary>
public double abnormalTime { get; set; } = 0.0;
}
}
Loading…
Cancel
Save