Browse Source

更新標工資料維護畫面

master
yiru 2 weeks ago
parent
commit
12211e99a4
  1. 318
      AMESCoreStudio.Web/Controllers/WHSController.cs
  2. 83
      AMESCoreStudio.Web/HttpApis/AMES/IWHS.cs
  3. 27
      AMESCoreStudio.Web/ViewModels/WHS/WHS025ViewModel.cs
  4. 38
      AMESCoreStudio.Web/Views/WHS/WHS025.cshtml
  5. 37
      AMESCoreStudio.Web/Views/WHS/WHS025C.cshtml
  6. 65
      AMESCoreStudio.Web/Views/WHS/WHS025L.cshtml
  7. 56
      AMESCoreStudio.Web/Views/WHS/WHS025U.cshtml
  8. 25
      AMESCoreStudio.WebApi/Controllers/AMES/WorkingLinesController.cs
  9. 323
      AMESCoreStudio.WebApi/Controllers/AMES/WorkingStandardWorkTimeController.cs
  10. 94
      AMESCoreStudio.WebApi/Controllers/AMES/WorkingStandardWorkTimeLogController.cs
  11. 22
      AMESCoreStudio.WebApi/Controllers/AMES/WorkingStationsController.cs
  12. 45
      AMESCoreStudio.WebApi/Controllers/AMES/WorkingUnitsController.cs
  13. 22
      AMESCoreStudio.WebApi/Controllers/BAS/FactoryUnitsController.cs

318
AMESCoreStudio.Web/Controllers/WHSController.cs

