You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

422 lines
17 KiB
C#

2 years ago
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<SysStock>, IPurchaseNoBarcodeRepository
{
/***************************************************************************************************
*
*
* 2013.05.27
* DAL
*
*
*
* *************************************************************************************************/
public PurchaseNoBarcodeRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
/// <summary>
/// 获取服务器日期、时间
/// </summary>
/// <param name="flag">格式标志</param>
/// <returns></returns>
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<SysStock> 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<SysStock> result = dbConn.Query<SysStock>("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<string>("@order_no");
return result;
}
}
/// <summary>
/// 获取厂区内容
/// </summary>
/// <returns></returns>
public List<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
/// <summary>
/// 获取厂区代码
/// </summary>
/// <returns></returns>
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();
}
}
/// <summary>
/// 获取项目、车型内容
/// </summary>
/// <returns></returns>
public List<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
/// <summary>
/// 获取供应商信息
/// </summary>
/// <returns></returns>
public List<SysVendor> 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<SysVendor> result = dbConn.Query<SysVendor>(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;
}
}
/// <summary>
/// 获取采购单编号
/// </summary>
/// <returns></returns>
public List<dynamic> 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<dynamic> result = dbConn.Query<dynamic>(sql).ToList();
return result;
}
}
/// <summary>
/// 获了零件信息
/// </summary>
/// <param name="type">零件类型</param>
/// <returns></returns>
public List<SysPart> 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<SysPart> result = dbConn.Query<SysPart>(sql, param).ToList();
return result;
}
}
/// <summary>
/// 是否为采购单内零件
/// </summary>
/// <param name="buyNo">采购单</param>
/// <param name="partNo">零件号</param>
/// <returns></returns>
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<string> sqlStrings = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
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 "";
}
}
/// <summary>
/// 箱条码生成(零件号(18)+批号(6)+流水号(3))
/// </summary>
/// <param name="partNo">零件号</param>
/// <param name="lotNo">批号</param>
/// <param name="seq">流水号</param>
/// <returns></returns>
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);
}
}
/// <summary>
/// 验证零件是否存在线边库位
/// </summary>
/// <param name="partNo">零件号所在行ID</param>
/// <returns></returns>
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;
}
}
/// <summary>
/// 验证线边库位是否存在相应零件库存
/// </summary>
/// <param name="partId">零件号所在行ID</param>
/// <param name="lotNo">批号</param>
/// <returns></returns>
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;
}
}
}
}