diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 0f7c2f08..eb16df6b 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -1547,28 +1547,30 @@ namespace AMESCoreStudio.Web.Controllers await GetLineInfo(); model.WipNO = "WO0001A1"; var q = await _pcsApi.GetWipInfoByWipNO(model.WipNO); - //if (q.Count() != 0) - //{ - // model.ItemNO = _pcsApi.GetWipAtt(model.WipNO) + q = q.Where(w => w.UnitNO == model.UnitNO).ToList(); + if (q.Count != 0) + { + model.PlanQTY = q.FirstOrDefault().PlanQTY; + model.UnitNO = q.FirstOrDefault().UnitNO; + model.LineID = q.FirstOrDefault().LineID; + model.ItemNO = (await _pcsApi.GetWipAtt(model.WipNO)).ItemNO; - // model.WipInfo = q.Where(w => w.UnitNO == model.WipInfo.UnitNO).FirstOrDefault(); - // model.wipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); - // model.WipSopLog = await _pcsApi.GetWipSopLog(model.WipInfo.WipID); - // model.wipSop = await _pcsApi.GetWipSop(model.WipSopLog.WipSopID); - // model.materialKpDto = await _pcsApi.GetMaterialKpQuery(model.wipAtt.ItemNO, model.WipInfo.UnitNO); - //} - //var a = _pcsApi.GetWipInfoByWipNO() - //try - //{ - // int num1 = Convert.ToInt32(HttpContext.Request.Form["Text1"].ToString()); - // int num2 = Convert.ToInt32(HttpContext.Request.Form["Text2"].ToString()); - // ViewBag.Result = (num1 + num2).ToString(); - //} - //catch (Exception) - //{ - // ViewBag.Result = "Wrong Input Provided."; - //} - return View("PCS021",model); + // 料號檔案 + model.MaterialItem = await _pcsApi.GetMaterialItemByItemNO(model.ItemNO); + if (model.MaterialItem != null) + { + model.MaterialKps = await _pcsApi.GetMaterialKpByItemID(model.MaterialItem.ItemID); + model.MaterialOutfits = await _pcsApi.GetMaterialOutfitByItemID(model.MaterialItem.ItemID); + model.MaterialStationsItems = await _pcsApi.GetMaterialStationsItemByItemID(model.MaterialItem.ItemID); + } + + var wipsop = await _pcsApi.GetWipSopLog(q.FirstOrDefault().WipID); + if (wipsop != null) + { + model.SopPath = wipsop.GetWipSop.FilePath + wipsop.GetWipSop.NewName; + } + } + return View("PCS021", model); } [HttpPost] @@ -1971,7 +1973,7 @@ namespace AMESCoreStudio.Web.Controllers return View(); } var tt = result[0]; - ViewBag.BarcodeNo = tt.B.BarcodeNo; + ViewBag.BarcodeNo = tt.B.BarcodeNo; ViewBag.ItemName = tt.I.ItemName; return View(result[0]); } @@ -2049,7 +2051,7 @@ namespace AMESCoreStudio.Web.Controllers IResultModel result; IResultModel result2; - result2 = await _pcsApi.PostBarcodeItemChange(JsonConvert.SerializeObject(barcodeItemChange)); + result2 = await _pcsApi.PostBarcodeItemChange(JsonConvert.SerializeObject(barcodeItemChange)); if (result2.Success) { @@ -2057,9 +2059,10 @@ namespace AMESCoreStudio.Web.Controllers return Json(new Result() { success = (result.Success), msg = result.Msg }); } - else { + else + { return Json(new Result() { success = (result2.Success), msg = result2.Msg }); - + } } diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index afddd20f..654673b9 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -194,7 +194,7 @@ namespace AMESCoreStudio.Web ITask<MACInfo> GetMACInfo(string id); [WebApiClient.Attributes.HttpPut("api/MACInfoes/MACInfoByClassGroup/{id}/{value}")] - ITask<ResultModel<MACInfo>> PutMACInfoByClassGroup(string id,string value); + ITask<ResultModel<MACInfo>> PutMACInfoByClassGroup(string id, string value); #endregion #region WipLog 工單投產纪錄資料文件 PCS006 @@ -294,7 +294,23 @@ namespace AMESCoreStudio.Web #endregion - #region MaterialKp Keypart + #region MaterialItem 料號基本資料檔 + /// <summary> + /// MaterialItem 料號基本資料檔 + /// </summary> + /// <param name="id">料號</param> + [WebApiClient.Attributes.HttpGet("api/MaterialItem/ByItemNO/{id}")] + ITask<MaterialItem> GetMaterialItemByItemNO(string id); + #endregion + + #region MaterialKp Keypart 料號KP資訊資料檔 + /// <summary> + /// 料號KP資訊資料檔 ByItemID + /// </summary> + /// <param name="id">料號ID</param> + [WebApiClient.Attributes.HttpGet("api/MaterialKp/ByItemID/{id}")] + ITask<List<MaterialKp>> GetMaterialKpByItemID(int id); + /// <summary> /// Keypart查詢 /// </summary> @@ -304,6 +320,24 @@ namespace AMESCoreStudio.Web ITask<List<MaterialKpDto>> GetMaterialKpQuery(string itemno = null, string station = null); #endregion + #region MaterialOutfit 料號治具資訊資料檔 + /// <summary> + /// 料號治具資訊資料檔 ByItemID + /// </summary> + /// <param name="id">料號ID</param> + [WebApiClient.Attributes.HttpGet("api/MaterialOutfit/ByItemID/{id}")] + ITask<List<MaterialOutfit>> GetMaterialOutfitByItemID(int id); + #endregion + + #region MaterialOutfit 料號站別工項資料檔 + /// <summary> + /// 料號站別工項資料檔 By ItemID + /// </summary> + /// <param name="id">料號ID</param> + [WebApiClient.Attributes.HttpGet("api/MaterialStationsItem/ByItemID/{id}")] + ITask<List<MaterialStationsItem>> GetMaterialStationsItemByItemID(int id); + #endregion + #region SOP文件維護 /// <summary> /// SOP文件查詢 @@ -341,7 +375,7 @@ namespace AMESCoreStudio.Web /// SOP文件變更狀態 /// </summary> /// <returns></returns> - + [WebApiClient.Attributes.HttpPut("api/WipSop/{id}/{state}")] ITask<ResultModel<WipSop>> PutWipSop(int id, string state); #endregion diff --git a/AMESCoreStudio.Web/ViewModels/PCS/PCS021ViewModel.cs b/AMESCoreStudio.Web/ViewModels/PCS/PCS021ViewModel.cs index c861d850..a64d5ad9 100644 --- a/AMESCoreStudio.Web/ViewModels/PCS/PCS021ViewModel.cs +++ b/AMESCoreStudio.Web/ViewModels/PCS/PCS021ViewModel.cs @@ -60,6 +60,19 @@ namespace AMESCoreStudio.Web.ViewModels.PCS /// </summary> public MaterialItem MaterialItem { get; set; } + /// <summary> + /// 料號KP資訊資料檔 + /// </summary> + public List<MaterialKp> MaterialKps { get; set; } = new List<MaterialKp>(); + /// <summary> + /// 料號治具資訊 + /// </summary> + public List<MaterialOutfit> MaterialOutfits { get; set; } = new List<MaterialOutfit>(); + + /// <summary> + /// 站別工項資料檔 + /// </summary> + public List<MaterialStationsItem> MaterialStationsItems { get; set; } = new List<MaterialStationsItem>(); } } diff --git a/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml index 53b360e4..b24e73a4 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml @@ -1,4 +1,4 @@ -@*@model AMESCoreStudio.Web.ViewModels.PCS.PCS021ViewModel +@model AMESCoreStudio.Web.ViewModels.PCS.PCS021ViewModel @{ ViewData["Title"] = "過站作業"; Layout = "~/Views/Shared/_AMESLayout.cshtml"; @@ -64,7 +64,7 @@ <div class="layui-inline"> <label class="layui-form-label">製程:</label> <div class="layui-input-inline" style="width:100px"> - <select id="unit" lay-filter="unit" lay-verify="required" asp-for="WipInfo.UnitNO" style="width:100px" lay-submit asp-items="@ViewBag.FactoryUnitList"> + <select id="unit" lay-filter="unit" lay-verify="required" asp-for="UnitNO" style="width:100px" lay-submit asp-items="@ViewBag.FactoryUnitList"> </select> </div> <input id="unitNo" type="hidden" name="unitNo" value="0" /> @@ -89,7 +89,7 @@ <input id="stationsId" type="hidden" name="stationsId" value="0" /> <label class="layui-form-label">工單號碼:</label> <div class="layui-input-inline" style="width:100px"> - <input type="text" onkeydown="SearchNo(event);" asp-for="WipInfo.WipNO" asp-action="PCS021_GetWip" class="layui-input" autocomplete="off" /> + <input type="text" onkeydown="SearchNo(event);" asp-for="WipNO" asp-action="PCS021_GetWip" class="layui-input" autocomplete="off" /> <input type="submit" id="GetWipData" asp-action="PCS021_GetWip" style="display:none;" /> </div> </div> @@ -126,8 +126,6 @@ </fieldset> <div class="layui-col-md12"> <div class="layui-form-item"> - @if (Model.materialKpDto != null) - { <table id="MydataTable" class="layui-table"> <thead> <tr> @@ -155,11 +153,11 @@ </tr> </thead> <tbody> - @foreach (var index in Model.materialKpDto) + @foreach (var index in Model.MaterialKps) { <tr> <td> - @index.ItemName + @index.ItemID </td> <td> @index.KpName @@ -177,13 +175,12 @@ @index.Length </td> <td> - @index.Station + @index.StationType </td> </tr> } </tbody> </table> - } </div> </div> </div> @@ -192,7 +189,7 @@ </div> </div> <div class="layui-col-md8 element" style="height:100%"> - <iframe frameborder="0" style="height:100%;width:100%" src=@if (Model.wipSop != null){ @(Model.wipSop.FilePath)@(Model.wipSop.NewName);}></iframe> + <iframe frameborder="0" style="height:100%;width:100%" src=@(Model.SopPath)></iframe> </div> </div> </div> @@ -260,7 +257,6 @@ }; function SearchNo(e) { - alert(e.data); if (e.keyCode == 13) { $("#GetWipData").click(); } @@ -295,4 +291,4 @@ }); </script> -}*@ +} diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/MaterialItemController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialItemController.cs index 5397eb32..d197b96e 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/MaterialItemController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialItemController.cs @@ -59,6 +59,20 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return result; } + /// <summary> + /// 料號基本資料檔 to ItemNO + /// </summary> + /// <param name="id">料號</param> + /// <returns></returns> + [HttpGet("ByItemNO/{id}")] + public async Task<MaterialItem> GetMaterialItemByItemNO(string id) + { + IQueryable<MaterialItem> q = _context.MaterialItems; + var result = await q.Where(p => p.ItemNo == id).FirstOrDefaultAsync(); + + return result; + } + /// <summary> /// 新增料號基本資料檔 /// </summary> diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/MaterialKpController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialKpController.cs index a8c1e8a1..014ca7c5 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/MaterialKpController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialKpController.cs @@ -49,13 +49,11 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// </summary> /// <param name="id">ItemID</param> /// <returns></returns> - [HttpGet("{id}")] - public async Task<ResultModel<MaterialKp>> GetMaterialKp(int id) + [HttpGet("ByItemID/{id}")] + public async Task<IEnumerable<MaterialKp>> GetMaterialKpByItemID(int id) { IQueryable<MaterialKp> q = _context.MaterialKps; - - ResultModel<MaterialKp> result = new ResultModel<MaterialKp>(); - result.Data = await q.Where(p => p.ItemID == id).ToListAsync(); + var result = await q.Where(p => p.ItemID == id).ToListAsync(); return result; } diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/MaterialOutfitController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialOutfitController.cs new file mode 100644 index 00000000..f61f1fe1 --- /dev/null +++ b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialOutfitController.cs @@ -0,0 +1,138 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using AMESCoreStudio.WebApi.Models.AMES; +using AMESCoreStudio.CommonTools.Result; +using AMESCoreStudio.WebApi.DTO.AMES; + +namespace AMESCoreStudio.WebApi.Controllers.AMES +{ + /// <summary> + /// 料號治具資訊資料檔 + /// </summary> + [Route("api/[controller]")] + [ApiController] + public class MaterialOutfitController : ControllerBase + { + private readonly AMESContext _context; + + /// <summary> + /// 建構式 + /// </summary> + public MaterialOutfitController(AMESContext context) + { + _context = context; + } + + /// <summary> + /// 查詢料號治具資訊資料檔 + /// </summary> + // GET: api/MaterialOutfits + [HttpGet] + public async Task<ActionResult<IEnumerable<MaterialOutfit>>> GetMaterialOutfits() + { + return await _context.MaterialOutfits.ToListAsync(); + } + + /// <summary> + /// + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + // GET: api/MaterialOutfits/5 + [HttpGet("{id}")] + public async Task<ActionResult<MaterialOutfit>> GetMaterialOutfit(int id) + { + var materialOutfit = await _context.MaterialOutfits.FindAsync(id); + + if (materialOutfit == null) + { + return NotFound(); + } + + return materialOutfit; + } + + /// <summary> + /// 料號基本資料檔 to ItemID + /// </summary> + /// <param name="id">ItemID</param> + /// <returns></returns> + [HttpGet("ByItemID/{id}")] + public async Task<IEnumerable<MaterialOutfit>> GetMaterialOutfitByItemID(int id) + { + IQueryable<MaterialOutfit> q = _context.MaterialOutfits; + var result = await q.Where(p => p.ItemID == id).ToListAsync(); + return result; + } + + // PUT: api/MaterialOutfits/5 + // To protect from overposting attacks, enable the specific properties you want to bind to, for + // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. + [HttpPut("{id}")] + public async Task<IActionResult> PutMaterialOutfit(int id, MaterialOutfit materialOutfit) + { + if (id != materialOutfit.MaterialOutfitID) + { + return BadRequest(); + } + + _context.Entry(materialOutfit).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!MaterialOutfitExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/MaterialOutfits + // To protect from overposting attacks, enable the specific properties you want to bind to, for + // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. + [HttpPost] + public async Task<ActionResult<MaterialOutfit>> PostMaterialOutfit(MaterialOutfit materialOutfit) + { + _context.MaterialOutfits.Add(materialOutfit); + await _context.SaveChangesAsync(); + + return CreatedAtAction("GetMaterialOutfit", new { id = materialOutfit.MaterialOutfitID }, materialOutfit); + } + + // DELETE: api/MaterialOutfits/5 + [HttpDelete("{id}")] + public async Task<ActionResult<MaterialOutfit>> DeleteMaterialOutfit(int id) + { + var materialOutfit = await _context.MaterialOutfits.FindAsync(id); + if (materialOutfit == null) + { + return NotFound(); + } + + _context.MaterialOutfits.Remove(materialOutfit); + await _context.SaveChangesAsync(); + + return materialOutfit; + } + + private bool MaterialOutfitExists(int id) + { + return _context.MaterialOutfits.Any(e => e.MaterialOutfitID == id); + } + } +} diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/MaterialStationsItemController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialStationsItemController.cs new file mode 100644 index 00000000..02b9766e --- /dev/null +++ b/AMESCoreStudio.WebApi/Controllers/AMES/MaterialStationsItemController.cs @@ -0,0 +1,126 @@ +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; + +namespace AMESCoreStudio.WebApi.Controllers.AMES +{ + /// <summary> + /// 料號站別工項資料檔 + /// </summary> + [Route("api/[controller]")] + [ApiController] + public class MaterialStationsItemController : ControllerBase + { + private readonly AMESContext _context; + + public MaterialStationsItemController(AMESContext context) + { + _context = context; + } + + // GET: api/MaterialStationsItems + [HttpGet] + public async Task<ActionResult<IEnumerable<MaterialStationsItem>>> GetMaterialStationsItems() + { + return await _context.MaterialStationsItems.ToListAsync(); + } + + // GET: api/MaterialStationsItems/5 + [HttpGet("{id}")] + public async Task<ActionResult<MaterialStationsItem>> GetMaterialStationsItem(int id) + { + var materialStationsItem = await _context.MaterialStationsItems.FindAsync(id); + + if (materialStationsItem == null) + { + return NotFound(); + } + + return materialStationsItem; + } + + /// <summary> + /// 料號站別工項資料檔 by ItemID + /// </summary> + /// <param name="id">ItemID</param> + /// <returns></returns> + [HttpGet("ByItemID/{id}")] + public async Task<IEnumerable<MaterialStationsItem>> GetMaterialStationsItemByItemID(int id) + { + IQueryable<MaterialStationsItem> q = _context.MaterialStationsItems; + var result = await q.Where(p => p.ItemID == id).ToListAsync(); + return result; + } + + // PUT: api/MaterialStationsItems/5 + // To protect from overposting attacks, enable the specific properties you want to bind to, for + // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. + [HttpPut("{id}")] + public async Task<IActionResult> PutMaterialStationsItem(int id, MaterialStationsItem materialStationsItem) + { + if (id != materialStationsItem.MsiID) + { + return BadRequest(); + } + + _context.Entry(materialStationsItem).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!MaterialStationsItemExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/MaterialStationsItems + // To protect from overposting attacks, enable the specific properties you want to bind to, for + // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. + [HttpPost] + public async Task<ActionResult<MaterialStationsItem>> PostMaterialStationsItem(MaterialStationsItem materialStationsItem) + { + _context.MaterialStationsItems.Add(materialStationsItem); + await _context.SaveChangesAsync(); + + return CreatedAtAction("GetMaterialStationsItem", new { id = materialStationsItem.MsiID }, materialStationsItem); + } + + // DELETE: api/MaterialStationsItems/5 + [HttpDelete("{id}")] + public async Task<ActionResult<MaterialStationsItem>> DeleteMaterialStationsItem(int id) + { + var materialStationsItem = await _context.MaterialStationsItems.FindAsync(id); + if (materialStationsItem == null) + { + return NotFound(); + } + + _context.MaterialStationsItems.Remove(materialStationsItem); + await _context.SaveChangesAsync(); + + return materialStationsItem; + } + + private bool MaterialStationsItemExists(int id) + { + return _context.MaterialStationsItems.Any(e => e.MsiID == id); + } + } +} diff --git a/AMESCoreStudio.WebApi/Models/AMES/MaterialItem.cs b/AMESCoreStudio.WebApi/Models/AMES/MaterialItem.cs index bbe20099..0c2bc42f 100644 --- a/AMESCoreStudio.WebApi/Models/AMES/MaterialItem.cs +++ b/AMESCoreStudio.WebApi/Models/AMES/MaterialItem.cs @@ -20,6 +20,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES /// </summary> [Key] [Column("ITEM_ID")] + [DataMember] public int ItemID { get; set; } /// <summary> @@ -82,19 +83,19 @@ namespace AMESCoreStudio.WebApi.Models.AMES /// <summary> /// 料號治具資訊資料檔 /// </summary> - - public virtual List<MaterialOutfit> MaterialOutfits { get; set; } - /// <summary> - /// 料號治具資訊資料檔 - /// </summary> + //public virtual List<MaterialOutfit> MaterialOutfits { get; set; } = new List<MaterialOutfit>(); + + ///// <summary> + ///// 料號治具資訊資料檔 + ///// </summary> - public virtual List<MaterialKp> MaterialKps { get; set; } + //public virtual List<MaterialKp> MaterialKps { get; set; } = new List<MaterialKp>(); - /// <summary> - /// 料號站別工項資料檔 - /// </summary> - - public virtual List<MaterialStationsItem> MaterialStationsItems { get; set; } + ///// <summary> + ///// 料號站別工項資料檔 + ///// </summary> + + //public virtual List<MaterialStationsItem> MaterialStationsItems { get; set; } = new List<MaterialStationsItem>(); } } diff --git a/AMESCoreStudio.WebApi/Models/AMES/MaterialStationsItem.cs b/AMESCoreStudio.WebApi/Models/AMES/MaterialStationsItem.cs index 461d8e42..dc4925f5 100644 --- a/AMESCoreStudio.WebApi/Models/AMES/MaterialStationsItem.cs +++ b/AMESCoreStudio.WebApi/Models/AMES/MaterialStationsItem.cs @@ -110,7 +110,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES [Column("UPDATE_DATE")] [DataMember] [Required] - public DateTime? UpdateDate { get; set; } + public DateTime UpdateDate { get; set; } /// <summary>