@ -3486,19 +3486,22 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<IActionResult> WHS025UAsync(int id)
{
await GetWorkingUnit(""); //報工生產單位
await GetFactoryUnitsListbyWH005(""); //途程生產單位
GetSideList();
var result = await _whsApi.GetWorkingStandardWorkTime(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> WHS025DAsync(int id)
{
var result = await _whsApi.DeleteWorkingStandardWorkTime(id);
var deleteUserID = int.Parse(Request.Cookies["UserID"]);
var result = await _whsApi.DeleteWorkingStandardWorkTime(id, deleteUserID);
return Json(new Result() { success = true, msg = "" });
}
[HttpPost]
@ -3520,7 +3523,6 @@ namespace AMESCoreStudio.Web.Controllers
ItemNo = model.ItemNo,
WorkingUnitNo = model.WorkingUnitNo,
UnitNo = model.UnitNo,
WorkingStationID = model.WorkingStationID,
Side = model.Side,
OpCnt = model.OpCnt,
@ -3540,13 +3542,13 @@ namespace AMESCoreStudio.Web.Controllers
var json = JsonConvert.SerializeObject(item);
var result = await _whsApi.PostWorkingStandardWorkTime(json);
if (!result.Success)
{
// 其中一筆失敗就回傳錯誤
ModelState.AddModelError("error", $"線別ID {lineId} 錯誤:{result.Msg}");
return View("WHS025C", model);
}
}
return RedirectToAction("Refresh", "Home", new { msg = "添加成功!" });
@ -3600,6 +3602,43 @@ namespace AMESCoreStudio.Web.Controllers
}
return View("WHS025U", model);
}
[HttpGet]
public async Task<IActionResult> WHS025LAsync(int id)
{
return View(id);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetWorkingUnitNobyUnitAsync(string id)
{
var result = await _whsApi.GetWorkingUnitbyNo(id);
var data = new List<FactoryUnit>();
if (result != null && result.Count > 0)
{
var unitNo = result[0].UnitNo;
var resultUnit = await _basApi.GetFactoryUnits();
for (int i = 0; i < resultUnit.Count; i++)
{
if (resultUnit[i].UnitNo == unitNo )
data.Add(new FactoryUnit
{
UnitNo = resultUnit[i].UnitNo,
UnitName = resultUnit[i].UnitName
});
}
return Json(new Table { code = 0, msg = "", data = data, count = 1 });
}
return Json(new Table { code = 0, msg = "No data found", data = null, count = 0 });
}
[ResponseCache(Duration = 0)]
@ -3617,6 +3656,9 @@ namespace AMESCoreStudio.Web.Controllers
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetWorkingStationsbyUnitAsync(string id)
@ -3633,19 +3675,19 @@ namespace AMESCoreStudio.Web.Controllers
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetWorkingStandardWorkTimesAsync()
{
var result = await _whsApi.GetWorkingStandardWorkTimes();
//[ResponseCache(Duration = 0)]
//[HttpGet]
//public async Task<IActionResult> GetWorkingStandardWorkTimesAsync()
//{
// var result = await _whsApi.GetWorkingStandardWorkTimes();
if (result.DataTotal > 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
// 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 });
}
// return Json(new Table() { count = 0, data = null });
//}
[ResponseCache(Duration = 0)]
[HttpGet]
@ -3667,7 +3709,7 @@ namespace AMESCoreStudio.Web.Controllers
}
var result = await _whsApi.GetWorkingStandardWorkTimesbyQuery(u, l, i, page, limit);
var result = await _whsApi.GetWorkingStandardWorkTimesbyMultiQuery(u, l, i, page, limit);
if (result.DataTotal > 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
@ -3692,23 +3734,36 @@ namespace AMESCoreStudio.Web.Controllers
ViewBag.FactoryUnit = UnitItems;
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetWorkingStandardWorkTimesLogAsync(int id, int page = 0, int limit = 10)
{
var result = await _whsApi.GetWorkingStandardWorkTimeLogMulti(id,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 });
}
/// <summary>
///標準工時批次Excel匯入
/// 標準工時批次Excel匯入
/// </summary>
/// <param name="Uploader"></param>
/// <returns></returns>
[HttpPost]
public async Task<JsonResult> WHS025ExcelUpload(IFormFile Uploader)
{
var user_id = Request.Cookies["UserID"];
//通過上傳檔案流初始化Mapper
using (var workbook = new XLWorkbook(Uploader.OpenReadStream()))
{
try
{
List<BarcodeGroupDto> barcodeGroup = new List<BarcodeGroupDto>();
List<WorkingStandardWorkTime> workingST = new List<WorkingStandardWorkTime>();
string Msg = string.Empty;
var worksheet = workbook.Worksheet(1);
@ -3720,118 +3775,133 @@ namespace AMESCoreStudio.Web.Controllers
var data = worksheet.Range(firstCell.Address, lastCell.Address);
var rowCount = data.RowCount();
var columnCount = data.ColumnCount();
var ErrorMsg = "";
var recordKeys = new HashSet<string>(); // 用於檢查組合是否重複
for (int i = 2; i <= rowCount; i++)
{
string seq = data.Cell(i, 2).Value.ToString();
int sequence;
bool isNumeric = int.TryParse(seq, out sequence);
if (!isNumeric)
var rowMsg = $"[第{i}列] ";
try
{
return Json(new Result() { success = false, msg = "Group順序" + seq + "請輸入數字", data = null });
var ItemNo = data.Cell(i, 1).GetString().Trim();
var WorkingUnitName = data.Cell(i, 2).GetString().Trim();
var WorkingLineName = data.Cell(i, 3).GetString().Trim();
var WorkingStationName = data.Cell(i, 4).GetString().Trim();
// var UnitName = data.Cell(i, 5).GetString().Trim();
var Side = data.Cell(i, 5).GetString().Trim();
var OpCntStr = data.Cell(i, 6).GetString().Trim();
var CtStr = data.Cell(i, 7).GetString().Trim();
var StationID = data.Cell(i, 8).GetString().Trim();
var MachineCntStr = data.Cell(i, 9).GetString().Trim();
var Remark = data.Cell(i, 10).GetString().Trim();
// 組合唯一鍵
var rowKey = $"{ItemNo}|{WorkingUnitName}|{WorkingLineName}|{WorkingStationName}|{Side}";
if (recordKeys.Contains(rowKey))
{
ErrorMsg += $"{rowMsg}資料重複:相同的料號與單位線別站別已存在。\n";
continue;
}
recordKeys.Add(rowKey);
if (string.IsNullOrWhiteSpace(ItemNo)) { ErrorMsg += $"{rowMsg}料號不得為空\n"; continue; }
if (string.IsNullOrWhiteSpace(WorkingUnitName)) { ErrorMsg += $"{rowMsg}報工生產單位不得為空\n"; continue; }
if (string.IsNullOrWhiteSpace(WorkingLineName)) { ErrorMsg += $"{rowMsg}報工線別不得為空\n"; continue; }
if (string.IsNullOrWhiteSpace(WorkingStationName)) { ErrorMsg += $"{rowMsg}報工站別不得為空\n"; continue; }
// if (string.IsNullOrWhiteSpace(UnitName)) { ErrorMsg += $"{rowMsg}途程單位不得為空\n"; continue; }
List<string> validSides = new List<string> { "正面", "背面" };
if (string.IsNullOrWhiteSpace(Side)) { ErrorMsg += $"{rowMsg}面別不得為空\n"; continue; }
else if (!validSides.Contains(Side))
{
ErrorMsg += $"{rowMsg}面別資料錯誤,請使用 N/A、正面、背面\n";
continue;
}
if (!int.TryParse(OpCntStr, out int OpCnt))
{
ErrorMsg += $"{rowMsg}人數格式錯誤\n"; continue;
}
if (OpCnt <= 0)
{
ErrorMsg += $"{rowMsg}人數必須大於 0\n"; continue;
}
if (!int.TryParse(CtStr, out int Ct))
{
ErrorMsg += $"{rowMsg}CT格式錯誤\n"; continue;
}
if (Ct <= 0)
{
ErrorMsg += $"{rowMsg}CT 必須大於 0\n"; continue;
}
if (string.IsNullOrWhiteSpace(StationID))
{
ErrorMsg += $"{rowMsg}工站ID不得為空\n"; continue;
}
if (!int.TryParse(MachineCntStr, out int MachineCnt))
{
ErrorMsg += $"{rowMsg}機台數格式錯誤\n"; continue;
}
if (MachineCnt < 0)
{
ErrorMsg += $"{rowMsg}機台數不得為負值\n"; continue;
}
if (!string.IsNullOrWhiteSpace(Remark) && Remark.Length > 500)
{
ErrorMsg += $"{rowMsg}備註過長,限制500字以內\n"; continue;
}
// 資料對應檢查
var WU = await _whsApi.GetWorkingUnitbyName(WorkingUnitName);
var WL = await _whsApi.GetWorkingLinebyName(WorkingLineName);
var WS = await _whsApi.GetWorkingStationbyName(WorkingStationName);
// var UN = await _whsApi.GetFactoryUnitbyName(UnitName);
if (WU.Count == 0) { ErrorMsg += $"{rowMsg}查無 報工生產單位「{WorkingUnitName}」\n"; continue; }
if (WL.Count == 0) { ErrorMsg += $"{rowMsg}查無 報工線別「{WorkingLineName}」\n"; continue; }
if (WS.Count == 0) { ErrorMsg += $"{rowMsg}查無 報工站別「{WorkingStationName}」\n"; continue; }
// if (UN.Count == 0) { ErrorMsg += $"{rowMsg}查無 途程生產單位「{UnitName}」\n"; continue; }
// 加入清單
workingST.Add(new WorkingStandardWorkTime
{
WorkingUnitNo = WU[0].WorkingUnitNo,
WorkingLineID = WL[0].WorkingLineID,
WorkingStationID = WS[0].WorkingStationID,
// UnitNo = UN[0].UnitNo,
UnitNo = WU[0].UnitNo,
ItemNo = ItemNo,
Side = Side,
OpCnt = OpCnt,
Ct = Ct,
StationID = StationID,
MachineCnt = MachineCnt,
Remark = Remark,
CreateDate = System.DateTime.Now,
CreateUserID = int.Parse(user_id),
UpdateDate = System.DateTime.Now,
UpdateUserID = int.Parse(user_id)
});
}
barcodeGroup.Add(new BarcodeGroupDto
catch (Exception ex)
{
WipNo = data.Cell(i, 1).Value.ToString(),
Sequence = int.Parse(data.Cell(i, 2).Value.ToString()),
BarcodeNo = data.Cell(i, 3).Value.ToString(),
});
//#region 判斷序號是否在工單區間內
//var WipBarcode = await _pcbApi.GetWipBarcodesCheckInRange(data.Cell(i, 1).Value.ToString(), data.Cell(i, 3).Value.ToString());
//if (WipBarcode.Count == 0)
//{
// return Json(new Result() { success = false, msg = "生產序號" + data.Cell(i, 3).Value.ToString() + "不在工單" + data.Cell(i, 1).Value.ToString() + "區間內", data = null });
//}
//#endregion
//#region 判斷序號在Excel中是否重覆
//var duplicateBarcodeNos = barcodeGroup.GroupBy(x => x.BarcodeNo)
// .Where(group => group.Count() > 1)
// .Select(group => group.Key);
//if (duplicateBarcodeNos.Any())
//{
// return Json(new Result() { success = false, msg = "Excel檔案內的生產序號" + string.Join(", ", duplicateBarcodeNos) + "重覆", data = null });
//}
//#endregion
//#region 判斷序號是否已綁定群組
//var BarCodeinto = await _pcsApi.GetBarcodeInfoesByNo(data.Cell(i, 3).Value.ToString());
//if (BarCodeinto.Count() > 0)
//{
// var BarcodeGroup = await _pcsApi.GetBarcodeGroupByBarCodeID(BarCodeinto.Select(s => s.BarcodeID).FirstOrDefault());
// if (BarcodeGroup.Count() > 0)
// {
// return Json(new Result() { success = false, msg = "生產序號" + data.Cell(i, 3).Value.ToString() + "已綁定群組" + BarcodeGroup.Select(s => s.GroupID).FirstOrDefault() + ",不可重覆綁定", data = null });
// }
//}
//#endregion
}
//#region 檢查工單是否全部一致
//if (barcodeGroup.Select(s => s.WipNo).Distinct().Count() != 1)
//{
// return Json(new Result() { success = false, msg = "Excel檔案內的工單不一致不可匯入", data = null });
//}
//#endregion
//foreach (var item in barcodeGroup.Select(s => s.Sequence).Distinct())
//{
// foreach (var item1 in barcodeGroup.Where(w => w.Sequence == item))
// {
// #region 產生BarcodeInfo
// var barcodeInfo = new BarcodeInfo
// {
// BarcodeNo = item1.BarcodeNo,
// StationID = -1,
// LocationID = -1,
// WipID = -1,
// RuleStatus = "P",
// StatusID = -1,
// SysType = "S",
// StatusNo = "-1",
// CreateUserID = GetLogInUserID()
// };
// var PostResult = await _pcsApi.PostBarcodeInfoes(JsonConvert.SerializeObject(barcodeInfo));
// #endregion
// }
// #region 綁定Group
// var barcodeinfo = await _pcbApi.PostDapperByListBarcodeNO(JsonConvert.SerializeObject(barcodeGroup.Where(w => w.Sequence == item).Select(s => s.BarcodeNo)));
// int UserID = GetLogInUserID();
// List<BarcodeGroup> barcodeGroups = barcodeinfo
// .Select((b, index) => new BarcodeGroup
// {
// BarcodeID = b.BarcodeID,
// GroupID = 0,
// Sequence = item,
// CreateUserID = UserID,
// WipNo = barcodeGroup.Select(s => s.WipNo).FirstOrDefault()
// })
// .ToList();
// var BarCodeGroup = await _pcbApi.PostBarcodeGroupList(JsonConvert.SerializeObject(barcodeGroups));
// #endregion
//}
ErrorMsg += $"{rowMsg}資料處理異常: {ex.Message}\n";
continue;
}
}
return Json(new Result() { success = true, msg = "綁定成功", data = null });
if (!string.IsNullOrEmpty(ErrorMsg))
{
return Json(new Result() { success = false, msg = $"匯入失敗:\n{ErrorMsg}", data = null });
}
else
{
var postData = await _whsApi.PostWorkingStandardWorkTimeList(JsonConvert.SerializeObject(workingST));
return Json(new Result() { success = true, msg = "匯入成功", data = null });
}
}
catch (Exception ex)

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

@ -843,6 +843,44 @@ namespace AMESCoreStudio.Web
#endregion
#region WHS025 標準工時資料
/// <summary>
/// 根據Name獲取指定報工線別基本資料查詢資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingLines/Name/{id}")]
ITask<List<WorkingLine>> GetWorkingLinebyName(string id);
/// <summary>
/// 根據Name獲取指定報工站別基本資料查詢資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingStations/Name/{id}")]
ITask<List<WorkingStation>> GetWorkingStationbyName(string id);
/// <summary>
/// 根據Name獲取指定報工生產單位基本資料查詢資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingUnits/Name/{id}")]
ITask<List<WorkingUnit>> GetWorkingUnitbyName(string id);
/// <summary>
/// 根據ID獲取指定報工生產單位別查詢資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingUnits/No/{no}")]
ITask<List<WorkingUnit>> GetWorkingUnitbyNo(string no);
/// <summary>
/// 根據Name獲取该單位资料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FactoryUnits/Name/{id}")]
ITask<List<FactoryUnit>> GetFactoryUnitbyName(string id);
/// <summary>
/// 新增報工標準工時資料檔
/// </summary>
@ -861,8 +899,8 @@ namespace AMESCoreStudio.Web
/// 刪除報工標準工時資料檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/WorkingStandardWorkTimes/{id}")]
ITask<ResultModel<WorkingStandardWorkTime>> DeleteWorkingStandardWorkTime(int id);
[WebApiClient.Attributes.HttpDelete("api/WorkingStandardWorkTimes/{id}/{deleteUserID}")]
ITask<ResultModel<WorkingStandardWorkTime>> DeleteWorkingStandardWorkTime(int id,int deleteUserID);
/// <summary>
/// 根據ID獲取指定報工標準工時資料檔查詢資料
@ -885,6 +923,47 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/WorkingStandardWorkTimes/WHS025/{u}/{l}/{i}")]
ITask<ResultModel<WorkingStandardWorkTime>> GetWorkingStandardWorkTimesbyQuery(string u, int l, string i,int page = 0, int limit = 10);
/// <summary>
/// 獲取報工標準工時資料檔查詢資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingStandardWorkTimes/WHS025Multi/{u}/{l}/{i}")]
ITask<ResultModel<dynamic>> GetWorkingStandardWorkTimesbyMultiQuery(string u, int l, string i, int page = 0, int limit = 10);
/// <summary>
/// 新增報工標準工時資料檔LOG
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/WorkingStandardWorkTimeLog")]
ITask<ResultModel<WorkingStandardWorkTimeLog>> PostWorkingStandardWorkTimeLog([FromBody, RawJsonContent] string model);
/// <summary>
/// 根據ID獲取指定報工標準工時資料檔異動記錄
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingStandardWorkTimeLogs/{id}")]
ITask<List<WorkingStandardWorkTimeLog>> GetWorkingStandardWorkTimeLog(int id);
/// <summary>
/// 根據ID獲取指定報工標準工時資料檔異動記錄
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/WorkingStandardWorkTimeLogs/WHS025LMulti/{id}")]
ITask<ResultModel<dynamic>> GetWorkingStandardWorkTimeLogMulti(int id,int page = 0, int limit = 10);
/// <summary>
/// 新增報工標準工時資料檔List
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/WorkingStandardWorkTimes/byList")]
ITask<ResultModel<WorkingStandardWorkTime>> PostWorkingStandardWorkTimeList([FromBody, RawJsonContent] string model);
#endregion
}
}

