Browse Source

1. 調整WIP_log建立人員

2. PTD 還原作業調整,查詢作業調整,新增客戶提出需求卡關及寫入DB
master
Sai 8 months ago
parent
commit
0893298fcb
  1. 1
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 183
      AMESCoreStudio.Web/Controllers/PTDController.cs
  3. 42
      AMESCoreStudio.Web/HttpApis/AMES/IPTD.cs
  4. 57
      AMESCoreStudio.Web/Views/PTD/PTD002.cshtml
  5. 67
      AMESCoreStudio.Web/Views/PTD/PTD003.cshtml
  6. 73
      AMESCoreStudio.Web/Views/PTD/PTD006.cshtml
  7. 145
      AMESCoreStudio.Web/Views/PTD/PTD008.cshtml
  8. 23
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
  9. 266
      AMESCoreStudio.WebApi/Controllers/PTD/PTDController.cs

1
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -4251,6 +4251,7 @@ namespace AMESCoreStudio.Web.Controllers
wipLog.WipID = wipID; wipLog.WipID = wipID;
wipLog.WipDesc = "."; wipLog.WipDesc = ".";
wipLog.StatusNO = statusNO; wipLog.StatusNO = statusNO;
wipLog.CreateUserID = GetLogInUserID();
// 當切換STOP時,強制收線 // 當切換STOP時,強制收線
if (statusNO == "S") if (statusNO == "S")

183
AMESCoreStudio.Web/Controllers/PTDController.cs

