using Dapper; using Estsh.Core.Dapper; using Estsh.Core.Model.Result; using Estsh.Core.Models; using Estsh.Core.Repository.IRepositories; using Estsh.Core.Util; using System.Data; using System.Text; /*************************************************************************************************** * * 更新人:sitong.dong * 描述: * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Repositories { public class PurchaseNoBarcodeRepository : BaseRepository, IPurchaseNoBarcodeRepository { /*************************************************************************************************** * * 作者:张茂忠 * 创建时间:2013.05.27 * 描述:无条码收货DAL层 * 修改日志: * * * *************************************************************************************************/ public PurchaseNoBarcodeRepository(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(); strWhere += " and status='G' "; DynamicParameters Params = new DynamicParameters(); Params.Add("@TotalCount", 100); Params.Add("@TotalPage", 100); Params.Add("@GroupColumn", ""); Params.Add("@Table", "SysStock"); 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); 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(string key) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT vendor_id,vendor_name FROM sys_vendor (NOLOCK) where enabled = 'Y' and vendor_name LIKE '" + key + "%' ORDER BY vendor_name"; List result = dbConn.Query(sql).ToList(); return result; } } public int delete(String ids) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); if (ids == null) return 0; string str = "update sys_stock set Enabled='N' WHERE guid IN (" + ids + ")"; int result = dbConn.Execute(str); return 1; } } //启用 public int EnableData(String ids) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); String delStr = "update sys_stock set Enabled='Y' WHERE guid in (@guid)"; DynamicParameters htparams = new DynamicParameters(); htparams.Add("@guid", ids); int result = dbConn.Execute(delStr, htparams); return result; } } //禁用 public int DisableData(String ids) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); String delStr = "update sys_stock set Enabled='N' WHERE guid in (@guid)"; DynamicParameters htparams = new DynamicParameters(); htparams.Add("@guid", ids); int result = dbConn.Execute(delStr, htparams); return result; } } /// /// 获取采购单编号 /// /// public List GetBuyNoInfo(string key) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT DISTINCT UPPER(xw_po_nbr) AS xw_po_nbr FROM xw_po_mstr (NOLOCK) WHERE xw_po_nbr LIKE '" + key + "%' ORDER BY xw_po_nbr "; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获了零件信息 /// /// 零件类型 /// public List GetPartInfo(int type, string part_no) { 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' AND part_no LIKE '" + part_no + "%' 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 "无条码零件采购收货数据为空"; } IDbTransaction transaction = dbConn.BeginTransaction(); string factoryId = GetFactoryId(userID); string orderNo = dtData.Rows[0]["order_no"].ToString(); string vendorId = dtData.Rows[0]["vendor_id"].ToString(); string seDate = dtData.Rows[0]["se_date"].ToString(); string typeId = dtData.Rows[0]["type_id"].ToString(); DataTable dtReturn = new DataTable(); StringBuilder sql = new StringBuilder(1024); try { List sqlStrings = new List(); List parameters = new List(); DynamicParameters param = new DynamicParameters(); string cartonNoStr = ""; int seq = 0; foreach (DataRow dr in dtData.Rows) { if (IsExistPartLotNo(dr["part_id"].ToString(), dr["lot_no"].ToString())) { sql.Remove(0, sql.Length); sql.Append("UPDATE sys_stock SET qty=qty+@qty_add WHERE part_id=@part_id AND lot_no=@lot_no AND status='G' and enabled='Y'"); param = new DynamicParameters(); param.Add("@qty_add", dr["qty"].ToString()); param.Add("@part_id", dr["part_id"].ToString()); param.Add("@lot_no", dr["lot_no"].ToString()); } else { sql.Remove(0, sql.Length); sql.Append("INSERT INTO sys_stock (order_no,weekly_order_no,type_id,buy_no,vendor_id,se_date,part_id,part_no "); sql.Append(" ,carton_no,lot_no,qty,snp_qty,plan_qty,status,type,factory_id,enabled,create_userid, create_time) "); sql.Append(" VALUES (@order_no,@order_no,@type_id,@buy_no,@vendor_id,@se_date,@part_id,@partNo"); sql.Append(" ,@carton_no,@lot_no,@qty,@snpQty,@qty,@status,@type,@factory_id,@enabled,@user_id, CONVERT(varchar(50), GETDATE(), 21))"); cartonNoStr = GetCartonNo(dr["part_no"].ToString(), dr["lot_no"].ToString(), seq); param = new DynamicParameters(); param.Add("@order_no", orderNo); param.Add("@type_id", typeId); param.Add("@buy_no", dr["buy_no"].ToString()); param.Add("@vendor_id", vendorId); param.Add("@se_date", seDate); param.Add("@part_id", dr["part_id"].ToString()); param.Add("@partNo", dr["part_no"].ToString()); param.Add("@carton_no", cartonNoStr); param.Add("@lot_no", dr["lot_no"].ToString()); param.Add("@qty", dr["qty"].ToString()); param.Add("@snpQty", dr["snp_qty"].ToString()); param.Add("@status", "G"); param.Add("@type", "3"); param.Add("@factory_id", dr["factory_id"].ToString()); param.Add("@enabled", "Y"); param.Add("@user_id", userID); seq++; } 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) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); 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(); 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; } } } }