27
AMESCoreStudio.Web/ViewModels/WHS/WHS025ViewModel.cs

@ -14,27 +14,47 @@ namespace AMESCoreStudio.Web.ViewModels.WHS
{
public int WorkingStandardID { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "報工生產單位")]
public string WorkingUnitNo { get; set; }
public List<int> WorkingLineIDs { get; set; }
public int WorkingLineID { get; set; }
[Display(Name = "報工生產線別")]
public int WorkingLineID { get; set; }
[Display(Name = "報工生產站別")]
public int WorkingStationID { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "途程生產單位")]
public string UnitNo { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "工程編號")]
public string ItemNo { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "正背面")]
public string Side { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "標準人力")]
public int OpCnt { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "標準工時(分)")]
public int Ct { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "對應途程站別ID")]
public string StationID { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "作業機台數")]
public int MachineCnt { get; set; }
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "備註")]
public string Remark { get; set; }
public int CreateUserID { get; set; }
@ -45,13 +65,18 @@ namespace AMESCoreStudio.Web.ViewModels.WHS
public DateTime UpdateDate { get; set; }
[Display(Name = "報工生產單位")]
// 顯示用欄位
public string WorkingUnitName { get; set; }
[Display(Name = "報工生產線別")]
public string WorkingLineName { get; set; }
[Display(Name = "報工生產站別")]
public string WorkingStationName { get; set; }
[Display(Name = "途程生產單位")]
public string UnitName { get; set; }
}

