Browse Source

PTD更新

1. 新增扣帳加入RBU
2. 備貨及扣帳 錯誤訊息明確
3. 客戶MAIL設定修正
4. 調整單頭設定維護
master
Sai 7 months ago
parent
commit
7bf254e2e5
  1. 168
      AMESCoreStudio.Web/Controllers/PTDController.cs
  2. 17
      AMESCoreStudio.Web/HttpApis/AMES/IPTD.cs
  3. 14
      AMESCoreStudio.Web/Views/PTD/PTD004.cshtml
  4. 1
      AMESCoreStudio.Web/Views/PTD/PTD004U.cshtml
  5. 10
      AMESCoreStudio.Web/Views/PTD/PTD005.cshtml
  6. 4
      AMESCoreStudio.Web/Views/PTD/PTD005U.cshtml
  7. 23
      AMESCoreStudio.Web/Views/PTD/PTD006.cshtml
  8. 12
      AMESCoreStudio.Web/Views/PTD/PTD008.cshtml
  9. 2
      AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs
  10. 252
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
  11. 2
      AMESCoreStudio.WebApi/Controllers/PTD/PTDController.cs
  12. 1
      AMESCoreStudio.WebApi/Models/AMES/PTD101AMESModel.cs

168
AMESCoreStudio.Web/Controllers/PTDController.cs

