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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
}
}