Browse Source

增加畫面:

WHS026 除外站別維護
     WHS027 報工站點對應途程站點維護
     WHS028 前置加工站別加入途程站點維護
master
yiru 3 weeks ago
parent
commit
0020cde5a2
  1. 333
      AMESCoreStudio.Web/Controllers/WHSController.cs
  2. 84
      AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs
  3. 150
      AMESCoreStudio.Web/Views/WHS/WHS026.cshtml
  4. 118
      AMESCoreStudio.Web/Views/WHS/WHS026C.cshtml
  5. 159
      AMESCoreStudio.Web/Views/WHS/WHS027.cshtml
  6. 188
      AMESCoreStudio.Web/Views/WHS/WHS027C.cshtml
  7. 159
      AMESCoreStudio.Web/Views/WHS/WHS028.cshtml
  8. 185
      AMESCoreStudio.Web/Views/WHS/WHS028C.cshtml
  9. 280
      AMESCoreStudio.WebApi/Controllers/AMES/ExceptStationsController.cs
  10. 294
      AMESCoreStudio.WebApi/Controllers/AMES/PreWorkingController.cs
  11. 289
      AMESCoreStudio.WebApi/Controllers/AMES/WorkingFlowStationsController.cs
  12. 59
      AMESCoreStudio.WebApi/Models/AMES/ExceptStation.cs
  13. 70
      AMESCoreStudio.WebApi/Models/AMES/PreWorking.cs
  14. 66
      AMESCoreStudio.WebApi/Models/AMES/WorkingFlowStations.cs
  15. 14
      AMESCoreStudio.WebApi/Models/AMESContext.cs

333
AMESCoreStudio.Web/Controllers/WHSController.cs

