using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.CommonTools.Result; using AMESCoreStudio.WebApi.DTO.AMES; using AMESCoreStudio.WebApi.Extensions; using Dapper; using System.Data; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// <summary> /// 條碼變更資料表 /// </summary> [Route("api/[controller]")] [ApiController] public class BarcodeInfoesController : ControllerBase { private readonly AMESContext _context; /// <summary> /// /// </summary> /// <param name="context"></param> public BarcodeInfoesController(AMESContext context) { _context = context; } /// <summary> /// 获取全部條碼资料 /// </summary> /// <returns></returns> // GET: api/BarcodeInfoes [HttpGet] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoes() { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.OrderBy(p => p.BarcodeID); var BarcodeInfoes = await q.ToListAsync(); return BarcodeInfoes; //return await _context.BarcodeInfoes.ToListAsync(); } /// <summary> /// 用ID获取该條碼资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/BarcodeInfoes/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoes(int id) { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.Where(p => p.BarcodeID.Equals(id)); var barcodeInfo = await q.ToListAsync(); if (barcodeInfo == null) { return NotFound(); } return barcodeInfo; } /// <summary> /// 用No获取该條碼资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/BarcodeInfoes/5 [HttpGet("No/{id}")] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoesByNo(string id) { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.Where(p => p.BarcodeNo.Trim().ToUpper() == id.Trim().ToUpper()); var barcodeInfo = await q.ToListAsync(); if (barcodeInfo == null) { return NotFound(); } return barcodeInfo; } /// <summary> /// 查詢工單站別在製條碼數量 /// </summary> /// <returns></returns> [Route("[action]")] [HttpGet] public async Task<ResultModel<dynamic>> GetWipQty4QRS009(int wipID, int stationID, int page = 0, int limit = 10) { ResultModel<dynamic> result = new ResultModel<dynamic>(); var q = from q1 in _context.BarcodeInfoes join q2 in _context.WipInfos on q1.WipID equals q2.WipID join q3 in _context.LineInfoes on q2.LineID equals q3.LineID select new { q1.BarcodeID, q1.WipID, q1.StationID, q1.BarcodeNo, q3.LineDesc, q1.RuleStatus, q1.SysType, q1.CreateDate, q1.UpdateDate }; q = q.Where(w => w.WipID == wipID && w.StationID == stationID); q = q.OrderBy(w => w.BarcodeNo); //紀錄筆數 result.DataTotal = q.Count(); //Table 頁數 if (page > 0) { q = q.Skip((page - 1) * limit).Take(limit); } result.Data = await q.ToListAsync(); if (result == null) { result.Msg = "查無資料"; result.Success = false; return result; } result.Success = true; result.Msg = "OK"; return result; } /// <summary> /// 查詢工單站別在製條碼資料 /// </summary> /// <returns></returns> [Route("[action]")] [HttpGet] public async Task<ResultModel<dynamic>> GetWipBarcode4QRS009(int wipID, int stationID, int page = 0, int limit = 10) { ResultModel<dynamic> result = new ResultModel<dynamic>(); var q = from q1 in _context.BarcodeInfoes join q2 in _context.WipInfos on q1.WipID equals q2.WipID join q3 in _context.LineInfoes on q2.LineID equals q3.LineID join q5 in _context.BarcodeStation on new { q1.BarcodeID, q1.WipID, q1.StationID, q1.RuleStatus } equals new { q5.BarcodeID, q5.WipID, q5.StationID, q5.RuleStatus } join q4 in _context.UserInfoes on q5.CreateUserID equals q4.UserID select new { q1.BarcodeID, q1.WipID, q1.StationID, q1.BarcodeNo, q3.LineDesc, q1.RuleStatus, q1.SysType, q1.CreateDate, q1.UpdateDate, q4.UserName }; q = q.Where(w => w.WipID == wipID && w.StationID == stationID); q = q.OrderBy(w => w.BarcodeNo); //紀錄筆數 result.DataTotal = q.Count(); //Table 頁數 if (page > 0) { q = q.Skip((page - 1) * limit).Take(limit); } result.Data = await q.ToListAsync(); if (result == null) { result.Msg = "查無資料"; result.Success = false; return result; } result.Success = true; result.Msg = "OK"; return result; } /// <summary> /// 查詢未結轉條碼資料 /// </summary> /// <returns></returns> [Route("[action]")] [HttpGet] public async Task<ResultModel<dynamic>> GetBarcode4DataCarrier(int page = 1, int limit = 200) { ResultModel<dynamic> result = new ResultModel<dynamic>(); var q = from q1 in _context.BarcodeInfoes orderby q1.UpdateDate join q2 in _context.WipInfos on q1.WipID equals q2.WipID join q3 in _context.WipAtts on q2.WipNO equals q3.WipNO select new { q1.BarcodeID, q1.BarcodeNo, q1.ExtraBarcodeNo, q1.BoxNo, q1.LocationID, q1.StatusID, q1.WipID, q2.WipNO, q2.RelatedWONO, q3.ItemNO, q3.ModelNO, q1.StationID, q1.RuleStatus, q1.SysType, q1.UpdateDate }; q = q.Where(w => w.ExtraBarcodeNo.Length > 0 && w.BoxNo.Length > 0 && w.LocationID == -1 && w.StatusID == -1 && w.RelatedWONO.Length > 0 && w.ItemNO.StartsWith("EV")); //紀錄筆數 result.DataTotal = q.Count(); //Table 頁數 if (page > 0) { q = q.OrderBy(p => p.UpdateDate).Skip((page - 1) * limit).Take(limit); } else { q = q.OrderBy(p => p.UpdateDate); } result.Data = await q.ToListAsync(); if (result == null) { result.Msg = "查無資料"; result.Success = false; return result; } result.Success = true; result.Msg = "OK"; return result; } /// <summary> /// 更新結轉標記,1成功,0安勤查無工單不更新 /// </summary> /// <param name="barcodeID"></param> /// <param name="locationID"></param> /// <returns></returns> [HttpPut("UpdateBarcode4DataCarrier/{barcodeID}/{locationID}")] public async Task<ResultModel<dynamic>> UpdateBarcode4DataCarrier(int barcodeID, int locationID) { Helper helper = new Helper(_context); ResultModel<dynamic> result = new ResultModel<dynamic>(); try { await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET LOCATION_ID={locationID},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={barcodeID}"); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 用工單號碼获取该條碼资料 /// </summary> /// <param name="id">工單號碼</param> /// <returns></returns> // GET: api/BarcodeInfoes/5 [HttpGet("ByWipNo/{id}")] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoesByWipNo(string id) { var barcodeInfo = new List<BarcodeInfo>(); WipInfosController wipInfosController = new WipInfosController(_context); var q1 = await wipInfosController.GetWipInfoByWipNo(id); if (q1.Value.Count() != 0) { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.Where(p => q1.Value.Select(s => s.WipID).Contains(p.WipID)); barcodeInfo = await q.ToListAsync(); } return barcodeInfo; } /// <summary> /// 用客戶序號找條碼资料 /// </summary> /// <param name="extraNo">客戶序號</param> /// <returns></returns> [HttpGet("ByExtraNo/{extraNo}")] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoesByExtraNo(string extraNo) { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.Where(p => p.ExtraBarcodeNo.Trim().ToUpper() == extraNo.Trim().ToUpper()); var barcodeInfo = await q.ToListAsync(); return barcodeInfo; } /// <summary> /// 用包裝箱號获取该條碼资料 /// </summary> /// <param name="boxNo">包裝箱號</param> /// <returns></returns> // GET: api/BarcodeInfoes/5 [HttpGet("ByBoxNo/{boxNo}")] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoesByBoxNo(string boxNo) { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.Where(p => p.BoxNo.Trim().ToUpper() == boxNo.Trim().ToUpper()); var barcodeInfo = await q.ToListAsync(); if (barcodeInfo == null) { return NotFound(); } return barcodeInfo; } /// <summary> /// 用工單ID找條碼资料 /// </summary> /// <param name="id">工單ID</param> /// <returns></returns> [HttpGet("ByWipID/{id}")] public async Task<ActionResult<IEnumerable<BarcodeInfo>>> GetBarcodeInfoesByWipID(int id) { IQueryable<BarcodeInfo> q = _context.BarcodeInfoes; q = q.Where(p => p.WipID == id); var barcodeInfo = await q.ToListAsync(); return barcodeInfo; } /// <summary> /// 用工單ID找條碼资料 /// </summary> /// <param name="id">工單ID</param> /// <returns></returns> [HttpGet("DapperByWipID/{id}")] public ActionResult<IEnumerable<BarcodeInfo>> GetBarcodeInfoesDapperByWipID(int id) { var query = @$" SELECT BARCODE_ID as BarcodeID , BARCODE_NO as BarcodeNo , STATUS_NO as StatusNo , EXTRA_BARCODE_NO as ExtraBarcodeNo , LOCATION_ID as LocationID , STATION_ID as StationID , RULE_STATUS as RuleStatus , WIP_ID as WipID , BOX_NO as BoxNo , SYSTYPE as SysType , STATUS_ID as StatusID , CREATE_USERID as CreateUserID , CREATE_DATE as CreateDate , UPDATE_DATE as UpdateDate FROM JHAMES.BARCODE_INFO WHERE WIP_ID = :id"; DynamicParameters p = new DynamicParameters(); p.Add("id", id, DbType.Int32); var q = _context.Database.DapperQuery<BarcodeInfo>(query, p); return q.ToList(); } /// <summary> /// 用序號List找條碼资料 /// </summary> /// <param name="id">序號List</param> /// <returns></returns> [HttpPost("DapperByListBarcodeNO")] public ActionResult<IEnumerable<BarcodeInfo>> GetBarcodeInfoesDapperByListNO([FromBody] List<string> id) { if (id.Count() > 0) { var query = @$" SELECT BARCODE_ID as BarcodeID , BARCODE_NO as BarcodeNo , STATUS_NO as StatusNo , EXTRA_BARCODE_NO as ExtraBarcodeNo , LOCATION_ID as LocationID , STATION_ID as StationID , RULE_STATUS as RuleStatus , WIP_ID as WipID , BOX_NO as BoxNo , SYSTYPE as SysType , STATUS_ID as StatusID , CREATE_USERID as CreateUserID , CREATE_DATE as CreateDate , UPDATE_DATE as UpdateDate FROM JHAMES.BARCODE_INFO WHERE ("; var queryConditions = new List<string>(); foreach (var item in id) { // 构建查询条件,并将它们添加到列表中 queryConditions.Add($"BARCODE_NO = '{item}'"); } // 使用逻辑运算符将查询条件组合成一个完整的查询 query += string.Join(" OR ", queryConditions); query += " )"; DynamicParameters p = new DynamicParameters(); var q = _context.Database.DapperQuery<BarcodeInfo>(query, p); return q.ToList(); } else { List<BarcodeInfo> q = new List<BarcodeInfo>(); return q.ToList(); } } /// <summary> /// 用序號ID List找條碼资料 /// </summary> /// <param name="id">序號List</param> /// <returns></returns> [HttpPost("DapperByListBarcodeID")] public ActionResult<IEnumerable<BarcodeInfo>> GetBarcodeInfoesDapperByListID([FromBody] List<string> id) { var query = @$" SELECT BARCODE_ID as BarcodeID , BARCODE_NO as BarcodeNo , STATUS_NO as StatusNo , EXTRA_BARCODE_NO as ExtraBarcodeNo , LOCATION_ID as LocationID , STATION_ID as StationID , RULE_STATUS as RuleStatus , WIP_ID as WipID , BOX_NO as BoxNo , SYSTYPE as SysType , STATUS_ID as StatusID , CREATE_USERID as CreateUserID , CREATE_DATE as CreateDate , UPDATE_DATE as UpdateDate FROM JHAMES.BARCODE_INFO WHERE ("; var queryConditions = new List<string>(); foreach (var item in id) { // 构建查询条件,并将它们添加到列表中 queryConditions.Add($"BARCODE_ID = '{item}'"); } // 使用逻辑运算符将查询条件组合成一个完整的查询 query += string.Join(" OR ", queryConditions); query += " )"; DynamicParameters p = new DynamicParameters(); var q = _context.Database.DapperQuery<BarcodeInfo>(query, p); return q.ToList(); } /// <summary> /// 條碼批次查詢 /// </summary> /// <param name="wipNo">工單號碼</param> /// <param name="itemNo">料號</param> /// <param name="unit">生產單位</param> /// <param name="lineID">線別</param> /// <param name="page">頁數</param> /// <param name="limit">筆數</param> /// <returns></returns> [HttpGet("BarcodeInfoByPCS022")] public async Task<ResultModel<BarcodeInfoDto>> GetBarcodeInfoByPCS022(string wipNo, string itemNo, string unit, int lineID, int page = 0, int limit = 10) { ResultModel<BarcodeInfoDto> result = new ResultModel<BarcodeInfoDto>(); try { var barcodeInfos = new List<BarcodeInfo>(); // 查詢工單號碼 if (!string.IsNullOrWhiteSpace(wipNo)) { var wipID = _context.WipInfos.Where(w => w.WipNO == wipNo.Trim().ToUpper() && w.StatusNO != "E").Select(s => s.WipID).ToList(); barcodeInfos = await _context.BarcodeInfoes.Where(w => wipID.Contains(w.WipID)).ToListAsync(); } // 查詢料號 else if (!string.IsNullOrWhiteSpace(itemNo)) { var wipAtt = _context.WipAtts.Where(w => w.ItemNO == itemNo.Trim().ToUpper()).Select(s => s.WipNO).ToList(); var wipID = await _context.WipInfos.Where(w => wipAtt.Contains(w.WipNO) && w.StatusNO != "E").Select(s => s.WipID).ToListAsync(); barcodeInfos = await _context.BarcodeInfoes.Where(w => wipID.Contains(w.WipID)).ToListAsync(); } var q = from q1 in barcodeInfos.Where(w => w.RuleStatus != "S" && w.RuleStatus != "F" && w.StationID != 1000) join q2 in _context.Stationses on q1.StationID equals q2.StationID join q3 in _context.WipInfos on q1.WipID equals q3.WipID join q4 in _context.LineInfoes on q3.LineID equals q4.LineID join q5 in _context.FactoryUnits on q3.UnitNO equals q5.UnitNo select new BarcodeInfoDto { WipID = q1.WipID, WipNo = q3.WipNO, WipQty = q3.PlanQTY, StationID = q1.StationID, StationName = q2.StationName, InputQty = 0, LineName = q4.LineDesc, LineID = q4.LineID, Unit = q5.UnitNo, UnitName = q5.UnitName, WipType = q3.WipType }; // 查詢生產單位 if (!string.IsNullOrWhiteSpace(unit)) { q = q.Where(w => w.Unit == unit).ToList(); } // 查詢生產單位 if (lineID != 0) { q = q.Where(w => w.LineID == lineID).ToList(); } // Group q = q.GroupBy(g => new { g.WipID, g.WipNo, g.WipQty, g.LineID, g.LineName, g.StationName, g.StationID, g.Unit, g.UnitName }) .Select(s => new BarcodeInfoDto { WipNo = s.Key.WipNo, WipQty = s.Key.WipQty, WipID = s.Key.WipID, StationName = s.Key.StationName, StationID = s.Key.StationID, LineID = s.Key.LineID, LineName = s.Key.LineName, Unit = s.Key.Unit, UnitName = s.Key.UnitName, InputQty = s.Count(), ItemNo = _context.WipAtts.Where(w => w.WipNO == s.Key.WipNo).FirstOrDefault().ItemNO }).ToList(); // 紀錄筆數 result.DataTotal = q.Count(); // Table 頁數 if (page > 0) { q = q.Skip((page - 1) * limit).Take(limit); } result.Data = q.ToList(); result.Success = true; return result; } catch (Exception ex) { result.Success = false; result.Msg = ex.Message; return result; } } /// <summary> /// 更新條碼资料 /// </summary> /// <param name="barcodeInfo"></param> /// <returns></returns> // PUT: api/BarcodeInfoes/5 // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. [HttpPut] public async Task<ResultModel<BarcodeInfo>> PutBarcodeInfoes([FromBody] BarcodeInfo barcodeInfo) { ResultModel<BarcodeInfo> result = new ResultModel<BarcodeInfo>(); _context.Entry(barcodeInfo).State = EntityState.Modified; //設置容器空間某一個模型的某一個欄位 不提交到資料庫 _context.Entry<BarcodeInfo>(barcodeInfo).Property("CreateDate").IsModified = false; _context.Entry<BarcodeInfo>(barcodeInfo).Property("CreateUserID").IsModified = false; barcodeInfo.UpdateDate = DateTime.Now; try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 更新出貨序號 /// </summary> /// <param name="barcodeID"></param> /// <param name="ExtaNO"></param> /// <returns></returns> [HttpPut("UpdateBarcodeExtraNo/{barcodeNo}/{ExtaNO}")] public async Task<ResultModel<dynamic>> UpdateBarcodeExtraNo(string barcodeNo, string ExtaNO) { Helper helper = new Helper(_context); ResultModel<dynamic> result = new ResultModel<dynamic>(); try { await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET Extra_Barcode_no={ExtaNO},UPDATE_DATE={DateTime.Now} WHERE BARCODE_No={barcodeNo}"); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 更新箱號 /// </summary> /// <param name="barcodeID"></param> /// <param name="BoxNO"></param> /// <returns></returns> [HttpPut("UpdateBarcodeBoxNO/{barcodeNo}/{BoxNO}")] public async Task<ResultModel<dynamic>> UpdateBarcodeBoxNO(string barcodeNo, string BoxNO) { Helper helper = new Helper(_context); ResultModel<dynamic> result = new ResultModel<dynamic>(); try { await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET Extra_Barcode_no={BoxNO},UPDATE_DATE={DateTime.Now} WHERE BARCODE_No={barcodeNo}"); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 新增條碼资料 /// </summary> /// <param name="barcodeInfo"></param> /// <returns></returns> // POST: api/BarcodeInfoes // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. [HttpPost] public async Task<ResultModel<BarcodeInfo>> PostBarcodeInfoes([FromBody] BarcodeInfo barcodeInfo) { ResultModel<BarcodeInfo> result = new ResultModel<BarcodeInfo>(); Helper helper = new Helper(_context); barcodeInfo.BarcodeID = helper.GetIDKey("BARCODE_ID").Result; _context.BarcodeInfoes.Add(barcodeInfo); List<BarcodeInfo> barcodeInfos = new List<BarcodeInfo>(); barcodeInfos.Add(barcodeInfo); try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; result.Data = barcodeInfos; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 包裝拆箱作業-置換(出貨序號) /// </summary> /// <param name="oldBarcodeID"></param> /// <param name="oldBarcodeNo"></param> /// <param name="oldExtraBarcodeNo"></param> /// <param name="newBarcodeID"></param> /// <param name="newBarcodeNo"></param> /// <param name="newExtraBarcodeNo"></param> /// <param name="boxNo"></param> /// <param name="userID"></param> /// <returns></returns> [HttpPut("DisplaceExtraBarcode4ASM012/{oldBarcodeID}/{oldBarcodeNo}/{oldExtraBarcodeNo}/{newBarcodeID}/{newBarcodeNo}/{newExtraBarcodeNo}/{boxNo}/{userID}")] public async Task<ResultModel<BarcodeInfo>> DisplaceExtraBarcode4ASM012(int oldBarcodeID, string oldBarcodeNo, string oldExtraBarcodeNo, int newBarcodeID, string newBarcodeNo, string newExtraBarcodeNo, string boxNo, int userID) { Helper helper = new Helper(_context); ResultModel<BarcodeInfo> result = new ResultModel<BarcodeInfo>(); try { await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BARCODE_NO={oldBarcodeNo + "_"},EXTRA_BARCODE_NO={oldExtraBarcodeNo + "_"},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={newBarcodeID}"); await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BARCODE_NO={newBarcodeNo},EXTRA_BARCODE_NO={newExtraBarcodeNo},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={oldBarcodeID}"); await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BARCODE_NO={oldBarcodeNo},EXTRA_BARCODE_NO={oldExtraBarcodeNo},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={newBarcodeID}"); try { BoxChange boxChange = new BoxChange(); boxChange.BoxChangeID = helper.GetIDKey("BOX_CHANGE_ID").Result; boxChange.BoxNo = boxNo; boxChange.BarcodeNoOld = oldExtraBarcodeNo; boxChange.BarcodeNoNew = newExtraBarcodeNo; boxChange.ChangeType = "E"; boxChange.Memo = "置換"; boxChange.CreateUserID = userID; boxChange.CreateDate = DateTime.Now; _context.BoxChanges.Add(boxChange); await _context.SaveChangesAsync(); } catch (Exception e1) { result.Msg = e1.Message; } result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 包裝拆箱作業-置換 /// </summary> /// <param name="oldBarcodeID"></param> /// <param name="oldBarcodeNo"></param> /// <param name="oldExtraBarcodeNo"></param> /// <param name="newBarcodeID"></param> /// <param name="newBarcodeNo"></param> /// <param name="newExtraBarcodeNo"></param> /// <param name="boxNo"></param> /// <param name="userID"></param> /// <returns></returns> [HttpPut("DisplaceBarcode4ASM012/{oldBarcodeID}/{oldBarcodeNo}/{oldExtraBarcodeNo}/{newBarcodeID}/{newBarcodeNo}/{newExtraBarcodeNo}/{boxNo}/{userID}")] public async Task<ResultModel<BarcodeInfo>> DisplaceBarcode4ASM012(int oldBarcodeID, string oldBarcodeNo, string oldExtraBarcodeNo, int newBarcodeID, string newBarcodeNo, string newExtraBarcodeNo, string boxNo, int userID) { Helper helper = new Helper(_context); ResultModel<BarcodeInfo> result = new ResultModel<BarcodeInfo>(); try { await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BARCODE_NO={oldBarcodeNo + "_"},EXTRA_BARCODE_NO={oldExtraBarcodeNo + "_"},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={newBarcodeID}"); await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BARCODE_NO={newBarcodeNo},EXTRA_BARCODE_NO={newExtraBarcodeNo},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={oldBarcodeID}"); await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BARCODE_NO={oldBarcodeNo},EXTRA_BARCODE_NO={oldExtraBarcodeNo},UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={newBarcodeID}"); try { BoxChange boxChange = new BoxChange(); boxChange.BoxChangeID = helper.GetIDKey("BOX_CHANGE_ID").Result; boxChange.BoxNo = boxNo; boxChange.BarcodeNoOld = oldBarcodeNo; boxChange.BarcodeNoNew = newBarcodeNo; boxChange.ChangeType = "P"; boxChange.Memo = "置換"; boxChange.CreateUserID = userID; boxChange.CreateDate = DateTime.Now; _context.BoxChanges.Add(boxChange); await _context.SaveChangesAsync(); } catch (Exception e1) { result.Msg = e1.Message; } result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 包裝拆箱作業-刪除 /// </summary> /// <param name="oldBarcodeID"></param> /// <param name="oldBarcodeNo"></param> /// <param name="boxNo"></param> /// <param name="userID"></param> /// <returns></returns> [HttpPut("DeleteBarcode4ASM012/{oldBarcodeID}/{oldBarcodeNo}/{boxNo}/{userID}")] public async Task<ResultModel<BarcodeInfo>> DeleteBarcode4ASM012(int oldBarcodeID, string oldBarcodeNo, string boxNo, int userID) { Helper helper = new Helper(_context); ResultModel<BarcodeInfo> result = new ResultModel<BarcodeInfo>(); try { await _context.Database.ExecuteSqlInterpolatedAsync($"UPDATE JHAMES.BARCODE_INFO SET BOX_NO=NULL,UPDATE_DATE={DateTime.Now} WHERE BARCODE_ID={oldBarcodeID}"); try { BoxChange boxChange = new BoxChange(); boxChange.BoxChangeID = helper.GetIDKey("BOX_CHANGE_ID").Result; boxChange.BoxNo = boxNo; boxChange.BarcodeNoOld = oldBarcodeNo; boxChange.BarcodeNoNew = oldBarcodeNo; boxChange.ChangeType = "P"; boxChange.Memo = "刪除"; boxChange.CreateUserID = userID; boxChange.CreateDate = DateTime.Now; _context.BoxChanges.Add(boxChange); await _context.SaveChangesAsync(); } catch (Exception e1) { result.Msg = e1.Message; } result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 刪除條碼资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // DELETE: api/BarcodeInfoes/5 [HttpDelete("{id}")] public async Task<ActionResult<BarcodeInfo>> DeleteBarcodeInfoes(int id) { //var repairResponsibleUnits = await _context.BarcodeInfoes.FindAsync(id); var barcodeInfo = await _context.BarcodeInfoes.Where(m => m.BarcodeID == id).FirstOrDefaultAsync(); if (barcodeInfo == null) { return NotFound(); } _context.BarcodeInfoes.Remove(barcodeInfo); await _context.SaveChangesAsync(); return barcodeInfo; } //YIRU ADD ------------------------------------------------------------------------------------------ /// <summary> /// FQC查詢 by Table /// </summary> /// <param name="barcodeNo">內部序號</param> /// <param name="wipNo">工單號碼</param> /// <param name="boxNo">外箱號碼</param> /// <param name="inhouseNo">入庫單號碼</param> /// <param name="date_str">入庫時間起</param> /// <param name="date_end">入庫時間迄</param> /// <param name="status">抽驗結果</param> /// <param name="page">頁數</param> /// <param name="limit">筆數</param> /// <returns></returns> [HttpGet("ByBoxNoPCS031Q")] public async Task<ResultModel<BoxNO_SNDto>> GetBarcodeInfoesByBoxNoPCS031Q(string boxNo, int page = 0, int limit = 10) { IQueryable<BoxNO_SNDto> q = from q1 in _context.BarcodeInfoes join q2 in _context.WipInfos on q1.WipID equals q2.WipID select new BoxNO_SNDto { BarcodeID = q1.BarcodeID, BarcodeNo = q1.BarcodeNo, BoxNo = q1.BoxNo, ExtraBarcodeNo = q1.ExtraBarcodeNo, StatusNo = q1.StatusNo, WipNO = q2.WipNO, StationID = q1.StationID }; q = q.Where(w => w.BoxNo == boxNo); ResultModel<BoxNO_SNDto> result = new ResultModel<BoxNO_SNDto>(); // 紀錄筆數 result.DataTotal = q.Count(); // Table 頁數 if (page > 0) { q = q.Skip((page - 1) * limit).Take(limit); } result.Data = await q.ToListAsync(); return result; } //YIRU End ------------------------------------------------------------------------------------------ private bool BarcodeInfoesExists(int id) { return _context.BarcodeInfoes.Any(e => e.BarcodeID == id); } } }