Browse Source

1.新增PPS003机种C/T资料维护

PTD
marvinhong 4 years ago
parent
commit
1cc00cf11c
  1. 142
      AMESCoreStudio.Web/Controllers/PPSController.cs
  2. 39
      AMESCoreStudio.Web/HttpApis/AMES/IPPS.cs
  3. 3
      AMESCoreStudio.Web/Views/Home/Framework.cshtml
  4. 113
      AMESCoreStudio.Web/Views/PPS/PPS003.cshtml
  5. 136
      AMESCoreStudio.Web/Views/PPS/PPS003C.cshtml
  6. 106
      AMESCoreStudio.Web/Views/PPS/PPS003U.cshtml
  7. 112
      AMESCoreStudio.WebApi/Controllers/AMES/CycleTimesController.cs
  8. 26
      AMESCoreStudio.WebApi/Models/AMES/CycleTime.cs
  9. 4
      AMESCoreStudio.WebApi/Models/AMESContext.cs

142
AMESCoreStudio.Web/Controllers/PPSController.cs

@ -51,6 +51,19 @@ namespace AMESCoreStudio.Web.Controllers
ViewBag.SectionList = SectionList;
}
private async Task GetLineList()
{
var result = await _basApi.GetLineInfoes();
var LineList = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
LineList.Add(new SelectListItem(result[i].LineDesc, result[i].LineID.ToString()));
}
ViewBag.LineList = LineList;
}
private async Task GetErrorGroupList()
{
var result = await _ppsApi.GetErrorGroups();
@ -184,6 +197,21 @@ namespace AMESCoreStudio.Web.Controllers
return Json(new { data = item });
}
[HttpPost]
public async Task<JsonResult> GetLineJson(string unit_no)
{
var result = await _basApi.GetLineInfoByUnit(unit_no);
var item = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
item.Add(new SelectListItem(result[i].LineDesc, result[i].LineID.ToString()));
}
//将数据Json化并传到前台视图
return Json(new { data = item });
}
private async Task GetStatusList()
{
var StatusList = new List<SelectListItem>();
@ -409,6 +437,120 @@ namespace AMESCoreStudio.Web.Controllers
#endregion
#region PPS003機種C/T資料維護相關
public IActionResult PPS003()
{
return View();
}
//新增頁面
public async Task<IActionResult> PPS003C()
{
await GetSectionList();
await GetLineList();
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> PPS003UAsync(string id)
{
await GetSectionList();
await GetLineList();
var result = await _ppsApi.GetCycleTime(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> PPS003DAsync(string id)
{
var result = await _ppsApi.DeleteCycleTime(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> PPS003CSaveAsync(CycleTime model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PostCycleTime(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS003C", model);
}
public async Task<IActionResult> PPS003USaveAsync(CycleTime model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PutCycleTime(model.ItemNo + "," + model.LineID.ToString(), JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS003U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetCycleTimesAsync(int page = 1, int limit = 10)
{
var result = await _ppsApi.GetCycleTimes(page,limit);
var result_total = await _ppsApi.GetCycleTimes(0, limit);
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result_total.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region PPS005異常群組維護相關
public IActionResult PPS005()

39
AMESCoreStudio.Web/HttpApis/AMES/IPPS.cs

@ -90,6 +90,45 @@ namespace AMESCoreStudio.Web
#endregion
#region PPS003 機種C/T資料維護
/// <summary>
/// 新增機種C/T資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/CycleTimes")]
ITask<ResultModel<CycleTime>> PostCycleTime([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新機種C/T資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/CycleTimes/{id}")]
ITask<ResultModel<CycleTime>> PutCycleTime(string id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除機種C/T資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/CycleTimes/{id}")]
ITask<ResultModel<CycleTime>> DeleteCycleTime(string id);
/// <summary>
/// 根據ID獲取指定機種C/T資料資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/CycleTimes/{id}")]
ITask<List<CycleTime>> GetCycleTime(string id);
/// <summary>
/// 獲取機種C/T資料資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/CycleTimes")]
ITask<List<CycleTime>> GetCycleTimes(int page = 1, int limit = 10);
#endregion
#region PPS005 異常群組維護
/// <summary>

3
AMESCoreStudio.Web/Views/Home/Framework.cshtml

@ -171,6 +171,9 @@
<li class="sub-tab" hg-title="條碼狀態維護" hg-nav="/PPS/PPS002">
<a><i class="fa fa-comment-o fa-fw"></i><cite>條碼狀態維護</cite></a>
</li>
<li class="sub-tab" hg-title="機種C/T資料維護" hg-nav="/PPS/PPS003">
<a><i class="fa fa-comment-o fa-fw"></i><cite>機種C/T資料維護</cite></a>
</li>
<li class="sub-tab" hg-title="異常群組維護" hg-nav="/PPS/PPS005">
<a><i class="fa fa-comment-o fa-fw"></i><cite>異常群組維護</cite></a>
</li>

113
AMESCoreStudio.Web/Views/PPS/PPS003.cshtml

@ -0,0 +1,113 @@
@{
ViewData["Title"] = "機種C/T資料維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<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">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'itemNo',
title: '料號'
},
{
field: 'cT1',
width: 200,
title: '每個產出時間'
},
{
field: 'cT2',
width: 200,
title: '每分鐘產出個數'
},
{
field: 'unit',
title: '製程',
width: 200,
sort: true,
templet: function (d) {
return d.unit['unitName'];
}
},
{
field: 'line',
title: '線別',
width: 200,
sort: true,
templet: function (d) {
return d.line['lineDesc'];
}
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.itemNo) {
hg.open('修改機種C/T資料', '/PPS/PPS003U/' + obj.data.itemNo + ',' + obj.data.lineID, 800, 800);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.itemNo) {
hg.confirm("機種C/T資料:" + obj.data.itemNo + ',' + obj.data.line.lineDesc + ",确定要删除吗?", function () {
$.ajax({
url: '/PPS/PPS003D',
data: { id: obj.data.itemNo + ',' + obj.data.lineID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增機種C/T資料', '/PPS/PPS003C', 800, 800);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '機種C/T資料維護', '/PPS/GetCycleTimes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

136
AMESCoreStudio.Web/Views/PPS/PPS003C.cshtml

@ -0,0 +1,136 @@
@model AMESCoreStudio.WebApi.Models.AMES.CycleTime
@{ ViewData["Title"] = "PPS003C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS003CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ItemNo" class="control-label col-sm-3"></label>
<input asp-for="ItemNo" class="form-control col-sm-9" placeholder="請輸入料號" />
<span asp-validation-for="ItemNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="CT1" class="control-label col-sm-3"></label>
<input asp-for="CT1" class="form-control col-sm-9" placeholder="請輸入每個產出時間" />
<span asp-validation-for="CT1" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="CT2" class="control-label col-sm-3"></label>
<input asp-for="CT2" class="form-control col-sm-9" placeholder="請輸入每分鐘產出個數" />
<span asp-validation-for="CT2" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SectionNo" class="control-label col-sm-3"></label>
<select id="section" lay-filter="section" lay-verify="required" asp-for="SectionNo" asp-items="@ViewBag.SectionList" class="custom-select col-sm-9"></select>
<span asp-validation-for="SectionNo" class="text-danger offset-sm-3 my-sm-1"></span>
<input id="sectionNo" type="hidden" name="sectionNo" value="*" />
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LineID" class="control-label col-sm-3"></label>
<select id="line" lay-filter="line" lay-verify="required" asp-for="LineID" asp-items="@ViewBag.LineList" class="custom-select col-sm-9"></select>
<span asp-validation-for="LineID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="FirstTime" class="control-label col-sm-3"></label>
<input asp-for="FirstTime" class="form-control col-sm-9" placeholder="請輸入首件產出時間" />
<span asp-validation-for="FirstTime" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="PassTime" class="control-label col-sm-3"></label>
<input asp-for="PassTime" class="form-control col-sm-9" placeholder="請輸入良品產出時間" />
<span asp-validation-for="PassTime" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="OPCnt" class="control-label col-sm-3"></label>
<input asp-for="OPCnt" class="form-control col-sm-9" placeholder="請輸入作業人數" />
<span asp-validation-for="OPCnt" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="PROCnt" class="control-label col-sm-3"></label>
<input asp-for="PROCnt" class="form-control col-sm-9" placeholder="請輸入日產能" />
<span asp-validation-for="PROCnt" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="MOHUnit" class="control-label col-sm-3"></label>
<input asp-for="MOHUnit" class="form-control col-sm-9" placeholder="請輸入月產出" />
<span asp-validation-for="MOHUnit" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="WIUnit" class="control-label col-sm-3"></label>
<input asp-for="WIUnit" class="form-control col-sm-9" placeholder="請輸入週產出" />
<span asp-validation-for="WIUnit" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="Memo" class="control-label col-sm-3"></label>
<input asp-for="Memo" class="form-control col-sm-9" placeholder="請輸入備註" />
<span asp-validation-for="Memo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
function getLineList(data) {
$.ajax(
{
url: "@Url.Action("GetLineJson", "PPS")",
dataType: 'json',
data: { "unit_no": $("#sectionNo").val() },
type: 'post',
success: function (result) {
console.info(result.data);
$("#line").empty();//清空下拉框的值
$.each(result.data, function (index, item) {
$("#line").append(new Option(item.text, item.value));// 下拉菜单里添加元素
//$("#errorClass").append($("<option>").text(item.text).val(item.value))
});
layui.form.render("select");//重新渲染 固定写法
},
error: function (result) {
alert(result);
}
});
};
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
$("#section").change(function () {
//alert("hi");
var section_no = $(this).children('option:selected').val();
$("#sectionNo").val(section_no);
//alert(section_no);
getLineList(section_no);
});
});
</script>
}

106
AMESCoreStudio.Web/Views/PPS/PPS003U.cshtml

@ -0,0 +1,106 @@
@model AMESCoreStudio.WebApi.Models.AMES.CycleTime
@{ ViewData["Title"] = "PPS003U";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS003USave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="CreateUserId" />
<input type="hidden" asp-for="CreateDate" />
<div class="form-group form-inline my-sm-1">
<label asp-for="ItemNo" class="control-label col-sm-3"></label>
<input asp-for="ItemNo" class="form-control col-sm-9" placeholder="請輸入料號" readonly="readonly" />
<span asp-validation-for="ItemNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="CT1" class="control-label col-sm-3"></label>
<input asp-for="CT1" class="form-control col-sm-9" placeholder="請輸入每個產出時間" />
<span asp-validation-for="CT1" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="CT2" class="control-label col-sm-3"></label>
<input asp-for="CT2" class="form-control col-sm-9" placeholder="請輸入每分鐘產出個數" />
<span asp-validation-for="CT2" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SectionNo" class="control-label col-sm-3"></label>
<select id="section" lay-filter="section" lay-verify="required" asp-for="SectionNo" asp-items="@ViewBag.SectionList" class="custom-select col-sm-9" disabled></select>
<span asp-validation-for="SectionNo" class="text-danger offset-sm-3 my-sm-1"></span>
<input id="sectionNo" type="hidden" name="sectionNo" value="*" />
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LineID" class="control-label col-sm-3"></label>
<select id="line" lay-filter="line" lay-verify="required" asp-for="LineID" asp-items="@ViewBag.LineList" class="custom-select col-sm-9" disabled></select>
<span asp-validation-for="LineID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="FirstTime" class="control-label col-sm-3"></label>
<input asp-for="FirstTime" class="form-control col-sm-9" placeholder="請輸入首件產出時間" />
<span asp-validation-for="FirstTime" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="PassTime" class="control-label col-sm-3"></label>
<input asp-for="PassTime" class="form-control col-sm-9" placeholder="請輸入良品產出時間" />
<span asp-validation-for="PassTime" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="OPCnt" class="control-label col-sm-3"></label>
<input asp-for="OPCnt" class="form-control col-sm-9" placeholder="請輸入作業人數" />
<span asp-validation-for="OPCnt" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="PROCnt" class="control-label col-sm-3"></label>
<input asp-for="PROCnt" class="form-control col-sm-9" placeholder="請輸入日產能" />
<span asp-validation-for="PROCnt" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="MOHUnit" class="control-label col-sm-3"></label>
<input asp-for="MOHUnit" class="form-control col-sm-9" placeholder="請輸入月產出" />
<span asp-validation-for="MOHUnit" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="WIUnit" class="control-label col-sm-3"></label>
<input asp-for="WIUnit" class="form-control col-sm-9" placeholder="請輸入週產出" />
<span asp-validation-for="WIUnit" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="Memo" class="control-label col-sm-3"></label>
<input asp-for="Memo" class="form-control col-sm-9" placeholder="請輸入備註" />
<span asp-validation-for="Memo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

112
AMESCoreStudio.WebApi/Controllers/AMES/CycleTimesController.cs

@ -7,11 +7,12 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
///
/// 機種C/T資料維護
/// </summary>
[Route("api/[controller]")]
[ApiController]
@ -34,9 +35,27 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <returns></returns>
// GET: api/CycleTimes
[HttpGet]
public async Task<ActionResult<IEnumerable<CycleTime>>> GetCycleTime()
public async Task<ActionResult<IEnumerable<CycleTime>>> GetCycleTime(int page = 1, int limit = 10)
{
return await _context.CycleTimes.ToListAsync();
IQueryable<CycleTime> q = _context.CycleTimes;
if (page > 0)
{
q = q.OrderBy(p => p.ItemNo + p.LineID).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.ItemNo + p.LineID);
}
var cycleTime = await q.ToListAsync();
foreach (var data in cycleTime)
{
data.Unit = _context.FactoryUnits.Find(data.SectionNo);
data.Line = _context.LineInfoes.Find(data.LineID);
}
return cycleTime;
}
/// <summary>
@ -46,9 +65,22 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <returns></returns>
// GET: api/CycleTimes/5
[HttpGet("{id}")]
public async Task<ActionResult<CycleTime>> GetCycleTime(string id)
public async Task<ActionResult<IEnumerable<CycleTime>>> GetCycleTime(string id)
{
var cycleTime = await _context.CycleTimes.FindAsync(id);
string[] param = id.Split(',');
string itemNo = param[0];
int lineId = int.Parse(param[1]);
IQueryable<CycleTime> q = _context.CycleTimes;
q = q.Where(p => p.ItemNo.Equals(itemNo) && p.LineID.Equals(lineId));
var cycleTime = await q.ToListAsync();
foreach (var data in cycleTime)
{
data.Unit = _context.FactoryUnits.Find(data.SectionNo);
data.Line = _context.LineInfoes.Find(data.LineID);
}
if (cycleTime == null)
{
@ -68,11 +100,27 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
// 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.
[HttpPut("{id}")]
public async Task<IActionResult> PutCycleTime(string id, CycleTime cycleTime)
public async Task<ResultModel<CycleTime>> PutCycleTime(string id, [FromBody] CycleTime cycleTime)
{
if (id != cycleTime.ItemNo)
ResultModel<CycleTime> result = new ResultModel<CycleTime>();
string[] param = id.Split(',');
string itemNo = param[0];
int lineId = int.Parse(param[1]);
cycleTime.UpdateDate = DateTime.Now;
if (itemNo != cycleTime.ItemNo)
{
result.Success = false;
result.Msg = "料號錯誤";
return result;
}
if (lineId != cycleTime.LineID)
{
return BadRequest();
result.Success = false;
result.Msg = "線別ID錯誤";
return result;
}
_context.Entry(cycleTime).State = EntityState.Modified;
@ -83,9 +131,11 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
catch (DbUpdateConcurrencyException)
{
if (!CycleTimeExists(id))
if (!CycleTimeExists(itemNo, lineId))
{
return NotFound();
result.Success = false;
result.Msg = "料號錯誤";
return result;
}
else
{
@ -93,7 +143,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
}
return NoContent();
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
@ -105,8 +157,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
// 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.
[HttpPost]
public async Task<ActionResult<CycleTime>> PostCycleTime(CycleTime cycleTime)
public async Task<ResultModel<CycleTime>> PostCycleTime([FromBody] CycleTime cycleTime)
{
ResultModel<CycleTime> result = new ResultModel<CycleTime>();
cycleTime.CreateDate = DateTime.Now;
cycleTime.CreateUserId = 0;
_context.CycleTimes.Add(cycleTime);
try
{
@ -114,9 +171,11 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
catch (DbUpdateException)
{
if (CycleTimeExists(cycleTime.ItemNo))
if (CycleTimeExists(cycleTime.ItemNo, cycleTime.LineID))
{
return Conflict();
result.Success = false;
result.Msg = "資料重複";
return result;
}
else
{
@ -124,7 +183,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
}
return CreatedAtAction("GetCycleTime", new { id = cycleTime.ItemNo }, cycleTime);
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
@ -134,23 +195,32 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <returns></returns>
// DELETE: api/CycleTimes/5
[HttpDelete("{id}")]
public async Task<ActionResult<CycleTime>> DeleteCycleTime(string id)
public async Task<ResultModel<CycleTime>> DeleteCycleTime(string id)
{
var cycleTime = await _context.CycleTimes.FindAsync(id);
ResultModel<CycleTime> result = new ResultModel<CycleTime>();
string[] param = id.Split(',');
string itemNo = param[0];
int lineId = int.Parse(param[1]);
var cycleTime = await _context.CycleTimes.Where(p => p.ItemNo == itemNo && p.LineID == lineId).FirstOrDefaultAsync();
if (cycleTime == null)
{
return NotFound();
result.Success = false;
result.Msg = "資料不存在";
return result;
}
_context.CycleTimes.Remove(cycleTime);
await _context.SaveChangesAsync();
return cycleTime;
result.Success = true;
result.Msg = "OK";
return result;
}
private bool CycleTimeExists(string id)
private bool CycleTimeExists(string itemNo,int lineId)
{
return _context.CycleTimes.Any(e => e.ItemNo == id);
return _context.CycleTimes.Any(e => e.ItemNo == itemNo && e.LineID == lineId);
}
}
}

26
AMESCoreStudio.WebApi/Models/AMES/CycleTime.cs

@ -2,14 +2,14 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
using AMESCoreStudio.WebApi.Models.BAS;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 标准工时资料表
/// 機種C/T資料表
/// </summary>
[Table("CYCLE_TIME", Schema = "JHAMES")]
[DataContract]
public class CycleTime
{
/// <summary>
@ -106,19 +106,19 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary>
/// 週產出
/// </summary>
[Column("WI_CNT")]
[Column("WI_UNIT")]
[DataMember]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "週產出")]
public decimal WICnt { get; set; }
public decimal WIUnit { get; set; }
/// <summary>
/// 料號
/// 備註
/// </summary>
[Column("ITEM_NO")]
[Column("MEMO")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "料號")]
[StringLength(30, ErrorMessage = "{0},不能大于{1}")]
[Display(Name = "備註")]
[StringLength(100, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string Memo { get; set; }
@ -145,5 +145,15 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember]
[Display(Name = "修改日期")]
public DateTime UpdateDate { get; set; }
/// <summary>
/// 線別資料
/// </summary>
public virtual AMESCoreStudio.WebApi.Models.BAS.LineInfo Line { get; set; }
/// <summary>
/// 製程資料
/// </summary>
public virtual AMESCoreStudio.WebApi.Models.BAS.FactoryUnit Unit { get; set; }
}
}

4
AMESCoreStudio.WebApi/Models/AMESContext.cs

@ -86,11 +86,13 @@ namespace AMESCoreStudio.WebApi
modelBuilder.Entity<WipLog>().HasKey(c => new { c.WipID, c.CreateDate});
modelBuilder.Entity<CycleTime>().HasKey(c => new { c.ItemNo, c.LineID });
modelBuilder.Entity<CycleTime>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.SectionNo).IsRequired();
modelBuilder.Entity<CycleTime>().HasOne(r => r.Line).WithMany().HasForeignKey(r => r.LineID).IsRequired();
modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.ClassInfo>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired();
modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.LineInfo>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired();
modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.LineInfo>().HasOne(r => r.Dept).WithMany().HasForeignKey(r => r.DeptID).IsRequired();
modelBuilder.Entity < AMESCoreStudio.WebApi.Models.BAS.Stations>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired();
modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.Stations>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired();
}

Loading…
Cancel
Save