@ -1,20 +1,21 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.Web.Models;
using Newtonsoft.Json;
using AMESCoreStudio.Web.ViewModels.WHS;
using AMESCoreStudio.WebApi;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.CommonTools.Result;
using Microsoft.AspNetCore.Http;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using ClosedXML.Excel;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using AMESCoreStudio.Web.ViewModels.WHS;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace AMESCoreStudio.Web.Controllers
{
@ -3923,5 +3924,315 @@ namespace AMESCoreStudio.Web.Controllers
#endregion
#region WHS026除外站別維護
public async Task<IActionResult> WHS026()
{
await GetUserID();
await GetFactoryUnitsList();
return View();
}
public async Task<IActionResult> WHS026DAsync(string id,int uid)
{
var result = await _whsApi.DeleteExceptStation(id,uid);
return Json(new Result() { success = true, msg = "" });
}
public async Task<IActionResult> WHS026C()
{
await GetFactoryUnitsList3(); //報工生產單位
var tt = Request.Cookies["UserID"];
ViewBag.UserID = tt;
return View();
}
[HttpPost]
public async Task<IActionResult> WHS026CSaveAsync(ExceptStations model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _whsApi.PostExceptStation(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors != null)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("WHS026C", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetExceptStationAsync(string unit, int page = 0, int limit = 10)
{
var result = await _whsApi.GetExceptStationsbyUnit(unit, page, limit);
if (result.DataTotal > 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
return Json(new Table() { count = 0, data = null });
}
[HttpGet]
public async Task<IActionResult> GetStationListByUnitAsync(string id)
{
var result = await _basApi.GetStationses();
var stations = result
.Where(x => x.UnitNo == id && x.StatusNo =="A")
.Select(x => new
{
stationID = x.StationID,
stationName = x.StationName,
statusNo = x.StatusNo
})
.ToList();
if (!stations.Any())
{
return Json(new
{
code = 0,
msg = "無資料",
data = new[]
{
new { stationID = "", stationName = "N/A" }
},
count = 0
});
}
return Json(new
{
code = 0,
msg = "",
data = stations,
count = stations.Count
});
}
#endregion
#region WHS027報工對應途程站點資料檔
public async Task<IActionResult> WHS027()
{
await GetUserID();
await GetWorkingUnit("all");
return View();
}
public async Task<IActionResult> WHS027DAsync(string id,int uid)
{
var result = await _whsApi.DeleteWorkingFlowStation(id,uid);
return Json(new Result() { success = true, msg = "" });
}
public async Task<IActionResult> WHS027C()
{
await GetFactoryUnitsList3(); //報工生產單位
await GetWorkingUnit("");
var tt = Request.Cookies["UserID"];
ViewBag.UserID = tt;
return View();
}
[HttpPost]
public async Task<IActionResult> WHS027CSaveAsync(WorkingFlowStations model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _whsApi.PostWorkingFlowStation(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors != null)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("WHS027C", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetWorkingFlowStationsAsync(string workingunit, int page = 0, int limit = 10)
{
var result = await _whsApi.GetWorkingFlowStationsbyUnit(workingunit, page, limit);
if (result.DataTotal > 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
return Json(new Table() { count = 0, data = null });
}
[HttpGet]
public async Task<IActionResult> GetWorkingStationListByUnitAsync(int id)
{
var result = await _whsApi.GetWorkingStationsbyAll();
var stations = result
.Where(x => x.WorkingUnitID == id && x.StatusNo == "A")
.Select(x => new
{
stationID = x.WorkingStationID,
stationName = x.WorkingStationName,
statusNo = x.StatusNo
})
.ToList();
if (!stations.Any())
{
return Json(new
{
code = 0,
msg = "無資料",
data = new[]
{
new { stationID = "", stationName = "N/A" }
},
count = 0
});
}
return Json(new
{
code = 0,
msg = "",
data = stations,
count = stations.Count
});
}
#endregion
#region WHS028 前置加工站別加入維護
public async Task GetUserID()
{
var userID = "";
HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
int user_id = 0;
if (userID != null)
{
if (int.Parse(userID.ToString()) >= 0)
{
user_id = int.Parse(userID.ToString());
}
}
var result = await _sysApi.GetUserInfo(user_id);
var user = result[0].UserName;
ViewBag.UserID = user_id;
ViewBag.UserName = user;
}
public async Task<IActionResult> WHS028()
{
await GetUserID();
await GetWorkingUnit("all");
return View();
}
public async Task<IActionResult> WHS028DAsync(string id,int uid)
{
var result = await _whsApi.DeletePreWorking(id,uid);
return Json(new Result() { success = true, msg = "" });
}
public async Task<IActionResult> WHS028C()
{
await GetFactoryUnitsList3(); //報工生產單位
await GetWorkingUnit("");
var tt = Request.Cookies["UserID"];
ViewBag.UserID = tt;
return View();
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetPreWorkingAsync(string workingunit, int page = 0, int limit = 10)
{
var result = await _whsApi.GetPreWorkingbyUnit(workingunit, page, limit);
if (result.DataTotal > 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
return Json(new Table() { count = 0, data = null });
}
[HttpPost]
public async Task<IActionResult> WHS028CSaveAsync(PreWorking model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _whsApi.PostPreWorking(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors != null)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("WHS028C", model);
}
#endregion
}
}

84
AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs

@ -966,5 +966,89 @@ namespace AMESCoreStudio.Web
ITask<ResultModel<WorkingStandardWorkTime>> PostWorkingStandardWorkTimeList([FromBody, RawJsonContent] string model);
#endregion
#region WHS026途程除外站點資料檔
/// <summary>
/// 用生產單位获取该途程除外站點
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/ExceptStations/MultiUnit/{id}")]
ITask<ResultModel<dynamic>> GetExceptStationsbyUnit(string id, int page = 0, int limit = 10);
/// <summary>
/// 刪除途程除外站點資料檔資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/ExceptStations/{id}/{uid}")]
ITask<ResultModel<ExceptStations>> DeleteExceptStation(string id,int uid);
/// <summary>
/// 新增途程除外站點資料檔資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/ExceptStations")]
ITask<ResultModel<ExceptStations>> PostExceptStation([FromBody, RawJsonContent] string model);
#endregion
#region WHS027報工對應途程站點資料檔
/// <summary>
/// 獲取報工線別基本資料查詢資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingStations/byALL")]
ITask<List<WorkingStation>> GetWorkingStationsbyAll();
/// <summary>
/// 用生產單位获取该報工對應途程站點資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingFlowStations/MultiUnit/{id}")]
ITask<ResultModel<dynamic>> GetWorkingFlowStationsbyUnit(string id, int page = 0, int limit = 10);
/// <summary>
/// 刪除報工對應途程站點資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/WorkingFlowStations/{id}/{uid}")]
ITask<ResultModel<WorkingFlowStations>> DeleteWorkingFlowStation(string id,int uid);
/// <summary>
/// 新增報工對應途程站點資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/WorkingFlowStations")]
ITask<ResultModel<WorkingFlowStations>> PostWorkingFlowStation([FromBody, RawJsonContent] string model);
#endregion
#region WHS028前置加工入途程站點資料檔
/// <summary>
/// 用生產單位获取该前置加工入途程站點資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/PreWorking/MultiUnit/{id}")]
ITask<ResultModel<dynamic>> GetPreWorkingbyUnit(string id, int page = 0, int limit = 10);
/// <summary>
/// 刪除前置加工入途程站點資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/PreWorking/{id}/{uid}")]
ITask<ResultModel<PreWorking>> DeletePreWorking(string id,int uid);
/// <summary>
/// 新增前置加工入途程站點資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/PreWorking")]
ITask<ResultModel<PreWorking>> PostPreWorking([FromBody, RawJsonContent] string model);
#endregion
}
}

150
AMESCoreStudio.Web/Views/WHS/WHS026.cshtml

@ -0,0 +1,150 @@
@{
ViewData["Title"] = "除外站別維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
@model AMESCoreStudio.WebApi.Models.AMES.ExceptStations
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline" style="margin-right:0px;">
<label class="layui-inline layui-form-label" style="width:80px;">途程生產單位</label>
<div class="layui-input-inline" style="width: 90px; margin-right: 5px;">
<select style="width:90px;" lay-filter="unitNo" lay-submit id="unitNo" name="unitNo" asp-items="@ViewBag.FactoryUnit">
</select>
</div>
</div>
<div class="layui-inline" style="margin-left:0px;">
<button id="btnSearch" class="layui-btn tt">
<i class="layui-icon">&#xe615;</i>搜索
</button>
</div>
</div>
</div>
<input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" />
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
var tableCols = [[
{
field: 'exceptStationsID',
width: 100,
title: '#',
sort: true
},
{
field: 'stationID',
width: 200,
title: '需排除途程站點',
},
{
field: 'exceptStationsName',
title: '站點名稱',
},
{
field: 'center',
width: 200,
title: '操作',
templet: function (d) {
var btns = '';
if (d.statusNo == "A")
btns = btns + ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">停用</a>';
else if (d.statusNo == "S")
btns = btns + ' <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="del">啟用</a>';
return btns;
}
}
]];
//通过行tool編輯,lay-event="del"
function del(obj) {
if (obj.data.exceptStationsID) {
if (obj.data.statusNo == 'A')
str = '停用';
else
str = '啟用';
hg.confirm("除外站點:" + obj.data.exceptStationsName + ",確定要" + str + "嗎?", function () {
$.ajax({
url: '/WHS/WHS026D',
data: { id: obj.data.exceptStationsID },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msghide(str + "成功!");
}
else {
hg.msg(data.msg);
}
tt();
},
error: function () {
hg.msg("網路請求失!");
}
});
});
}
}
////搜索
$('#btnSearch').click(function () {
hg.msghide("刷新資料!");
tt();
});
layui.use(['form', 'layer', 'laydate'], function () {
form = layui.form;
form.on('select(unitNo)', function (data) {
var data = $("#unitNo").val();
});
});
////搜索
$('#querysubmit').click(function () {
hg.msghide("刷新資料!");
tt();
});
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增除外站別', '/WHS/WHS026C', 800, 400);
}
}
];
var table;
$(function () {
tt();
});
//基本資料表格
function tt() {
var unit = $("#unitNo").val();
table = hg.table.datatable('test', '除外站別維護', '/WHS/GetExceptStation?unit=' + unit
, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
}
</script>
}

118
AMESCoreStudio.Web/Views/WHS/WHS026C.cshtml

@ -0,0 +1,118 @@
@model AMESCoreStudio.WebApi.Models.AMES.ExceptStations
@{
ViewData["Title"] = "WHS026C";
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="WHS026CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="ExceptStationsID" value="0" />
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" />
<input type="hidden" asp-for="UpdateDate" value="@System.DateTime.Now" />
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">途程生產單位</label>
<select id="UnitNo" asp-for="UnitNo" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-7">
<option value="">請選擇</option>
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">途程生產站別</label>
<select id="StationID" asp-for="StationID" class="custom-select col-sm-7">
<option value="">請選擇</option>
<option value="-1">N/A</option>
</select>
<span asp-validation-for="StationID" 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 () {
$("#UnitNo").on("change", function () {
var unitNo = $(this).val();
// 若沒選擇,清空 Station
if (!unitNo) {
$("#StationID").empty()
.append(new Option("請選擇", ""));
return;
}
getStations(unitNo);
});
});
function getStations(unitNo) {
$.ajax({
url: "/WHS/GetStationListByUnit",
type: "GET",
data: { id: unitNo },
success: function (result) {
$("#StationID").empty();
$("#StationID").append(new Option("請選擇", ""));
if (result && result.data && result.data.length > 0) {
let hasData = false;
$.each(result.data, function (index, item) {
if (item.statusNo === "A") { // 只顯示啟用
$("#StationID").append(
new Option(item.stationName, item.stationID)
);
hasData = true;
}
});
if (!hasData) {
$("#StationID").empty()
.append(new Option("無選項", ""));
}
} else {
$("#StationID").append(new Option("無選項", ""));
}
},
error: function () {
hg.msg("取得站別資料失敗");
}
});
}
</script>
}

