Browse Source

1. 修正過站程式

PTD
Ray 3 years ago
parent
commit
168d11a3b5
  1. 17
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 4
      AMESCoreStudio.Web/Controllers/PCSController.cs
  3. 3
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  4. 22
      AMESCoreStudio.Web/ViewModels/FQC/FQC008ViewModel.cs
  5. 178
      AMESCoreStudio.Web/Views/FQC/FQC008.cshtml
  6. 103
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs
  7. 4
      AMESCoreStudio.WebApi/Controllers/AMES/StatusTypeController.cs
  8. 1
      AMESCoreStudio.WebApi/Models/AMES/FqcInhouseMaster.cs
  9. 32
      AMESCoreStudio.WebApi/Models/AMES/NgInfo.cs
  10. 1
      AMESCoreStudio.WebApi/Models/AMESContext.cs

17
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -565,7 +565,24 @@ namespace AMESCoreStudio.Web.Controllers
#endregion #endregion
#region FQC008 FQC查詢 #region FQC008 FQC查詢
public IActionResult FQC008()
{
return View();
}
//public async Task<IActionResult> PCS030QueryAsync(string barcodeNo, string wipNo
// , string boxNo, string inhouseNo, string date_str, string date_end)
//{
// return IResultModel<string>();
// //IResultModel<WipSopDto> result = await _pcsApi.GetWipSopQuery(itemNo: itemNo, unitNo: unitNo
// //, fileName: fileName, state: state, date_str: date_str, date_end: date_end);
// //
// //if (result.Data.Count() != 0)
// //{
// // return Json(new Table() { code = 0, msg = "", data = result.Data, count = 0 });
// //}
// //return Json(new Table() { count = 0, data = null });
//}
#endregion #endregion
} }
} }

