using Dapper; using Estsh.Core.Dapper; using Estsh.Core.IRepositories; using Estsh.Core.Model.Models; using Estsh.Core.Model.Result; using Estsh.Core.Models; using Estsh.Core.Repository.IRepositories; using Estsh.Core.Util; using System.Collections; using System.Data; using System.Text; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:采购负收货模块DAL层 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Repositories { public class PurchaseSubtractiveRepository : BaseRepository, IPurchaseSubtractiveRepository { public PurchaseSubtractiveRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext) { } /// /// 获取服务器日期、时间 /// /// 格式标志 /// public string GetServerDateTime(string flag) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string serverDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace("-", "/"); switch (flag.ToUpper().Replace(" ", "")) { case "YMD": return serverDateTime.Substring(0, 10); case "HMS": return serverDateTime.Substring(11); case "YY": return serverDateTime.Substring(2, 2); case "YYYY": return serverDateTime.Substring(0, 4); case "HH": return serverDateTime.Substring(11, 2); default: return serverDateTime; } } } public List getQueryByPage(int PageSize, int PageIndex, string strWhere, string OrderBy) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); DynamicParameters Params = new DynamicParameters(); Params.Add("@TotalCount", 100); Params.Add("@TotalPage", 100); Params.Add("@GroupColumn", ""); Params.Add("@Table", "g_po_cancel_master"); Params.Add("@Column", "*"); Params.Add("@PageSize", PageSize); Params.Add("@CurrentPage", PageIndex); Params.Add("@Condition", strWhere); Params.Add("@OrderColumn", OrderBy); Params.Add("@Group", 0); List result = dbConn.Query("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList(); return result; } } /// /// 获取日程单号 /// /// 字段名称 /// 前缀 /// public string GetOrderNo(string item, string prefix) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); DynamicParameters list = new DynamicParameters(); list.Add("@order_type", item); list.Add("@order_prefix", prefix); list.Add("@order_no", null, DbType.String, ParameterDirection.Output, 50); var hashtable = dbConn.Execute("sys_create_orderno", list, commandType: CommandType.StoredProcedure); string result = list.Get("@order_no"); return result; } } /// /// 获取厂区内容 /// /// public List GetFactoryInfo() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT factory_id as [value],factory_name as [key] FROM sys_factory (NOLOCK) WHERE enabled='Y' ORDER BY factory_name"; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获取厂区代码 /// /// public string GetFactoryId(int userID) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT TOP 1 factory_id FROM sys_emp (NOLOCK) WHERE emp_id=@userId AND enabled='Y'"; DynamicParameters param = new DynamicParameters(); param.Add("@userId", userID.ToString()); object obj = dbConn.ExecuteScalar(sql, param); if (obj == null) { return ""; } return obj.ToString(); } } /// /// 获取项目、车型内容 /// /// public List GetModelType() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT type_id as [value],type_name as [key] FROM sys_model_type (NOLOCK) WHERE enabled='Y' ORDER BY type_name"; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获取供应商信息 /// /// public List GetVendorInfo() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT vendor_id as [value],vendor_name as [key] FROM sys_vendor (NOLOCK) WHERE enabled='Y' ORDER BY vendor_name"; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获取采购单编号 /// /// public List GetBuyNoInfo() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT DISTINCT UPPER(xw_po_nbr) AS [value], xw_po_nbr AS [key] FROM xw_po_mstr (NOLOCK) ORDER BY xw_po_nbr "; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获取零件信息 /// /// 零件类型 /// public List GetPartInfo(int type) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id,part_no,part_spec,default_box_qty FROM sys_part (NOLOCK) WHERE enabled='Y' ORDER BY part_no"; DynamicParameters param = new DynamicParameters(); param.Add("@part_type", type); List result = dbConn.Query(sql, param).ToList(); return result; } } public List GetPart(int type) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id as [value],part_no as [key] FROM sys_part (NOLOCK) WHERE enabled='Y' ORDER BY part_no"; DynamicParameters param = new DynamicParameters(); param.Add("@part_type", type); List result = dbConn.Query(sql, param).ToList(); return result; } } /// /// 是否为采购单内零件 /// /// 采购单 /// 零件号 /// public bool IsPoPartNo(string buyNo, string partNo) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT TOP 1 xw_pod_part FROM xw_pod_det (NOLOCK) WHERE UPPER(xw_pod_nbr)=@xw_pod_nbr AND UPPER(xw_pod_part)=@xw_pod_part"; DynamicParameters param = new DynamicParameters(); param.Add("@xw_pod_nbr", buyNo.ToUpper().Trim()); param.Add("@xw_pod_part", partNo.ToUpper().Trim()); object obj = dbConn.ExecuteScalar(sql, param); if (obj == null) { return false; } return true; } } public string DataSaveTransact(DataTable dtData, int userID) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); if (dtData.Rows.Count < 1) { return "无条码零件采购收货数据为空"; } int userId = userID; DataTable dtReturn = new DataTable(); StringBuilder sql = new StringBuilder(1024); IDbTransaction transaction = dbConn.BeginTransaction(); try { List sqlStrings = new List(); List parameters = new List(); DynamicParameters param = new DynamicParameters(); foreach (DataRow dr in dtData.Rows) { string orderNo = dr["order_no"].ToString(); string shipNo = dr["ship_no"].ToString(); string buyNo = dr["buy_no"].ToString(); string partNo = dr["part_no"].ToString(); string qty = dr["qty"].ToString(); sql.Remove(0, sql.Length); sql.Append("INSERT INTO g_po_cancel_master (order_no,rt_no,po_no,part_no,qty,type,sync_no,enabled,create_userid,guid, create_time) "); sql.Append(" values (@order_no,@rt_no,@po_no,@partNo,@qty,'RCT-PO','','Y',@user_id,NEWID(), CONVERT(varchar(50), GETDATE(), 21)) "); param = new DynamicParameters(); param.Add("@order_no", orderNo); param.Add("@rt_no", shipNo); param.Add("@po_no", buyNo); param.Add("@partNo", partNo); param.Add("@qty", qty); param.Add("@user_id", userId.ToString()); sqlStrings.Add(sql.ToString()); parameters.Add(param); } for (int i = 0; i < sqlStrings.Count; i++) { dbConn.Execute(sqlStrings[i], parameters[i], transaction); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); return "数据提交错误!\r\n" + ex.Message; } return ""; } } /// /// 箱条码生成(零件号(18)+批号(6)+流水号(3)) /// /// 零件号 /// 批号 /// 流水号 /// public string GetCartonNo(string partNo, string lotNo, int seq) { string strCartonNo = partNo + "000000000000000000"; strCartonNo = strCartonNo.Substring(0, 18) + lotNo; string strSeq = "000" + seq.ToString(); return strCartonNo + strSeq.Substring(strSeq.Length - 3); } /// /// 验证零件是否存在线边库位 /// /// 零件号所在行ID /// public bool IsExistLineLocate(string partId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT TOP 1 locate_name FROM sys_locate (NOLOCK) WHERE locate_type='L' AND part_id=@part_id AND enabled='Y'"; DynamicParameters param = new DynamicParameters(); param.Add("@part_id", partId); object obj = dbConn.ExecuteScalar(sql, param); if (obj == null) { return false; } return true; } } /// /// 验证线边库位是否存在相应零件库存 /// /// 零件号所在行ID /// 批号 /// public bool IsExistPartLotNo(string partId, string lotNo) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); try { string sql = "SELECT TOP 1 part_id FROM sys_stock (NOLOCK) WHERE part_id=@part_id AND lot_no=@lot_no AND status='G' and enabled='Y'"; DynamicParameters param = new DynamicParameters(); param.Add("@part_id", partId); param.Add("@lot_no", lotNo); object obj = dbConn.ExecuteScalar(sql, param); if (obj == null) { return false; } return true; } catch { return false; } } } /// /// 验证送货单号与采购单号是否匹配 /// /// 送货单号 /// 采购单号 /// public bool IsExistShipAndBuyNo(string shipNo, string buyNo) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); try { string sql = "SELECT COUNT(1) FROM xw_tr_hist WHERE xw_tr_wo_id=@ship_no AND xw_tr_nbr=@buy_no AND xw_tr_type='RCT-PO' AND xw_tr_data_sync='Yes'"; DynamicParameters param = new DynamicParameters(); param.Add("@ship_no", shipNo); param.Add("@buy_no", buyNo); object obj = dbConn.ExecuteScalar(sql, param); if (obj == null) { return false; } int iRows = Convert.ToInt32(obj.ToString()); if (iRows < 1) { return false; } return true; } catch { return false; } } } /// /// 验证送货单零件是否一致 /// /// 送货单号 /// 采购单号 /// 零件号 /// 数量 /// public List ValidateShipAndPart(string shipNo, string buyNo, string partNo, int qty, int userId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); try { DynamicParameters param = new DynamicParameters(); param.Add("@ship_no", shipNo); param.Add("@buy_no", buyNo); param.Add("@partNo", partNo); param.Add("@qty", qty); param.Add("@user_id", userId); List result = dbConn.Query("validate_ship_part", param, commandType: CommandType.StoredProcedure).ToList(); return result; } catch { return null; } } } } }