@ -302,9 +302,25 @@ namespace AMESCoreStudio.Web.Controllers
[HttpPost] [HttpPost]
public async Task<JsonResult> PTD002_Commit(string data) public async Task<JsonResult> PTD002_Commit(string data)
{ {
var ptd002 = JsonConvert.DeserializeObject<PTD002CommitDataModel>(data);
var result = await _ptdApi.PostPTD002Commit(data); var result = await _ptdApi.PostPTD002Commit(data);
var item = ptd002.TableData.FirstOrDefault();
var zDNDetail = await _ptdApi.GetGetZDNDetail(item.DnNo, item.LineNo);
var zProductTrans = await _ptdApi.GetZProductTrans(recordNumber: item.DnNo, lineNo: item.LineNo);
if (zDNDetail.Any() && zProductTrans.Any())
{
// DN數量 == 已扣帳數量
if (zDNDetail.FirstOrDefault().shipQty == zProductTrans.Count())
await _ptdApi.PutZDNDetailByIsRecord(item.DnNo, item.LineNo, 1);
}
//将数据Json化并传到前台视图 //将数据Json化并传到前台视图
return Json(new { data = result }); return Json(new
{
data = result
});
} }
[HttpPost] [HttpPost]
@ -500,6 +516,13 @@ namespace AMESCoreStudio.Web.Controllers
else if (model.LineNo.Trim().Length != 6) else if (model.LineNo.Trim().Length != 6)
return "LineNo不足6碼"; return "LineNo不足6碼";
// 判斷是否已備貨完成
var isRecord = await CheckRecordNoIsRecord(model.RecordNumber, model.LineNo);
if (!(isRecord.Value as Result).success)
{
return $"RecordNumber【{model.RecordNumber}】 LineNo【{model.LineNo}】 已備貨完";
}
// Location // Location
if (string.IsNullOrWhiteSpace(model.Location)) if (string.IsNullOrWhiteSpace(model.Location))
{ {
@ -651,17 +674,19 @@ namespace AMESCoreStudio.Web.Controllers
//ViewBag.StartDate = System.DateTime.Now.AddDays(-7).ToString("yyyy/MM/dd"); //ViewBag.StartDate = System.DateTime.Now.AddDays(-7).ToString("yyyy/MM/dd");
//ViewBag.EndDate = System.DateTime.Now.ToString("yyyy/MM/dd"); //ViewBag.EndDate = System.DateTime.Now.ToString("yyyy/MM/dd");
ViewBag.WorkCenter = "TWM0"; ViewBag.WorkCenter = "TWM0";
ViewBag.rowCount = "總筆數: 0";
return View(); return View();
} }
public async Task<IActionResult> PTD003QueryAsync(string recordType, string recordNumber, string lineNo, string materialNo, string shippingSN, string dateStart, string dateEnd, int autoLoad = 0, string RBU = null) public async Task<IActionResult> PTD003QueryAsync(string recordType, string recordNumber, string lineNo, string materialNo, string shippingSN, string dateStart, string dateEnd,
int autoLoad = 0, string RBU = null, string soNumber = null, string soLineNo = null, string customer = null)
{ {
//if (recordNumber == null || recordNumber == "")
// return Json(new Table() { count = 0, data = null });
if (autoLoad == 0) if (autoLoad == 0)
{
return Json(new Table() { count = 0, data = null }); return Json(new Table() { count = 0, data = null });
}
var result = await _ptdApi.GetData4PTD003(recordType, recordNumber, lineNo, materialNo, shippingSN, dateStart, dateEnd, RBU); var result = await _ptdApi.GetData4PTD003(recordType, recordNumber, lineNo, materialNo, shippingSN,
dateStart, dateEnd, RBU, soNumber, soLineNo, customer);
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 });
@ -1111,6 +1136,12 @@ namespace AMESCoreStudio.Web.Controllers
return Json(new Result() { success = true, msg = msg, data = new List<dynamic>() }); return Json(new Result() { success = true, msg = msg, data = new List<dynamic>() });
} }
/// <summary>
/// 取得 RecordNo & LineNo 訂單數量
/// </summary>
/// <param name="dnNo">RecordNo</param>
/// <param name="dnlineNo">LineNo</param>
/// <returns></returns>
public async Task<JsonResult> GetRecordNumberQty(string dnNo, string dnlineNo) public async Task<JsonResult> GetRecordNumberQty(string dnNo, string dnlineNo)
{ {
var zDNDetail = await _ptdApi.GetGetZDNDetail(dnNo, dnlineNo); var zDNDetail = await _ptdApi.GetGetZDNDetail(dnNo, dnlineNo);
@ -1127,6 +1158,25 @@ namespace AMESCoreStudio.Web.Controllers
} }
/// <summary>
/// 確認 RecordNo & LineNo 是否可備貨
/// </summary>
/// <param name="dnNo">RecordNo</param>
/// <param name="dnlineNo">LineNo</param>
/// <returns>ture可 false不可</returns>
public async Task<JsonResult> CheckRecordNoIsRecord(string dnNo, string dnlineNo)
{
var zDNDetail = await _ptdApi.GetGetZDNDetail(dnNo, dnlineNo);
if (zDNDetail.Any())
{
var isRecord = zDNDetail.FirstOrDefault().isRecord;
if ((int)isRecord == 1)
return Json(new Result() { success = false });
}
return Json(new Result() { success = true });
}
#endregion #endregion
#region "PTD007 扣帳作業" #region "PTD007 扣帳作業"
@ -1181,7 +1231,34 @@ namespace AMESCoreStudio.Web.Controllers
[HttpPost] [HttpPost]
public async Task<JsonResult> PTD007_Commit(string data) public async Task<JsonResult> PTD007_Commit(string data)
{ {
var result = await _ptdApi.PostPTD007Commit(data); var ptd007 = JsonConvert.DeserializeObject<PTD007CommitDataModel>(data);
var result = new ResultModel<dynamic>();
// 先確認需求數量是否=備貨數量
foreach (var item in ptd007.TableData)
{
if (item.shipQty != item.qty)
{
result.Success = false;
result.Msg = $"DN單號【{item.dnno}】 LineNo【{item.dnLineNO}】 數量不符合,請檢查備貨資料";
return Json(new { data = result });
}
}
// 執行扣帳
result = await _ptdApi.PostPTD007Commit(data);
foreach (var item in ptd007.TableData)
{
var zDNDetail = await _ptdApi.GetGetZDNDetail(item.dnno, item.dnLineNO);
var zProductTrans = await _ptdApi.GetZProductTrans(recordNumber: item.dnno, lineNo: item.dnLineNO);
if (zDNDetail.Any() && zProductTrans.Any())
{
// DN數量 == 已扣帳數量
if (zDNDetail.FirstOrDefault().shipQty == zProductTrans.Count())
await _ptdApi.PutZDNDetailByIsRecord(item.dnno, item.dnLineNO, 1);
}
}
//将数据Json化并传到前台视图 //将数据Json化并传到前台视图
return Json(new { data = result }); return Json(new { data = result });
} }
@ -1205,12 +1282,96 @@ namespace AMESCoreStudio.Web.Controllers
} }
return Json(new Table() { count = 0, data = null, msg = result.Msg }); return Json(new Table() { count = 0, data = null, msg = result.Msg });
} }
[HttpPost] [HttpPost]
public async Task<JsonResult> PTD008_Commit(string data) public async Task<JsonResult> PTD008_Commit(string recordNumber, string lineNo, string materialNo, string shippingSN)
{ {
var result = await _ptdApi.PostPTD008Commit(data); var data = await _ptdApi.GetData4PTD008(recordNumber, lineNo, materialNo, shippingSN);
//将数据Json化并传到前台视图
return Json(new { data = result }); if (data.Data.Any(w => w.recordTypeID == "101" || w.recordTypeID == "292"))
return Json(new Result() { success = false, msg = "ReCordType狀態是【101】或【292】 ,不可做還原動作" });
int okQty = 0, ngQty = 0;
foreach (var item in data.Data)
{
var zProductTrans = await _ptdApi.GetZProductTrans(serialNumber: (string)item.sn);
var delcheck = true;
if (!zProductTrans.Any())
{
ngQty += 1;
continue;
}
// 取序號最新一次狀態
else if (zProductTrans.Any())
{
var newRecordId = zProductTrans.OrderByDescending(o => o.createDate).FirstOrDefault().recordTypeID;
// 確認目前還原是否是最新的
if (newRecordId != item.recordTypeID)
{
ngQty += 1;
continue;
}
}
// 可進行還原
delcheck = await _ptdApi.Put_PTD008((string)item.sn, recordNumber, lineNo, materialNo);
if (delcheck)
okQty += 1;
else
ngQty += 1;
}
// 成功刪除筆數大於1
if (okQty >= 1)
{
await _ptdApi.PutZDNDetailByIsRecord(recordNumber, lineNo, 0);
}
return Json(new Result() { success = true, msg = $"還原成功筆數【{okQty}】,失敗筆數【{ngQty}】" });
}
/// <summary>
/// 刪除動作
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
[HttpPost]
public async Task<JsonResult> PTD008_Del(string recordNumber, string lineNo, string materialNo, string shippingSN)
{
var data = await _ptdApi.GetData4PTD008(recordNumber, lineNo, materialNo, shippingSN);
if (data.Data.Any(w => w.recordTypeID != "101" && w.recordTypeID != "292"))
return Json(new Result() { success = false, msg = "ReCordType狀態不是【101】或【292】 ,不可做刪除動作" });
int okQty = 0, ngQty = 0;
foreach (var item in data.Data)
{
var zProductTrans = await _ptdApi.GetZProductTrans(serialNumber: (string)item.sn);
var delcheck = true;
// 大於一筆 代表尚有其他作業需還原
if (zProductTrans.Count > 1)
{
ngQty += 1;
}
// 可進行刪除
else
{
delcheck = await _ptdApi.Del_PTD008((string)item.sn, recordNumber, lineNo, materialNo);
if (delcheck)
okQty += 1;
else
ngQty += 1;
}
}
// 成功刪除筆數大於1,將ZDetail
if (okQty >= 1)
{
await _ptdApi.PutZDNDetailByIsRecord(recordNumber, lineNo, 0);
}
return Json(new Result() { success = true, msg = $"刪除成功筆數【{okQty}】,失敗筆數【{ngQty}】" });
} }
#endregion #endregion

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