4
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -2312,11 +2312,13 @@ namespace AMESCoreStudio.Web.Controllers
// 新增 NgInfo 不良時新增 判斷有不良代碼 // 新增 NgInfo 不良時新增 判斷有不良代碼
if (model.BarcodeNG) if (model.BarcodeNG)
{ {
var FixtureNo = string.Join(",", model.MaterialOutfits.Select(s => s.Inputs).ToArray());
NgInfo ngInfo = new NgInfo NgInfo ngInfo = new NgInfo
{ {
TypeNo = model.StationTestType, TypeNo = model.StationTestType,
OperatorID = 0, OperatorID = 0,
FixtureNo = string.Join(",", model.MaterialOutfits.Select(s => s.Inputs).ToArray()), FixtureNo = string.IsNullOrWhiteSpace(FixtureNo) ? "-1" : FixtureNo,
BarcodeID = model.BarCodeID, BarcodeID = model.BarCodeID,
ProgramNo = "N/A", ProgramNo = "N/A",
MachineNo = "N/A", MachineNo = "N/A",

3
AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs

@ -268,7 +268,8 @@ namespace AMESCoreStudio.Web
#endregion #endregion
#region FQC008 FQC查詢 #region FQC008 FQC查詢
//[WebApiClient.Attributes.HttpGet("api/StatusType/{id}")]
//ITask<ResultModel<StatusType>> GetStatusTypeQuery(int page = 1, int limit = 10);
#endregion #endregion
} }

22
AMESCoreStudio.Web/ViewModels/FQC/FQC008ViewModel.cs

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.WebApi.DTO.AMES;
namespace AMESCoreStudio.Web.ViewModels
{
public class FQC008ViewModel
{
public NgInfo ngInfo { get; set; }
public NgComponent ngComponent { get; set; }
public RepairRecord repairRecord { get; set; }
public NgRepair ngRepair { get; set; }
}
}

178
AMESCoreStudio.Web/Views/FQC/FQC008.cshtml

@ -0,0 +1,178 @@
@{
ViewData["Title"] = "FQC查詢";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<style type="text/css">
.layui-table-main .layui-table-cell {
/*height: auto !important;*/
white-space: normal;
}
.layui-table img {
max-width: 60px;
max-height: 28px;
}
.layui-tree-main {
cursor: pointer;
padding-right: 10px;
float: left;
border-width: 1px;
border-style: solid;
border-color: #e6e6e6;
margin: 10px 0;
}
</style>
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-row">
<div class="layui-form-item">
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">內部序號:</label>
<div class="layui-input-inline" style="width:150px">
<input id="barcodeNo" name="barcodeNo" autocomplete="off" class="layui-input" >
</div>
</div>
</div>
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">工單號碼:</label>
<div class="layui-input-inline" style="width:150px">
<input id="wipNo" name="wipNo" autocomplete="off" class="layui-input" >
</div>
</div>
</div>
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">包裝箱號:</label>
<div class="layui-input-inline" style="width:150px">
<input id="boxNo" name="boxNo" autocomplete="off" class="layui-input">
</div>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-form-item">
<div class="layui-col-sm4">
<div class="layui-inline">
<label class="layui-form-label">入庫單號:</label>
<div class="layui-input-inline">
<input id="inhouseNo" name="inhouseNo" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-sm6">
<div class="layui-inline">
<label class="layui-form-label">入庫日期:</label>
<div class="layui-input-inline" style="width:150px">
<input id="dateStr" name="dateStr" autocomplete="off" class="layui-input" readonly="">
</div>
<div class="layui-form-mid">~</div>
<div class="layui-input-inline" style="width:150px">
<input id="dateEnd" name="dateEnd" autocomplete="off" class="layui-input" readonly="">
</div>
</div>
</div>
<div class="layui-col-sm1">
<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>
</div>
<table class="layui-hide" id="query" lay-filter="query"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//var roleId = 0;
//var roleName = "";
layui.use(['form', 'layer', 'laydate'], function () {
form = layui.form;
laydate = layui.laydate;
laydate.render({
elem: '#dateStr'
, trigger: 'click'
, format: 'yyyy/MM/dd'
, theme: 'grid'
});
laydate.render({
elem: '#dateEnd'
, trigger: 'click'
, format: 'yyyy/MM/dd'
, theme: 'grid'
});
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
hg.msghide("重新載入資料..");
table && table.reload(data);
});
var tableCols = [[
{
field: 'itemNo',
width: 150,
title: '入庫單號',
sort: true
},
{
field: 'unitName',
title: '工單號碼',
width: 200,
sort: true
},
{
field: 'fileName',
title: '狀態',
sort: true
},
{
field: 'right',
width: 80,
title: '操作',
align: 'center',
fixed: 'right',
templet: function (d) {
return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" lay-event="show">預覽</button>'
}
}]
];
//通过行tool编辑,lay-event="show"
function show(obj) {
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
type: 2,
area: ['900px', '650px'],
fixed: false, //不固定
maxmin: true,
content: obj.data.filePath + obj.data.newName
});
});
};
//基本数据表格
var table = hg.table.datatable('query', 'FQC查詢', '/FQC/FQC008Query', {}, tableCols, '', true, 'full-100', ['filter', 'print', 'exports']);
// var table = hg.table.datatable('test', '條碼狀態維護', '/PCS/GetWipInfo', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

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