38
AMESCoreStudio.Web/Views/WHS/WHS025.cshtml

@ -66,37 +66,17 @@
title: '工程編號',
},
{
field: 'workingUnitNo',
field: 'workingUnitName',
title: '報工生產單位',
},
{
field: 'workingLineID',
field: 'workingLineName',
title: '報工線別',
templet: function (d) {
var line;
if (d.lineInfo)
line = d.lineInfo["lineDesc"];
else
line = "N/A";
return line;
}
},
{
field: 'workingStationID',
field: 'workingStationName',
title: '報工站別',
templet: function (d) {
var station;
if (d.stations)
station = d.stations["stationWHName"];
else
station = "N/A";
return station;
}
},
{
field: 'side',
title: '面別',
@ -122,7 +102,7 @@
title: '修改日',
},
{
field: 'updateUserID',
field: 'updateUserName',
title: '修改人',
},
{
@ -136,7 +116,8 @@
templet: function (item) {
var btn = '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a>';
btn += ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">刪除</a>';
btn += ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-view" lay-event="log">歷程</a>';
btn += ' <a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="log">瀏覽</a>';
return btn
}
}
@ -178,6 +159,13 @@
}
}
function log(obj) {
if (obj.data.workingStandardID) {
hg.open('標準工時修改歷程', '/WHS/WHS025L/' + obj.data.workingStandardID, '', '', true);
}
}
////搜索
$('#btnSearch').click(function () {

37
AMESCoreStudio.Web/Views/WHS/WHS025C.cshtml

@ -31,14 +31,12 @@
<select id="WorkingUnitNo" asp-for="WorkingUnitNo" 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>
<span asp-validation-for="WorkingUnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UnitNo" 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>
<label class="control-label col-sm-3">途程生產單位</label>
<label id="UnitNoLabel" class="col-sm-7 form-control-plaintext"></label>
<input type="hidden" id="UnitNo" name="UnitNo" />
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="WorkingLineID" class="control-label col-sm-3"></label>
@ -113,6 +111,7 @@
getLineInfoes_checkBox(data);
getWorkingStations(data);
getUnitNo(data);
});
@ -163,7 +162,7 @@
function getLineInfoes(data) {
$.ajax({
url: "/WHS/GetWorkingLinesbyUnit",
url: "/WHS/GetWorkingUnitNobyUnit",
dataType: 'json',
data: { id: data },
contentType: "application/json",
@ -222,6 +221,30 @@
});
};
function getUnitNo(data) {
$.ajax({
url: "/WHS/GetWorkingUnitNobyUnit",
dataType: 'json',
data: { id: data },
contentType: "application/json",
type: 'get',
success: function (result) {
if (result.data) {
let count = 0;
$.each(result.data, function (index, item) {
// 只顯示第一筆資料,或依你邏輯調整
if (count == 0) {
$('#UnitNoLabel').text(item.unitName); // 顯示文字
$('#UnitNo').val(item.unitNo); // 設定 hidden input 值
count++;
}
});
}
}
});
}
</script>

