Browse Source

1. 製程管理

PTD
ray 3 years ago
parent
commit
69f5d638f4
  1. 229
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 2
      AMESCoreStudio.Web/ViewModels/WipViewModel.cs
  3. 2
      AMESCoreStudio.Web/Views/PCS/PCS001.cshtml
  4. 8
      AMESCoreStudio.WebApi/Controllers/AMES/WipMACController.cs
  5. 2
      AMESCoreStudio.WebApi/Models/AMES/BarcodeType.cs
  6. 4
      AMESCoreStudio.WebApi/Models/AMES/WipBarcodeOther.cs
  7. 1
      AMESCoreStudio.WebApi/Models/AMES/WipMAC.cs
  8. 4
      AMESCoreStudio.WebApi/Models/AMES/WipSystem.cs

229
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -17,6 +17,7 @@ using System;
using System.IO;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using System.ComponentModel.DataAnnotations;
namespace AMESCoreStudio.Web.Controllers
{
@ -42,6 +43,141 @@ namespace AMESCoreStudio.Web.Controllers
_env = env;
}
#region Funcion BLL
/// <summary>
/// 工單建立時判斷是否都有資料
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public string CheckWipInfoInsert(WipViewModel model)
{
string Msg = string.Empty;
if (string.IsNullOrWhiteSpace(model.wipInfo.LineID.ToString()))
Msg += "," + model.wipInfo.GetAttributeFrom<DisplayAttribute>(nameof(model.wipInfo.LineID)).Name;
if (string.IsNullOrWhiteSpace(model.wipInfo.UnitNO))
Msg += "," + model.wipInfo.GetAttributeFrom<DisplayAttribute>(nameof(model.wipInfo.UnitNO)).Name;
if (model.wipInfo.WipDueDate == DateTime.MinValue)
Msg += "," + model.wipInfo.GetAttributeFrom<DisplayAttribute>(nameof(model.wipInfo.WipDueDate)).Name;
if (model.wipInfo.WipScheduleDate == DateTime.MinValue)
Msg += "," + model.wipInfo.GetAttributeFrom<DisplayAttribute>(nameof(model.wipInfo.WipScheduleDate)).Name;
// 序號編碼sheet
// 系統
if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T")
{
Msg += CheckWipInfoInsert_WipSystem(model.wipSystem);
}
// 板卡
else
{
Msg += CheckWipInfoInsert_WipBoard(model.wipBoard);
}
// 內部條碼
if (string.IsNullOrWhiteSpace(model.wipBarcode.StartNO) != string.IsNullOrWhiteSpace(model.wipBarcode.EndNO))
{
Msg += ",內部序號未填完整";
}
// 出貨序號
if (string.IsNullOrWhiteSpace(model.wipBarcodeOther.StartNO) != string.IsNullOrWhiteSpace(model.wipBarcodeOther.EndNO))
{
Msg += ",客戶序號未填完整";
}
// MAC
if (string.IsNullOrWhiteSpace(model.wipMAC.StartNO) != string.IsNullOrWhiteSpace(model.wipMAC.EndNO))
{
Msg += ",MAC未填完整";
}
return Msg;
}
public string CheckWipInfoInsert_WipSystem(WipSystem model)
{
string Msg = string.Empty;
// 判斷預設值是否更改過,如果有就判斷必填欄位
if (!string.IsNullOrWhiteSpace(model.BiTemperature) ||
!string.IsNullOrWhiteSpace(model.BiTime) ||
!string.IsNullOrWhiteSpace(model.BiMemo) ||
!string.IsNullOrWhiteSpace(model.Checksum) ||
!string.IsNullOrWhiteSpace(model.Cpu) ||
!string.IsNullOrWhiteSpace(model.DmiBi) ||
!string.IsNullOrWhiteSpace(model.Ec) ||
!string.IsNullOrWhiteSpace(model.Fw) ||
!string.IsNullOrWhiteSpace(model.Fw) ||
!string.IsNullOrWhiteSpace(model.Fw1) ||
!string.IsNullOrWhiteSpace(model.Fw2) ||
!string.IsNullOrWhiteSpace(model.Jumper) ||
!string.IsNullOrWhiteSpace(model.Memo) ||
!string.IsNullOrWhiteSpace(model.OsVer) ||
!string.IsNullOrWhiteSpace(model.PowerMode) ||
!string.IsNullOrWhiteSpace(model.Ram))
{
if (string.IsNullOrWhiteSpace(model.BiTemperature))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.BiTemperature)).Name;
if (string.IsNullOrWhiteSpace(model.BiTime))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.BiTime)).Name;
if (string.IsNullOrWhiteSpace(model.Checksum))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.Checksum)).Name;
if (string.IsNullOrWhiteSpace(model.Cpu))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.Cpu)).Name;
if (string.IsNullOrWhiteSpace(model.Ram))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.Ram)).Name;
}
return Msg;
}
public string CheckWipInfoInsert_WipBoard(WipBoard model)
{
string Msg = string.Empty;
// 判斷預設值是否更改過,如果有就判斷必填欄位
if (model.BiRatio != 0 ||
model.BiosVer != 0 ||
model.PartsBakeTime != 0 ||
model.PcbBake != 0 ||
!string.IsNullOrWhiteSpace(model.BiTemperature) ||
!string.IsNullOrWhiteSpace(model.BiTime) ||
!string.IsNullOrWhiteSpace(model.Checksum) ||
!string.IsNullOrWhiteSpace(model.BurnLocation))
{
if (string.IsNullOrWhiteSpace(model.BiTemperature))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.BiTemperature)).Name;
if (string.IsNullOrWhiteSpace(model.BiTime))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.BiTime)).Name;
if (string.IsNullOrWhiteSpace(model.Checksum))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.Checksum)).Name;
if (string.IsNullOrWhiteSpace(model.BurnLocation))
Msg += "," + model.GetAttributeFrom<DisplayAttribute>(nameof(model.BurnLocation)).Name;
}
return Msg;
}
#endregion
#region 下拉選單
/// <summary>
@ -746,10 +882,34 @@ namespace AMESCoreStudio.Web.Controllers
model.wipInfo.ModelCheck = model.wipInfo.ModelCheck == "true" ? "Y" : "N";
model.wipInfo.InputFlag = model.wipInfo.InputFlag == "true" ? "Y" : "N";
model.wipInfo.Priority = model.wipInfo.Priority == "true" ? "Y" : "N";
//板卡
model.wipBoard.DipCarrier = model.wipBoard.DipCarrier == "true" ? "Y" : "N";
model.wipBoard.DipTape = model.wipBoard.DipTape == "true" ? "Y" : "N";
model.wipBoard.Burn = model.wipBoard.Burn == "true" ? "Y" : "N";
//系統
model.wipSystem.FinePackage = model.wipSystem.FinePackage == "true" ? "Y" : "N";
var Msg = CheckWipInfoInsert(model);
if (!string.IsNullOrWhiteSpace(Msg))
{
model.wipInfo.ECNCheck = model.wipInfo.ECNCheck == "Y" ? "true" : "false";
model.wipInfo.ModelCheck = model.wipInfo.ModelCheck == "Y" ? "true" : "false";
model.wipInfo.InputFlag = model.wipInfo.InputFlag == "Y" ? "true" : "false";
model.wipInfo.Priority = model.wipInfo.Priority == "Y" ? "true" : "false";
//板卡
model.wipBoard.DipCarrier = model.wipBoard.DipCarrier == "Y" ? "true" : "false";
model.wipBoard.DipTape = model.wipBoard.DipTape == "Y" ? "true" : "false";
model.wipBoard.Burn = model.wipBoard.Burn == "Y" ? "true" : "false";
//系統
model.wipSystem.FinePackage = model.wipSystem.FinePackage == "Y" ? "true" : "false";
ModelState.AddModelError("error", Msg);
GetCheckboxApproveLogo();
GetCheckboxCompanyLogo();
GetCheckboxPrintMode();
GetCheckboxWipAttr();
return View("PCS001", model);
}
if (model.wipInfo.WipID == 0)
{
result = await _pcsApi.PostWipInfo(JsonConvert.SerializeObject(model.wipInfo));
if (result.Success)
{
@ -771,23 +931,26 @@ namespace AMESCoreStudio.Web.Controllers
wiplog.WipDesc = ".";
await _pcsApi.PostWipLog(JsonConvert.SerializeObject(wiplog));
//// 系統
//if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T")
//{
// model.wipSystem.ItemNo = model.wipAtt.ItemNO;
// model.wipSystem.WipNo = model.wipInfo.WipNO;
// await _pcsApi.PostWipSystem(JsonConvert.SerializeObject(model.wipSystem));
//}
//else
//// 板卡
//{
// model.wipBoard.DipCarrier = model.wipBoard.DipCarrier == "true" ? "Y" : "N";
// model.wipBoard.DipTape = model.wipBoard.DipTape == "true" ? "Y" : "N";
// model.wipBoard.Burn = model.wipBoard.Burn == "true" ? "Y" : "N";
// model.wipBoard.ItemNo = model.wipAtt.ItemNO;
// model.wipBoard.WipNo = model.wipInfo.WipNO;
// await _pcsApi.PostWipBoard(JsonConvert.SerializeObject(model.wipBoard));
//}
// 系統
if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T")
{
if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem)))
{
model.wipSystem.ItemNo = model.wipAtt.ItemNO;
model.wipSystem.WipNo = model.wipInfo.WipNO;
await _pcsApi.PostWipSystem(JsonConvert.SerializeObject(model.wipSystem));
}
}
else
// 板卡
{
if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem)))
{
model.wipBoard.ItemNo = model.wipAtt.ItemNO;
model.wipBoard.WipNo = model.wipInfo.WipNO;
await _pcsApi.PostWipBoard(JsonConvert.SerializeObject(model.wipBoard));
}
}
// 工單對應SOP Log
var q = await _pcsApi.GetWipSopQuery(itemNo: model.wipAtt.ItemNO, unitNo: model.wipInfo.UnitNO, state: "Y");
@ -798,7 +961,7 @@ namespace AMESCoreStudio.Web.Controllers
}
// 內部條碼
if (!string.IsNullOrWhiteSpace(model.wipBarcode.StartNO))
if (!string.IsNullOrWhiteSpace(model.wipBarcode.StartNO) && !string.IsNullOrWhiteSpace(model.wipBarcode.EndNO))
{
model.wipBarcode.WipID = wipID;
model.wipBarcode.WipNO = model.wipInfo.WipNO;
@ -815,7 +978,7 @@ namespace AMESCoreStudio.Web.Controllers
}
// 出貨序號
if (!string.IsNullOrWhiteSpace(model.wipBarcodeOther.StartNO))
if (!string.IsNullOrWhiteSpace(model.wipBarcodeOther.StartNO) && !string.IsNullOrWhiteSpace(model.wipBarcodeOther.EndNO))
{
var type_no = await _pcsApi.GetBarcodeTypeByTypeName("客戶條碼區間");
if (type_no.Any())
@ -827,22 +990,19 @@ namespace AMESCoreStudio.Web.Controllers
}
// MAC
if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO))
if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO) && !string.IsNullOrWhiteSpace(model.wipMAC.EndNO))
{
model.wipMAC.WipNO = model.wipInfo.WipNO;
result = await _pcsApi.PostWipMAC(JsonConvert.SerializeObject(model.wipMAC));
}
}
}
else
{
result = await _pcsApi.PostWipInfo(JsonConvert.SerializeObject(model.wipInfo));
}
if (result.Success)
{
var _msg = model.wipInfo.WipID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
return RedirectToAction("PCB", "Home", new { msg = _msg });
}
else
{
@ -1585,4 +1745,15 @@ namespace AMESCoreStudio.Web.Controllers
return PartialView("_SOPPartial", Json(new Table() { count = 0, data = null }));
}
}
public static class ObjectExtension
{
public static T GetAttributeFrom<T>(this object instance, string propertyName) where T : Attribute
{
var attributeType = typeof(T);
var property = instance.GetType().GetProperty(propertyName);
if (property == null) return default(T);
return (T)property.GetCustomAttributes(attributeType, false).FirstOrDefault();
}
}
}