@ -44,13 +44,23 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/PTD/GetZDNDetail")] [WebApiClient.Attributes.HttpGet("api/PTD/GetZDNDetail")]
ITask<List<dynamic>> GetGetZDNDetail(string dnNo, string dnlineNo); ITask<List<dynamic>> GetGetZDNDetail(string dnNo, string dnlineNo);
/// <summary>
/// 更新 PTD ZDNDetail RecordNumber ByisRecord 已扣帳狀態
/// </summary>
/// <param name="dnNo">RecordNumber</param>
/// <param name="dnlineNo">LineNo</param>
/// <param name="isRecord">已扣障 0:未完成 1:已完成</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/PTD/PutZDNDetail")]
ITask<int> PutZDNDetail(string dnNo, string dnlineNo, int isRecord);
/// <summary> /// <summary>
/// 查詢 ZSNInfo 主表 序號區間 /// 查詢 ZSNInfo 主表 序號區間
/// </summary> /// </summary>
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/PTD/ZSNInfoByIntervalNumber")] [WebApiClient.Attributes.HttpGet("api/PTD/ZSNInfoByIntervalNumber")]
ITask<List<dynamic>> GetZSNInfoByIntervalNumber(string strNumber ,string endNumber); ITask<List<dynamic>> GetZSNInfoByIntervalNumber(string strNumber, string endNumber);
/// <summary> /// <summary>
/// 查詢 ZSNInfo 主表 By 指定序號 /// 查詢 ZSNInfo 主表 By 指定序號
@ -101,7 +111,7 @@ namespace AMESCoreStudio.Web
ITask<List<RecordTypeInfo>> GetRecordTypes(); ITask<List<RecordTypeInfo>> GetRecordTypes();
[WebApiClient.Attributes.HttpGet("api/WipInfos/GetData4PTD003")] [WebApiClient.Attributes.HttpGet("api/WipInfos/GetData4PTD003")]
ITask<ResultModel<dynamic>> GetData4PTD003(string recordType, string recordNumber, string lineNo, string materialNo, string shippingSN, string dateStart, string dateEnd, string RBU); ITask<ResultModel<dynamic>> GetData4PTD003(string recordType, string recordNumber, string lineNo, string materialNo, string shippingSN, string dateStart, string dateEnd, string RBU, string soNumber, string soLineNo, string customer);
[WebApiClient.Attributes.HttpGet("api/WipInfos/GetCustomer/{recordNumber}")] [WebApiClient.Attributes.HttpGet("api/WipInfos/GetCustomer/{recordNumber}")]
ITask<string> GetCustomer(string recordNumber); ITask<string> GetCustomer(string recordNumber);
@ -140,6 +150,28 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpDelete("api/WipInfos/DeleteRecordTypeInfo/{id}")] [WebApiClient.Attributes.HttpDelete("api/WipInfos/DeleteRecordTypeInfo/{id}")]
ITask<ResultModel<string>> DeleteRecordTypeInfo(string id); ITask<ResultModel<string>> DeleteRecordTypeInfo(string id);
/// <summary>
/// 查詢 ZProductTrans
/// </summary>
/// <param name="serialNumber">序號</param>
/// <param name="recordNumber">RecordNumber</param>
/// <param name="lineNo">LineNo</param>
/// <param name="productID">料號</param>
/// <param name="recordTypeID">類型</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/PTD/GetZProductTrans")]
ITask<List<dynamic>> GetZProductTrans(string serialNumber = null, string recordNumber = null, string lineNo = null, string productID = null, string recordTypeID = null);
/// <summary>
/// 更新 PTD ZDNDetail RecordNumber ByisRecord 已扣帳狀態
/// </summary>
/// <param name="dnNo">RecordNumber</param>
/// <param name="dnlineNo">LineNo</param>
/// <param name="isRecord">已扣障 0:未完成 1:已完成</param>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/PTD/PutZDNDetail")]
ITask<int> PutZDNDetailByIsRecord(string dnNo, string dnlineNo, int isRecord);
#endregion #endregion
#region "PTD005 設定 ERP 客戶代號和客戶收件人名單" #region "PTD005 設定 ERP 客戶代號和客戶收件人名單"
@ -211,6 +243,12 @@ namespace AMESCoreStudio.Web
ITask<ResultModel<dynamic>> GetData4PTD008(string recordNumber, string lineNo, string materialNo, string shippingSN); ITask<ResultModel<dynamic>> GetData4PTD008(string recordNumber, string lineNo, string materialNo, string shippingSN);
[WebApiClient.Attributes.HttpPost("api/WipInfos/PostPTD008Commit")] [WebApiClient.Attributes.HttpPost("api/WipInfos/PostPTD008Commit")]
ITask<ResultModel<dynamic>> PostPTD008Commit([FromBody, RawJsonContent] string model); ITask<ResultModel<dynamic>> PostPTD008Commit([FromBody, RawJsonContent] string model);
[WebApiClient.Attributes.HttpPut("api/PTD/PTD008")]
ITask<bool> Put_PTD008(string serialNumber, string recordNumber, string lineNo, string productID);
[WebApiClient.Attributes.HttpDelete("api/PTD/PTD008")]
ITask<bool> Del_PTD008(string serialNumber, string recordNumber, string lineNo, string productID);
#endregion #endregion
} }

57
AMESCoreStudio.Web/Views/PTD/PTD002.cshtml