@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
@ -45,78 +46,90 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return fqcInhouseMaster; return fqcInhouseMaster;
} }
// PUT: api/FqcInhouseMaster/5 /// <summary>
// To protect from overposting attacks, enable the specific properties you want to bind to, for /// 更新入庫單
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754. /// </summary>
[HttpPut("{id}")] /// <param name="fqcInhouseMaster"></param>
public async Task<IActionResult> PutFqcInhouseMaster(string id, FqcInhouseMaster fqcInhouseMaster) /// <returns></returns>
[HttpPut]
public async Task<ResultModel<FqcInhouseMaster>> PutFqcInhouseMaster(FqcInhouseMaster fqcInhouseMaster)
{ {
if (id != fqcInhouseMaster.InhouseNo) ResultModel<FqcInhouseMaster> result = new ResultModel<FqcInhouseMaster>();
{
return BadRequest();
}
_context.Entry(fqcInhouseMaster).State = EntityState.Modified; _context.Entry(fqcInhouseMaster).State = EntityState.Modified;
fqcInhouseMaster.UpdateDate = DateTime.Now;
fqcInhouseMaster.UpdateUserID = 0;
try try
{ {
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
} }
catch (DbUpdateConcurrencyException) catch (Exception ex)
{ {
if (!FqcInhouseMasterExists(id)) result.Success = false;
{ result.Msg = ex.Message;
return NotFound();
}
else
{
throw;
}
} }
return result;
return NoContent();
} }
// POST: api/FqcInhouseMaster /// <summary>
// To protect from overposting attacks, enable the specific properties you want to bind to, for /// 新增入庫單
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754. /// </summary>
/// <param name="fqcInhouseMaster"></param>
/// <returns></returns>
[HttpPost] [HttpPost]
public async Task<ActionResult<FqcInhouseMaster>> PostFqcInhouseMaster(FqcInhouseMaster fqcInhouseMaster) public async Task<ResultModel<FqcInhouseMaster>> PostFqcInhouseMaster(FqcInhouseMaster fqcInhouseMaster)
{ {
ResultModel<FqcInhouseMaster> result = new ResultModel<FqcInhouseMaster>();
_context.FqcInhouseMasters.Add(fqcInhouseMaster); _context.FqcInhouseMasters.Add(fqcInhouseMaster);
try try
{ {
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.Message;
} }
catch (DbUpdateException) return result;
}
/// <summary>
/// 刪除入庫單
/// </summary>
/// <param name="no">入庫單號</param>
/// <param name="seq">順序</param>
/// <returns></returns>
[HttpDelete("{no}/{seq}")]
public async Task<ResultModel<string>> DeleteFqcInhouseMaster(string no, int seq)
{
ResultModel<string> result = new ResultModel<string>();
var fqcInhouseMaster = await _context.FqcInhouseMasters.FindAsync(no, seq);
try
{ {
if (FqcInhouseMasterExists(fqcInhouseMaster.InhouseNo)) if (fqcInhouseMaster == null)
{ {
return Conflict(); result.Success = false;
result.Msg = "找不到要刪除資料";
} }
else else
{ {
throw; _context.FqcInhouseMasters.Remove(fqcInhouseMaster);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
} }
} }
catch (Exception ex)
return CreatedAtAction("GetFqcInhouseMaster", new { id = fqcInhouseMaster.InhouseNo }, fqcInhouseMaster);
}
// DELETE: api/FqcInhouseMaster/5
[HttpDelete("{id}")]
public async Task<ActionResult<FqcInhouseMaster>> DeleteFqcInhouseMaster(string id)
{
var fqcInhouseMaster = await _context.FqcInhouseMasters.FindAsync(id);
if (fqcInhouseMaster == null)
{ {
return NotFound(); result.Success = false;
result.Msg = ex.Message;
} }
return result;
_context.FqcInhouseMasters.Remove(fqcInhouseMaster);
await _context.SaveChangesAsync();
return fqcInhouseMaster;
} }
private bool FqcInhouseMasterExists(string id) private bool FqcInhouseMasterExists(string id)

4
AMESCoreStudio.WebApi/Controllers/AMES/StatusTypeController.cs

@ -86,7 +86,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
catch (Exception ex) catch (Exception ex)
{ {
result.Success = false; result.Success = false;
result.Msg = "更新失敗!,錯誤訊息:" + ex.InnerException.Message; result.Msg = "更新失敗!,代碼已重複使用";
} }
return result; return result;
} }
@ -111,7 +111,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
result.Success = false; result.Success = false;
//result.Msg = ex.Message; //result.Msg = ex.Message;
result.Msg = "新增失敗!,錯誤訊息:" + ex.InnerException.Message; result.Msg = "新增失敗!,代碼已重複使用";
} }
return result; return result;
} }

1
AMESCoreStudio.WebApi/Models/AMES/FqcInhouseMaster.cs

@ -201,5 +201,6 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[Column("UPDATE_DATE")] [Column("UPDATE_DATE")]
[DataMember] [DataMember]
public DateTime? UpdateDate { get; set; } = DateTime.Now; public DateTime? UpdateDate { get; set; } = DateTime.Now;
} }
} }

32
AMESCoreStudio.WebApi/Models/AMES/NgInfo.cs