@ -255,6 +255,7 @@ namespace AMESCoreStudio.Web.Controllers
#region "PTD002 一段式入出庫作業" #region "PTD002 一段式入出庫作業"
public async Task<IActionResult> PTD002() public async Task<IActionResult> PTD002()
{ {
var RBU = string.Empty;
if (Request.Cookies["_AMESCookie"] != null) if (Request.Cookies["_AMESCookie"] != null)
{ {
var userID = ""; var userID = "";
@ -264,6 +265,7 @@ namespace AMESCoreStudio.Web.Controllers
var user_info = await _sysApi.GetUserInfo(int.Parse(userID)); var user_info = await _sysApi.GetUserInfo(int.Parse(userID));
var factory_info = await _basApi.GetFactoryInfo(user_info[0].FactoryID); var factory_info = await _basApi.GetFactoryInfo(user_info[0].FactoryID);
ViewData["RBU"] = factory_info[0].Address; ViewData["RBU"] = factory_info[0].Address;
RBU = factory_info[0].Address;
} }
} }
@ -272,14 +274,16 @@ namespace AMESCoreStudio.Web.Controllers
var allRecordType = new[] { "653", "632", "261", "262", "101R", "201", "202", "291", "292", "601", "601DB", "657", "952", "634" }; var allRecordType = new[] { "653", "632", "261", "262", "101R", "201", "202", "291", "292", "601", "601DB", "657", "952", "634" };
var filtered = from o in RecordTypes var filtered = from o in RecordTypes
where allRecordType.Contains(o.ID) where allRecordType.Contains(o.ID)
&& o.RBU == RBU
select o; select o;
RecordTypes = filtered.ToList(); RecordTypes = filtered.OrderBy(o => o.ID).ToList();
var SelectListItem = new List<SelectListItem>(); var SelectListItem = new List<SelectListItem>();
foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes) foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes)
{ {
if (!SelectListItem.Any(a => RecordType.ID == a.Value))
SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString())); SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString()));
} }
ViewBag.RecordTypeInfo = RecordTypes; ViewBag.RecordTypeInfo = RecordTypes;
@ -339,6 +343,7 @@ namespace AMESCoreStudio.Web.Controllers
var sn = new List<string>(); var sn = new List<string>();
var addInput = new List<string>(); var addInput = new List<string>();
var msgInput = new List<string>(); var msgInput = new List<string>();
var msgInputAlert = new List<string>();
// 序號區間 // 序號區間
if (!string.IsNullOrWhiteSpace(model.FrontSN)) if (!string.IsNullOrWhiteSpace(model.FrontSN))
@ -400,6 +405,7 @@ namespace AMESCoreStudio.Web.Controllers
if (!string.IsNullOrWhiteSpace(model.SNData)) if (!string.IsNullOrWhiteSpace(model.SNData))
{ {
sn.AddRange(model.SNData.Split("\n").ToList()); sn.AddRange(model.SNData.Split("\n").ToList());
sn = sn.Where(w => !string.IsNullOrWhiteSpace(w)).ToList();
} }
// Type是WO的 上一個狀態需要是WI // Type是WO的 上一個狀態需要是WI
@ -426,10 +432,16 @@ namespace AMESCoreStudio.Web.Controllers
w.originalProductID == model.ProductId)) w.originalProductID == model.ProductId))
addInput.Add(item); addInput.Add(item);
else else
{
msgInputAlert.Add($"{item}(型態或料號不對)");
msgInput.Add(item); msgInput.Add(item);
} }
}
else else
{
msgInputAlert.Add($"{item}(序號不存在)");
msgInput.Add(item); msgInput.Add(item);
}
} }
else if (recordTypeFirst.Status == "WI") else if (recordTypeFirst.Status == "WI")
@ -438,7 +450,10 @@ namespace AMESCoreStudio.Web.Controllers
if (model.RecordType == "292") if (model.RecordType == "292")
{ {
if (zSnInfo.Any()) if (zSnInfo.Any())
{
msgInput.Add(item); msgInput.Add(item);
msgInputAlert.Add($"{item}(序號重複)");
}
else else
addInput.Add(item); addInput.Add(item);
} }
@ -460,23 +475,32 @@ namespace AMESCoreStudio.Web.Controllers
w.originalProductID == model.ProductId)) w.originalProductID == model.ProductId))
addInput.Add(item); addInput.Add(item);
else else
{
msgInputAlert.Add($"{item}(型態或料號不對)");
msgInput.Add(item); msgInput.Add(item);
} }
}
else else
{ {
if (zSnInfo.Any(w => toIDs.Contains((string)w.recordTypeID))) if (zSnInfo.Any(w => toIDs.Contains((string)w.recordTypeID)))
addInput.Add(item); addInput.Add(item);
else else
{
msgInputAlert.Add($"{item}(型態不對)");
msgInput.Add(item); msgInput.Add(item);
} }
} }
}
else else
{
msgInputAlert.Add($"{item}(序號不存在)");
msgInput.Add(item); msgInput.Add(item);
} }
} }
} }
} }
} }
}
addInput = addInput.Except(msgInput.Distinct()).ToList(); addInput = addInput.Except(msgInput.Distinct()).ToList();
var datas = new List<dynamic>(); var datas = new List<dynamic>();
@ -493,8 +517,8 @@ namespace AMESCoreStudio.Web.Controllers
datas.Add(newRowData); datas.Add(newRowData);
} }
if (msgInput.Any()) if (msgInputAlert.Any())
msg = "流程狀態或序號比對料號錯誤:" + string.Join("、", msgInput.Distinct()); msg = "新增失敗:" + string.Join("、", msgInputAlert.Distinct());
return Json(new Result() { success = true, msg = msg, data = datas }); return Json(new Result() { success = true, msg = msg, data = datas });
} }
@ -520,7 +544,7 @@ namespace AMESCoreStudio.Web.Controllers
var isRecord = await CheckRecordNoIsRecord(model.RecordNumber, model.LineNo); var isRecord = await CheckRecordNoIsRecord(model.RecordNumber, model.LineNo);
if (!(isRecord.Value as Result).success) if (!(isRecord.Value as Result).success)
{ {
return $"RecordNumber【{model.RecordNumber}】 LineNo【{model.LineNo}】 已備貨完"; return $"RecordNumber【{model.RecordNumber}】 LineNo【{model.LineNo}】 已備貨完";
} }
// Location // Location
@ -529,19 +553,21 @@ namespace AMESCoreStudio.Web.Controllers
return "請輸入 Location"; return "請輸入 Location";
} }
var recordType = await _ptdApi.GetRecordTypeInfoById(model.RecordType); var recordType = await _ptdApi.GetRecordTypeInfo();
recordType = recordType.Where(w => w.ID == model.RecordType && w.RBU == model.Rbu).ToList();
if (recordType.Any()) if (recordType.Any())
{ {
var recordInfoItem = recordType.FirstOrDefault(); var recordInfoItem = recordType.Where(s => model.RecordNumber.StartsWith(s.PrefixCode))
if (model.RecordNumber.Length != int.Parse((string)recordInfoItem.length)) .FirstOrDefault();
return "RecordNumber長度與設定的長度不符,請在確認"; if (recordInfoItem == null)
if (!model.RecordNumber.StartsWith((string)recordInfoItem.prefixCode))
return "RecordNumber單據號碼開頭與設定開頭不符,請在確認"; return "RecordNumber單據號碼開頭與設定開頭不符,請在確認";
if (model.RecordNumber.Length != recordInfoItem.Length)
return "RecordNumber長度與設定的長度不符,請在確認";
} }
else else
{ {
return "請維護RecordNumber單說明表"; return "請維護RecordNumber單說明表";
} }
// ProductId // ProductId
@ -668,6 +694,7 @@ namespace AMESCoreStudio.Web.Controllers
SelectListItem.Add(new SelectListItem("全部", "全部")); SelectListItem.Add(new SelectListItem("全部", "全部"));
foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes) foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes)
{ {
if (!SelectListItem.Any(a => RecordType.ID == a.Value))
SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString())); SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString()));
} }
ViewBag.RecordType = SelectListItem; ViewBag.RecordType = SelectListItem;
@ -721,10 +748,10 @@ namespace AMESCoreStudio.Web.Controllers
} }
//修改页面 //修改页面
[HttpGet] [HttpGet]
public async Task<IActionResult> PTD004UAsync(string id) public async Task<IActionResult> PTD004UAsync(string idx)
{ {
var result = await _ptdApi.GetRecordTypeInfo(id); var result = await _ptdApi.GetRecordTypeInfo(idx);
if (result.Count == 0) if (result.Count == 0)
{ {
@ -833,11 +860,18 @@ namespace AMESCoreStudio.Web.Controllers
IResultModel result; IResultModel result;
if (model.Mode == 0) if (model.Mode == 0)
{ {
var checkData = await _ptdApi.GetCustomerItemMailGroup(model.CustomerCode);
if (!checkData.Any())
result = await _ptdApi.PostCustomerItemMailGroup(JsonConvert.SerializeObject(model)); result = await _ptdApi.PostCustomerItemMailGroup(JsonConvert.SerializeObject(model));
else
{
ModelState.AddModelError("error", "客戶代號已有重複");
return View("PTD005C", model);
}
} }
else else
{ {
result = await _ptdApi.PutCustomerItemMailGroup(model.ItemNumber, JsonConvert.SerializeObject(model)); result = await _ptdApi.PutCustomerItemMailGroup(model.CustomerCode, JsonConvert.SerializeObject(model));
} }
if (result.Success) if (result.Success)
@ -883,6 +917,7 @@ namespace AMESCoreStudio.Web.Controllers
#region "PTD006 備貨作業" #region "PTD006 備貨作業"
public async Task<IActionResult> PTD006() public async Task<IActionResult> PTD006()
{ {
var RBU = string.Empty;
if (Request.Cookies["_AMESCookie"] != null) if (Request.Cookies["_AMESCookie"] != null)
{ {
var userID = ""; var userID = "";
@ -892,6 +927,7 @@ namespace AMESCoreStudio.Web.Controllers
var user_info = await _sysApi.GetUserInfo(int.Parse(userID)); var user_info = await _sysApi.GetUserInfo(int.Parse(userID));
var factory_info = await _basApi.GetFactoryInfo(user_info[0].FactoryID); var factory_info = await _basApi.GetFactoryInfo(user_info[0].FactoryID);
ViewData["RBU"] = factory_info[0].Address; ViewData["RBU"] = factory_info[0].Address;
RBU = factory_info[0].Address;
} }
} }
@ -899,18 +935,20 @@ namespace AMESCoreStudio.Web.Controllers
var allRecordType = new[] { "101", "601", "631", "633", "951" }; var allRecordType = new[] { "101", "601", "631", "633", "951" };
var filtered = from o in RecordTypes var filtered = from o in RecordTypes
where allRecordType.Contains(o.ID) where allRecordType.Contains(o.ID)
&& o.RBU == RBU
select o; select o;
RecordTypes = filtered.ToList(); RecordTypes = filtered.OrderBy(o => o.ID).ToList();
var SelectListItem = new List<SelectListItem>(); var SelectListItem = new List<SelectListItem>();
foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes) foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes)
{ {
if (!SelectListItem.Any(a => RecordType.ID == a.Value))
SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString())); SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString()));
} }
ViewBag.RecordTypeInfo = RecordTypes; ViewBag.RecordTypeInfo = RecordTypes;
ViewBag.RecordType = SelectListItem; ViewBag.RecordType = SelectListItem.Distinct().ToList();
ViewBag.Location = "9000"; ViewBag.Location = "9000";
ViewBag.WorkCenter = "TWM0"; ViewBag.WorkCenter = "TWM0";
ViewBag.RecordDate = System.DateTime.Now.ToString("yyyy/MM/dd"); ViewBag.RecordDate = System.DateTime.Now.ToString("yyyy/MM/dd");
@ -980,6 +1018,13 @@ namespace AMESCoreStudio.Web.Controllers
// 基本資料判定 // 基本資料判定
var inputCheck = await CheckInputData(model); var inputCheck = await CheckInputData(model);
var msg = string.Empty; var msg = string.Empty;
// 資料收集
var sn = new List<string>();
var addInput = new List<string>();
var msgInput = new List<string>();
var msgInputAlert = new List<string>();
var checkFQC = false;
if (!string.IsNullOrWhiteSpace(inputCheck)) if (!string.IsNullOrWhiteSpace(inputCheck))
return Json(new Result() { success = false, msg = inputCheck }); return Json(new Result() { success = false, msg = inputCheck });
@ -1007,11 +1052,6 @@ namespace AMESCoreStudio.Web.Controllers
else else
return Json(new Result() { success = false, msg = "請新增單頭說明維護", data = null }); return Json(new Result() { success = false, msg = "請新增單頭說明維護", data = null });
// 資料收集
var sn = new List<string>();
var addInput = new List<string>();
var msgInput = new List<string>();
// 序號區間 // 序號區間
if (!string.IsNullOrWhiteSpace(model.FrontSN)) if (!string.IsNullOrWhiteSpace(model.FrontSN))
{ {
@ -1074,6 +1114,15 @@ namespace AMESCoreStudio.Web.Controllers
if (!string.IsNullOrWhiteSpace(model.SNData)) if (!string.IsNullOrWhiteSpace(model.SNData))
{ {
sn.AddRange(model.SNData.Split("\n").ToList()); sn.AddRange(model.SNData.Split("\n").ToList());
sn = sn.Where(w => !string.IsNullOrWhiteSpace(w)).ToList();
}
// FFQC判斷
var resultZDNDetail = await _ptdApi.GetGetZDNDetail(model.RecordNumber, model.LineNo);
if (resultZDNDetail.Any())
{
if (resultZDNDetail.FirstOrDefault().shipSLoc == "0S08")
checkFQC = true;
} }
// 確認序號狀態 // 確認序號狀態
@ -1093,29 +1142,73 @@ namespace AMESCoreStudio.Web.Controllers
w.originalProductID == model.ProductId)) w.originalProductID == model.ProductId))
addInput.Add(item); addInput.Add(item);
else else
{
if (zSnInfo.Any(w => !recodeIdBystaus.Contains((string)w.recordTypeID)))
{
msgInput.Add(item); msgInput.Add(item);
msgInputAlert.Add($"{item}(型態不對)");
}
else if (zSnInfo.Any(w => w.originalProductID != model.ProductId))
{
msgInput.Add(item);
msgInputAlert.Add($"{item}(品號不符)");
}
}
} }
else else
{
msgInput.Add(item); msgInput.Add(item);
msgInputAlert.Add($"{item}(序號不存在)");
}
// 排除PickDetail有重複相同recordNumber & lineNo 的序號 // 排除PickDetail有重複相同recordNumber & lineNo 的序號
if (pickDetail.Any(w => w.recordNumber == model.RecordNumber && w.rcLineNO == model.LineNo)) //if (pickDetail.Any(w => w.recordNumber == model.RecordNumber && w.rcLineNO == model.LineNo))
if (pickDetail.Any(w => w.recordTypeID == model.RecordType))
{
msgInput.Add(item); msgInput.Add(item);
msgInputAlert.Add($"{item}(序號重複)");
}
else else
addInput.Add(item); addInput.Add(item);
// FQC檢驗
if (checkFQC)
{
try
{
var resultCheckFqc = await _ptdApi.CheckFQCTestOk(extraBarcodeNo: item);
if (!resultCheckFqc.Any())
{
msgInput.Add(item);
msgInputAlert.Add($"{item}(尚未通過FQC檢驗)");
}
}
catch
{
msgInput.Add(item);
msgInputAlert.Add($"{item}(尚未通過FQC檢驗)");
}
}
} }
else else
{ {
// 101 不會有Info資料 // 101 不會有Info資料
if (zSnInfo.Any()) if (zSnInfo.Any())
{
msgInput.Add(item); msgInput.Add(item);
msgInputAlert.Add($"{item}(序號重複)");
}
else else
addInput.Add(item); addInput.Add(item);
// 排除PickDetail有重複相同recordNumber & lineNo 的序號 // 排除PickDetail有重複相同recordNumber & lineNo 的序號
if (pickDetail.Any(w => w.recordNumber == model.RecordNumber && w.rcLineNO == model.LineNo)) //if (pickDetail.Any(w => w.recordNumber == model.RecordNumber && w.rcLineNO == model.LineNo))
if (pickDetail.Any(w => w.recordTypeID == model.RecordType))
{
msgInput.Add(item); msgInput.Add(item);
msgInputAlert.Add($"{item}(序號重複)");
}
else else
addInput.Add(item); addInput.Add(item);
} }
@ -1143,8 +1236,8 @@ namespace AMESCoreStudio.Web.Controllers
var result = await _ptdApi.PostPTD006Commit(JsonConvert.SerializeObject(addPtd006)); var result = await _ptdApi.PostPTD006Commit(JsonConvert.SerializeObject(addPtd006));
} }
if (msgInput.Any()) if (msgInputAlert.Any())
msg = "序號新增失敗:" + string.Join("、", msgInput.Distinct()); msg = "新增失敗:" + string.Join("、", msgInputAlert.Distinct());
return Json(new Result() { success = true, msg = msg, data = new List<dynamic>() }); return Json(new Result() { success = true, msg = msg, data = new List<dynamic>() });
} }
@ -1195,6 +1288,7 @@ namespace AMESCoreStudio.Web.Controllers
#region "PTD007 扣帳作業" #region "PTD007 扣帳作業"
public async Task<IActionResult> PTD007() public async Task<IActionResult> PTD007()
{ {
var RBU = string.Empty;
if (Request.Cookies["_AMESCookie"] != null) if (Request.Cookies["_AMESCookie"] != null)
{ {
var userID = ""; var userID = "";
@ -1202,23 +1296,26 @@ namespace AMESCoreStudio.Web.Controllers
if (userID != "") if (userID != "")
{ {
var user_info = await _sysApi.GetUserInfo(int.Parse(userID)); var user_info = await _sysApi.GetUserInfo(int.Parse(userID));
List<WebApi.Models.BAS.FactoryInfo> factory_info = await _basApi.GetFactoryInfo(user_info[0].FactoryID); var factory_info = await _basApi.GetFactoryInfo(user_info[0].FactoryID);
ViewData["RBU"] = factory_info[0].Address; ViewData["RBU"] = factory_info[0].Address;
RBU = factory_info[0].Address;
} }
} }
List<WebApi.Models.AMES.RecordTypeInfo> RecordTypes = await _ptdApi.GetRecordTypeInfo(); List<WebApi.Models.AMES.RecordTypeInfo> RecordTypes = await _ptdApi.GetRecordTypeInfo();
var allRecordType = new[] { "101", "601", "631", "633", "951" }; var allRecordType = new[] { "101", "601", "631", "633", "951", "101P" };
var filtered = from o in RecordTypes var filtered = from o in RecordTypes
where allRecordType.Contains(o.ID) where allRecordType.Contains(o.ID)
&& o.RBU == RBU
select o; select o;
RecordTypes = filtered.ToList(); RecordTypes = filtered.OrderBy(o => o.ID).ToList();
var SelectListItem = new List<SelectListItem>(); var SelectListItem = new List<SelectListItem>();
foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes) foreach (WebApi.Models.AMES.RecordTypeInfo RecordType in RecordTypes)
{ {
if (!SelectListItem.Any(a => RecordType.ID == a.Value))
SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString())); SelectListItem.Add(new SelectListItem(RecordType.ID.ToString() + "-" + RecordType.TypeName, RecordType.ID.ToString()));
} }
@ -1228,12 +1325,20 @@ namespace AMESCoreStudio.Web.Controllers
return View(); return View();
} }
public async Task<IActionResult> PTD007QueryAsync(string recordType, string recordNumber) public async Task<IActionResult> PTD007QueryAsync(string recordType, string recordNumber, string RBU)
{ {
if (recordNumber == null || recordNumber == "") if (recordNumber == null || recordNumber == "")
return Json(new Table() { count = 0, data = null }); return Json(new Table() { count = 0, data = null });
var result = await _ptdApi.GetZDNDetailJoinZWHPickListDetail(recordType, recordNumber); var result = new ResultModel<dynamic>();
if (recordType == "101P")
{
result = await _ptdApi.GetPTD007QueryByRBU(recordNumber, RBU);
}
else
result = await _ptdApi.GetZDNDetailJoinZWHPickListDetail(recordType, recordNumber);
if (result.DataTotal > 0) if (result.DataTotal > 0)
{ {
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal }); return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
@ -1257,6 +1362,9 @@ namespace AMESCoreStudio.Web.Controllers
} }
} }
// 執行扣帳 // 執行扣帳
if (ptd007.RecordType == "101P")
result = await _ptdApi.PostPTD007CommitByRBU(data);
else
result = await _ptdApi.PostPTD007Commit(data); result = await _ptdApi.PostPTD007Commit(data);
foreach (var item in ptd007.TableData) foreach (var item in ptd007.TableData)