@ -216,6 +216,7 @@
var recordNumber = document.getElementById('recordNumber').value; var recordNumber = document.getElementById('recordNumber').value;
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 filteredInfo = recordTypeInfo.find(function (info) { var filteredInfo = recordTypeInfo.find(function (info) {
return info.id === recordType; return info.id === recordType;
}); });
@ -233,8 +234,32 @@
$("#recordNumber").val(''); $("#recordNumber").val('');
return; return;
} }
var lineNo = document.getElementById('lineNo');
lineNo.focus(); if (lineNo.length === 0) {
document.getElementById('lineNo').focus();
}
else {
$.ajax({
url: '@Url.Action("CheckRecordNoIsRecord", "PTD")',
type: 'POST',
data: { dnNo: recordNumber, dnlineNo: lineNo },
success: function (result) {
// 处理成功的情况
if (!result.success) {
hg.msg(`RecordNumber【${recordNumber}】 LineNo【${lineNo}】 已備貨完`);
$("#recordNumber").val('');
$("#lineNo").val('');
$("#Customer").val('');
$('#PartNumber').val('');
$("#PartDesc").val('');
}
},
error: function (error) {
hg.msg('錯誤:' + error);
console.log(error);
}
});
}
} }
}); });
@ -269,9 +294,30 @@
console.log(error); console.log(error);
} }
}); });
}
$.ajax({
url: '@Url.Action("CheckRecordNoIsRecord", "PTD")',
type: 'POST',
data: { dnNo: recordNumber, dnlineNo: lineNo },
success: function (result) {
// 处理成功的情况
if (!result.success) {
hg.msg(`RecordNumber【${recordNumber}】 LineNo【${lineNo}】 已備貨完`);
$("#recordNumber").val('');
$("#lineNo").val('');
$("#Customer").val('');
$('#PartNumber').val('');
$("#PartDesc").val('');
}
},
error: function (error) {
hg.msg('錯誤:' + error);
console.log(error);
}
});
}
}); });
$('#PartNumber').on('keypress', function (event) { $('#PartNumber').on('keypress', function (event) {
if (event.keyCode == 13) { if (event.keyCode == 13) {
getItemDesc(document.getElementById('PartNumber').value); getItemDesc(document.getElementById('PartNumber').value);
@ -366,6 +412,11 @@
} }
// 用来统计重复的SN // 用来统计重复的SN
var duplicateSNs = []; var duplicateSNs = [];
// 清空表格
layui.table.reload('query', {
data: [],
});
res.data.forEach(function (item) { res.data.forEach(function (item) {
if (isSNAlreadyExist('query', item.sn)) { if (isSNAlreadyExist('query', item.sn)) {
// 将重复的SN加入到duplicateSNs数组中 // 将重复的SN加入到duplicateSNs数组中

67
AMESCoreStudio.Web/Views/PTD/PTD003.cshtml

@ -41,7 +41,7 @@
<label class="layui-form-label">Record Type:</label> <label class="layui-form-label">Record Type:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
<select id="recordType" lay-event="RecordType" lay-filter="RecordType" name="recordType" lay-submit asp-items="@ViewBag.RecordType" lay-search> <select id="recordType" lay-event="RecordType" lay-filter="RecordType" name="recordType" lay-submit asp-items="@ViewBag.RecordType" lay-search>
</select> </select>
</div> </div>
<div class="layui-input-inline" style="width:100px"> <div class="layui-input-inline" style="width:100px">
<input id="WorkCenter" name="WorkCenter" autocomplete="off" class="layui-input green-background" value="@ViewBag.WorkCenter"> <input id="WorkCenter" name="WorkCenter" autocomplete="off" class="layui-input green-background" value="@ViewBag.WorkCenter">
@ -58,15 +58,15 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">交易單據:</label> <label class="layui-form-label">交易單據:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
<input id="recordNumber" name="RecordNumber" autocomplete="off" class="layui-input" value="@ViewBag.RecordNumber"> <input id="recordNumber" name="recordNumber" autocomplete="off" class="layui-input" value="@ViewBag.RecordNumber">
</div> </div>
<label class="layui-form-label">Line NO:</label> <label class="layui-form-label">Line NO:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
<input id="lineNo" name="LineNo" autocomplete="off" class="layui-input" value="@ViewBag.LineNo"> <input id="lineNo" name="lineNo" autocomplete="off" class="layui-input" value="@ViewBag.LineNo">
</div> </div>
<label class="layui-form-label">Customer:</label> <label class="layui-form-label">Customer:</label>
<div class="layui-input-inline" style="width:120px"> <div class="layui-input-inline" style="width:120px">
<input id="customer" name="Customer" autocomplete="off" class="layui-input" value="@ViewBag.Customer"> <input id="customer" name="customer" autocomplete="off" class="layui-input" value="@ViewBag.Customer">
</div> </div>
</div> </div>
</div> </div>
@ -74,11 +74,19 @@
</div> </div>
<div class="layui-row"> <div class="layui-row">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-col-sm3"> <div class="layui-col-sm9">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">Material No:</label> <label class="layui-form-label">Material No:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
<input id="materialNo" name="MaterialNo" autocomplete="off" class="layui-input" value="@ViewBag.MaterialNo"> <input id="materialNo" name="materialNo" autocomplete="off" class="layui-input" value="@ViewBag.MaterialNo">
</div>
<label class="layui-form-label">SO Number:</label>
<div class="layui-input-inline" style="width:150px">
<input id="soNumber" name="soNumber" autocomplete="off" class="layui-input" value="@ViewBag.soNumber">
</div>
<label class="layui-form-label">SO LineNo:</label>
<div class="layui-input-inline" style="width:150px">
<input id="soLineNo" name="soLineNo" autocomplete="off" class="layui-input" value="@ViewBag.soLineNo">
</div> </div>
</div> </div>
</div> </div>
@ -90,7 +98,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">Shipping SN:</label> <label class="layui-form-label">Shipping SN:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
<input id="shippingSN" name="ShippingSN" autocomplete="off" class="layui-input" value="@ViewBag.ShippingSN"> <input id="shippingSN" name="shippingSN" autocomplete="off" class="layui-input" value="@ViewBag.ShippingSN">
</div> </div>
</div> </div>
</div> </div>
@ -118,9 +126,12 @@
</div> </div>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right:0px;">
<label id="rowCount" class="layui-inline layui-form-label" style="width:130px; color:red;">@ViewBag.rowCount</label>
</div>
<table class="layui-hide" id="query" lay-filter="query"></table> <table class="layui-hide" id="query" lay-filter="query"></table>
</div> </div>
</div> </div>
@section Scripts{ @section Scripts{
@ -214,36 +225,50 @@
}; };
$('#recordNumber').on('keypress', function (event) { $('#recordNumber').on('keypress', function (event) {
if (event.keyCode == 13) { if (event.keyCode == 13) {
getCustomer($('#recordNumber').val()); getCustomer($('#recordNumber').val());
} }
}); });
//监听表单提交事件 //监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) { hg.form.onsubmit('querysubmit', function (data) {
hg.msghide("重新載入資料.."); hg.msghide("重新載入資料..");
data.autoLoad = 1; data.autoLoad = 1;
table && table.reload(data); //table && table.reload(data);
console.log(data);
layui.table.reload('query', {
where: {
recordType: data.recordType,
recordNumber: data.recordNumber,
lineNo: data.lineNo,
materialNo: data.materialNo,
shippingSN: data.shippingSN,
dateStart: data.dateStart,
dateEnd: data.dateEnd,
autoLoad: data.autoLoad,
RBU: data.RBU,
soNumber: data.soNumber,
soLineNo: data.soLineNo,
customer: data.customer
},
done: function (res, curr, count) {
$('#rowCount').text('總筆數: ' + count);
}
});
}); });
var tableCols = [[ var tableCols = [[
{ {
field: 'recordTypeID', field: 'recordTypeID',
title: 'RecordType', title: 'RecordType',
sort: true
}, },
{ {
field: 'recordNumber', field: 'recordNumber',
title: 'RecordNumber', title: 'RecordNumber',
sort: true
}, },
{ {
field: 'lineNo', field: 'lineNo',
width: 120,
title: 'LineNo', title: 'LineNo',
sort: true
}, },
{ {
field: 'sn', field: 'sn',
@ -259,14 +284,18 @@
{ {
field: 'customer', field: 'customer',
title: 'Customer', title: 'Customer',
width: 160, },
sort: true {
field: 'soNumber',
title: 'SO Number',
},
{
field: 'soLineNo',
title: 'SO Line',
}, },
{ {
field: 'location', field: 'location',
title: 'Location', title: 'Location',
width: 100,
sort: true
}, },
{ {
field: 'creatorID', field: 'creatorID',

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

@ -204,9 +204,11 @@
var recordNumber = document.getElementById('recordNumber').value; var recordNumber = document.getElementById('recordNumber').value;
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 filteredInfo = recordTypeInfo.find(function (info) { var filteredInfo = recordTypeInfo.find(function (info) {
return info.id === recordType; return info.id === recordType;
}); });
//check recordNumber //check recordNumber
if (recordNumber.length !== filteredInfo.length) { if (recordNumber.length !== filteredInfo.length) {
layer.msg('請確認recordNumber碼長!', { icon: 2 }); layer.msg('請確認recordNumber碼長!', { icon: 2 });
@ -221,25 +223,51 @@
return; return;
} }
table.reload('query', { if (lineNo.length === 0) {
where: { document.getElementById('lineNo').focus();
recordNumber: recordNumber }
}, else {
page: { table.reload('query', {
curr: 1 where: {
recordNumber: recordNumber,
LineNO: lineNo
},
page: {
curr: 1
},
done: function (res, curr, count) {
// 表格更新成功後計算資料筆數
calculateRowCount(res.data);
}
});
$.ajax({
url: '@Url.Action("CheckRecordNoIsRecord", "PTD")',
type: 'POST',
data: { dnNo: recordNumber, dnlineNo: lineNo },
success: function (result) {
// 处理成功的情况
if (!result.success) {
hg.msg(`RecordNumber【${recordNumber}】 LineNo【${lineNo}】 已備貨完`);
$("#recordNumber").val('');
$("#lineNo").val('');
$("#Customer").val('');
$('#PartNumber').val('');
$("#PartDesc").val('');
}
}, },
done: function (res, curr, count) { error: function (error) {
// 表格更新成功後計算資料筆數 hg.msg('錯誤:' + error);
calculateRowCount(res.data); console.log(error);
var lineNo = document.getElementById('lineNo');
lineNo.focus();
} }
}); });
}
//calculateRowCount(table.cache['query']); //calculateRowCount(table.cache['query']);
//var lineNo = document.getElementById('lineNo'); //var lineNo = document.getElementById('lineNo');
//lineNo.focus(); //lineNo.focus();
} }
}); });
$('#lineNo').on('keypress', function (event) { $('#lineNo').on('keypress', function (event) {
if (event.keyCode == 13) { if (event.keyCode == 13) {
var table = layui.table; var table = layui.table;
@ -285,8 +313,30 @@
console.log(error); console.log(error);
} }
}); });
$.ajax({
url: '@Url.Action("CheckRecordNoIsRecord", "PTD")',
type: 'POST',
data: { dnNo: recordNumber, dnlineNo: lineNo },
success: function (result) {
// 处理成功的情况
if (!result.success) {
hg.msg(`RecordNumber【${recordNumber}】 LineNo【${lineNo}】 已備貨完`);
$("#recordNumber").val('');
$("#lineNo").val('');
$("#Customer").val('');
$('#PartNumber').val('');
$("#PartDesc").val('');
}
},
error: function (error) {
hg.msg('錯誤:' + error);
console.log(error);
}
});
} }
}); });
$('#snQuery').on('keypress', function (event) { $('#snQuery').on('keypress', function (event) {
if (event.keyCode == 13) { if (event.keyCode == 13) {
var table = layui.table; var table = layui.table;
@ -421,7 +471,6 @@
done: function(res, curr, count) { done: function(res, curr, count) {
// 表格更新成功後計算資料筆數 // 表格更新成功後計算資料筆數
calculateRowCount(res.data); calculateRowCount(res.data);
} }
}); });
} }

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

@ -56,7 +56,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">料號:</label> <label class="layui-form-label">料號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:150px">
<input id="materialNo" name="MaterialNo" autocomplete="off" lay-verify="required" lay-reqtext="請輸入料號" class="layui-input" value="@ViewBag.MaterialNo"> <input id="materialNo" name="MaterialNo" autocomplete="off" oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" lay-verify="required" lay-reqtext="請輸入料號" class="layui-input" value="@ViewBag.MaterialNo">
</div> </div>
</div> </div>
</div> </div>
@ -69,7 +69,7 @@
</div> </div>
</div> </div>
<div class="layui-inline layui-show-xs-block"> <div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit"> <button id="submitBtn" class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i> <i class="layui-icon layui-icon-sm">&#xe615;</i>
</button> </button>
</div> </div>
@ -97,89 +97,103 @@
<script type="text/javascript"> <script type="text/javascript">
layui.use(['form', 'layer', 'table'], function () { layui.use(['form', 'layer', 'table'], function () {
var table = layui.table; var table = layui.table;
$('#commit').on('click', function () {
var tableData = table.cache['query']; // 還原
$('#commit').on('click', function () {
for (let i = 0; i < tableData.length; i++) { var recordNumber = document.getElementById('recordNumber').value;
(function (index) { // 使用閉包或函數參數傳遞 index var lineNo = document.getElementById('lineNo').value;
var postData = { var materialNo = document.getElementById('materialNo').value;
type: 0, var shippingSN = document.getElementById('shippingSN').value;
tableData: [tableData[index]] if (recordNumber.length === 0 || lineNo.length === 0 || materialNo.length === 0) {
}; layer.msg('請輸入基本資料並查詢');
return;
$.ajax({
url: '@Url.Action("PTD008_Commit", "PTD")',
dataType: 'json',
data: { data: JSON.stringify(postData) },
type: 'POST',
success: function (result) {
if (result.data.success) {
console.log(tableData[index]);
// 更新當前元素的 'result' 屬性
tableData[index].result = 'OK';
console.log(tableData[index]);
// 使用更新後的數據重新加載表格
layui.table.reload('query', {
data: tableData,
page: false,
limit: 2000
});
} else {
layer.msg('還原失敗,原因:' + result.data.msg, { icon: 2 });
}
},
error: function (error) {
layer.msg('還原失敗!原因:' + error.msg, { icon: 2 });
}
});
})(i); // 將 i 值傳遞進來
} }
});
$('#del').on('click', function () { var tableData = layui.table.cache['query'];
var tableData = table.cache['query']; if (tableData.length === 0) {
layer.msg('請確認是否有按查詢資料');
return;
}
for (var i = 0; i < tableData.length; i++) { // 组织数据为一个对象
var postData = { var postData = {
type: 1, recordNumber: recordNumber,
tableData: [tableData[i]] lineNo: lineNo,
}; materialNo: materialNo,
shippingSN: shippingSN
};
$.ajax({ $.ajax({
url: '@Url.Action("PTD008_Commit", "PTD")', url: '@Url.Action("PTD008_Commit", "PTD")',
dataType: 'json', dataType: 'json',
data: { data: JSON.stringify(postData) }, data: postData,
type: 'POST', type: 'POST',
success: function (result) { success: function (result) {
if (result.data.success) { if (result.success) {
// 更新該筆資料的result欄位值 layer.msg(result.msg, { icon: 1 });
tableData[i].result = 'OK'; // 手动触发按钮的点击事件
$('#submitBtn').click();
// 重新加载表格数据 }
layui.table.reload('query', { else {
data: tableData, layer.msg(result.msg, { icon: 2 });
page: false,
limit: 2000
});
} else {
layer.msg('還原失敗,原因:' + result.data.msg, { icon: 2 });
} }
}, },
error: function (error) { error: function (error) {
layer.msg('還原失敗!原因:' + error.msg, { icon: 2 }); layer.msg('還原失敗!原因:' + error.msg, { icon: 2 });
} }
}); });
});
// 刪除
$('#del').on('click', function () {
var recordNumber = document.getElementById('recordNumber').value;
var lineNo = document.getElementById('lineNo').value;
var materialNo = document.getElementById('materialNo').value;
var shippingSN = document.getElementById('shippingSN').value;
if (recordNumber.length === 0 || lineNo.length === 0 || materialNo.length === 0) {
layer.msg('請輸入基本資料並查詢');
return;
}
var tableData = layui.table.cache['query'];
if (tableData.length === 0) {
layer.msg('請確認是否有按查詢資料');
return;
} }
// 组织数据为一个对象
var postData = {
recordNumber: recordNumber,
lineNo: lineNo,
materialNo: materialNo,
shippingSN: shippingSN
};
$.ajax({
url: '@Url.Action("PTD008_Del", "PTD")',
dataType: 'json',
data: postData,
type: 'POST',
success: function (result) {
if (result.success) {
layer.msg(result.msg, { icon: 1 });
// 手动触发按钮的点击事件
$('#submitBtn').click();
}
else {
layer.msg(result.msg, { icon: 2 });
}
},
error: function (error) {
layer.msg('刪除失敗!原因:' + error.msg, { icon: 2 });
}
});
}); });
}); });
//监听表单提交事件 //监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) { hg.form.onsubmit('querysubmit', function (data) {
hg.msghide("載入資料.."); hg.msghide("載入資料..");
//table && table.reload(data);
//setTimeout(getTableRowCount(), 500); // 延遲 100 毫秒執行
layui.table.reload('query', { layui.table.reload('query', {
where: { where: {
recordNumber: data.RecordNumber, recordNumber: data.RecordNumber,
@ -187,9 +201,6 @@
materialNo: data.MaterialNo, materialNo: data.MaterialNo,
shippingSN: data.ShippingSN shippingSN: data.ShippingSN
}, },
page: {
curr: 1
},
done: function (res, curr, count) { done: function (res, curr, count) {
// 表格更新成功後計算資料筆數 // 表格更新成功後計算資料筆數
getTableRowCount(); getTableRowCount();

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

@ -3667,7 +3667,8 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
[Route("[action]")] [Route("[action]")]
[HttpGet] [HttpGet]
public async Task<ResultModel<dynamic>> GetData4PTD003(string recordType, string recordNumber, string lineNo, string materialNo, string shippingSN, string dateStart, string dateEnd, string RBU) public async Task<ResultModel<dynamic>> GetData4PTD003(string recordType, string recordNumber, string lineNo, string materialNo, string shippingSN,
string dateStart, string dateEnd, string RBU ,string soNumber, string soLineNo ,string customer)
{ {
ResultModel<dynamic> result = new ResultModel<dynamic>(); ResultModel<dynamic> result = new ResultModel<dynamic>();
//安勤連線 //安勤連線
@ -3682,7 +3683,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
{ {
string strSQL = $@"SELECT a.RecordTypeID ,a.RecordNumber ,a.RCLineNO 'LineNo', string strSQL = $@"SELECT a.RecordTypeID ,a.RecordNumber ,a.RCLineNO 'LineNo',
a.SerialNumber 'SN',a.ProductID ,a.EmplID 'Customer',a.LocationID 'Location', a.SerialNumber 'SN',a.ProductID ,a.EmplID 'Customer',a.LocationID 'Location',
a.CreatorID , a.RecordDate a.CreatorID , a.RecordDate , a.SalesOrderNumber AS soNumber , a.SOLineNO AS soLineNo
FROM SFIS_PTD.dbo.ZProductTrans a where 1=1 "; FROM SFIS_PTD.dbo.ZProductTrans a where 1=1 ";
if (recordType != null && recordType != "" && recordType != "全部") if (recordType != null && recordType != "" && recordType != "全部")
{ {
@ -3720,8 +3721,23 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
strSQL += $" And a.RecordDate Between '{dateStart.Replace("/", "-") + " 00:00:00"}' And '{dateEnd.Replace("/", "-") + " 23:59:59"}'"; strSQL += $" And a.RecordDate Between '{dateStart.Replace("/", "-") + " 00:00:00"}' And '{dateEnd.Replace("/", "-") + " 23:59:59"}'";
} }
if (!string.IsNullOrWhiteSpace(soNumber))
{
strSQL += $" And a.SalesOrderNumber like '{soNumber}%'";
}
if (!string.IsNullOrWhiteSpace(soLineNo))
{
strSQL += $" And a.SOLineNO like '{soLineNo}%'";
}
if (!string.IsNullOrWhiteSpace(customer))
{
strSQL += $" And a.EmplID like '{customer}%'";
}
//排序:ZProductTrans.CreateDate DESC //排序:ZProductTrans.CreateDate DESC
strSQL += " Order by a.RecordDate DESC"; strSQL += " ORDER BY a.HistoryID ,a.RecordNumber ,a.RCLineNO";
DataTable dtZProductTrans = new DataTable(); DataTable dtZProductTrans = new DataTable();
using (var cmd = connPTD.CreateCommand()) using (var cmd = connPTD.CreateCommand())
@ -4712,6 +4728,7 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
result.Msg = "OK"; result.Msg = "OK";
return result; return result;
} }
[Route("[action]")] [Route("[action]")]
[HttpPost] [HttpPost]
public async Task<ResultModel<dynamic>> PostPTD007Commit(PTD007CommitDataModel Data) public async Task<ResultModel<dynamic>> PostPTD007Commit(PTD007CommitDataModel Data)

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

@ -1,23 +1,13 @@
using AMESCoreStudio.CommonTools.Result; using Dapper;
using AMESCoreStudio.WebApi.Models.BAS;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System;
using System.Net.Mail;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using System.Net; using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
using Dapper;
using AMESCoreStudio.WebApi.Extensions;
using AMESCoreStudio.WebApi.Models.AMES;
using System.Data;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient; using System.Data.SqlClient;
using Microsoft.Extensions.Options; using System.Linq;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; using System.Threading.Tasks;
namespace AMESCoreStudio.WebApi.Controllers.PTD namespace AMESCoreStudio.WebApi.Controllers.PTD
{ {
@ -121,9 +111,38 @@ namespace AMESCoreStudio.WebApi.Controllers.PTD
} }
} }
/// <summary>
/// 更新 PTD ZDNDetail RecordNumber ByisRecord 已扣帳狀態
/// </summary>
/// <param name="dnNo">RecordNumber</param>
/// <param name="dnlineNo">LineNo</param>
/// <param name="isRecord">已扣障 0:未完成 1:已完成</param>
/// <returns></returns>
[HttpPut("PutZDNDetail")]
public async Task<ActionResult<int>> PutZDNDetailByIsRecord(string dnNo, string dnlineNo, int isRecord)
{
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{
if (ptdConnection.State != ConnectionState.Open)
{
ptdConnection.Open();
}
var query = @" UPDATE SFIS_PTD.dbo.ZDNDetail
SET IsRecord = @isRecord
WHERE DNNO = @dnNo
AND DNLineNO = @dnlineNo ";
DynamicParameters p = new DynamicParameters();
p.Add("dnNo", dnNo);
p.Add("dnlineNo", dnlineNo);
p.Add("isRecord", isRecord);
var result = await ptdConnection.ExecuteAsync(query, p);
return result;
}
}
#endregion #endregion
#region ZSNInfo 主表 #region ZSNInfo 主表 表頭
/// <summary> /// <summary>
/// 查詢 PTD ZSNInfo 主表 序號區間 /// 查詢 PTD ZSNInfo 主表 序號區間
@ -132,7 +151,7 @@ namespace AMESCoreStudio.WebApi.Controllers.PTD
/// <param name="endNumber">條碼區間訖</param> /// <param name="endNumber">條碼區間訖</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("ZSNInfoByIntervalNumber")] [HttpGet("ZSNInfoByIntervalNumber")]
public async Task<List<dynamic>> GetZSNInfoByIntervalNumber(string strNumber , string endNumber) public async Task<List<dynamic>> GetZSNInfoByIntervalNumber(string strNumber, string endNumber)
{ {
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext)) using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{ {
@ -176,6 +195,66 @@ namespace AMESCoreStudio.WebApi.Controllers.PTD
#endregion #endregion
#region ZProductTrans 表身資料
/// <summary>
/// 查詢 ZProductTrans
/// </summary>
/// <param name="serialNumber">序號</param>
/// <param name="recordNumber">RecordNumber</param>
/// <param name="lineNo">LineNo</param>
/// <param name="productID">料號</param>
/// <param name="recordTypeID">類型</param>
/// <returns></returns>
[HttpGet("GetZProductTrans")]
public async Task<List<dynamic>> GetZProductTrans(string serialNumber, string recordNumber, string lineNo, string productID, string recordTypeID)
{
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{
if (ptdConnection.State != ConnectionState.Open)
{
ptdConnection.Open();
}
var query = @$" SELECT * FROM SFIS_PTD.dbo.ZProductTrans WHERE 1=1 ";
DynamicParameters p = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(serialNumber))
{
query += $" And SerialNumber =@serialNumber ";
p.Add("serialNumber", serialNumber);
}
if (!string.IsNullOrWhiteSpace(recordNumber))
{
query += $" And RecordNumber =@recordNumber ";
p.Add("recordNumber", recordNumber);
}
if (!string.IsNullOrWhiteSpace(lineNo))
{
query += $" And RCLineNO =@lineNo ";
p.Add("lineNo", lineNo);
}
if (!string.IsNullOrWhiteSpace(productID))
{
query += $" And ProductID =@productID ";
p.Add("productID", productID);
}
if (!string.IsNullOrWhiteSpace(recordTypeID))
{
query += $" And RecordTypeID =@recordTypeID ";
p.Add("recordTypeID", recordTypeID);
}
var q = await ptdConnection.QueryAsync<dynamic>(query, p);
return q.ToList();
}
}
#endregion
#region ZWHPickListDetail 備貨表 #region ZWHPickListDetail 備貨表
/// <summary> /// <summary>
@ -256,6 +335,159 @@ namespace AMESCoreStudio.WebApi.Controllers.PTD
#endregion #endregion
/// <summary>
/// PTD008 還原作業 => 還原
/// </summary>
/// <param name="serialNumber">序號</param>
/// <param name="recordNumber">RecordNumber</param>
/// <param name="lineNo">LineNo</param>
/// <param name="productID">料號</param>
/// <returns></returns>
[HttpPut("PTD008")]
public async Task<bool> Put_PTD008(string serialNumber, string recordNumber, string lineNo, string productID)
{
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{
if (ptdConnection.State != ConnectionState.Open)
{
ptdConnection.Open();
}
using (var tran = ptdConnection.BeginTransaction())
{
try
{
// 刪除 ZProductTrans
var query = @" DELETE SFIS_PTD.dbo.ZProductTrans
WHERE SerialNumber = @serialNumber
AND RecordNumber = @recordNumber
AND RCLineNO = @lineNo
AND ProductID = @productID ";
DynamicParameters p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
p.Add("recordNumber", recordNumber);
p.Add("lineNo", lineNo);
p.Add("productID", productID);
await ptdConnection.ExecuteAsync(query, p, tran);
// 更新 ZSNInfo
query = @" UPDATE SFIS_PTD.dbo.ZSNInfo SET
RecordTypeID =
(SELECT TOP (1) [RecordTypeID]
FROM SFIS_PTD.dbo.ZProductTrans
WHERE SerialNumber =@serialNumber
ORDER BY CREATEDATE DESC)
WHERE SerialNumber =@serialNumber ";
p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
await ptdConnection.ExecuteAsync(query, p, tran);
// 刪除 ZWHPickListDetail
query = @" DELETE SFIS_PTD.dbo.ZWHPickListDetail
WHERE InputSN = @serialNumber
AND RecordNumber = @recordNumber
AND RCLineNO = @lineNo
AND ProductID = @productID ";
p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
p.Add("recordNumber", recordNumber);
p.Add("lineNo", lineNo);
p.Add("productID", productID);
await ptdConnection.ExecuteAsync(query, p, tran);
// 更新 ZHistoryKeyDefine
query = @" UPDATE SFIS_PTD.dbo.ZHistoryKeyDefine SET Seed = Seed - 1
WHERE SerialNumber = @serialNumber ";
p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
await ptdConnection.ExecuteAsync(query, p, tran);
tran.Commit();
return true;
}
catch (Exception ex)
{
tran.Rollback();
return false;
}
}
}
}
/// <summary>
/// PTD008 還原作業 => 刪除
/// </summary>
/// <param name="serialNumber">序號</param>
/// <param name="recordNumber">RecordNumber</param>
/// <param name="lineNo">LineNo</param>
/// <param name="productID">料號</param>
/// <returns></returns>
[HttpDelete("PTD008")]
public async Task<bool> Del_PTD008(string serialNumber, string recordNumber, string lineNo, string productID)
{
using (IDbConnection ptdConnection = new SqlConnection(_PTDContext))
{
if (ptdConnection.State != ConnectionState.Open)
{
ptdConnection.Open();
}
using (var tran = ptdConnection.BeginTransaction())
{
try
{
// 刪除 ZProductTrans
var query = @" DELETE SFIS_PTD.dbo.ZProductTrans
WHERE SerialNumber = @serialNumber
AND RecordNumber = @recordNumber
AND RCLineNO = @lineNo
AND ProductID = @productID ";
DynamicParameters p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
p.Add("recordNumber", recordNumber);
p.Add("lineNo", lineNo);
p.Add("productID", productID);
await ptdConnection.ExecuteAsync(query, p , tran);
// 刪除 ZSNInfo
query = @" DELETE SFIS_PTD.dbo.ZSNInfo
WHERE SerialNumber = @serialNumber ";
p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
await ptdConnection.ExecuteAsync(query, p, tran);
// 刪除 ZWHPickListDetail
query = @" DELETE SFIS_PTD.dbo.ZWHPickListDetail
WHERE InputSN = @serialNumber
AND RecordNumber = @recordNumber
AND RCLineNO = @lineNo
AND ProductID = @productID ";
p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
p.Add("recordNumber", recordNumber);
p.Add("lineNo", lineNo);
p.Add("productID", productID);
await ptdConnection.ExecuteAsync(query, p, tran);
// 刪除 ZHistoryKeyDefine
query = @" DELETE SFIS_PTD.dbo.ZHistoryKeyDefine
WHERE SerialNumber = @serialNumber ";
p = new DynamicParameters();
p.Add("serialNumber", serialNumber);
await ptdConnection.ExecuteAsync(query, p, tran);
tran.Commit();
return true;
}
catch(Exception ex)
{
tran.Rollback();
return false;
}
}
}
}
} }
} }

Loading…
Cancel
Save