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.WebApi.DTO.AMES; using AMESCoreStudio.CommonTools.Result; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// /// 錫膏規格流水碼表 /// [Route("api/[controller]")] [ApiController] public class SolderPasteSerialController : ControllerBase { private readonly AMESContext _context; public SolderPasteSerialController(AMESContext context) { _context = context; } [HttpGet] public async Task>> GetSolderPasteSerials() { return await _context.SolderPasteSerials.ToListAsync(); } [HttpGet("{id}")] public async Task> GetSolderPasteSerial(string id) { var solderPasteSerial = await _context.SolderPasteSerials.FindAsync(id); return solderPasteSerial; } /// /// 自動取得編號 /// /// 規格 /// [HttpGet("AutoSerialNo/{id}")] public async Task> GetSolderPasteSerialByAutoSerialNo(string id) { var item = await _context.SolderPasteSerials .Where(w => w.Description.ToUpper() == id.Trim().ToUpper()).FirstOrDefaultAsync(); if (item == null) return ""; else { var SerialNo = string.Empty; var Infos = _context.SolderPasteInfos.Where(w => w.SolderPasteNo.StartsWith(item.SerialNo)).Select(s => s.SolderPasteNo).Max(); if (!string.IsNullOrWhiteSpace(Infos)) { SerialNo = $"{item.SerialNo}{(int.Parse(Infos.Substring(2, 5)) + 1).ToString().PadLeft(5, '0')}"; } else { // 根據規格對應的代碼(2碼)+流水碼(5碼) SerialNo = $"{item.SerialNo}{(item.SerialNumber + 1).ToString().PadLeft(5, '0')}"; } return SerialNo; } } /// /// 更新錫膏規格流水碼表 /// /// /// [HttpPut] public async Task> PutSolderPasteSerial(SolderPasteSerial solderPasteSerial) { ResultModel result = new ResultModel(); _context.Entry(solderPasteSerial).State = EntityState.Modified; try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// /// 更新錫膏規格流水碼表 /// /// 規格 /// [HttpPut("AutoMatically/{id}")] public async Task> PutSolderPasteSerialAutoMatically(string id) { ResultModel result = new ResultModel(); // 流水碼加1 string updateSql = @" UPDATE JHAMES.SOLDER_PASTE_SERIAL SET SERIAL_NUMBER = SERIAL_NUMBER + 1 , WHERE DESCRIPTION = :Description"; try { // 執行原生 SQL _context.Database.ExecuteSqlRaw(updateSql); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// /// 新增錫膏規格流水碼表 /// /// /// [HttpPost] public async Task> PostSolderPasteSerial(SolderPasteSerial solderPasteSerial) { ResultModel result = new ResultModel(); _context.SolderPasteSerials.Add(solderPasteSerial); try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } // DELETE: api/SolderPasteSerial/5 [HttpDelete("{id}")] public async Task> DeleteSolderPasteSerial(string id) { var solderPasteSerial = await _context.SolderPasteSerials.FindAsync(id); if (solderPasteSerial == null) { return NotFound(); } _context.SolderPasteSerials.Remove(solderPasteSerial); await _context.SaveChangesAsync(); return solderPasteSerial; } private bool SolderPasteSerialExists(string id) { return _context.SolderPasteSerials.Any(e => e.SerialNo == id); } } }