2
AMESCoreStudio.Web/ViewModels/WipViewModel.cs

@ -45,8 +45,6 @@ namespace AMESCoreStudio.Web.ViewModels
public WipMAC wipMAC { get; set; }
public WipRule wipRule { get; set; }
public WipBarcodeOther wipBarcodeOther { get; set; }

2
AMESCoreStudio.Web/Views/PCS/PCS001.cshtml

@ -632,7 +632,7 @@
<div class="layui-inline">
<label class="layui-form-label">FINE_PACKAGE</label>
<div class="layui-input-inline">
<input class="layui-input" asp-for="wipSystem.FinePackage" autocomplete="off" />
<input asp-for="wipSystem.FinePackage" type="checkbox" title="是否燒入" />
</div>
</div>
</div>

8
AMESCoreStudio.WebApi/Controllers/AMES/WipMACController.cs

@ -47,10 +47,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
var WipMAC = await q.Where(p => p.WipNO == id).FirstOrDefaultAsync();
if (WipMAC == null)
{
return NotFound();
}
//if (WipMAC == null)
//{
// return NotFound();
//}
return WipMAC;
}

2
AMESCoreStudio.WebApi/Models/AMES/BarcodeType.cs

@ -75,7 +75,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// <summary>
/// 更新日期
/// </summary>
[Column("UPDATE_DATE", TypeName = "DATE")]
[Column("UPDATE_DATE")]
[DataMember]
public DateTime UpdateDate { get; set; } = System.DateTime.Now;
}

4
AMESCoreStudio.WebApi/Models/AMES/WipBarcodeOther.cs

@ -26,7 +26,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[Column("WIP_NO")]
[DataMember]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "")]
[Display(Name = "工單號碼")]
public string WipNO { get; set; }
/// <summary>
@ -61,7 +61,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// </summary>
[Column("TITLE")]
[DataMember]
[Display(Name = "")]
[Display(Name = "title")]
public string Title { get; set; }
/// <summary>

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

@ -17,6 +17,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// </summary>
[Key]
[Column("WIP_NO")]
[Display(Name = "工單號碼")]
[Required(ErrorMessage = "{0},不能空白")]
[DataMember]
public string WipNO { get; set; }

4
AMESCoreStudio.WebApi/Models/AMES/WipSystem.cs

@ -120,13 +120,13 @@ namespace AMESCoreStudio.WebApi.Models.AMES
public string Ram { get; set; }
/// <summary>
/// FINE_PACKAGE
/// 是否為精包裝Y/N
/// </summary>
[Required]
[Column("FINE_PACKAGE")]
[StringLength(2)]
[DataMember]
[Display(Name = "RAM")]
[Display(Name = "是否為精包裝")]
public string FinePackage { get; set; }
/// <summary>

Loading…
Cancel
Save