17
AMESCoreStudio.Web/HttpApis/AMES/IPTD.cs

@ -104,6 +104,14 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/PTD/CustomerItemMailGroupByCustomerCode/{id}")] [WebApiClient.Attributes.HttpGet("api/PTD/CustomerItemMailGroupByCustomerCode/{id}")]
ITask<List<dynamic>> GetCustomerItemMailGroupByCustomerCode(string id); ITask<List<dynamic>> GetCustomerItemMailGroupByCustomerCode(string id);
/// <summary>
/// 確認序號是否已通過FQC檢驗
/// </summary>
/// <param name="barcodeNo">內部序號</param>
/// <param name="extraBarcodeNo">出貨序號</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("http://192.168.4.109:5088/api/FqcInhouseMaster/CheckFQCTestOk1")]
ITask<List<dynamic>> CheckFQCTestOk(string barcodeNo = null, string extraBarcodeNo = null);
#region "PTD003 作業查詢" #region "PTD003 作業查詢"
@ -230,7 +238,6 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpDelete("api/WipInfos/DeleteZWHPickListDetail/{sn}")] [WebApiClient.Attributes.HttpDelete("api/WipInfos/DeleteZWHPickListDetail/{sn}")]
ITask<ResultModel<string>> DeleteZWHPickListDetail(string sn); ITask<ResultModel<string>> DeleteZWHPickListDetail(string sn);
[WebApiClient.Attributes.HttpDelete("api/WipInfos/DeleteZWHPickListDetailAll/{recordNo}/{lineNo}")] [WebApiClient.Attributes.HttpDelete("api/WipInfos/DeleteZWHPickListDetailAll/{recordNo}/{lineNo}")]
ITask<ResultModel<string>> DeleteZWHPickListDetailAll(string recordNo, string lineNo); ITask<ResultModel<string>> DeleteZWHPickListDetailAll(string recordNo, string lineNo);
#endregion #endregion
@ -238,8 +245,16 @@ namespace AMESCoreStudio.Web
#region "PTD007 扣帳作業" #region "PTD007 扣帳作業"
[WebApiClient.Attributes.HttpGet("api/WipInfos/GetZDNDetailJoinZWHPickListDetail")] [WebApiClient.Attributes.HttpGet("api/WipInfos/GetZDNDetailJoinZWHPickListDetail")]
ITask<ResultModel<dynamic>> GetZDNDetailJoinZWHPickListDetail(string recordType, string recordNumber); ITask<ResultModel<dynamic>> GetZDNDetailJoinZWHPickListDetail(string recordType, string recordNumber);
[WebApiClient.Attributes.HttpPost("api/WipInfos/PostPTD007Commit")] [WebApiClient.Attributes.HttpPost("api/WipInfos/PostPTD007Commit")]
ITask<ResultModel<dynamic>> PostPTD007Commit([FromBody, RawJsonContent] string model); ITask<ResultModel<dynamic>> PostPTD007Commit([FromBody, RawJsonContent] string model);
[WebApiClient.Attributes.HttpGet("api/WipInfos/GetPTD007QueryByRBU")]
ITask<ResultModel<dynamic>> GetPTD007QueryByRBU(string recordNumber, string RBU);
[WebApiClient.Attributes.HttpPost("api/WipInfos/PostPTD007CommitByRBU")]
ITask<ResultModel<dynamic>> PostPTD007CommitByRBU([FromBody, RawJsonContent] string model);
#endregion #endregion
#region "PTD008 還原作業" #region "PTD008 還原作業"