@ -17,11 +17,11 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// 測試不良ID /// 測試不良ID
/// </summary> /// </summary>
[Key] [Key]
[Column("NG_ID", TypeName = "NUMBER")] [Column("NG_ID")]
[DataMember] [DataMember]
[Display(Name = "測試不良ID")] [Display(Name = "測試不良ID")]
[Required] [Required]
public decimal NgID { get; set; } public int NgID { get; set; }
/// <summary> /// <summary>
/// 測試種類代碼 /// 測試種類代碼
@ -36,7 +36,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 測試員代號 /// 測試員代號
/// </summary> /// </summary>
[Column("OPERATOR_ID", TypeName = "NUMBER")] [Column("OPERATOR_ID")]
[Display(Name = "測試員代號")] [Display(Name = "測試員代號")]
[DataMember] [DataMember]
public int OperatorID { get; set; } public int OperatorID { get; set; }
@ -74,18 +74,18 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 測試總點數 /// 測試總點數
/// </summary> /// </summary>
[Column("TEST_QTY", TypeName = "NUMBER")] [Column("TEST_QTY")]
[Display(Name = "測試總點數")] [Display(Name = "測試總點數")]
[DataMember] [DataMember]
public decimal TestQty { get; set; } = 0; public int TestQty { get; set; } = 0;
/// <summary> /// <summary>
/// 不良總點數 /// 不良總點數
/// </summary> /// </summary>
[Column("NG_QTY", TypeName = "NUMBER")] [Column("NG_QTY")]
[Display(Name = "不良總點數")] [Display(Name = "不良總點數")]
[DataMember] [DataMember]
public decimal NgQty { get; set; } = 0; public int NgQty { get; set; } = 0;
/// <summary> /// <summary>
/// 開始測試時間 /// 開始測試時間
@ -116,7 +116,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 內部條碼ID /// 內部條碼ID
/// </summary> /// </summary>
[Column("BARCODE_ID", TypeName = "NUMBER")] [Column("BARCODE_ID")]
[Display(Name = "內部條碼ID")] [Display(Name = "內部條碼ID")]
[DataMember] [DataMember]
public int BarcodeID { get; set; } public int BarcodeID { get; set; }
@ -124,7 +124,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 流程站別ID /// 流程站別ID
/// </summary> /// </summary>
[Column("RULE_STATION_ID", TypeName = "NUMBER")] [Column("RULE_STATION_ID")]
[Display(Name = "流程站別ID")] [Display(Name = "流程站別ID")]
[DataMember] [DataMember]
public int RuleStationId { get; set; } public int RuleStationId { get; set; }
@ -132,7 +132,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 工單ID /// 工單ID
/// </summary> /// </summary>
[Column("WIP_ID", TypeName = "NUMBER")] [Column("WIP_ID")]
[Display(Name = "工單ID")] [Display(Name = "工單ID")]
[DataMember] [DataMember]
public int WipId { get; set; } public int WipId { get; set; }
@ -140,10 +140,10 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 處理狀態(0:尚未維修處理, 1:已維修處理, 2:誤判) /// 處理狀態(0:尚未維修處理, 1:已維修處理, 2:誤判)
/// </summary> /// </summary>
[Column("STATUS", TypeName = "NUMBER")] [Column("STATUS")]
[Display(Name = "處理狀態")] [Display(Name = "處理狀態")]
[DataMember] [DataMember]
public decimal Status { get; set; } = 0; public int Status { get; set; } = 0;
/// <summary> /// <summary>
/// 不良現象原因代碼 /// 不良現象原因代碼
@ -157,18 +157,18 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary> /// <summary>
/// 不良代碼指向的下一站ID /// 不良代碼指向的下一站ID
/// </summary> /// </summary>
[Column("NEXT_STATION_ID", TypeName = "NUMBER")] [Column("NEXT_STATION_ID")]
[Display(Name = "不良代碼指向的下一站ID")] [Display(Name = "不良代碼指向的下一站ID")]
[DataMember] [DataMember]
public decimal NextStationId { get; set; } = -1; public int NextStationId { get; set; } = -1;
/// <summary> /// <summary>
/// 不良時的組件數量 /// 不良時的組件數量
/// </summary> /// </summary>
[Column("ITEM_QTY", TypeName = "NUMBER")] [Column("ITEM_QTY")]
[Display(Name = "不良時的組件數量")] [Display(Name = "不良時的組件數量")]
[DataMember] [DataMember]
public decimal ItemQty { get; set; } = -1; public int ItemQty { get; set; } = -1;
/// <summary> /// <summary>
/// 不良備註 /// 不良備註

1
AMESCoreStudio.WebApi/Models/AMESContext.cs

@ -610,6 +610,7 @@ namespace AMESCoreStudio.WebApi
/// </summary> /// </summary>
public DbSet<NgRepairBlob> NgRepairBlobs { get; set; } public DbSet<NgRepairBlob> NgRepairBlobs { get; set; }
/// <summary>
/// 過站狀態檔 /// 過站狀態檔
/// </summary> /// </summary>
public virtual DbSet<StatusType> StatusTypes { get; set; } public virtual DbSet<StatusType> StatusTypes { get; set; }

Loading…
Cancel
Save