65
AMESCoreStudio.Web/Views/WHS/WHS025L.cshtml

@ -0,0 +1,65 @@
@model int
@{
ViewData["Title"] = "標準工時修改歷程";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<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">
<input type="hidden" id="workingStandardID" value="@Model" />
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts {
<script type="text/javascript">
var tableCols = [[
{ field: 'workingStandardLogID', title: '#' },
{ field: 'workingStandardID', title: '標準工時編號'},
{ field: 'itemNo', title: '工程編號' },
{ field: 'workingUnitName', title: '報工生產單位' },
{ field: 'workingLineName', title: '報工線別' },
{ field: 'workingStationName', title: '報工站別' },
{ field: 'side', title: '面別' },
{ field: 'opCnt', title: '標準人力' },
{ field: 'ct', title: '標準工時(分)' },
{ field: 'unitNo', title: '對應途程站別' },
{ field: 'machineCnt', title: '作業機台數' },
{ field: 'createDate', title: '修改日' },
{ field: 'createUserName', title: '修改人' },
{ field: 'remark', title: '備註' },
{
field: 'action',
title: '操作',
templet: function (d) {
switch (d.action) {
case '新增': return '<span style="color: green;">新增</span>';
case '刪除': return '<span style="color: red;">刪除</span>';
case '修改': return '<span style="color: blue;">修改</span>';
default: return '<span style="color: gray;">未知</span>';
}
}
}
]];
layui.use(['form', 'layer', 'laydate'], function () {
var form = layui.form;
var toolbar = [];
$(function () {
tt();
});
function tt() {
var id = $("#workingStandardID").val();
var url = '/WHS/GetWorkingStandardWorkTimesLog?id=' + id;
table = hg.table.datatable('test', '標準工時資料', url,
{}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
}
});
</script>
}

56
AMESCoreStudio.Web/Views/WHS/WHS025U.cshtml

@ -14,7 +14,7 @@
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="WHS025USave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="WorkingStandardID" value="0" />
<input type="hidden" asp-for="WorkingStandardID" />
<input type="hidden" asp-for="CreateUserID" />
<input type="hidden" asp-for="UpdateUserID" value="0" />
<input type="hidden" asp-for="CreateDate" />
@ -22,30 +22,29 @@
<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-7" readonly/>
<input asp-for="ItemNo" class="form-control col-sm-7" 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="WorkingUnitNo" class="control-label col-sm-3"></label>
<select id="WorkingUnitNo" asp-for="WorkingUnitNo" asp-items="@ViewBag.WorkingUnitNo" class="custom-select col-sm-7">
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
<span asp-validation-for="WorkingUnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UnitNo" class="control-label col-sm-3"></label>
<select id="UnitNo" asp-for="UnitNo" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-7">
</select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
<label class="control-label col-sm-3">途程生產單位</label>
<label id="UnitNoLabel" class="col-sm-7 form-control-plaintext"></label>
<input type="hidden" id="UnitNo" name="UnitNo" />
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="WorkingLineID" class="control-label col-sm-3"></label>
<select id="WorkingLineID" asp-for="WorkingLineID" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-7">
<select id="WorkingLineID" asp-for="WorkingLineID" class="custom-select col-sm-7">
</select>
<span asp-validation-for="WorkingLineID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="WorkingStationID" class="control-label col-sm-3"></label>
<select id="WorkingStationID" asp-for="WorkingStationID" asp-items="@ViewBag.StationList" class="custom-select col-sm-7">
<select id="WorkingStationID" asp-for="WorkingStationID" class="custom-select col-sm-7">
<option value="">請選擇</option>
<option value="-1">N/A</option>
</select>
@ -96,19 +95,25 @@
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
var unitNo = $("#WorkingUnitNo").val();
if (unitNo) {
getLineInfoes(unitNo);
getWorkingStations(unitNo);
getUnitNo(unitNo);
}
});
$("#WorkingUnitNo").change(function () {
var data = $("#WorkingUnitNo").val();
getLineInfoes_checkBox(data);
getLineInfoes(data);
getWorkingStations(data);
getUnitNo(data);
});
@ -174,6 +179,7 @@
$('#WorkingLineID').append(new Option(item.workingLineName, item.workingLineID));// 下拉選單裡新增元素
}
});
$('#WorkingLineID').val('@Model.WorkingLineID');
}
else {
$("#WorkingLineID").empty();//清空下拉框的值
@ -203,6 +209,7 @@
$('#WorkingStationID').append(new Option(item.workingStationName, item.workingStationID));
count = count + 1;
}
$('#WorkingStationID').val('@Model.WorkingStationID');
});
if (count == 0) {
$("#WorkingStationID").empty();
@ -218,8 +225,31 @@
});
};
function getUnitNo(data) {
$.ajax({
url: "/WHS/GetWorkingUnitNobyUnit",
dataType: 'json',
data: { id: data },
contentType: "application/json",
type: 'get',
success: function (result) {
if (result.data) {
let count = 0;
$.each(result.data, function (index, item) {
// 只顯示第一筆資料,或依你邏輯調整
if (count == 0) {
$('#UnitNoLabel').text(item.unitName); // 顯示文字
$('#UnitNo').val(item.unitNo); // 設定 hidden input 值
count++;
}
});
}
}
});
}
</script>
</script>
}

25
AMESCoreStudio.WebApi/Controllers/AMES/WorkingLinesController.cs

