using AMESCoreStudio.CommonTools.Result;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Data.Common;
using System.Threading.Tasks;
using AMESCoreStudio.WebApi.Extensions;
using Microsoft.Extensions.Configuration;
using AMESCoreStudio.WebApi.DTO.AMES;
using Dapper;
using AMESCoreStudio.WebApi.Models.AMES;
using System.Data;
using System.Linq;
using AMESCoreStudio.WebApi.Models.BAS;
namespace AMESCoreStudio.WebApi.Controllers.QASRV
{
[Route("api/[controller]")]
[ApiController]
public class CheckSfisKayPartController : ControllerBase
{
///
/// 查詢SFIS 有效序號 KeyParts
///
/// KeyParts序號
///
[Route("GetSfisKeyParts/{id}")]
[HttpGet]
public async Task> GetSFISKeyParts(string id)
{
ResultModel result = new ResultModel();
using (ESUNContext _esun_context = new ESUNContext())
{
try
{
result.Msg = "N";
string strsql = $@" SELECT * FROM SFIS.dbo.ZPDKeyPart
WHERE IsActive = 1 AND PartBarcode = @PartBarcode";
DynamicParameters p = new DynamicParameters();
p.Add("PartBarcode", id.ToUpper().Trim(), DbType.AnsiString);
var q = await _esun_context.Database.DapperQueryAsync(strsql, p);
if (q.Any())
result.Msg = "Y";
result.Success = true;
}
catch (Exception ex)
{
result.Msg = ex.Message;
result.Success = false;
}
}
return result;
}
///
/// 查詢SFIS 標準工時
///
/// 工程編號
/// 生產製程
/// 線別代號
/// 作業站名稱
///
[Route("GetWorkTime")]
[HttpGet]
public async Task GetWorkTime(string itemNo, string unitNo, string lineNo, string stationNo)
{
using (ESUNContext _esun_context = new ESUNContext())
{
try
{
// 組立
if (unitNo == "B")
stationNo = "ASSY";
// 系統包裝
else if (unitNo == "O")
{
unitNo = "B"; // 3F-組裝
stationNo = "PACKING";
}
// 板卡包裝 2F-包裝
else if (unitNo == "P")
stationNo = "PACK_WT";
string strsql = $@" SELECT CT
FROM AMES_DB.dbo.JH_STANDARD_WORKTIME A ,
AMES_DB.dbo.JH_LINE B ,
AMES_DB.dbo.JH_STATION C ,
AMES_DB.dbo.JH_FACTORY_UNIT D
WHERE A.LINE_ID = B.LINE_ID
AND A.STATION_ID = C.STATION_ID
AND A.UNIT_NO = D.UNIT_NO
AND A.ITEM_NO = @itemNo
AND A.UNIT_NO = @unitNo
AND C.STATION_NO = @stationNo ";
DynamicParameters p = new DynamicParameters();
p.Add("itemNo", itemNo.Trim());
p.Add("unitNo", unitNo.Trim());
p.Add("stationNo", stationNo.Trim());
// SMT || DIP 需要By 線別查詢
if (unitNo == "S" || unitNo == "D")
{
strsql += " AND B.LINE_NO = @lineNo ";
p.Add("lineNo", lineNo.Trim());
}
var q = await _esun_context.Database.DapperQueryAsync(strsql, p);
if (q.Any())
{
var first = q.FirstOrDefault();
var worktime = double.Parse(first.CT.ToString());
return Math.Round(worktime, 2);
}
else
{
return 2.1;
}
}
catch (Exception ex)
{
return 1.1;
}
}
}
}
}