159
AMESCoreStudio.Web/Views/WHS/WHS027.cshtml

@ -0,0 +1,159 @@
@{
ViewData["Title"] = "報工對應途程站點資料檔";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
@model AMESCoreStudio.WebApi.Models.AMES.WorkingFlowStations
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline" style="margin-right:0px;">
<label class="layui-inline layui-form-label" style="width:80px;">報工生產單位</label>
<div class="layui-input-inline" style="width: 90px; margin-right: 5px;">
<select style="width:90px;" lay-filter="unitNo" lay-submit id="unitNo" name="unitNo" asp-items="@ViewBag.WorkingUnitNo">
</select>
</div>
</div>
<div class="layui-inline" style="margin-left:0px;">
<button id="btnSearch" class="layui-btn tt">
<i class="layui-icon">&#xe615;</i>搜索
</button>
</div>
</div>
</div>
<input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" />
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
var tableCols = [[
{
field: 'workingFlowStationsID',
width: 100,
title: '#',
sort: true
},
{
field: 'workingStationID',
width: 200,
title: '報工站點ID',
},
{
field: 'workingStationName',
title: '報工站點名稱',
},
{
field: 'stationID',
width: 200,
title: '途程站點ID',
},
{
field: 'stationName',
title: '途程站點名稱',
},
{
field: 'center',
width: 200,
title: '操作',
templet: function (d) {
var btns = '';
if (d.statusNo == "A")
btns = btns + ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">停用</a>';
else if (d.statusNo == "S")
btns = btns + ' <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="del">啟用</a>';
return btns;
}
}
]];
//通过行tool編輯,lay-event="del"
function del(obj) {
if (obj.data.workingFlowStationsID) {
if (obj.data.statusNo == 'A')
str = '停用';
else
str = '啟用';
hg.confirm("報工站點:" + obj.data.workingStationName + ",確定要" + str + "嗎?", function () {
$.ajax({
url: '/WHS/WHS027D',
data: { id: obj.data.workingFlowStationsID },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msghide(str + "成功!");
}
else {
hg.msg(data.msg);
}
tt();
},
error: function () {
hg.msg("網路請求失!");
}
});
});
}
}
////搜索
$('#btnSearch').click(function () {
hg.msghide("刷新資料!");
tt();
});
layui.use(['form', 'layer', 'laydate'], function () {
form = layui.form;
form.on('select(unitNo)', function (data) {
var data = $("#unitNo").val();
});
});
////搜索
$('#querysubmit').click(function () {
hg.msghide("刷新資料!");
tt();
});
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增除外站別', '/WHS/WHS027C', 800, 400);
}
}
];
var table;
$(function () {
tt();
});
//基本資料表格
function tt() {
var unit = $("#unitNo").val();
table = hg.table.datatable('test', '除外站別維護', '/WHS/GetWorkingFlowStations?workingunit=' + unit
, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
}
</script>
}

188
AMESCoreStudio.Web/Views/WHS/WHS027C.cshtml

