diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs
index 08c3ec4..6437d9b 100644
--- a/AMESCoreStudio.Web/Controllers/PCSController.cs
+++ b/AMESCoreStudio.Web/Controllers/PCSController.cs
@@ -3447,6 +3447,7 @@ namespace AMESCoreStudio.Web.Controllers
///
public async Task PCS002QueryAsync(string unitno, string wipNo, string itemNo, int page = 0, int limit = 10)
{
+ // 查詢 N 狀態 已會排除 E與C狀態
IResultModel result = await _pcsApi.GetWipInfoSelectParameter(unitno: unitno
, wipno: wipNo
, itemno: itemNo
@@ -3458,8 +3459,80 @@ namespace AMESCoreStudio.Web.Controllers
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
+
return Json(new Table() { count = 0, data = null });
}
+
+ ///
+ /// PCS002 停用/啟用工單
+ ///
+ /// 工單ID
+ /// 目前狀態
+ /// 目標狀態 (D=停用, N=啟用)
+ ///
+ [HttpPost]
+ public async Task PCS002ToggleStatus(int wipID, string currentStatus, string targetStatus)
+ {
+ try
+ {
+ // 驗證狀態切換是否合法
+ if (currentStatus == "E" || currentStatus == "C")
+ {
+ return Json(new Result() { success = false, msg = "已完工或已刪除的工單無法停用/啟用" });
+ }
+
+ // 停用操作:只有 A、N、S 狀態可以停用
+ if (targetStatus == "D")
+ {
+ if (currentStatus != "A" && currentStatus != "N" && currentStatus != "S")
+ {
+ return Json(new Result() { success = false, msg = "只有 A、N、S 狀態的工單可以停用" });
+ }
+ }
+ // 啟用操作:只有 D 狀態可以啟用
+ else if (targetStatus == "N")
+ {
+ if (currentStatus != "D")
+ {
+ return Json(new Result() { success = false, msg = "只有停用狀態的工單可以啟用" });
+ }
+ }
+ else
+ {
+ return Json(new Result() { success = false, msg = "無效的狀態值" });
+ }
+
+ // 檢查工單是否存在
+ var wipInfo = await _pcsApi.GetWipInfo(wipID);
+ if (wipInfo == null || wipInfo.Count == 0)
+ {
+ return Json(new Result() { success = false, msg = "工單不存在" });
+ }
+
+ // 更新工單狀態
+ WipLog wipLog = new WipLog();
+ wipLog.WipID = wipID;
+ wipLog.WipDesc = ".";
+ wipLog.StatusNO = targetStatus;
+ wipLog.CreateUserID = GetLogInUserID();
+ await _pcsApi.PostWipLog(JsonConvert.SerializeObject(wipLog));
+ var result = await _pcsApi.PutWipinfoToStatusNO(wipID, targetStatus);
+
+ if (result.Success)
+ {
+ var action = targetStatus == "D" ? "停用" : "啟用";
+ return Json(new Result() { success = true, msg = action + "成功" });
+ }
+ else
+ {
+ return Json(new Result() { success = false, msg = result.Msg ?? "操作失敗" });
+ }
+ }
+ catch (Exception ex)
+ {
+ return Json(new Result() { success = false, msg = "系統錯誤:" + ex.Message });
+ }
+ }
#endregion
#region PCS004 工單內部條碼區間設定
@@ -3914,6 +3987,77 @@ namespace AMESCoreStudio.Web.Controllers
var result = await _pcsApi.DeleteWipinfo(id);
return Json(new Result() { success = true, msg = "刪除成功" });
}
+
+ ///
+ /// PCS005 停用/啟用工單
+ ///
+ /// 工單ID
+ /// 目前狀態
+ /// 目標狀態 (D=停用, N=啟用)
+ ///
+ [HttpPost]
+ public async Task PCS005ToggleStatus(int wipID, string currentStatus, string targetStatus)
+ {
+ try
+ {
+ // 驗證狀態切換是否合法
+ if (currentStatus == "E" || currentStatus == "C")
+ {
+ return Json(new Result() { success = false, msg = "已完工或已刪除的工單無法停用/啟用" });
+ }
+
+ // 停用操作:只有 A、N、S 狀態可以停用
+ if (targetStatus == "D")
+ {
+ if (currentStatus != "A" && currentStatus != "N" && currentStatus != "S")
+ {
+ return Json(new Result() { success = false, msg = "只有 A、N、S 狀態的工單可以停用" });
+ }
+ }
+ // 啟用操作:只有 D 狀態可以啟用
+ else if (targetStatus == "N")
+ {
+ if (currentStatus != "D")
+ {
+ return Json(new Result() { success = false, msg = "只有停用狀態的工單可以啟用" });
+ }
+ }
+ else
+ {
+ return Json(new Result() { success = false, msg = "無效的狀態值" });
+ }
+
+ // 檢查工單是否存在
+ var wipInfo = await _pcsApi.GetWipInfo(wipID);
+ if (wipInfo == null || wipInfo.Count == 0)
+ {
+ return Json(new Result() { success = false, msg = "工單不存在" });
+ }
+
+ // 更新工單狀態
+ WipLog wipLog = new WipLog();
+ wipLog.WipID = wipID;
+ wipLog.WipDesc = ".";
+ wipLog.StatusNO = targetStatus;
+ wipLog.CreateUserID = GetLogInUserID();
+ await _pcsApi.PostWipLog(JsonConvert.SerializeObject(wipLog));
+ var result = await _pcsApi.PutWipinfoToStatusNO(wipID, targetStatus);
+
+ if (result.Success)
+ {
+ var action = targetStatus == "D" ? "停用" : "啟用";
+ return Json(new Result() { success = true, msg = action + "成功" });
+ }
+ else
+ {
+ return Json(new Result() { success = false, msg = result.Msg ?? "操作失敗" });
+ }
+ }
+ catch (Exception ex)
+ {
+ return Json(new Result() { success = false, msg = "系統錯誤:" + ex.Message });
+ }
+ }
#endregion
#region PCS006 工單開線收線作業
diff --git a/AMESCoreStudio.Web/Views/PCS/PCS002.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS002.cshtml
index ba24fff..405fb84 100644
--- a/AMESCoreStudio.Web/Views/PCS/PCS002.cshtml
+++ b/AMESCoreStudio.Web/Views/PCS/PCS002.cshtml
@@ -6,6 +6,19 @@
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
+
+