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.

446 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.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<SysStock>, IPurchaseSubtractiveRepository
{
public PurchaseSubtractiveRepository(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<GPoCancelMaster> 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<GPoCancelMaster> result = dbConn.Query<GPoCancelMaster>("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList();
return result;
}
}
/// <summary>
/// 获取日程单号
/// </summary>
/// <param name="item">字段名称</param>
/// <param name="prefix">前缀</param>
/// <returns></returns>
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.ToString());
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<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
/// <summary>
/// 获取采购单编号
/// </summary>
/// <returns></returns>
public List<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
/// <summary>
/// 获取零件信息
/// </summary>
/// <param name="type">零件类型</param>
/// <returns></returns>
public List<SysPart> 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<SysPart> result = dbConn.Query<SysPart>(sql, param).ToList();
return result;
}
}
public List<KeyValueResult> 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<KeyValueResult> result = dbConn.Query<KeyValueResult>(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 "无条码零件采购收货数据为空";
}
int userId = userID;
DataTable dtReturn = new DataTable();
StringBuilder sql = new StringBuilder(1024);
IDbTransaction transaction = dbConn.BeginTransaction();
try
{
List<string> sqlStrings = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
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 "";
}
}
/// <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)
{
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();
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;
}
}
}
/// <summary>
/// 验证送货单号与采购单号是否匹配
/// </summary>
/// <param name="shipNo">送货单号</param>
/// <param name="buyNo">采购单号</param>
/// <returns></returns>
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;
}
}
}
/// <summary>
/// 验证送货单零件是否一致
/// </summary>
/// <param name="shipNo">送货单号</param>
/// <param name="buyNo">采购单号</param>
/// <param name="partNo">零件号</param>
/// <param name="qty">数量</param>
/// <returns></returns>
public List<dynamic> 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<dynamic> result = dbConn.Query<dynamic>("validate_ship_part", param, commandType: CommandType.StoredProcedure).ToList();
return result;
}
catch
{
return null;
}
}
}
}
}