@ -0,0 +1,188 @@
@model AMESCoreStudio.WebApi.Models.AMES.WorkingFlowStations
@{
ViewData["Title"] = "WHS027C";
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="WHS027CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="WorkingFlowStationsID" value="0" />
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" />
<input type="hidden" asp-for="UpdateDate" value="@System.DateTime.Now" />
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">報工生產單位</label>
<select id="WorkingUnitID" asp-for="WorkingUnitID" asp-items="@ViewBag.WorkingUnitNo" class="custom-select col-sm-7">
<option value="">請選擇</option>
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">報工生產站別</label>
<select id="WorkingStationID" asp-for="WorkingStationID" class="custom-select col-sm-7">
<option value="">請選擇</option>
<option value="-1">N/A</option>
</select>
<span asp-validation-for="StationID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">途程生產單位</label>
<select id="UnitNo" asp-for="UnitNo" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-7">
<option value="">請選擇</option>
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">途程生產站別</label>
<select id="StationID" asp-for="StationID" class="custom-select col-sm-7">
<option value="">請選擇</option>
<option value="-1">N/A</option>
</select>
<span asp-validation-for="StationID" 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 () {
$("#UnitNo").on("change", function () {
var unitNo = $(this).val();
// 若沒選擇,清空 Station
if (!unitNo) {
$("#StationID").empty()
.append(new Option("請選擇", ""));
return;
}
getStations(unitNo);
});
$("#WorkingUnitID").on("change", function () {
var workingUnitID = $(this).val();
// 若沒選擇,清空 Station
if (!workingUnitID) {
$("#WorkingStationID").empty()
.append(new Option("請選擇", ""));
return;
}
getWorkingStations(workingUnitID);
});
});
function getStations(unitNo) {
$.ajax({
url: "/WHS/GetStationListByUnit",
type: "GET",
data: { id: unitNo },
success: function (result) {
$("#StationID").empty();
$("#StationID").append(new Option("請選擇", ""));
if (result && result.data && result.data.length > 0) {
let hasData = false;
$.each(result.data, function (index, item) {
if (item.statusNo === "A") { // 只顯示啟用
$("#StationID").append(
new Option(item.stationName, item.stationID)
);
hasData = true;
}
});
if (!hasData) {
$("#StationID").empty()
.append(new Option("無選項", ""));
}
} else {
$("#StationID").append(new Option("無選項", ""));
}
},
error: function () {
hg.msg("取得站別資料失敗");
}
});
}
function getWorkingStations(workingunitID) {
$.ajax({
url: "/WHS/GetWorkingStationListByUnit",
type: "GET",
data: { id: workingunitID },
success: function (result) {
$("#WorkingStationID").empty();
$("#WorkingStationID").append(new Option("請選擇", ""));
if (result && result.data && result.data.length > 0) {
let hasData = false;
$.each(result.data, function (index, item) {
if (item.statusNo === "A") { // 只顯示啟用
$("#WorkingStationID").append(
new Option(item.stationName, item.stationID)
);
hasData = true;
}
});
if (!hasData) {
$("#WorkingStationID").empty()
.append(new Option("無選項", ""));
}
} else {
$("#WorkingStationID").append(new Option("無選項", ""));
}
},
error: function () {
hg.msg("取得站別資料失敗");
}
});
}
</script>
}

159
AMESCoreStudio.Web/Views/WHS/WHS028.cshtml

@ -0,0 +1,159 @@
@{
ViewData["Title"] = "前置加工入途程站點資料檔";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
@model AMESCoreStudio.WebApi.Models.AMES.PreWorking
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline" style="margin-right:0px;">
<label class="layui-inline layui-form-label" style="width:80px;">報工生產單位</label>
<div class="layui-input-inline" style="width: 90px; margin-right: 5px;">
<select style="width:90px;" lay-filter="unitNo" lay-submit id="unitNo" name="unitNo" asp-items="@ViewBag.WorkingUnitNo">
</select>
</div>
</div>
<div class="layui-inline" style="margin-left:0px;">
<button id="btnSearch" class="layui-btn tt">
<i class="layui-icon">&#xe615;</i>搜索
</button>
</div>
</div>
</div>
<input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" />
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
var tableCols = [[
{
field: 'preWorkingID',
width: 100,
title: '#',
sort: true
},
{
field: 'stationID',
width: 200,
title: '途程站點ID',
},
{
field: 'stationName',
title: '途程站點名稱',
},
{
field: 'workingStationID',
width: 200,
title: '報工站點ID',
},
{
field: 'workingStationName',
title: '報工站點名稱',
},
{
field: 'center',
width: 200,
title: '操作',
templet: function (d) {
var btns = '';
if (d.statusNo == "A")
btns = btns + ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">停用</a>';
else if (d.statusNo == "S")
btns = btns + ' <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="del">啟用</a>';
return btns;
}
}
]];
//通过行tool編輯,lay-event="del"
function del(obj) {
if (obj.data.preWorkingID) {
if (obj.data.statusNo == 'A')
str = '停用';
else
str = '啟用';
hg.confirm("途程站點:" + obj.data.stationName + ",確定要" + str + "嗎?", function () {
$.ajax({
url: '/WHS/WHS028D',
data: { id: obj.data.preWorkingID, uid: $('#UpdateUserID').val() },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msghide(str + "成功!");
}
else {
hg.msg(data.msg);
}
tt();
},
error: function () {
hg.msg("網路請求失!");
}
});
});
}
}
////搜索
$('#btnSearch').click(function () {
hg.msghide("刷新資料!");
tt();
});
layui.use(['form', 'layer', 'laydate'], function () {
form = layui.form;
form.on('select(unitNo)', function (data) {
var data = $("#unitNo").val();
});
});
////搜索
$('#querysubmit').click(function () {
hg.msghide("刷新資料!");
tt();
});
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增前置加工入途程站點', '/WHS/WHS028C', 800, 400);
}
}
];
var table;
$(function () {
tt();
});
//基本資料表格
function tt() {
var unit = $("#unitNo").val();
table = hg.table.datatable('test', '前置加工站別加入途程站點維護', '/WHS/GetPreWorking?workingunit=' + unit
, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
}
</script>
}

185
AMESCoreStudio.Web/Views/WHS/WHS028C.cshtml