@ -74,13 +74,36 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
/// <summary>
/// 用Name获取该報工線別基本資料
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("Name/{name}")]
public async Task<ActionResult<IEnumerable<WorkingLine>>> GetWorkingLinebyName(string name)
{
IQueryable<WorkingLine> q = _context.WorkingLines;
q = q.Where(p => p.WorkingLineName.Equals(name));
var WorkingLine = await q.ToListAsync();
if (WorkingLine == null)
{
return NotFound();
}
return WorkingLine;
}
/// <summary>
/// 用生產單位获取该報工線別基本資料
/// </summary>
/// <param name="id">報工生產單位</param>
/// <returns></returns>
[HttpGet("Unit/{id}")]
public async Task<ActionResult<IEnumerable<WorkingLine>>> GetWorkingLines(string id)
public async Task<ActionResult<IEnumerable<WorkingLine>>> GetWorkingLinesbyUnit(string id)
{
IQueryable<WorkingLine> q = _context.WorkingLines;

323
AMESCoreStudio.WebApi/Controllers/AMES/WorkingStandardWorkTimeController.cs

@ -132,6 +132,83 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
/// <summary>
/// WHS025
/// </summary>
/// <param name="u"></param>
/// <param name="l"></param>
/// <param name="i"></param>
/// <returns></returns>
// GET: api/StandardWorkTimes/5
[HttpGet("WHS025Multi/{u}/{l}/{i}")]
public async Task<ResultModel<dynamic>> GetWorkingStandardWorkTimebyMultiQuery(string u, int l, string i, int page = 0, int limit = 10)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
var q = from q1 in _context.WorkingStandardWorkTimes
join q2 in _context.WorkingUnits on q1.WorkingUnitNo equals q2.WorkingUnitNo
join q3 in _context.WorkingLines on q1.WorkingLineID equals q3.WorkingLineID
join q4 in _context.WorkingStations on q1.WorkingStationID equals q4.WorkingStationID
join q5 in _context.UserInfoes on q1.UpdateUserID equals q5.UserID
select new
{
q1.WorkingStandardID,
q1.ItemNo,
q1.WorkingUnitNo,
q1.UnitNo,
q1.WorkingLineID,
q1.WorkingStationID,
q1.Side,
q1.OpCnt,
q1.Ct,
q1.StationID,
q1.MachineCnt,
q1.Remark,
q1.CreateUserID,
q1.CreateDate,
q1.UpdateDate,
WorkingUnitName = q2.WorkingUnitName,
WorkingLineName = q3.WorkingLineName,
WorkingStationName = q4.WorkingStationName,
WorkingStationDesc = q4.WorkingStationDesc,
UpdateUserName = q5.UserName
};
if (u != "all")
{
q = q.Where(p => p.WorkingUnitNo.Equals(l));
}
if (l > 0)
{
q = q.Where(p => p.WorkingLineID.Equals(l));
}
if (i != "Null")
{
q = q.Where(p => p.ItemNo.Equals(i.ToUpper()));
}
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 更新條報工標準工時資料
@ -140,91 +217,273 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="WorkingStandardWorkTime"></param>
/// <returns></returns>
[HttpPut("{id}")]
public async Task<ResultModel<WorkingStandardWorkTime>> PutWorkingStandardWorkTimes(int id, [FromBody] WorkingStandardWorkTime WorkingStandardWorkTime)
public async Task<ResultModel<WorkingStandardWorkTime>> PutWorkingStandardWorkTimes(int id, [FromBody] WorkingStandardWorkTime model)
{
ResultModel<WorkingStandardWorkTime> result = new ResultModel<WorkingStandardWorkTime>();
if (id != WorkingStandardWorkTime.WorkingStandardID)
if (id != model.WorkingStandardID)
{
result.Success = false;
result.Msg = "ID錯誤";
return result;
}
WorkingStandardWorkTime.UpdateDate = DateTime.Now;
_context.Entry(WorkingStandardWorkTime).State = EntityState.Modified;
try
var oldData = await _context.WorkingStandardWorkTimes.FindAsync(id);
if (oldData == null)
{
result.Success = false;
result.Msg = "資料不存在";
return result;
}
// 建立修改紀錄 log
var helper = new Helper(_context);
var WorkingSTLog_ID = await helper.GetIDKey("WorkingSTLog_ID");
var newLog = new WorkingStandardWorkTimeLog
{
WorkingStandardLogID = WorkingSTLog_ID,
WorkingStandardID = oldData.WorkingStandardID,
ItemNo = oldData.ItemNo,
WorkingUnitNo = oldData.WorkingUnitNo,
WorkingLineID = oldData.WorkingLineID,
UnitNo = oldData.UnitNo,
WorkingStationID = oldData.WorkingStationID,
Side = oldData.Side,
OpCnt = oldData.OpCnt,
Ct = oldData.Ct,
StationID = oldData.StationID,
MachineCnt = oldData.MachineCnt,
Remark = oldData.Remark,
CreateUserID = model.UpdateUserID,
CreateDate = DateTime.Now,
Action = "U"
};
_context.WorkingStandardWorkTimeLogs.Add(newLog);
// 更新 oldData 的欄位
oldData.ItemNo = model.ItemNo;
oldData.WorkingUnitNo = model.WorkingUnitNo;
oldData.WorkingLineID = model.WorkingLineID;
oldData.UnitNo = model.UnitNo;
oldData.WorkingStationID = model.WorkingStationID;
oldData.Side = model.Side;
oldData.OpCnt = model.OpCnt;
oldData.Ct = model.Ct;
oldData.StationID = model.StationID;
oldData.MachineCnt = model.MachineCnt;
oldData.Remark = model.Remark;
oldData.UpdateUserID = model.UpdateUserID;
oldData.UpdateDate = DateTime.Now;
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;
result.Msg = ex.InnerException?.Message ?? ex.Message;
}
}
return result;
}
/// <summary>
/// 新增報工標準工時資料
/// </summary>
/// <param name="WorkingStandardWorkTime"></param>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<WorkingStandardWorkTime>> PostWorkingStandardWorkTimes(WorkingStandardWorkTime WorkingStandardWorkTime)
public async Task<ResultModel<WorkingStandardWorkTime>> PostWorkingStandardWorkTimes(WorkingStandardWorkTime model)
{
ResultModel<WorkingStandardWorkTime> result = new ResultModel<WorkingStandardWorkTime>();
Helper helper = new Helper(_context);
WorkingStandardWorkTime.WorkingStandardID = helper.GetIDKey("WorkingST_ID").Result;
WorkingStandardWorkTime.CreateDate = DateTime.Now;
WorkingStandardWorkTime.UpdateDate = DateTime.Now;
_context.WorkingStandardWorkTimes.Add(WorkingStandardWorkTime);
var result = new ResultModel<WorkingStandardWorkTime>();
try
{
var helper = new Helper(_context);
// 先取得主 ID
model.WorkingStandardID = await helper.GetIDKey("WorkingST_ID");
model.CreateDate = DateTime.Now;
model.UpdateDate = DateTime.Now;
// 建立 Log 資料
var log = new WorkingStandardWorkTimeLog
{
WorkingStandardLogID = await helper.GetIDKey("WorkingSTLog_ID"),
WorkingStandardID = model.WorkingStandardID,
ItemNo = model.ItemNo,
WorkingUnitNo = model.WorkingUnitNo,
WorkingLineID = model.WorkingLineID,
UnitNo = model.UnitNo,
WorkingStationID = model.WorkingStationID,
Side = model.Side,
OpCnt = model.OpCnt,
Ct = model.Ct,
StationID = model.StationID,
MachineCnt = model.MachineCnt,
Remark = model.Remark,
CreateUserID = model.CreateUserID,
CreateDate = model.CreateDate,
Action = "A"
};
// 加入資料
_context.WorkingStandardWorkTimes.Add(model);
_context.WorkingStandardWorkTimeLogs.Add(log);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (DbUpdateException ex)
{
result.Success = false;
result.Msg = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 批次匯入標準工時資料
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost("byList")]
public async Task<ResultModel<WorkingStandardWorkTime>> PostWorkingStandardWorkTimespList([FromBody] List<WorkingStandardWorkTime> model)
{
ResultModel<WorkingStandardWorkTime> result = new ResultModel<WorkingStandardWorkTime>();
if (model == null || model.Count == 0)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
result.Msg = "Invalid input data.";
return result;
}
try
{
Helper helper = new Helper(_context);
// 每筆資料都個別取得一組ID
foreach (var item in model)
{
item.WorkingStandardID = await helper.GetIDKey("WorkingST_ID");
// 建立 Log 資料
var log = new WorkingStandardWorkTimeLog
{
WorkingStandardLogID = await helper.GetIDKey("WorkingSTLog_ID"),
WorkingStandardID = item.WorkingStandardID,
ItemNo = item.ItemNo,
WorkingUnitNo = item.WorkingUnitNo,
WorkingLineID = item.WorkingLineID,
UnitNo = item.UnitNo,
WorkingStationID = item.WorkingStationID,
Side = item.Side,
OpCnt = item.OpCnt,
Ct = item.Ct,
StationID = item.StationID,
MachineCnt = item.MachineCnt,
Remark = item.Remark,
CreateUserID = item.CreateUserID,
CreateDate = item.CreateDate,
Action = "A"
};
// 加入資料
_context.WorkingStandardWorkTimeLogs.Add(log);
}
_context.WorkingStandardWorkTimes.AddRange(model);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
result.Data = model; // 返回新增的 BarcodeGroup 列表
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 停用/啟用報工標準工時資料
/// 刪除報工標準工時資料
/// </summary>
/// <param name="id"></param>
/// <param name="deleteUserID"></param>
/// <returns></returns>
[HttpDelete("{id}")]
public async Task<ResultModel<WorkingStandardWorkTime>> DeleteWorkingStandardWorkTimes(int id)
[HttpDelete("{id}/{deleteUserID}")]
public async Task<ResultModel<WorkingStandardWorkTime>> DeleteWorkingStandardWorkTimes(int id, int deleteUserID)
{
ResultModel<WorkingStandardWorkTime> result = new ResultModel<WorkingStandardWorkTime>();
var result = new ResultModel<WorkingStandardWorkTime>();
var workingStandardWorkTime = await _context.WorkingStandardWorkTimes.FindAsync(id);
if (workingStandardWorkTime == null)
var entity = await _context.WorkingStandardWorkTimes.FindAsync(id);
if (entity == null)
{
result.Success = false;
result.Msg = "ID不存在";
return result;
}
_context.WorkingStandardWorkTimes.Remove(workingStandardWorkTime);
await _context.SaveChangesAsync();
try
{
// 取得新流水號
var helper = new Helper(_context);
var logID = await helper.GetIDKey("WorkingSTLog_ID");
// 建立刪除記錄
var log = new WorkingStandardWorkTimeLog
{
WorkingStandardLogID = logID,
WorkingLineID =entity.WorkingLineID,
WorkingStandardID = entity.WorkingStandardID,
ItemNo = entity.ItemNo,
WorkingUnitNo = entity.WorkingUnitNo,
UnitNo = entity.UnitNo,
WorkingStationID = entity.WorkingStationID,
Side = entity.Side,
OpCnt = entity.OpCnt,
Ct = entity.Ct,
StationID = entity.StationID,
MachineCnt = entity.MachineCnt,
Remark = entity.Remark,
CreateUserID = deleteUserID,
CreateDate = DateTime.Now,
Action = "D"
};
// 加入紀錄
_context.WorkingStandardWorkTimeLogs.Add(log);
// 刪除資料
_context.WorkingStandardWorkTimes.Remove(entity);
// 儲存
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException?.Message ?? ex.Message;
}
result.Success = true;
result.Msg = "OK";
return result;
}
}
}

94
AMESCoreStudio.WebApi/Controllers/AMES/WorkingStandardWorkTimeLogController.cs

@ -85,6 +85,73 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return WorkingStandardWorkTimeLog;
}
/// <summary>
/// 用ID获取该報工標準工時資料log
/// </summary>
/// <param name="id"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
[HttpGet("WHS025LMulti/{id}")]
public async Task<ResultModel<dynamic>> GetWorkingStandardWorkTimeLogbyMultiQuery(int id, int page = 0, int limit = 10)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
var q = from q1 in _context.WorkingStandardWorkTimeLogs.Where(w => w.WorkingStandardID == id)
join q2 in _context.WorkingUnits on q1.WorkingUnitNo equals q2.WorkingUnitNo into wuJoin
from q2 in wuJoin.DefaultIfEmpty()
join q3 in _context.WorkingLines on q1.WorkingLineID equals q3.WorkingLineID into wlJoin
from q3 in wlJoin.DefaultIfEmpty()
join q4 in _context.WorkingStations on q1.WorkingStationID equals q4.WorkingStationID into wsJoin
from q4 in wsJoin.DefaultIfEmpty()
join q5 in _context.UserInfoes on q1.CreateUserID equals q5.UserID into uJoin
from q5 in uJoin.DefaultIfEmpty()
select new
{
q1.WorkingStandardLogID,
q1.WorkingStandardID,
q1.ItemNo,
q1.WorkingUnitNo,
q1.UnitNo,
q1.WorkingLineID,
q1.WorkingStationID,
q1.Side,
q1.OpCnt,
q1.Ct,
q1.StationID,
q1.MachineCnt,
q1.Remark,
CreateUserName = q5 != null ? q5.UserName : "", // 防止 null 例外
q1.CreateDate,
WorkingUnitName = q2 != null ? q2.WorkingUnitName : "",
WorkingLineName = q3 != null ? q3.WorkingLineName : "",
WorkingStationName = q4 != null ? q4.WorkingStationName : "",
WorkingStationDesc = q4 != null ? q4.WorkingStationDesc : "",
Action = q1.Action == "A" ? "新增" :
q1.Action == "D" ? "刪除" :
q1.Action == "U" ? "修改" : "未知"
};
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.OrderBy(s => s.CreateDate).ToListAsync();
return result;
}
/// <summary>
/// WHS025
@ -145,7 +212,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{
ResultModel<WorkingStandardWorkTimeLog> result = new ResultModel<WorkingStandardWorkTimeLog>();
Helper helper = new Helper(_context);
WorkingStandardWorkTimeLog.WorkingStandardID = helper.GetIDKey("WorkingStandardWorkTimeLog_ID").Result;
WorkingStandardWorkTimeLog.WorkingStandardID = helper.GetIDKey("WorkingSTLog_ID").Result;
WorkingStandardWorkTimeLog.CreateDate = DateTime.Now;
_context.WorkingStandardWorkTimeLogs.Add(WorkingStandardWorkTimeLog);
try
@ -163,32 +230,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result;
}
/// <summary>
/// 停用/啟用報工標準工時資料log
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}")]
public async Task<ResultModel<WorkingStandardWorkTimeLog>> DeleteWorkingStandardWorkTimeLogs(int id)
{
ResultModel<WorkingStandardWorkTimeLog> result = new ResultModel<WorkingStandardWorkTimeLog>();
var standardWorkTime = await _context.StandardWorkTimes.FindAsync(id);
if (standardWorkTime == null)
{
result.Success = false;
result.Msg = "序號不存在";
return result;
}
_context.StandardWorkTimes.Remove(standardWorkTime);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
}
}

