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