@ -0,0 +1,185 @@
@model AMESCoreStudio.WebApi.Models.AMES.PreWorking
@{
ViewData["Title"] = "WHS028C";
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="WHS028CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="PreWorkingID" value="0" />
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" />
<input type="hidden" asp-for="UpdateDate" value="@System.DateTime.Now" />
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">途程生產單位</label>
<select id="UnitNo" asp-for="UnitNo" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-7">
<option value="">請選擇</option>
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">途程生產站別</label>
<select id="StationID" asp-for="StationID" class="custom-select col-sm-7">
<option value="">請選擇</option>
<option value="-1">N/A</option>
</select>
<span asp-validation-for="StationID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">報工生產單位</label>
<select id="WorkingUnitID" asp-for="WorkingUnitID" asp-items="@ViewBag.WorkingUnitNo" class="custom-select col-sm-7">
<option value="">請選擇</option>
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label class="control-label col-sm-3">報工生產站別</label>
<select id="WorkingStationID" asp-for="WorkingStationID" class="custom-select col-sm-7">
<option value="">請選擇</option>
<option value="-1">N/A</option>
</select>
<span asp-validation-for="StationID" 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 () {
$("#UnitNo").on("change", function () {
var unitNo = $(this).val();
// 若沒選擇,清空 Station
if (!unitNo) {
$("#StationID").empty()
.append(new Option("請選擇", ""));
return;
}
getStations(unitNo);
});
$("#WorkingUnitID").on("change", function () {
var workingUnitID = $(this).val();
// 若沒選擇,清空 Station
if (!workingUnitID) {
$("#WorkingStationID").empty()
.append(new Option("請選擇", ""));
return;
}
getWorkingStations(workingUnitID);
});
});
function getStations(unitNo) {
$.ajax({
url: "/WHS/GetStationListByUnit",
type: "GET",
data: { id: unitNo },
success: function (result) {
$("#StationID").empty();
$("#StationID").append(new Option("請選擇", ""));
if (result && result.data && result.data.length > 0) {
let hasData = false;
$.each(result.data, function (index, item) {
if (item.statusNo === "A") { // 只顯示啟用
$("#StationID").append(
new Option(item.stationName, item.stationID)
);
hasData = true;
}
});
if (!hasData) {
$("#StationID").empty()
.append(new Option("無選項", ""));
}
} else {
$("#StationID").append(new Option("無選項", ""));
}
},
error: function () {
hg.msg("取得站別資料失敗");
}
});
}
function getWorkingStations(workingunitID) {
$.ajax({
url: "/WHS/GetWorkingStationListByUnit",
type: "GET",
data: { id: workingunitID },
success: function (result) {
$("#WorkingStationID").empty();
$("#WorkingStationID").append(new Option("請選擇", ""));
if (result && result.data && result.data.length > 0) {
let hasData = false;
$.each(result.data, function (index, item) {
if (item.statusNo === "A") { // 只顯示啟用
$("#WorkingStationID").append(
new Option(item.stationName, item.stationID)
);
hasData = true;
}
});
if (!hasData) {
$("#WorkingStationID").empty()
.append(new Option("無選項", ""));
}
} else {
$("#WorkingStationID").append(new Option("無選項", ""));
}
},
error: function () {
hg.msg("取得站別資料失敗");
}
});
}
</script>
}

280
AMESCoreStudio.WebApi/Controllers/AMES/ExceptStationsController.cs

@ -0,0 +1,280 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
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>
/// 途程除外站點维护
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class ExceptStationsController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public ExceptStationsController(AMESContext context)
{
_context = context;
}
/// <summary>
/// 获取全部途程除外站點
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ResultModel<ExceptStations>> GetExceptStations(int page = 0, int limit = 10)
{
IQueryable<ExceptStations> q = _context.ExceptStations;
ResultModel<ExceptStations> result = new ResultModel<ExceptStations>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 用ID获取该途程除外站點
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<ExceptStations>>> GetExceptStations(int id)
{
IQueryable<ExceptStations> q = _context.ExceptStations;
q = q.Where(p => p.ExceptStationsID.Equals(id));
var ExceptStations = await q.ToListAsync();
if (ExceptStations == null)
{
return NotFound();
}
return ExceptStations;
}
/// <summary>
/// 用生產單位获取该途程除外站點
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("Unit/{id}")]
public async Task<ActionResult<IEnumerable<ExceptStations>>> GetExceptStationsbyUnit(int id)
{
IQueryable<ExceptStations> q = _context.ExceptStations;
if (id != -99)
{
q = q.Where(p => p.UnitNo.Equals(id));
}
var ExceptStations = await q.ToListAsync();
if (ExceptStations == null)
{
return NotFound();
}
return ExceptStations;
}
/// <summary>
/// 用生產單位获取该途程除外站點
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("MultiUnit/{id}")]
public async Task<ResultModel<dynamic>> GetExceptStationsMulti(string id,int page = 0, int limit = 10)
{
var q = from q1 in _context.ExceptStations
join q3 in _context.Stationses on q1.StationID equals q3.StationID
join q2 in _context.FactoryUnits on q1.UnitNo equals q2.UnitNo
select new
{
ExceptStationsID = q1.ExceptStationsID,
StationID = q1.StationID,
ExceptStationsName = q3.StationName,
UnitNo = q1.UnitNo,
UnitName = q2.UnitName,
CreateUserID = q1.CreateUserID,
CreateDate = q1.CreateDate,
UpdateDate = q1.UpdateDate,
statusNo = q1.StatusNo
};
if (id != "0")
{
q = q.Where(p => p.UnitNo.Equals(id));
}
ResultModel<dynamic> result = new ResultModel<dynamic>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 更新條途程除外站點
/// </summary>
/// <param name="id"></param>
/// <param name="ExceptStations"></param>
/// <returns></returns>
[HttpPut("{id}")]
public async Task<ResultModel<ExceptStations>> PutExceptStations(int id, [FromBody] ExceptStations ExceptStations)
{
ResultModel<ExceptStations> result = new ResultModel<ExceptStations>();
if (id != ExceptStations.ExceptStationsID)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
ExceptStations.UpdateDate = DateTime.Now;
_context.Entry(ExceptStations).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
return result;
//throw;
}
}
/// <summary>
/// 新增途程除外站點
/// </summary>
/// <param name="ExceptStations"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<ExceptStations>> PostExceptStations(ExceptStations ExceptStations)
{
ResultModel<ExceptStations> result = new ResultModel<ExceptStations>();
if (ExceptStationExists(ExceptStations))
{
result.Success = false;
result.Msg = "途程站別重覆!!";
return result;
}
Helper helper = new Helper(_context);
ExceptStations.ExceptStationsID = helper.GetIDKey("ExceptStations_ID").Result;
ExceptStations.CreateDate = DateTime.Now;
ExceptStations.UpdateDate = DateTime.Now;
_context.ExceptStations.Add(ExceptStations);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (DbUpdateException ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 停用/啟用途程除外站點
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}/{uid}")]
public async Task<ResultModel<ExceptStations>> DeleteExceptStations(int id,int uid)
{
ResultModel<ExceptStations> result = new ResultModel<ExceptStations>();
var workingunit = await _context.ExceptStations.Where(m => m.ExceptStationsID == id).FirstOrDefaultAsync();
if (workingunit == null)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
//////
var workingunitNew = new ExceptStations();
workingunitNew = workingunit;
_context.Entry(workingunitNew).State = EntityState.Modified;
if (workingunit.StatusNo == "A")
workingunitNew.StatusNo = "S";
else
workingunitNew.StatusNo = "A";
workingunitNew.UpdateDate = DateTime.Now;
workingunitNew.UpdateUserID = uid;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
private bool ExceptStationExists(ExceptStations model)
{
return _context.ExceptStations.Any(e =>
e.StationID == model.StationID);
}
}
}