14
AMESCoreStudio.Web/Views/PTD/PTD004.cshtml

@ -31,7 +31,6 @@
}, },
{ {
field: 'id', field: 'id',
width: 100,
title: '代號' title: '代號'
}, },
{ {
@ -47,12 +46,10 @@
{ {
field: 'source', field: 'source',
title: '來源', title: '來源',
width: 160
}, },
{ {
field: 'prefixCode', field: 'prefixCode',
title: '開頭', title: '開頭',
width: 160
}, },
{ {
field: 'length', field: 'length',
@ -193,25 +190,26 @@
//通过行tool编辑,lay-event="edit" //通过行tool编辑,lay-event="edit"
function edit(obj) { function edit(obj) {
if (obj.data.id) { if (obj.data.recordTypeID) {
hg.open('修改單頭說明', '/PTD/PTD004U/' + obj.data.id, 480, 480); hg.open('修改單頭說明', '/PTD/PTD004U?idx=' + obj.data.recordTypeID, 480, 480);
} }
} }
//通过行tool删除,lay-event="del" //通过行tool删除,lay-event="del"
function del(obj) { function del(obj) {
if (obj.data.id) { if (obj.data.recordTypeID) {
hg.confirm("系統:" + obj.data.typeName + ",確定要刪除嗎?", function () { hg.confirm("系統:" + obj.data.typeName + ",確定要刪除嗎?", function () {
$.ajax({ $.ajax({
url: '/PTD/PTD004D', url: '/PTD/PTD004D',
data: { id: obj.data.id }, data: { id: obj.data.recordTypeID },
type: 'POST', type: 'POST',
success: function (res) { success: function (res) {
if (res.success) { if (res.success) {
hg.msghide("刪除成功!", { hg.msghide("刪除成功!", {
icon: 6 icon: 6
}); });
layui.table.reload('test', { page: { curr: $(".layui-laypage-em").next().html() } }) layui.table.reload('test')
//layui.table.reload('test', { page: { curr: $(".layui-laypage-em").next().html() } })
} }
else { else {
hg.msg(data.msg); hg.msg(data.msg);

1
AMESCoreStudio.Web/Views/PTD/PTD004U.cshtml

@ -16,6 +16,7 @@
<form enctype="multipart/form-data" method="post" asp-action="PTD004Save"> <form enctype="multipart/form-data" method="post" asp-action="PTD004Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div> <div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Mode" value="1" /> <input type="hidden" asp-for="Mode" value="1" />
<input type="hidden" asp-for="RecordTypeID" value=@Model.RecordTypeID />
<div class="form-group form-inline my-sm-1"> <div class="form-group form-inline my-sm-1">
<label asp-for="RBU" class="control-label col-sm-3">RBU</label> <label asp-for="RBU" class="control-label col-sm-3">RBU</label>
<input asp-for="RBU" class="form-control col-sm-9" placeholder="請輸入RBU" /> <input asp-for="RBU" class="form-control col-sm-9" placeholder="請輸入RBU" />

10
AMESCoreStudio.Web/Views/PTD/PTD005.cshtml

@ -57,8 +57,8 @@
//通过行tool编辑,lay-event="edit" //通过行tool编辑,lay-event="edit"
function edit(obj) { function edit(obj) {
if (obj.data.itemNumber) { if (obj.data.customerCode) {
hg.open('修改收件人名單', '/PTD/PTD005U/' + obj.data.itemNumber, 480,480); hg.open('修改收件人名單', '/PTD/PTD005U/' + obj.data.customerCode, 480,480);
} }
} }
@ -69,11 +69,11 @@
str = "停用"; str = "停用";
else else
str = "啟用"; str = "啟用";
if (obj.data.itemNumber) { if (obj.data.customerCode) {
hg.confirm("料號:" + obj.data.itemNumber + ",確定要"+str+"嗎?", function () { hg.confirm("客戶代號:" + obj.data.customerCode + ",確定要"+str+"嗎?", function () {
$.ajax({ $.ajax({
url: '/PTD/PTD005D', url: '/PTD/PTD005D',
data: { id: obj.data.itemNumber }, data: { id: obj.data.customerCode },
type: 'POST', type: 'POST',
success: function (data) { success: function (data) {
if (data.success) { if (data.success) {

4
AMESCoreStudio.Web/Views/PTD/PTD005U.cshtml

@ -19,11 +19,11 @@
<div class="form-group form-inline my-sm-1"> <div class="form-group form-inline my-sm-1">
<label asp-for="ItemNumber" class="control-label col-sm-3">料號</label> <label asp-for="ItemNumber" class="control-label col-sm-3">料號</label>
<input asp-for="ItemNumber" class="form-control col-sm-9" readonly/> <input asp-for="ItemNumber" class="form-control col-sm-9" />
</div> </div>
<div class="form-group form-inline my-sm-1"> <div class="form-group form-inline my-sm-1">
<label asp-for="CustomerCode" class="control-label col-sm-3">客戶代號</label> <label asp-for="CustomerCode" class="control-label col-sm-3">客戶代號</label>
<input asp-for="CustomerCode" class="form-control col-sm-9" placeholder="請輸入出貨客戶" /> <input asp-for="CustomerCode" class="form-control col-sm-9" placeholder="請輸入出貨客戶" readonly/>
<span asp-validation-for="CustomerCode" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="CustomerCode" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
<div class="form-group form-inline my-sm-1"> <div class="form-group form-inline my-sm-1">

23
AMESCoreStudio.Web/Views/PTD/PTD006.cshtml

@ -205,20 +205,31 @@
var recordType = document.getElementById('recordType').value; var recordType = document.getElementById('recordType').value;
var recordTypeInfo = @Html.Raw(Json.Serialize(ViewBag.RecordTypeInfo)); var recordTypeInfo = @Html.Raw(Json.Serialize(ViewBag.RecordTypeInfo));
var lineNo = document.getElementById('lineNo').value; var lineNo = document.getElementById('lineNo').value;
var filteredInfo = recordTypeInfo.find(function (info) { var filteredInfo = recordTypeInfo.filter(function (info) {
return info.id === recordType; return info.id === recordType;
}); });
//check recordNumber var allPrefixes = [];
var isAnyValid = filteredInfo.some(function (filteredInfo) {
// 检查 recordNumber 长度
if (recordNumber.length !== filteredInfo.length) { if (recordNumber.length !== filteredInfo.length) {
layer.msg('請確認recordNumber碼長!', { icon: 2 }); layer.msg('請確認recordNumber碼長!', { icon: 2 });
$("#recordNumber").val(''); $("#recordNumber").val('');
return; return false; // 退出 some 循环
} }
// Check if recordNumber starts with prefixCode
// 检查 recordNumber 是否以 prefixCode 开头
var prefixCode = filteredInfo.prefixCode; var prefixCode = filteredInfo.prefixCode;
if (!recordNumber.startsWith(prefixCode)) { if (recordNumber.startsWith(prefixCode)) {
layer.msg('recordNumber開頭必須是:' + prefixCode, { icon: 2 }); return true; // 有一个符合条件,退出 some 循环
} else {
allPrefixes.push(prefixCode); // 收集不符合的 prefixCode
return false;
}
});
if (!isAnyValid) {
layer.msg('recordNumber開頭必須是其中之一: ' + allPrefixes.join(', '), { icon: 2 });
$("#recordNumber").val(''); $("#recordNumber").val('');
return; return;
} }

12
AMESCoreStudio.Web/Views/PTD/PTD008.cshtml

@ -130,16 +130,16 @@
type: 'POST', type: 'POST',
success: function (result) { success: function (result) {
if (result.success) { if (result.success) {
layer.msg(result.msg, { icon: 1 }); layer.msg(result.msg, { icon: 1, time: 5000 });
// 手动触发按钮的点击事件 // 手动触发按钮的点击事件
$('#submitBtn').click(); $('#submitBtn').click();
} }
else { else {
layer.msg(result.msg, { icon: 2 }); layer.msg(result.msg, { icon: 2, time: 5000 });
} }
}, },
error: function (error) { error: function (error) {
layer.msg('還原失敗!原因:' + error.msg, { icon: 2 }); layer.msg('還原失敗!原因:' + error.msg, { icon: 2, time: 5000 });
} }
}); });
}); });
@ -176,16 +176,16 @@
type: 'POST', type: 'POST',
success: function (result) { success: function (result) {
if (result.success) { if (result.success) {
layer.msg(result.msg, { icon: 1 }); layer.msg(result.msg, { icon: 1, time: 5000 });
// 手动触发按钮的点击事件 // 手动触发按钮的点击事件
$('#submitBtn').click(); $('#submitBtn').click();
} }
else { else {
layer.msg(result.msg, { icon: 2 }); layer.msg(result.msg, { icon: 2, time: 5000});
} }
}, },
error: function (error) { error: function (error) {
layer.msg('刪除失敗!原因:' + error.msg, { icon: 2 }); layer.msg('刪除失敗!原因:' + error.msg, { icon: 2, time: 5000});
} }
}); });
}); });

2
AMESCoreStudio.WebApi/Controllers/AMES/FqcInhouseMasterController.cs

@ -440,7 +440,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
p.Add("extraBarcodeNo", extraBarcodeNo); p.Add("extraBarcodeNo", extraBarcodeNo);
} }
querySql += "WHERE M.STATUS = 'A' "; querySql += "WHERE M.STATUS = 'P' ";
var result = await _context.Database.DapperQueryAsync<dynamic>(querySql, p); var result = await _context.Database.DapperQueryAsync<dynamic>(querySql, p);
return result.ToList(); return result.ToList();
} }

252
AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs

@ -3071,7 +3071,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
string strDNNo = data.TableData[0].DnNo; string strDNNo = data.TableData[0].DnNo;
var pdtMail = await new PTD.PTDController().GetCustomerItemMailGroup(customer); var pdtMail = await new PTD.PTDController().GetCustomerItemMailGroup(customer);
if (pdtMail.Any()) if (pdtMail.Any(a => a.StatusNo != "S"))
{ {
var firstItem = pdtMail.FirstOrDefault(); var firstItem = pdtMail.FirstOrDefault();
string toMail = firstItem.MailGroup; string toMail = firstItem.MailGroup;
@ -3884,7 +3884,8 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
Source = Convert.ToString(row["Source"]), Source = Convert.ToString(row["Source"]),
PrefixCode = Convert.ToString(row["PrefixCode"]), PrefixCode = Convert.ToString(row["PrefixCode"]),
Length = row["Length"] == DBNull.Value ? (int?)null : Convert.ToInt32(row["Length"]), Length = row["Length"] == DBNull.Value ? (int?)null : Convert.ToInt32(row["Length"]),
Status = Convert.ToString(row["Status"]) Status = Convert.ToString(row["Status"]),
RecordTypeID = Convert.ToString(row["RecordTypeID"])
}); });
} }
return RecordTypeInfo; return RecordTypeInfo;
@ -3904,7 +3905,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
} }
[HttpGet("GetRecordTypeInfo/{id}")] [HttpGet("GetRecordTypeInfo/{id}")]
public async Task<ActionResult<IEnumerable<RecordTypeInfo>>> GetRecordTypeInfo(string id) public async Task<ActionResult<IEnumerable<RecordTypeInfo>>> GetRecordTypeInfo(int id)
{ {
//安勤連線 //安勤連線
PTDContext _ptd_context = new PTDContext(); PTDContext _ptd_context = new PTDContext();
@ -3915,11 +3916,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
} }
try try
{ {
string strSQL = $@"select * from SFIS_PTD.dbo.RecordTypeInfo"; string strSQL = $@"select * from SFIS_PTD.dbo.RecordTypeInfo Where RecordTypeID ='{id}'";
if (id != null && id != "")
{
strSQL += $@" Where id ='{id}'";
}
DataTable dtRecordTypeInfo = new DataTable(); DataTable dtRecordTypeInfo = new DataTable();
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
@ -3946,7 +3943,8 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
Source = Convert.ToString(row["Source"]), Source = Convert.ToString(row["Source"]),
PrefixCode = Convert.ToString(row["PrefixCode"]), PrefixCode = Convert.ToString(row["PrefixCode"]),
Length = row["Length"] == DBNull.Value ? (int?)null : Convert.ToInt32(row["Length"]), Length = row["Length"] == DBNull.Value ? (int?)null : Convert.ToInt32(row["Length"]),
Status = Convert.ToString(row["Status"]) Status = Convert.ToString(row["Status"]),
RecordTypeID = Convert.ToString(row["RecordTypeID"])
}); });
} }
return RecordTypeInfo; return RecordTypeInfo;
@ -4032,13 +4030,14 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
{ {
string strSQL = $@"UPDATE SFIS_PTD.dbo.RecordTypeInfo string strSQL = $@"UPDATE SFIS_PTD.dbo.RecordTypeInfo
SET RBU = '{RecordTypeInfo.RBU}', SET RBU = '{RecordTypeInfo.RBU}',
ID = '{RecordTypeInfo.ID}',
TypeName = '{RecordTypeInfo.TypeName}', TypeName = '{RecordTypeInfo.TypeName}',
TypeDesc = '{RecordTypeInfo.TypeDesc}', TypeDesc = '{RecordTypeInfo.TypeDesc}',
Source = '{RecordTypeInfo.Source}', Source = '{RecordTypeInfo.Source}',
PrefixCode = '{RecordTypeInfo.PrefixCode}', PrefixCode = '{RecordTypeInfo.PrefixCode}',
Length = {RecordTypeInfo.Length}, Length = {RecordTypeInfo.Length},
Status = '{RecordTypeInfo.Status}' Status = '{RecordTypeInfo.Status}'
WHERE ID = '{id}'"; WHERE RecordTypeID = '{RecordTypeInfo.RecordTypeID}'";
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
{ {
@ -4079,7 +4078,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
try try
{ {
string strSQL = $@"DELETE FROM SFIS_PTD.dbo.RecordTypeInfo string strSQL = $@"DELETE FROM SFIS_PTD.dbo.RecordTypeInfo
WHERE ID = '{id}'"; WHERE RecordTypeID = '{id}'";
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
{ {
@ -4178,7 +4177,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
string strSQL = $@"select * from SFIS_PTD.dbo.CustomerItemMailGroup Where 1=1"; string strSQL = $@"select * from SFIS_PTD.dbo.CustomerItemMailGroup Where 1=1";
if (id != null && id != "") if (id != null && id != "")
{ {
strSQL += $@" And ItemNumber ='{id}'"; strSQL += $@" And CustomerCode ='{id}'";
} }
DataTable dtCustomerItemMailGroup = new DataTable(); DataTable dtCustomerItemMailGroup = new DataTable();
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
@ -4265,7 +4264,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
public async Task<ResultModel<CustomerItemMailGroupModel>> PutCustomerItemMailGroup(string id, [FromBody] CustomerItemMailGroupModel CustomerItemMailGroup) public async Task<ResultModel<CustomerItemMailGroupModel>> PutCustomerItemMailGroup(string id, [FromBody] CustomerItemMailGroupModel CustomerItemMailGroup)
{ {
ResultModel<CustomerItemMailGroupModel> result = new ResultModel<CustomerItemMailGroupModel>(); ResultModel<CustomerItemMailGroupModel> result = new ResultModel<CustomerItemMailGroupModel>();
if (id != CustomerItemMailGroup.ItemNumber) if (id != CustomerItemMailGroup.CustomerCode)
{ {
result.Success = false; result.Success = false;
result.Msg = "ID錯誤"; result.Msg = "ID錯誤";
@ -4283,9 +4282,9 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
try try
{ {
string strSQL = $@"UPDATE SFIS_PTD.dbo.CustomerItemMailGroup string strSQL = $@"UPDATE SFIS_PTD.dbo.CustomerItemMailGroup
SET CustomerCode = '{CustomerItemMailGroup.CustomerCode}', SET ItemNumber = '{CustomerItemMailGroup.ItemNumber}',
MailGroup = '{CustomerItemMailGroup.MailGroup}' MailGroup = '{CustomerItemMailGroup.MailGroup}'
WHERE ItemNumber = '{id}'"; WHERE CustomerCode = '{id}'";
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
{ {
@ -4332,7 +4331,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
WHEN StatusNo = 'S' THEN 'A' WHEN StatusNo = 'S' THEN 'A'
ELSE 'A' ELSE 'A'
END END
WHERE ItemNumber = '{id}'"; WHERE CustomerCode = '{id}'";
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
{ {
@ -5094,6 +5093,227 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
} }
return result; return result;
}
[Route("[action]")]
[HttpGet]
public async Task<ResultModel<dynamic>> GetPTD007QueryByRBU(string recordNumber, string RBU)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
try
{
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{
if (ptdConnection.State != ConnectionState.Open)
{
ptdConnection.Open();
}
// 判斷ERP_CustomerID
var erpCustomerId = new List<string>();
if (RBU == "AUS")
erpCustomerId.AddRange(new[] { "81US0023" });
else if (RBU == "ASH")
erpCustomerId.AddRange(new[] { "35CH0001" });
else
erpCustomerId.AddRange(new[] { "35CH0692", "30TW0001" });
var query = @$" SELECT A.* , B.ExpectShipDate , B.ShipQty FROM
(SELECT RecordNumber AS DNNO ,
RCLineNO AS DNLineNO ,
ProductID ,
EmplID AS SoldCustomerID ,
count(*) as Qty ,
OwnerPlantID
FROM SFIS_PTD.dbo.ZProductTrans
WHERE ERP_CustomerID IN ({string.Join(", ", erpCustomerId.ConvertAll(id => $"N'{id}'"))})
AND RecordNumber = @RecordNumber
AND IsBranchCoReceived = 0
AND RecordTypeID in (N'601',N'633',N'601DB')
GROUP BY RecordNumber, RCLineNO, ProductID, OwnerPlantID ,EmplID
) A
LEFT JOIN SFIS_PTD.dbo.ZDNDetail B on A.DNNO = B.DNNO AND A.DNLineNO = B.DNLineNO
ORDER BY A.DNNO, A.DNLineNO ";
DynamicParameters p = new DynamicParameters();
p.Add("RecordNumber", recordNumber, DbType.String);
var q = await ptdConnection.QueryAsync<dynamic>(query, p);
result.DataTotal = q.Count();
result.Data = q;
}
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
if (result == null)
{
result.Msg = "查無資料";
result.Success = false;
return result;
}
result.Success = true;
result.Msg = "OK";
return result;
}
[Route("[action]")]
[HttpPost]
public async Task<ResultModel<dynamic>> PostPTD007CommitByRBU(PTD007CommitDataModel Data)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
List<string> SNList = new List<string>();
Collection<string> colSQL = new Collection<string>();
List<PTD002CommitDataModel> mailData = new List<PTD002CommitDataModel>();
try
{
// RecordDate 加入目前時間
Data.RecordDate += $" {DateTime.Now:HH:mm:ss}";
string strSQL = "";
string strRecordType = Data.RecordType;
string strRbu = Data.Rbu;
string strWorkCenter = Data.WorkCenter;
string strRecordDate = TimeZoneInfo.ConvertTimeToUtc(DateTime.Parse(Data.RecordDate)).ToString("yyyy-MM-dd HH:mm:ss");
string strCreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
// 判斷ERP_CustomerID
var erpCustomerId = new List<string>();
if (strRbu == "AUS")
erpCustomerId.AddRange(new[] { "81US0023" });
else if (strRbu == "ASH")
erpCustomerId.AddRange(new[] { "35CH0001" });
else
erpCustomerId.AddRange(new[] { "35CH0692", "30TW0001"});
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{
if (ptdConnection.State != ConnectionState.Open)
{
ptdConnection.Open();
}
foreach (PTD007TableDataModel SNData in Data.TableData)
{
var mailDataItem = new List<SNDataModel>();
//ZProductTrans
strSQL = $@" SELECT * FROM SFIS_PTD.dbo.ZProductTrans
WHERE ERP_CustomerID IN ({string.Join(", ", erpCustomerId.ConvertAll(id => $"N'{id}'"))})
AND IsBranchCoReceived = 0
AND RecordTypeID in (N'601',N'633',N'601DB')
AND RecordNumber = '{SNData.dnno}'
AND RCLineNO = '{SNData.dnLineNO}' ";
var q = await ptdConnection.QueryAsync<dynamic>(strSQL);
foreach (var row in q)
{
string strLatest;
//確認此出貨序號是否有ZHistoryKeyDefine
strSQL = $@"select Seed FROM [SFIS_PTD].[dbo].[ZHistoryKeyDefine] where serialnumber ='{row.SerialNumber}'";
var q1 = await ptdConnection.QueryAsync<dynamic>(strSQL);
if (q1.Any())
{
int seed = Convert.ToInt32(q1.FirstOrDefault().Seed);
int nIdx = seed + 1;
strLatest = row.SerialNumber + nIdx.ToString().PadLeft(4, '0');//組成HistoryID
//HistoryKeyDefine
strSQL = @$"UPDATE [SFIS_PTD].[dbo].[ZHistoryKeyDefine]
SET [Seed] = {nIdx} where [SerialNumber]='{row.SerialNumber}'";
colSQL.Add(strSQL);
//ZSNInfo
strSQL = @$"Update [SFIS_PTD].[dbo].[ZSNInfo] SET LatestHistoryID='{strLatest}',RecordTypeID='{strRecordType}',
CurrentProductID='{row.ProductID}'
where SerialNumber='{row.SerialNumber}'";
colSQL.Add(strSQL);
}
else
{
strLatest = row.SerialNumber + 1.ToString().PadLeft(4, '0');//組成HistoryID
//ZHistoryKeyDefine
strSQL = @$"INSERT INTO [SFIS_PTD].[dbo].[ZHistoryKeyDefine] ([SerialNumber],[Seed])
VALUES ('{row.SerialNumber}',1)";
colSQL.Add(strSQL);
//ZSNInfo
strSQL = @$"INSERT INTO [SFIS_PTD].[dbo].[ZSNInfo] ([SerialNumber],[CurrentProductID],[OriginalProductID],
[LocationID],[LatestHistoryID],[RecordTypeID],
[OwnerPlantID],[OwnerCompanyID],[CreatePlantID],[CreateCompanyID],
[ModifyDate]) VALUES
('{row.SerialNumber}','{row.ProductID}','{row.ProductID}',
'9000','{strLatest}','{strRecordType}',
'{strWorkCenter}','{strRbu}','{strWorkCenter}','{strRbu}',
'{strCreateDate}')";
colSQL.Add(strSQL);
}
//ZProductTrans
strSQL = $@"INSERT INTO [SFIS_PTD].[dbo].[ZProductTrans]
([HistoryID],[SerialNumber],[RecordTypeID],[RecordNumber],[RCLineNO],[RecordDate],
[ProductID],[IsChangeID],[LocationID],[EmplID],[IsDelete],
[OwnerPlantID],[OwnerCompanyID],[CreatePlantID],[CreateCompanyID],
[CreatorID],[CreateDate],[ModifierID],[ModifyDate],
[chkflag],[IsBranchCoReceived],[MOID]) VALUES
('{strLatest}','{row.SerialNumber}','{strRecordType}','{SNData.dnno}','{SNData.dnLineNO}','{strRecordDate}',
'{SNData.productID}',0,'9000','{SNData.soldCustomerID.ToString()}',0,
'{strWorkCenter}','{strRbu}','{strWorkCenter}','{strRbu}',
'WH00','{strCreateDate}','WH00','{strCreateDate}',0,0,'')";
colSQL.Add(strSQL);
mailDataItem.Add(new SNDataModel
{
DnNo = SNData.dnno,
LineNo = SNData.dnLineNO,
Material = SNData.productID,
Sn = row.SerialNumber
});
}
strSQL = $@" Update SFIS_PTD.dbo.ZProductTrans set IsBranchCoReceived ='1'
WHERE ERP_CustomerID IN ({string.Join(", ", erpCustomerId.ConvertAll(id => $"N'{id}'"))})
AND IsBranchCoReceived = 0
AND RecordTypeID in (N'601',N'633',N'601DB')
AND RecordNumber='{SNData.dnno}'
AND RCLineNO='{SNData.dnLineNO}' ";
colSQL.Add(strSQL);
}
using (var transaction = ptdConnection.BeginTransaction())
{
try
{
foreach (string query in colSQL)
{
await ptdConnection.ExecuteAsync(query, transaction: transaction);
}
// Commit the transaction
transaction.Commit();
}
catch (Exception ex)
{
// Rollback the transaction in case of an exception
transaction.Rollback();
throw ex; // Rethrow the exception after rollback
}
}
}
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.Message;
}
return result;
} }
#endregion #endregion

2
AMESCoreStudio.WebApi/Controllers/PTD/PTDController.cs

@ -12,7 +12,7 @@ using System.Threading.Tasks;
namespace AMESCoreStudio.WebApi.Controllers.PTD namespace AMESCoreStudio.WebApi.Controllers.PTD
{ {
/// <summary> /// <summary>
/// TestLog 測試Log /// PTD
/// </summary> /// </summary>
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]

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

@ -98,6 +98,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
public string? PrefixCode { get; set; } public string? PrefixCode { get; set; }
public int? Length { get; set; } public int? Length { get; set; }
public string? Status { get; set; } public string? Status { get; set; }
public string RecordTypeID { get; set; }
} }
/// <summary> /// <summary>

Loading…
Cancel
Save