22
AMESCoreStudio.WebApi/Controllers/AMES/WorkingStationsController.cs

@ -85,6 +85,28 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return WorkingStation;
}
/// <summary>
/// 用Name获取该報工生產單位別
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("Name/{id}")]
public async Task<ActionResult<IEnumerable<WorkingStation>>> GetWorkingStationbyName(string id)
{
IQueryable<WorkingStation> q = _context.WorkingStations;
q = q.Where(p => p.WorkingStationName.Equals(id));
var WorkingStation = await q.ToListAsync();
if (WorkingStation == null)
{
return NotFound();
}
return WorkingStation;
}
/// <summary>
/// 用生產單位获取该報工線別基本資料

45
AMESCoreStudio.WebApi/Controllers/AMES/WorkingUnitsController.cs

@ -86,6 +86,51 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
/// <summary>
/// 用no获取该報工生產單位別
/// </summary>
/// <param name="no"></param>
/// <returns></returns>
[HttpGet("No/{no}")]
public async Task<ActionResult<IEnumerable<WorkingUnit>>> GetWorkingUnitbyNo(string no)
{
IQueryable<WorkingUnit> q = _context.WorkingUnits;
q = q.Where(p => p.WorkingUnitNo.Equals(no));
var WorkingUnit = await q.ToListAsync();
if (WorkingUnit == null)
{
return NotFound();
}
return WorkingUnit;
}
/// <summary>
/// 用Name获取该報工生產單位別
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("Name/{id}")]
public async Task<ActionResult<IEnumerable<WorkingUnit>>> GetWorkingUnitbyName(string id)
{
IQueryable<WorkingUnit> q = _context.WorkingUnits;
q = q.Where(p => p.WorkingUnitName.Equals(id));
var WorkingUnit = await q.ToListAsync();
if (WorkingUnit == null)
{
return NotFound();
}
return WorkingUnit;
}
/// <summary>
/// 更新條報工生產單位別
/// </summary>

22
AMESCoreStudio.WebApi/Controllers/BAS/FactoryUnitsController.cs

@ -64,6 +64,28 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS
return factoryUnit ;
}
/// <summary>
/// 用Name获取该單位资料
/// </summary>
/// <returns></returns>
// GET: api/FactoryUnits/5
[HttpGet("Name/{id}")]
public async Task<ActionResult<IEnumerable<FactoryUnit>>> GetFactoryUnitbyName(string id)
{
IQueryable<FactoryUnit> q = _context.FactoryUnits;
q = q.Where(p => p.UnitName.Equals(id));
var factoryUnit = await q.ToListAsync();
if (factoryUnit == null)
{
return NotFound();
}
return factoryUnit;
}
/// <summary>
/// 更改單位资料
/// </summary>

Loading…
Cancel
Save