294
AMESCoreStudio.WebApi/Controllers/AMES/PreWorkingController.cs

@ -0,0 +1,294 @@
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.Models.AMES;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 前置加工入途程站點维护
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class PreWorkingController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public PreWorkingController(AMESContext context)
{
_context = context;
}
/// <summary>
/// 获取全部前置加工入途程站點
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ResultModel<PreWorking>> GetPreWorking(int page = 0, int limit = 10)
{
IQueryable<PreWorking> q = _context.PreWorkings;
ResultModel<PreWorking> result = new ResultModel<PreWorking>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 用ID获取该前置加工入途程站點
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<PreWorking>>> GetPreWorking(int id)
{
IQueryable<PreWorking> q = _context.PreWorkings;
q = q.Where(p => p.PreWorkingID.Equals(id));
var PreWorking = await q.ToListAsync();
if (PreWorking == null)
{
return NotFound();
}
return PreWorking;
}
/// <summary>
/// 用生產單位获取该前置加工入途程站點
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("Unit/{id}")]
public async Task<ActionResult<IEnumerable<PreWorking>>> GetPreWorkingbyUnit(int id)
{
IQueryable<PreWorking> q = _context.PreWorkings;
if (id != -99)
{
q = q.Where(p => p.UnitNo.Equals(id));
}
var PreWorking = await q.ToListAsync();
if (PreWorking == null)
{
return NotFound();
}
return PreWorking;
}
/// <summary>
/// 用生產單位获取该前置加工入途程站點
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("MultiUnit/{id}")]
public async Task<ResultModel<dynamic>> GetPreWorkingMulti(int id, int page = 0, int limit = 10)
{
var q = from q1 in _context.PreWorkings
join q3 in _context.Stationses on q1.StationID equals q3.StationID
join q2 in _context.FactoryUnits on q1.UnitNo equals q2.UnitNo
join q4 in _context.WorkingUnits on q1.WorkingUnitID equals q4.WorkingUnitID
join q5 in _context.WorkingStations on q1.WorkingStationID equals q5.WorkingStationID
select new
{
PreWorkingID = q1.PreWorkingID,
UnitNo = q1.UnitNo,
UnitName = q2.UnitName,
StationID = q1.StationID,
StationName = q3.StationName,
WorkingUnitID = q1.WorkingUnitID,
WorkingUnionNo = q4.WorkingUnitNo,
WorkingUnitName = q4.WorkingUnitName,
WorkingStationID = q5.WorkingStationID,
WorkingStationName = q5.WorkingStationName,
CreateUserID = q1.CreateUserID,
CreateDate = q1.CreateDate,
UpdateDate = q1.UpdateDate,
StatusNo = q1.StatusNo,
Seq = q1.Seq
};
if (id != -99)
{
q = q.Where(p => p.WorkingUnitID.Equals(id));
}
ResultModel<dynamic> result = new ResultModel<dynamic>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 更新條前置加工入途程站點
/// </summary>
/// <param name="id"></param>
/// <param name="PreWorking"></param>
/// <returns></returns>
[HttpPut("{id}")]
public async Task<ResultModel<PreWorking>> PutPreWorking(int id, [FromBody] PreWorking PreWorking)
{
ResultModel<PreWorking> result = new ResultModel<PreWorking>();
if (id != PreWorking.PreWorkingID)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
PreWorking.UpdateDate = DateTime.Now;
_context.Entry(PreWorking).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
return result;
//throw;
}
}
/// <summary>
/// 新增前置加工入途程站點
/// </summary>
/// <param name="PreWorking"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<PreWorking>> PostPreWorking([FromBody] PreWorking PreWorking)
{
ResultModel<PreWorking> result = new ResultModel<PreWorking>();
if (PreWorkingExists(PreWorking))
{
result.Success = false;
result.Msg = "途程站別對應報工站別重覆!!";
return result;
}
int maxSeq = await _context.PreWorkings.Where(w => w.StationID == PreWorking.StationID).Select(w => (int?)w.Seq).MaxAsync() ?? 0;
Helper helper = new Helper(_context);
PreWorking.PreWorkingID = helper.GetIDKey("PreWorking_ID").Result;
PreWorking.CreateDate = DateTime.Now;
PreWorking.UpdateDate = DateTime.Now;
PreWorking.Seq = maxSeq + 1;
_context.PreWorkings.Add(PreWorking);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (DbUpdateException ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 停用/啟用前置加工入途程站點
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}/{uid}")]
public async Task<ResultModel<PreWorking>> DeletePreWorking(int id, int uid)
{
ResultModel<PreWorking> result = new ResultModel<PreWorking>();
var workingunit = await _context.PreWorkings.Where(m => m.PreWorkingID == id).FirstOrDefaultAsync();
if (workingunit == null)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
//////
var workingunitNew = new PreWorking();
workingunitNew = workingunit;
_context.Entry(workingunitNew).State = EntityState.Modified;
if (workingunit.StatusNo == "A")
workingunitNew.StatusNo = "S";
else
workingunitNew.StatusNo = "A";
workingunitNew.UpdateDate = DateTime.Now;
workingunitNew.UpdateUserID = uid;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
private bool PreWorkingExists(PreWorking model)
{
return _context.PreWorkings.Any(e =>
e.WorkingStationID == model.WorkingStationID &&
e.StationID == model.StationID );
}
}
}

289
AMESCoreStudio.WebApi/Controllers/AMES/WorkingFlowStationsController.cs

@ -0,0 +1,289 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 報工對應途程站點维护
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class WorkingFlowStationsController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public WorkingFlowStationsController(AMESContext context)
{
_context = context;
}
/// <summary>
/// 获取全部報工對應途程站點
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ResultModel<WorkingFlowStations>> GetWorkingFlowStations(int page = 0, int limit = 10)
{
IQueryable<WorkingFlowStations> q = _context.WorkingFlowStations;
ResultModel<WorkingFlowStations> result = new ResultModel<WorkingFlowStations>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 用ID获取该報工對應途程站點
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<WorkingFlowStations>>> GetWorkingFlowStations(int id)
{
IQueryable<WorkingFlowStations> q = _context.WorkingFlowStations;
q = q.Where(p => p.WorkingFlowStationsID.Equals(id));
var WorkingFlowStations = await q.ToListAsync();
if (WorkingFlowStations == null)
{
return NotFound();
}
return WorkingFlowStations;
}
/// <summary>
/// 用生產單位获取该報工對應途程站點
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("Unit/{id}")]
public async Task<ActionResult<IEnumerable<WorkingFlowStations>>> GetWorkingFlowStationsbyUnit(int id)
{
IQueryable<WorkingFlowStations> q = _context.WorkingFlowStations;
if (id != -99)
{
q = q.Where(p => p.UnitNo.Equals(id));
}
var WorkingFlowStations = await q.ToListAsync();
if (WorkingFlowStations == null)
{
return NotFound();
}
return WorkingFlowStations;
}
/// <summary>
/// 用生產單位获取该報工對應途程站點
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("MultiUnit/{id}")]
public async Task<ResultModel<dynamic>> GetWorkingFlowStationsMulti(int id,int page = 0, int limit = 10)
{
var q = from q1 in _context.WorkingFlowStations
join q3 in _context.Stationses on q1.StationID equals q3.StationID
join q2 in _context.FactoryUnits on q1.UnitNo equals q2.UnitNo
join q4 in _context.WorkingUnits on q1.WorkingUnitID equals q4.WorkingUnitID
join q5 in _context.WorkingStations on q1.WorkingStationID equals q5.WorkingStationID
select new
{
WorkingFlowStationsID = q1.WorkingFlowStationsID,
UnitNo = q1.UnitNo,
UnitName = q2.UnitName,
StationID = q1.StationID,
StationName = q3.StationName,
WorkingUnitID = q1.WorkingUnitID,
WorkingUnionNo = q4.WorkingUnitNo,
WorkingUnitName = q4.WorkingUnitName,
WorkingStationID = q5.WorkingStationID,
WorkingStationName = q5.WorkingStationName,
CreateUserID = q1.CreateUserID,
CreateDate = q1.CreateDate,
UpdateDate = q1.UpdateDate,
StatusNo = q1.StatusNo
};
if (id != -99)
{
q = q.Where(p => p.WorkingUnitID.Equals(id));
}
ResultModel<dynamic> result = new ResultModel<dynamic>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 更新條報工對應途程站點
/// </summary>
/// <param name="id"></param>
/// <param name="WorkingFlowStations"></param>
/// <returns></returns>
[HttpPut("{id}")]
public async Task<ResultModel<WorkingFlowStations>> PutWorkingFlowStations(int id, [FromBody] WorkingFlowStations WorkingFlowStations)
{
ResultModel<WorkingFlowStations> result = new ResultModel<WorkingFlowStations>();
if (id != WorkingFlowStations.WorkingFlowStationsID)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
WorkingFlowStations.UpdateDate = DateTime.Now;
_context.Entry(WorkingFlowStations).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
return result;
//throw;
}
}
/// <summary>
/// 新增報工對應途程站點
/// </summary>
/// <param name="WorkingFlowStations"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<WorkingFlowStations>> PostWorkingFlowStations([FromBody] WorkingFlowStations WorkingFlowStations)
{
ResultModel<WorkingFlowStations> result = new ResultModel<WorkingFlowStations>();
if (WorkingFlowStationExists(WorkingFlowStations))
{
result.Success = false;
result.Msg = "途程站別對應報工站別重覆!!";
return result;
}
Helper helper = new Helper(_context);
WorkingFlowStations.WorkingFlowStationsID = helper.GetIDKey("WorkingFlowStationID").Result;
WorkingFlowStations.CreateDate = DateTime.Now;
WorkingFlowStations.UpdateDate = DateTime.Now;
_context.WorkingFlowStations.Add(WorkingFlowStations);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (DbUpdateException ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 停用/啟用報工對應途程站點
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}/{uid}")]
public async Task<ResultModel<WorkingFlowStations>> DeleteWorkingFlowStations(int id,int uid)
{
ResultModel<WorkingFlowStations> result = new ResultModel<WorkingFlowStations>();
var workingunit = await _context.WorkingFlowStations.Where(m => m.WorkingFlowStationsID == id).FirstOrDefaultAsync();
if (workingunit == null)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
//////
var workingunitNew = new WorkingFlowStations();
workingunitNew = workingunit;
_context.Entry(workingunitNew).State = EntityState.Modified;
if (workingunit.StatusNo == "A")
workingunitNew.StatusNo = "S";
else
workingunitNew.StatusNo = "A";
workingunitNew.UpdateDate = DateTime.Now;
workingunitNew.UpdateUserID = uid;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
private bool WorkingFlowStationExists(WorkingFlowStations model)
{
return _context.WorkingFlowStations.Any(e =>
e.WorkingStationID == model.WorkingStationID &&
e.StationID == model.StationID);
}
}
}

59
AMESCoreStudio.WebApi/Models/AMES/ExceptStation.cs

@ -0,0 +1,59 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 途程除外站點資料檔
/// </summary>
[Table("EXCEPT_STATIONS", Schema = "JHAMES")]
public class ExceptStations
{
[Key]
[Column("EXCEPT_STATIONS_ID")]
[DataMember]
[Display(Name = "途程除外站點ID")]
public int ExceptStationsID { get; set; }
[Column("STATION_ID")]
[DataMember]
[Display(Name = "途程站點ID")]
public int StationID { get; set; }
[Column("UNIT_NO")]
[DataMember]
[Display(Name = "途程生產單位代碼")]
[StringLength(2)]
public string UnitNo { get; set; }
[Column("CREATE_USERID")]
[DataMember]
[Display(Name = "創建者")]
public int CreateUserID { get; set; }
[Column("CREATE_DATE")]
[DataMember]
[Display(Name = "創建日期")]
public DateTime CreateDate { get; set; }
[Column("UPDATE_USERID")]
[DataMember]
[Display(Name = "更新者")]
public int UpdateUserID { get; set; }
[Column("UPDATE_DATE")]
[DataMember]
[Display(Name = "更新日期")]
public DateTime UpdateDate { get; set; }
[Column("STATUS_NO")]
[DataMember]
[Display(Name = "狀態")]
public string StatusNo { get; set; } = "A";
}
}

70
AMESCoreStudio.WebApi/Models/AMES/PreWorking.cs

@ -0,0 +1,70 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 前置加工入途程站點資料檔
/// </summary>
[Table("PRE_WORKING")]
public class PreWorking
{
[Key]
[Column("PRE_WORKING_ID")]
[DataMember]
[Display(Name = "前置加工ID")]
public int PreWorkingID { get; set; }
[Column("STATION_ID")]
[DataMember]
[Display(Name = "途程站點ID")]
public int StationID { get; set; }
[Column("UNIT_NO")]
[DataMember]
[Display(Name = "途程生產單位代碼")]
[StringLength(2)]
public string UnitNo { get; set; }
[Column("WORKING_STATION_ID")]
[DataMember]
[Display(Name = "報工站別ID")]
public int WorkingStationID { get; set; }
[Column("WORKING_UNIT_ID")]
[DataMember]
[Display(Name = "報工生產單位ID")]
public int WorkingUnitID { get; set; }
[Column("CREATE_USERID")]
[DataMember]
[Display(Name = "創建者")]
public int CreateUserID { get; set; }
[Column("CREATE_DATE")]
[DataMember]
[Display(Name = "創建日期")]
public DateTime CreateDate { get; set; }
[Column("UPDATE_USERID")]
[DataMember]
[Display(Name = "更新者")]
public int UpdateUserID { get; set; }
[Column("UPDATE_DATE")]
[DataMember]
[Display(Name = "更新日期")]
public DateTime UpdateDate { get; set; }
[Column("SEQ")]
[DataMember]
[Display(Name = "優先排序")]
public int Seq { get; set; }
[Column("STATUS_NO")]
[DataMember]
[Display(Name = "狀態")]
public string StatusNo { get; set; } = "A";
}
}

66
AMESCoreStudio.WebApi/Models/AMES/WorkingFlowStations.cs

@ -0,0 +1,66 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 報工對應途程站點資料檔
/// </summary>
[Table("WORKING_FLOW_STATIONS")]
public class WorkingFlowStations
{
[Key]
[Column("WORKING_FLOW_STATIONS_ID")]
[DataMember]
[Display(Name = "報工對應途程站點ID")]
public int WorkingFlowStationsID { get; set; }
[Column("WORKING_STATION_ID")]
[DataMember]
[Display(Name = "報工站別ID")]
public int WorkingStationID { get; set; }
[Column("WORKING_UNIT_ID")]
[DataMember]
[Display(Name = "報工生產單位ID")]
public int WorkingUnitID { get; set; }
[Column("STATION_ID")]
[DataMember]
[Display(Name = "途程站點ID")]
public int StationID { get; set; }
[Column("UNIT_NO")]
[DataMember]
[Display(Name = "途程生產單位代碼")]
[StringLength(2)]
public string UnitNo { get; set; }
[Column("CREATE_USERID")]
[DataMember]
[Display(Name = "創建者")]
public int CreateUserID { get; set; }
[Column("CREATE_DATE")]
[DataMember]
[Display(Name = "創建日期")]
public DateTime CreateDate { get; set; }
[Column("UPDATE_USERID")]
[DataMember]
[Display(Name = "更新者")]
public int UpdateUserID { get; set; }
[Column("UPDATE_DATE")]
[DataMember]
[Display(Name = "更新日期")]
public DateTime UpdateDate { get; set; }
[Column("STATUS_NO")]
[DataMember]
[Display(Name = "狀態")]
public string StatusNo { get; set; } = "A";
}
}

14
AMESCoreStudio.WebApi/Models/AMESContext.cs

@ -1017,7 +1017,7 @@ namespace AMESCoreStudio.WebApi
public virtual DbSet<WorkingLine> WorkingLines { get; set; }
/// <summary>
///報工工作站基本資料
///報工站基本資料
/// </summary>
public virtual DbSet<WorkingStation> WorkingStations { get; set; }
@ -1031,6 +1031,18 @@ namespace AMESCoreStudio.WebApi
/// </summary>
public virtual DbSet<WorkingStandardWorkTimeLog> WorkingStandardWorkTimeLogs { get; set; }
/// <summary>
/// 途程除外站點資料檔
/// </summary>
public virtual DbSet<ExceptStations> ExceptStations { get; set; }
/// <summary>
/// 報工對應途程站點資料檔
/// </summary>
public virtual DbSet<WorkingFlowStations> WorkingFlowStations { get; set; }
/// <summary>
/// 前置加工入途程站點資料檔
/// </summary>
public virtual DbSet<PreWorking> PreWorkings { get; set; }
}

Loading…
Cancel
Save