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.

1643 lines
99 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.EnumUtil;
using Estsh.Core.Model.ExcelModel;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using Estsh.Core.Repository.IRepositories;
using Microsoft.Extensions.Primitives;
using System.Collections;
using System.Data;
using System.Text;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:采购单管理
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Repositories
{
/// <summary>
/// 数据访问类
/// </summary>
public class CycleCountManageRepository : BaseRepository<WmsCheckStock>, ICycleCountManageRepository
{
public CycleCountManageRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 成员方法
/// <summary>
/// 盘点单
/// </summary>
public Hashtable getCheckStockByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters Params = new DynamicParameters();
Params.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@GroupColumn", "");
Params.Add("@Table", " wms_check_stock a (nolock) left join sys_enum b on a.order_status=b.enum_value and b.enum_type='wms_check_stock_order_status' left join sys_enum c on a.order_TYPE=c.enum_value and c.enum_type='wms_check_stock_order_type' ");
Params.Add("@Column", " a.ruid,a.order_no,a.part_no,a.erp_warehouse,a.order_type,a.order_status,c.enum_desc as order_type_desc,b.enum_desc as order_status_desc,a.is_obvious,a.enabled,a.factory_id,a.factory_code,a.create_time ");
Params.Add("@PageSize", PageSize);
Params.Add("@CurrentPage", PageIndex);
Params.Add("@Condition", strWhere);
Params.Add("@OrderColumn", "a.create_time desc");
Params.Add("@Group", 0);
List<WmsCheckStock> dataList = dbConn.Query<WmsCheckStock>("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", dataList);
result.Add("totalCount", Params.Get<int>("@TotalCount"));
return result;
}
}
/// <summary>
/// 盘点单明细
/// </summary>
public List<WmsCheckStockList> getCheckStockListByPage(int PageSize, int PageIndex, string strWhere)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" select a.*,b.enum_desc as sn_status_desc,c.enum_desc as trans_status_desc,cp.enum_desc as up_trans_status_desc from wms_check_stock_list a (nolock) " +
" LEFT JOIN sys_stock k (nolock) on a.carton_no = k.carton_no LEFT JOIN dbo.sys_enum b ON b.enum_type = 'sys_stock_status' AND k.status = b.enum_value " +
" LEFT JOIN dbo.sys_enum c ON c.enum_type = 'wms_check_stock_list_trans_status' AND a.trans_status = c.enum_value " +
" LEFT JOIN dbo.sys_enum cp ON cp.enum_type = 'wms_check_stock_list_trans_status' AND a.up_trans_status = cp.enum_value ");
SqlStringBuilder.Append(" where " + strWhere);
List<WmsCheckStockList> result = dbConn.Query<WmsCheckStockList>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
public List<WmsCheckStockList> getSearchCheckStockList(string strWhere)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" select a.*,b.enum_desc as sn_status_desc,c.enum_desc as trans_status_desc,cp.enum_desc as up_trans_status_desc from wms_check_stock_list a (nolock) " +
" LEFT JOIN sys_stock k (nolock) on a.carton_no = k.carton_no LEFT JOIN dbo.sys_enum b ON b.enum_type = 'sys_stock_status' AND k.status = b.enum_value " +
" LEFT JOIN dbo.sys_enum c ON c.enum_type = 'wms_check_stock_list_trans_status' AND a.trans_status = c.enum_value " +
" LEFT JOIN dbo.sys_enum cp ON cp.enum_type = 'wms_check_stock_list_trans_status' AND a.up_trans_status = cp.enum_value ");
SqlStringBuilder.Append(" where " + strWhere);
List<WmsCheckStockList> result = dbConn.Query<WmsCheckStockList>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
//盘点单零件号
public List<WmsCheckStockPart> getCheckStockPartByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select a.ruid,a.order_no,a.part_id,a.part_no,a.part_spec,a.factory_id,a.factory_code,a.enabled from wms_check_stock_part a ");
SqlStringBuilder.Append(" where " + strWhere);
List<WmsCheckStockPart> result = dbConn.Query<WmsCheckStockPart>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
//盘点单存储区
public List<WmsCheckStockZone> getCheckStockZoneByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select a.ruid,a.order_no,a.zone_id,a.zone_name,a.factory_id,a.factory_code,a.enabled from wms_check_stock_zone a ");
SqlStringBuilder.Append(" where " + strWhere);
List<WmsCheckStockZone> result = dbConn.Query<WmsCheckStockZone>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
//盘点单库位
public List<WmsCheckStockLocate> getCheckStockLocateByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select a.ruid,a.order_no,a.locate_id,a.locate_name,a.factory_id,a.factory_code,a.enabled from wms_check_stock_locate a ");
SqlStringBuilder.Append(" where " + strWhere);
List<WmsCheckStockLocate> result = dbConn.Query<WmsCheckStockLocate>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
//盘点单范围
public List<WmsCheckStockRange> getCheckStockRangeByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select a.ruid,a.order_no,a.zone_id,a.zone_name,a.locate_id,a.locate_name,a.part_id,a.part_no,a.part_spec,a.factory_id,a.factory_code,a.enabled from wms_check_stock_range a ");
SqlStringBuilder.Append(" where " + strWhere);
List<WmsCheckStockRange> result = dbConn.Query<WmsCheckStockRange>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
public List<WmsCheckStock> getCheckStockByOrderNo(string orderNo)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select * from wms_check_stock (nolock) where order_no='" + orderNo + "'";
List<WmsCheckStock> result = dbConn.Query<WmsCheckStock>(strSql).ToList();
return result;
}
}
public List<MultiKeyValueResult> GetMultiErpwarehouse(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select distinct erp_warehouse as id,0 as parentId , erp_warehouse as name from sys_zone where enabled='Y' and factory_Id=" + factoryId + " ";
List<MultiKeyValueResult> result = dbConn.Query<MultiKeyValueResult>(strSql).ToList();
return result;
}
}
public List<MultiKeyValueResult> GetMultiPartNo(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select distinct part_no as id,0 as parentId , part_no as name from sys_part (nolock) where part_type=0 and enabled='Y' and factory_Id=" + factoryId + " ";
List<MultiKeyValueResult> result = dbConn.Query<MultiKeyValueResult>(strSql).ToList();
return result;
}
}
public List<MultiKeyValueResult> GetMultiWarehouse(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select distinct warehouse_id as id,0 as parentId , warehouse_name as name from sys_warehouse where enabled='Y' and factory_Id=" + factoryId + " ";
List<MultiKeyValueResult> result = dbConn.Query<MultiKeyValueResult>(strSql).ToList();
return result;
}
}
public List<MultiKeyValueResult> GetMultiZone(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select distinct zone_id as id,0 as parentId , zone_name as name from sys_zone where enabled='Y' and factory_Id=" + factoryId + " ";
List<MultiKeyValueResult> result = dbConn.Query<MultiKeyValueResult>(strSql).ToList();
return result;
}
}
public List<MultiKeyValueResult> GetMultiLocate(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select distinct locate_id as id,0 as parentId , locate_name as name from sys_locate where enabled='Y' and factory_Id=" + factoryId + " ";
List<MultiKeyValueResult> result = dbConn.Query<MultiKeyValueResult>(strSql).ToList();
return result;
}
}
public List<KeyValueResult> GetErpwarehouse(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String strSql = "select distinct erp_warehouse as [key] , erp_warehouse as value from sys_zone where enabled='Y' and factory_Id=" + factoryId + " ";
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql).ToList();
return result;
}
}
public List<KeyValueResult> GetMoveOrderType(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT [enum_value] as [value],[enum_desc] as [key] FROM sys_enum where enum_type='wms_move_order_type' and enabled='Y' and factory_Id=" + factoryId + " ";
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
public List<KeyValueResult> GetCheckStockType(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT [enum_value] as [value],[enum_desc] as [key] FROM sys_enum where enum_type='wms_check_stock_order_type' and enabled='Y' and factory_Id=" + factoryId + " ";
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
public List<KeyValueResult> GetCheckStockStatus(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT [enum_value] as [value],[enum_desc] as [key] FROM sys_enum where enum_type='wms_check_stock_order_status' and enabled='Y' and factory_Id=" + factoryId + " order by enum_value";
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql).ToList();
return result;
}
}
/// <summary>
/// 获取下拉框菜单数据 这里显示的是待添加的厂区信息,厂区名称
/// </summary>
/// <returns></returns>
public List<KeyValueResult> getSelectFactory()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select factory_id as [value],factory_name as [key] from sys_factory where Enabled = 'Y'");
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
}
public List<KeyValueResult> getSelectWarehouse(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select warehouse_desc as [value],warehouse_desc as [key] from sys_warehouse where Enabled = 'Y' and factory_Id=" + factoryId + " ");
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
}
public List<SysWarehouse> getSelectWarehouse(string warehouseid)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from sys_warehouse where Enabled = 'Y' and warehouse_id='" + warehouseid + "'");
List<SysWarehouse> result = dbConn.Query<SysWarehouse>(strSql.ToString()).ToList();
return result;
}
}
public List<SysZone> getSelectZone(string zoneid)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from sys_zone where Enabled = 'Y' and zone_id='" + zoneid + "'");
List<SysZone> result = dbConn.Query<SysZone>(strSql.ToString()).ToList();
return result;
}
}
public List<SysLocate> getSelectLocate(string locateid)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from sys_locate where Enabled = 'Y' and locate_id='" + locateid + "'");
List<SysLocate> result = dbConn.Query<SysLocate>(strSql.ToString()).ToList();
return result;
}
}
public List<KeyValueResult> getSelectZone(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select zone_id as [value],zone_name as [key] from sys_zone where Enabled = 'Y' and factory_Id=" + factoryId + " ");
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
}
public List<KeyValueResult> getSelectVendor(int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select vendor_id as [value],vendor_name as [key] from sys_Vendor where Enabled = 'Y'and factory_Id=" + factoryId + " ");
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(strSql.ToString()).ToList();
return result;
}
}
public List<SysVendor> getSelectVendor(string vendorId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from sys_Vendor where Enabled = 'Y' and vendor_id='" + vendorId + "'");
List<SysVendor> result = dbConn.Query<SysVendor>(strSql.ToString()).ToList();
return result;
}
}
public List<KeyValueResult> GetPart(int type, int factoryId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT part_no as [value],part_no as [key] FROM sys_part (NOLOCK) WHERE enabled='Y' and factory_Id=" + factoryId + " ORDER BY part_no";
DynamicParameters param = new DynamicParameters();
param.Add("@part_type", type);
List<KeyValueResult> result = dbConn.Query<KeyValueResult>(sql, param).ToList();
return result;
}
}
public List<SysPart> GetPart(int type, string partId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT * FROM sys_part (NOLOCK) WHERE enabled='Y' and part_id=" + partId + " 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<SysPart> getPartNoByZoneIds(string zoneIds)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
List<SysPart> result = new List<SysPart>();
if (!string.IsNullOrEmpty(zoneIds))
{
string sql = "select distinct part_id,part_no,part_spec from sys_stock (nolock) where enabled='Y' and zone_id in (" + zoneIds + ") and part_id <>0 ORDER BY part_no";
result = dbConn.Query<SysPart>(sql).ToList();
}
return result;
}
}
//根据库区查询零件号
public List<SysPart> getPartNoByLocateIds(string locateIds)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
List<SysPart> result = new List<SysPart>();
if (!string.IsNullOrEmpty(locateIds))
{
string sql = "select distinct part_id,part_no,part_spec from sys_stock (nolock) where enabled='Y' and locate_id in (" + locateIds + ") and part_id <>0 ORDER BY part_no";
result = dbConn.Query<SysPart>(sql).ToList();
}
return result;
}
}
public List<SysPart> getPartNoByZoneIdsOrLocateIds(string zoneIds, string locateIds)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
List<SysPart> result = new List<SysPart>();
if (!string.IsNullOrEmpty(zoneIds))
{
string sql = "select distinct part_id,part_no,part_spec from sys_stock (nolock) where enabled='Y' and zone_id in (" + zoneIds + ") and part_id <>0 ORDER BY part_no";
result = dbConn.Query<SysPart>(sql).ToList();
}
else if (!string.IsNullOrEmpty(locateIds))
{
string sql = "select distinct part_id,part_no,part_spec from sys_stock (nolock) where enabled='Y' and locate_id in (" + locateIds + ") and part_id <>0 ORDER BY part_no";
result = dbConn.Query<SysPart>(sql).ToList();
}
return result;
}
}
//根据库区查询零件号
public List<SysPart> getPartNoByZoneId(string zoneId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
List<SysPart> result = new List<SysPart>();
if (!string.IsNullOrEmpty(zoneId))
{
string sql = "select distinct part_id,part_no,part_spec from sys_stock (nolock) where zone_id in (" + zoneId + ") and part_id <>0 ORDER BY part_no";
result = dbConn.Query<SysPart>(sql).ToList();
}
return result;
}
}
//根据库区查询零件号
public List<SysPart> getPartNoByLocateId(string locateId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
List<SysPart> result = new List<SysPart>();
if (!string.IsNullOrEmpty(locateId))
{
string sql = "select distinct part_id,part_no,part_spec from sys_stock (nolock) where locate_id in (" + locateId + ") and part_id <>0 ORDER BY part_no";
result = dbConn.Query<SysPart>(sql).ToList();
}
return result;
}
}
public Hashtable GetPartByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters Params = new DynamicParameters();
Params.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@GroupColumn", "");
Params.Add("@Table", " sys_part a ");
Params.Add("@Column", " a.part_id,a.part_no,a.part_spec");
Params.Add("@PageSize", PageSize);
Params.Add("@CurrentPage", PageIndex);
Params.Add("@Condition", strWhere);
Params.Add("@OrderColumn", OrderBy);
Params.Add("@Group", 0);
List<SysPart> dataList = dbConn.Query<SysPart>("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList();
string sql = "SELECT * FROM sys_part a (NOLOCK) WHERE " + strWhere + " and enabled='Y' ORDER BY part_no";
List<SysPart> partlists = dbConn.Query<SysPart>(sql).ToList();
result.Add("dataList", partlists);
result.Add("totalCount", Params.Get<int>("@TotalCount"));
return result;
}
}
public Hashtable GetZoneByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters Params = new DynamicParameters();
Params.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@GroupColumn", "");
Params.Add("@Table", " sys_zone a ");
Params.Add("@Column", " a.zone_id,zone_name,zone_desc");
Params.Add("@PageSize", PageSize);
Params.Add("@CurrentPage", PageIndex);
Params.Add("@Condition", strWhere);
Params.Add("@OrderColumn", OrderBy);
Params.Add("@Group", 0);
List<SysZone> dataList = dbConn.Query<SysZone>("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList();
string sql = "SELECT * FROM sys_zone (NOLOCK) a WHERE " + strWhere + " and enabled='Y' ORDER BY zone_name";
List<SysZone> zonelists = dbConn.Query<SysZone>(sql).ToList();
result.Add("dataList", zonelists);
result.Add("totalCount", Params.Get<int>("@TotalCount"));
return result;
}
}
public Hashtable GetLocateByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters Params = new DynamicParameters();
Params.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
Params.Add("@GroupColumn", "");
Params.Add("@Table", " sys_locate a ");
Params.Add("@Column", " a.locate_id,locate_name,locate_desc");
Params.Add("@PageSize", PageSize);
Params.Add("@CurrentPage", PageIndex);
Params.Add("@Condition", strWhere);
Params.Add("@OrderColumn", OrderBy);
Params.Add("@Group", 0);
List<SysLocate> dataList = dbConn.Query<SysLocate>("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList();
string sql = "SELECT * FROM sys_locate (NOLOCK) a WHERE " + strWhere + " and enabled='Y' ORDER BY locate_name";
List<SysLocate> locatelists = dbConn.Query<SysLocate>(sql).ToList();
result.Add("dataList", locatelists);
result.Add("totalCount", Params.Get<int>("@TotalCount"));
return result;
}
}
public List<SysPart> GetPartList(int type, string partNo)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string sql = "SELECT * FROM sys_part (NOLOCK) WHERE enabled='Y' and part_no='" + partNo + "' ORDER BY part_no";
List<SysPart> result = dbConn.Query<SysPart>(sql).ToList();
return result;
}
}
/// <summary>
/// 获取订单编号
/// </summary>
/// <returns></returns>
public string GetOrderNo()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
DynamicParameters parameter = new DynamicParameters();
parameter.Add("@orderNo", null, DbType.String, ParameterDirection.Output, 255);
List<dynamic> depts = dbConn.Query<dynamic>("sys_create_sapo_no", parameter, commandType: CommandType.StoredProcedure).ToList();
return parameter.Get<string>("@orderNo");
}
}
/// <summary>
/// 插入菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public bool saveCycleCountManage(WmsCheckStock checkStockParams, List<WmsCheckStockPart> checkStockPartParams, List<WmsCheckStockZone> checkStockZoneParams, List<WmsCheckStockLocate> checkStockLocateParams, List<WmsCheckStockRange> checkStockRangeParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
string orderNo = GetOrderNo();
checkStockParams.OrderNo = orderNo;
List<string> sqlLists = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock(order_no,part_no,erp_warehouse,order_type,order_status,is_obvious,enabled,factory_id,factory_code,create_userid,create_time,guid) ");
SqlStringBuilder.Append(" VALUES(@orderNo,@partNo,@erpWarehouse,@orderType,@orderStatus,@isObvious,@enabled,@factoryId,@factoryCode,@createUserid ");
SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
sqlLists.Add(SqlStringBuilder.ToString());
DynamicParameters dynamic = new DynamicParameters();
dynamic.Add("@orderNo", checkStockParams.OrderNo);
dynamic.Add("@partNo", checkStockParams.PartNo);
dynamic.Add("@erpWarehouse", checkStockParams.ErpWarehouse);
dynamic.Add("@orderType", checkStockParams.OrderType);
dynamic.Add("@orderStatus", 10);
dynamic.Add("@isObvious", checkStockParams.IsObvious);
dynamic.Add("@enabled", "Y");
dynamic.Add("@factoryId", checkStockParams.FactoryId);
dynamic.Add("@factoryCode", checkStockParams.FactoryCode);
dynamic.Add("@createUserid", checkStockParams.CreateUserId);
parameters.Add(dynamic);
//int recCheckStock = dbConn.Execute(SqlStringBuilder.ToString(), checkStockParams);
for (int i = 0; i < checkStockPartParams.Count; i++)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock_part(order_no,part_id,part_no,part_spec,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
SqlStringBuilder.Append(" VALUES(@orderNo,@partId,@partNo,@partSpec,@factoryId,@factoryCode,'Y',@createUserid,CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderNo", orderNo);
dynamic.Add("@partId", checkStockPartParams[i].PartId);
dynamic.Add("@partNo", checkStockPartParams[i].PartNo);
dynamic.Add("@partSpec", checkStockPartParams[i].PartSpec);
dynamic.Add("@factoryId", checkStockPartParams[i].FactoryId);
dynamic.Add("@factoryCode", checkStockPartParams[i].FactoryCode);
dynamic.Add("@enabled", "Y");
dynamic.Add("@createUserid", checkStockPartParams[i].CreateUserId);
parameters.Add(dynamic);
}
//int recCheckStockPart = dbConn.Execute(SqlStringBuilder.ToString(), checkStockPartParams);
for (int i = 0; i < checkStockZoneParams.Count; i++)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock_zone(order_no,zone_id,zone_name,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
SqlStringBuilder.Append(" VALUES(@orderNo,@zoneId,@zoneName,@factoryId,@factoryCode,'Y',@createUserid,CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderNo", orderNo);
dynamic.Add("@zoneId", checkStockZoneParams[i].ZoneId);
dynamic.Add("@zoneName", checkStockZoneParams[i].ZoneName);
dynamic.Add("@factoryId", checkStockZoneParams[i].FactoryId);
dynamic.Add("@factoryCode", checkStockZoneParams[i].FactoryCode);
dynamic.Add("@enabled", "Y");
dynamic.Add("@createUserid", checkStockZoneParams[i].CreateUserId);
parameters.Add(dynamic);
}
//int recCheckStockZone = dbConn.Execute(SqlStringBuilder.ToString(), checkStockZoneParams);
for (int i = 0; i < checkStockLocateParams.Count; i++)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock_locate(order_no,locate_id,locate_name,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
SqlStringBuilder.Append(" VALUES(@orderNo,@locateId,@locateName,@factoryId,@factoryCode,'Y',@createUserid,CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderNo", orderNo);
dynamic.Add("@locateId", checkStockLocateParams[i].LocateId);
dynamic.Add("@locateName", checkStockLocateParams[i].LocateName);
dynamic.Add("@factoryId", checkStockLocateParams[i].FactoryId);
dynamic.Add("@factoryCode", checkStockLocateParams[i].FactoryCode);
dynamic.Add("@enabled", "Y");
dynamic.Add("@createUserid", checkStockLocateParams[i].CreateUserId);
parameters.Add(dynamic);
}
//int recCheckStockLocate = dbConn.Execute(SqlStringBuilder.ToString(), checkStockLocateParams);
for (int i = 0; i < checkStockRangeParams.Count; i++)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock_range(order_no,zone_id,zone_name,locate_id,locate_name,part_id,part_no,part_spec,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
SqlStringBuilder.Append(" VALUES(@orderNo,@zoneId,@zoneName,@locateId,@locateName,@partId,@partNo,@partSpec,@factoryId,@factoryCode,'Y',@createUserid ");
SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderNo", orderNo);
dynamic.Add("@zoneId", checkStockRangeParams[i].ZoneId);
dynamic.Add("@zoneName", checkStockRangeParams[i].ZoneName);
dynamic.Add("@locateId", checkStockRangeParams[i].LocateId);
dynamic.Add("@locateName", checkStockRangeParams[i].LocateName);
dynamic.Add("@partId", checkStockRangeParams[i].PartId);
dynamic.Add("@partNo", checkStockRangeParams[i].PartNo);
dynamic.Add("@partSpec", checkStockRangeParams[i].PartSpec);
dynamic.Add("@factoryId", checkStockRangeParams[i].FactoryId);
dynamic.Add("@factoryCode", checkStockRangeParams[i].FactoryCode);
dynamic.Add("@enabled", "Y");
dynamic.Add("@createUserid", checkStockRangeParams[i].CreateUserId);
parameters.Add(dynamic);
}
//int recCheckStockRange = dbConn.Execute(SqlStringBuilder.ToString(), checkStockRangeParams);
bool flag = ExecuteTransaction(sqlLists, parameters);
return flag;
}
}
public bool ExecuteTransaction(List<string> sqlStrings, List<DynamicParameters> parameterList, int? commandTimeout = null)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
bool isClosed = dbConn.State == ConnectionState.Closed;
if (isClosed)
{
dbConn.Open();
}
//开启事务
using (var transaction = dbConn.BeginTransaction())
{
int tempnum = 0;
string strsql = "";
try
{
bool successCount = true;
if (parameterList == null || parameterList.Count == 0)
{
for (int i = 0; i < sqlStrings.Count; i++)
{
tempnum = i;
strsql = sqlStrings[i];
dbConn.Execute(sqlStrings[i], null, transaction, commandTimeout);
}
}
else
{
for (int i = 0; i < sqlStrings.Count; i++)
{
dbConn.Execute(sqlStrings[i], parameterList[i], transaction, commandTimeout);
tempnum = i;
}
}
//提交事务
transaction.Commit();
return true;
}
catch (Exception ex)
{
//回滚事务
transaction.Rollback();
dbConn.Close();
dbConn.Dispose();
throw ex;
}
finally
{
dbConn.Close();
dbConn.Dispose();
}
}
}
}
//整单解冻调差
public Hashtable onAdjustment(String orderNo, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
List<string> sqlLists = new List<string>();
List<string> orderNoList = orderNo.Split(",").ToList();
for (int i = 0; i < orderNoList.Count; i++)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" UPDATE dbo.wms_check_stock SET order_status = 50,update_userid=" + userId + ", update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append(" WHERE order_no = '" + orderNoList[i] + "'; ");
sqlLists.Add(SqlStringBuilder.ToString());
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select a.*,b.erp_warehouse as erp_warehouse,c.erp_warehouse as dest_erp_warehouse,l.locate_type from [dbo].[wms_check_stock_list] a left join sys_zone b on a.zone_id=b.zone_id left join sys_zone c on a.dest_zone_id=c.zone_id " +
" LEFT JOIN dbo.sys_locate l ON a.dest_locate_id=l.locate_id" +
" where order_no ='" + orderNoList[i] + "' and a.fact_qty!=0 ");
List<WmsCheckStockList> sysStocks = dbConn.Query<WmsCheckStockList>(SqlStringBuilder.ToString()).ToList();
//解冻调差,只解冻调差已盘点的条码
for (int j = 0; j < sysStocks.Count; j++)
{
int statusNew = 50;//已入库
if (sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE ||
sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE ||
sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)
{
statusNew = (int)WmsEnumUtil.StockStatus.INSTOCKED;//已入库
}
else if (sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.LINE_LOCATE)//线边库位
{
statusNew = (int)WmsEnumUtil.StockStatus.ONLINED;
}
else if (sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.NC_LOCATE)//NC库位
{
statusNew = (int)WmsEnumUtil.StockStatus.NC_INSTOCK;
}
decimal? factQty = sysStocks[j].FactQty == null ? 0 : sysStocks[j].FactQty;
int? destWarehouseId = sysStocks[j].DestWarehouseId == null ? 0 : sysStocks[j].DestWarehouseId;
int? destZoneId = sysStocks[j].DestZoneId == null ? 0 : sysStocks[j].DestZoneId;
int? destLocateId = sysStocks[j].DestLocateId == null ? 0 : sysStocks[j].DestLocateId;
//零件号为空,是台车,查询最后一个台车解冻
if (string.IsNullOrEmpty(sysStocks[j].PartNo))
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select top 1 * from sys_stock (nolock) where carton_no ='" + sysStocks[j].CartonNo + "' order by create_time desc ");
List<SysStock> stockLists = dbConn.Query<SysStock>(SqlStringBuilder.ToString()).ToList();
if (stockLists.Count > 0)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" UPDATE sys_stock SET enabled='Y' ,update_userid=" + userId + ", update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append(" WHERE ruid = " + stockLists[0].Ruid + "; ");
sqlLists.Add(SqlStringBuilder.ToString());
}
}
else
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select * from dbo.sys_stock (nolock) where carton_no='" + sysStocks[j].CartonNo + "' ");
SysStock stocks = dbConn.Query<SysStock>(SqlStringBuilder.ToString()).FirstOrDefault();
if (stocks != null)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" UPDATE sys_stock SET qty=" + factQty + ",status=" + statusNew + "" +
",warehouse_id=" + destWarehouseId + ",warehouse_name='" + sysStocks[j].DestWarehouseName + "'" +
",zone_id=" + destZoneId + ",zone_name='" + sysStocks[j].DestZoneName + "'" +
",locate_id=" + destLocateId + ",locate_name='" + sysStocks[j].DestLocateName + "'" +
",erp_warehouse='" + sysStocks[j].DestErpWarehouse + "'," +
"enabled='Y',update_userid=" + userId + ", update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append(" WHERE carton_no = '" + sysStocks[j].CartonNo + "'; ");
sqlLists.Add(SqlStringBuilder.ToString());
}
else
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" INSERT INTO dbo.sys_stock(vendor_id,vendor_code,carton_no,carton_type,part_id,part_no,part_spec,lot_no,status,qty,snp_qty,locate_id,locate_name,ref_order_no ");
SqlStringBuilder.Append(" ,warehouse_id,warehouse_name,zone_id,zone_name,erp_warehouse,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
SqlStringBuilder.Append(" VALUES('0','','" + sysStocks[j].CartonNo + "',0,'" + sysStocks[j].PartId + "','" + sysStocks[j].PartNo + "','" + sysStocks[j].PartSpec + "',''," + statusNew + "," + factQty + "," + factQty + " ");
SqlStringBuilder.Append(" , '" + sysStocks[j].DestLocateId + "','" + sysStocks[j].DestLocateName + "','','" + sysStocks[j].DestWarehouseId + "','" + sysStocks[j].DestWarehouseName + "','" + sysStocks[j].DestZoneId + "','" + sysStocks[j].DestZoneName + "','" + sysStocks[j].DestErpWarehouse + "' ");
SqlStringBuilder.Append(" ,'" + sysStocks[j].FactoryId + "','" + sysStocks[j].FactoryCode + "','Y','" + userId + "',CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
sqlLists.Add(SqlStringBuilder.ToString());
}
}
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.sys_stock_trans ( ");
SqlStringBuilder.Append(" trans_code, carton_no, part_id, ");
SqlStringBuilder.Append(" part_no, part_spec, src_locate_id, ");
SqlStringBuilder.Append(" src_locate_name, dest_locate_id, dest_locate_name, ");
SqlStringBuilder.Append(" old_qty, new_qty, trans_qty, ");
SqlStringBuilder.Append(" old_status, new_status, unit, ");
SqlStringBuilder.Append(" factory_id, factory_code, ");
SqlStringBuilder.Append(" src_erp_warehouse, dest_erp_warehouse, ");
SqlStringBuilder.Append(" src_warehouse_id, src_warehouse_name, ");
SqlStringBuilder.Append(" dest_warehouse_id, dest_warehouse_name, ");
SqlStringBuilder.Append(" src_zone_id, src_zone_name, ");
SqlStringBuilder.Append(" dest_zone_id, dest_zone_name, enabled, create_userid, ");
SqlStringBuilder.Append(" create_time, update_userid, update_time, guid,ref_order_no) ");
SqlStringBuilder.Append("VALUES ");
SqlStringBuilder.Append("( " + (int)WmsEnumUtil.TransType.CS_UPDATE + ", ");//盘点更新
SqlStringBuilder.Append(" '" + sysStocks[j].CartonNo + "', ");
SqlStringBuilder.Append(" " + sysStocks[j].PartId + ", ");
SqlStringBuilder.Append(" '" + sysStocks[j].PartNo + "', ");
SqlStringBuilder.Append(" N'" + sysStocks[j].PartSpec + "', ");
SqlStringBuilder.Append(" " + sysStocks[j].LocateId == null ? 0 : sysStocks[j].LocateId + ", ");//源库位
SqlStringBuilder.Append(" '" + sysStocks[j].LocateName + "', ");
SqlStringBuilder.Append(" " + sysStocks[j].DestLocateId == null ? 0 : sysStocks[j].DestLocateId + ", ");//目标库位
SqlStringBuilder.Append(" '" + sysStocks[j].DestLocateName + "', ");
SqlStringBuilder.Append(" " + sysStocks[j].Qty + ",");
SqlStringBuilder.Append(" " + sysStocks[j].FactQty + ",");
SqlStringBuilder.Append(" " + sysStocks[j].FactQty + ",");
SqlStringBuilder.Append(" '" + sysStocks[j].SnStatus + "', ");
if (sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.BASICS_LOCATE ||
sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.MANEUVER_LOCATE ||
sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.COMBINATION_LOCATE)
{
SqlStringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.INSTOCKED + "', "); //已入库
}
else if (sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.LINE_LOCATE)//线边库位
{
SqlStringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.ONLINED + "', "); //已上线
}
else if (sysStocks[j].LocateType == (int)WmsEnumUtil.LocateType.NC_LOCATE)//NC库位
{
SqlStringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.NC_INSTOCK + "', "); //NC入库
}
else
{
SqlStringBuilder.Append(" '" + (int)WmsEnumUtil.StockStatus.INSTOCKED + "', "); //已入库
}
SqlStringBuilder.Append(" '" + sysStocks[j].Unit + "', ");
SqlStringBuilder.Append(" " + sysStocks[j].FactoryId + ", ");
SqlStringBuilder.Append(" '" + sysStocks[j].FactoryCode + "',");
SqlStringBuilder.Append(" '" + sysStocks[j].ErpWarehouse + "',");
SqlStringBuilder.Append(" '" + sysStocks[j].DestErpWarehouse + "', ");
int? warehouseIdTran = sysStocks[j].WarehouseId == null ? 0 : sysStocks[j].WarehouseId;
SqlStringBuilder.Append(" " + warehouseIdTran + ", ");
SqlStringBuilder.Append(" '" + sysStocks[j].WarehouseName + "', ");
int? destWarehouseIdTran = sysStocks[j].DestWarehouseId == null ? 0 : sysStocks[j].DestWarehouseId;
SqlStringBuilder.Append(" " + destWarehouseIdTran + ", ");
SqlStringBuilder.Append(" '" + sysStocks[j].DestWarehouseName + "', ");
int? zoneIdTran = sysStocks[j].ZoneId == null ? 0 : sysStocks[j].ZoneId;
SqlStringBuilder.Append(" " + zoneIdTran + ", ");
SqlStringBuilder.Append(" '" + sysStocks[j].ZoneName + "', ");
int? destZoneIdTran = sysStocks[j].DestZoneId == null ? 0 : sysStocks[j].DestZoneId;
SqlStringBuilder.Append(" " + destZoneIdTran + ", ");
SqlStringBuilder.Append(" '" + sysStocks[j].DestZoneName + "', ");
SqlStringBuilder.Append(" 'Y', ");
SqlStringBuilder.Append(" " + userId + ", ");
SqlStringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
SqlStringBuilder.Append(" " + userId + ", ");
SqlStringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
SqlStringBuilder.Append(" NEWID() , ");
SqlStringBuilder.Append(" '" + sysStocks[j].OrderNo + "' ");
SqlStringBuilder.Append(" ) ; ");
sqlLists.Add(SqlStringBuilder.ToString());
}
}
bool flag = ExecuteTransaction(sqlLists, null);
if (flag == true)
{
result.Add("status", 1);
result.Add("message", "整单解冻调差成功");
}
else
{
result.Add("status", 0);
result.Add("message", "整单解冻调差失败");
}
return result;
}
}
/// <summary>
/// 获得调差指令
/// </summary>
/// <param name="orderNo"></param>
/// <param name="userId"></param>
/// <returns></returns>
public List<SapDifo> GetSAPDIFO(String orderNo, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" select * from SAP_DIFO where IBLNR='" + orderNo + "' and STAFLG='N' ");
List<SapDifo> result = dbConn.Query<SapDifo>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
public SysBase GetSAPDIFOByBase()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" select * from sys_base where param_name='盘点调差指令' and enabled='Y' ");
SysBase result = dbConn.QueryFirstOrDefault<SysBase>(SqlStringBuilder.ToString());
return result;
}
}
//整单解冻不调差
public Hashtable onNoAdjustment(String orderNos, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
List<string> sqlLists = new List<string>();
List<DynamicParameters> parametersList = new List<DynamicParameters>();
StringBuilder query = new StringBuilder(1024);
DynamicParameters parameters = new DynamicParameters();
List<string> orderNoList = orderNos.Split(",").ToList();
foreach (var orderNo in orderNoList)
{
query.Clear();
query.Append(" UPDATE dbo.wms_check_stock SET order_status = @orderStatus,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
query.Append(" WHERE order_no = @orderNo ");
parameters = new DynamicParameters();
parameters.Add("@orderNo", orderNo);
parameters.Add("@orderStatus", 55);
parameters.Add("@updateUserid", userId);
sqlLists.Add(query.ToString());
parametersList.Add(parameters);
query.Clear();
query.Append("UPDATE ss2 SET ss2.enabled = 'Y',ss2.update_userid = @updateUserid,ss2.update_time = CONVERT(varchar(50), GETDATE(), 21) ");
query.Append("FROM sys_stock ss2 ");
query.Append("JOIN ( SELECT max(ss.ruid) AS ruid FROM sys_stock ss ");
query.Append(" JOIN wms_check_stock_list wcsl ON ss.carton_no = wcsl.carton_no ");
query.Append(" WHERE wcsl.order_no = @orderNo ");
query.Append(" AND ss.enabled = 'N' and wcsl.trans_status !=50 ");
query.Append(" GROUP BY ss.carton_no ) b ON ss2.ruid = b.ruid ");
query.Append("WHERE ss2.enabled = 'N' ");
parameters = new DynamicParameters();
parameters.Add("@orderNo", orderNo);
parameters.Add("@updateUserid", userId);
sqlLists.Add(query.ToString());
parametersList.Add(parameters);
query.Clear();
query.Append("INSERT INTO sys_stock_trans ");
query.Append(" (trans_code, carton_no, part_id, part_no, part_spec, src_locate_id, src_locate_name, dest_locate_id, dest_locate_name, ");
query.Append(" old_qty, new_qty, trans_qty, old_status, new_status, unit, factory_id, factory_code, ");
query.Append(" src_erp_warehouse, dest_erp_warehouse, src_warehouse_id, src_warehouse_name, dest_warehouse_id, dest_warehouse_name, ");
query.Append(" src_zone_id, src_zone_name, dest_zone_id, dest_zone_name, create_userid, ref_order_no) ");
query.Append("select @transCode,a.carton_no, a.part_id ,a.part_no ,a.part_spec ,a.locate_id ,a.locate_name ,a.locate_id, a.locate_name, ");
query.Append(" a.qty ,a.qty ,a.qty ,ss.status ,ss.status ,ss.unit ,a.factory_id ,a.factory_code , ");
query.Append(" ss.erp_warehouse ,ss.erp_warehouse ,a.warehouse_id ,a.warehouse_name ,a.warehouse_id ,a.warehouse_name , ");
query.Append(" a.zone_id ,a.zone_name ,a.zone_id ,a.zone_name, @updateUserid, a.order_no ");
query.Append("from wms_check_stock_list a ");
query.Append("join sys_stock ss on a.carton_no = ss.carton_no ");
query.Append("where order_no =@orderNo ");
parameters = new DynamicParameters();
parameters.Add("@orderNo", orderNo);
parameters.Add("@updateUserid", userId);
parameters.Add("@transCode", (int)WmsEnumUtil.TransType.CS_UPDATE);
sqlLists.Add(query.ToString());
parametersList.Add(parameters);
//StringBuilder SqlStringBuilder = new StringBuilder(1024);
//SqlStringBuilder.Append(" UPDATE dbo.wms_check_stock SET order_status = @orderStatus,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
//SqlStringBuilder.Append(" WHERE order_no = @orderNo; ");
//sqlLists.Add(SqlStringBuilder.ToString());
//dynamic = new DynamicParameters();
//dynamic.Add("@orderNo", orderNoList[i]);
//dynamic.Add("@orderStatus", 55);
//dynamic.Add("@updateUserid", userId);
//parameters.Add(dynamic);
//SqlStringBuilder = new StringBuilder(1024);
//SqlStringBuilder.Append("select a.*,b.erp_warehouse as erp_warehouse,c.erp_warehouse as dest_erp_warehouse from [dbo].[wms_check_stock_list] a left join sys_zone b on a.zone_id=b.zone_id left join sys_zone c on a.dest_zone_id=c.zone_id " +
// " where order_no ='" + orderNoList[i] + "' ");
//List<WmsCheckStockList> sysStocks = dbConn.Query<WmsCheckStockList>(SqlStringBuilder.ToString()).ToList();
////解冻不调差,全部解冻
//for (int j = 0; j < sysStocks.Count; j++)
//{
// //零件号为空,是台车,查询最后一个台车解冻
// if (string.IsNullOrEmpty(sysStocks[j].PartNo))
// {
// SqlStringBuilder = new StringBuilder(1024);
// SqlStringBuilder.Append("select top 1 * from sys_stock (nolock) where carton_no ='" + sysStocks[j].CartonNo + "' order by create_time desc ");
// List<SysStock> stockLists = dbConn.Query<SysStock>(SqlStringBuilder.ToString()).ToList();
// if (stockLists.Count > 0)
// {
// SqlStringBuilder = new StringBuilder(1024);
// SqlStringBuilder.Append(" UPDATE sys_stock SET enabled='Y' ,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
// SqlStringBuilder.Append(" WHERE ruid = @ruid; ");
// sqlLists.Add(SqlStringBuilder.ToString());
// dynamic = new DynamicParameters();
// dynamic.Add("@ruid", stockLists[0].Ruid);
// dynamic.Add("@updateUserid", userId);
// parameters.Add(dynamic);
// }
// }
// else//条码正常解冻
// {
// SqlStringBuilder = new StringBuilder(1024);
// SqlStringBuilder.Append(" UPDATE sys_stock SET enabled='Y' ,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
// SqlStringBuilder.Append(" WHERE carton_no = @cartonNo; ");
// sqlLists.Add(SqlStringBuilder.ToString());
// dynamic = new DynamicParameters();
// dynamic.Add("@cartonNo", sysStocks[j].CartonNo);
// dynamic.Add("@updateUserid", userId);
// parameters.Add(dynamic);
// }
// SqlStringBuilder = new StringBuilder(1024);
// SqlStringBuilder.Append("INSERT INTO dbo.sys_stock_trans ( ");
// SqlStringBuilder.Append(" trans_code, carton_no, part_id, ");
// SqlStringBuilder.Append(" part_no, part_spec, src_locate_id, ");
// SqlStringBuilder.Append(" src_locate_name, dest_locate_id, dest_locate_name, ");
// SqlStringBuilder.Append(" old_qty, new_qty, trans_qty, ");
// SqlStringBuilder.Append(" old_status, new_status, unit, ");
// SqlStringBuilder.Append(" factory_id, factory_code, ");
// SqlStringBuilder.Append(" src_erp_warehouse, dest_erp_warehouse, ");
// SqlStringBuilder.Append(" src_warehouse_id, src_warehouse_name, ");
// SqlStringBuilder.Append(" dest_warehouse_id, dest_warehouse_name, ");
// SqlStringBuilder.Append(" src_zone_id, src_zone_name, ");
// SqlStringBuilder.Append(" dest_zone_id, dest_zone_name, enabled, create_userid, ");
// SqlStringBuilder.Append(" create_time, update_userid, update_time, guid,ref_order_no) ");
// SqlStringBuilder.Append("VALUES ");
// SqlStringBuilder.Append("( '270', ");//盘点更新
// SqlStringBuilder.Append(" '" + sysStocks[j].CartonNo + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].PartId + ", ");
// SqlStringBuilder.Append(" '" + sysStocks[j].PartNo + "', ");
// SqlStringBuilder.Append(" N'" + sysStocks[j].PartSpec + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].LocateId == null ? 0 : sysStocks[j].LocateId + ", ");//源库位
// SqlStringBuilder.Append(" '" + sysStocks[j].LocateName + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].LocateId == null ? 0 : sysStocks[j].LocateId + ", ");//目标库位
// SqlStringBuilder.Append(" '" + sysStocks[j].LocateName + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].Qty + ",");
// SqlStringBuilder.Append(" " + sysStocks[j].Qty + ",");
// SqlStringBuilder.Append(" " + sysStocks[j].Qty + ",");
// SqlStringBuilder.Append(" '" + sysStocks[j].SnStatus + "', ");
// SqlStringBuilder.Append(" '" + sysStocks[j].SnStatus + "', ");
// SqlStringBuilder.Append(" '" + sysStocks[j].Unit + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].FactoryId + ", ");
// SqlStringBuilder.Append(" '" + sysStocks[j].FactoryCode + "',");
// SqlStringBuilder.Append(" '" + sysStocks[j].ErpWarehouse + "',");
// SqlStringBuilder.Append(" '" + sysStocks[j].DestErpWarehouse + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].WarehouseId == null ? 0 : sysStocks[j].WarehouseId + ", ");
// SqlStringBuilder.Append(" '" + sysStocks[j].WarehouseName + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].WarehouseId == null ? 0 : sysStocks[j].WarehouseId + ", ");
// SqlStringBuilder.Append(" '" + sysStocks[j].WarehouseName + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].ZoneId == null ? 0 : sysStocks[j].ZoneId + ", ");
// SqlStringBuilder.Append(" '" + sysStocks[j].ZoneName + "', ");
// SqlStringBuilder.Append(" " + sysStocks[j].ZoneId == null ? 0 : sysStocks[j].ZoneId + ", ");
// SqlStringBuilder.Append(" '" + sysStocks[j].ZoneName + "', ");
// SqlStringBuilder.Append(" 'Y', ");
// SqlStringBuilder.Append(" " + userId + ", ");
// SqlStringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
// SqlStringBuilder.Append(" " + userId + ", ");
// SqlStringBuilder.Append(" CONVERT(VARCHAR(20),GETDATE(),21), ");
// SqlStringBuilder.Append(" NEWID() ,");
// SqlStringBuilder.Append(" '" + sysStocks[j].OrderNo + "' ");
// SqlStringBuilder.Append(" ) ; ");
// sqlLists.Add(SqlStringBuilder.ToString());
// dynamic = new DynamicParameters();
// dynamic.Add("@cartonNo", sysStocks[j].CartonNo);
// parameters.Add(dynamic);
//}
}
bool flag = ExecuteTransaction(sqlLists, parametersList);
if (flag == true)
{
result.Add("status", 1);
result.Add("message", "整单解冻不调差执行成功");
}
else
{
result.Add("status", 0);
result.Add("message", "整单解冻不调差执行失败");
}
return result;
}
}
//开始盘点
public Hashtable onBeginCycle(String orderNo, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
List<string> sqlLists = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
DynamicParameters dynamic = new DynamicParameters();
List<string> orderNoList = orderNo.Split(",").ToList();
for (int m = 0; m < orderNoList.Count; m++)
{
String sqlStringType = " SELECT * FROM dbo.wms_check_stock (nolock) where order_no='" + orderNoList[m] + "'";
List<WmsCheckStock> wmsChecks = dbConn.Query<WmsCheckStock>(sqlStringType).ToList();
if (wmsChecks.Count > 0)
{
if (wmsChecks[0].OrderType != "10")
{
result.Add("status", 0);
result.Add("message", "开启盘点失败,盘点单" + orderNoList[m] + "不处于创建状态!");
return result;
}
}
String strSql = " SELECT * FROM dbo.wms_check_stock_range (nolock) where order_no='" + orderNoList[m] + "'";
List<WmsCheckStockRange> checkStockRanges = dbConn.Query<WmsCheckStockRange>(strSql).ToList();
List<WmsCheckStockList> checkStockListParams = new List<WmsCheckStockList>();
#region 逐条更改
//for (int i = 0; i < checkStockRanges.Count; i++)
//{
// //开始盘点,状态未冻结的条码
// List<SysStock> sysStocksInfo = new List<SysStock>();
// if (string.IsNullOrEmpty(checkStockRanges[i].PartNo))//零件号为空
// {
// if (checkStockRanges[i].ZoneId != 0)
// {
// string sql = "select * from sys_stock (nolock) where zone_id='" + checkStockRanges[i].ZoneId + "' and zone_name='" + checkStockRanges[i].ZoneName + "' and enabled='Y' and factory_code='" + wmsChecks[0].FactoryCode + "' ";
// sysStocksInfo = dbConn.Query<SysStock>(sql).ToList();
// }
// else
// {
// string sql = "select * from sys_stock (nolock) where locate_id='" + checkStockRanges[i].LocateId + "' and locate_name='" + checkStockRanges[i].LocateName + "' and enabled='Y' and factory_code='" + wmsChecks[0].FactoryCode + "' ";
// sysStocksInfo = dbConn.Query<SysStock>(sql).ToList();
// }
// }
// else
// {
// if (checkStockRanges[i].ZoneId != 0)
// {
// string sql = "select * from sys_stock (nolock) where zone_id='" + checkStockRanges[i].ZoneId + "' and zone_name='" + checkStockRanges[i].ZoneName + "' and part_no='" + checkStockRanges[i].PartNo + "' and enabled='Y' and factory_code='" + wmsChecks[0].FactoryCode + "'";
// sysStocksInfo = dbConn.Query<SysStock>(sql).ToList();
// }
// else if (checkStockRanges[i].LocateId != 0)
// {
// string sql = "select * from sys_stock (nolock) where locate_id='" + checkStockRanges[i].LocateId + "' and locate_name='" + checkStockRanges[i].LocateName + "' and part_no='" + checkStockRanges[i].PartNo + "' and enabled='Y' and factory_code='" + wmsChecks[0].FactoryCode + "'";
// sysStocksInfo = dbConn.Query<SysStock>(sql).ToList();
// }
// else
// {
// string sql = "select * from sys_stock (nolock) where part_no='" + checkStockRanges[i].PartNo + "' and enabled='Y' and factory_code='" + wmsChecks[0].FactoryCode + "'";
// sysStocksInfo = dbConn.Query<SysStock>(sql).ToList();
// }
// }
// for (int k = 0; k < sysStocksInfo.Count; k++)
// {
// if (sysStocksInfo[k].Status != (int)WmsEnumUtil.StockStatus.REJECTION)
// {
// WmsCheckStockList checkStockListInfo = new WmsCheckStockList();
// checkStockListInfo.OrderNo = orderNoList[m];
// checkStockListInfo.WarehouseId = sysStocksInfo[k].WarehouseId;
// checkStockListInfo.WarehouseName = sysStocksInfo[k].WarehouseName;
// checkStockListInfo.ZoneId = sysStocksInfo[k].ZoneId;
// checkStockListInfo.ZoneName = sysStocksInfo[k].ZoneName;
// checkStockListInfo.LocateId = sysStocksInfo[k].LocateId;
// checkStockListInfo.LocateName = sysStocksInfo[k].LocateName;
// checkStockListInfo.PartId = sysStocksInfo[k].PartId;
// checkStockListInfo.PartNo = sysStocksInfo[k].PartNo;
// checkStockListInfo.PartSpec = sysStocksInfo[k].PartSpec;
// checkStockListInfo.CartonNo = sysStocksInfo[k].CartonNo;
// checkStockListInfo.Qty = sysStocksInfo[k].Qty;
// checkStockListInfo.FactQty = 0;
// checkStockListInfo.Unit = sysStocksInfo[k].Unit;
// checkStockListInfo.SnStatus = sysStocksInfo[k].Status.ToString();
// checkStockListInfo.TransStatus = 10;
// checkStockListInfo.FactoryId = sysStocksInfo[k].FactoryId;
// checkStockListInfo.FactoryCode = sysStocksInfo[k].FactoryCode;
// checkStockListInfo.CreateUserId = Convert.ToInt32(userId);
// checkStockListParams.Add(checkStockListInfo);
// }
// if (wmsChecks[0].OrderType == "10")
// {
// string updateStatus = "update sys_stock set enabled='N',update_userid=@updateUserid , update_time = CONVERT(varchar(50), GETDATE(), 21) where ruid=@ruid";
// sqlLists.Add(updateStatus);
// dynamic = new DynamicParameters();
// dynamic.Add("@updateUserid", userId);
// dynamic.Add("@ruid", sysStocksInfo[k].Ruid);
// parameters.Add(dynamic);
// int updateStatusresult = dbConn.Execute(updateStatus);
// }
// }
//}
//for (int i = 0; i < checkStockListParams.Count; i++)
//{
// StringBuilder SqlStringBuilder = new StringBuilder(1024);
// SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock_list(order_no,warehouse_id,warehouse_name,zone_id,zone_name,locate_id,locate_name,part_id,part_no,part_spec,carton_no,qty,fact_qty,unit,sn_status,trans_status,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
// SqlStringBuilder.Append(" VALUES(@orderNo,@warehouseId,@warehouseName,@zoneId,@zoneName,@locateId,@locateName,@partId,@partNo,@partSpec,@cartonNo,@qty,@factQty,@unit,@snStatus,@transStatus, ");
// SqlStringBuilder.Append(" @factoryId,@factoryCode,'Y',@createUserid,CONVERT(varchar(50), GETDATE(), 21),NEWID()) ");
// sqlLists.Add(SqlStringBuilder.ToString());
// dynamic = new DynamicParameters();
// dynamic.Add("@orderNo", checkStockListParams[i].OrderNo);
// dynamic.Add("@warehouseId", checkStockListParams[i].WarehouseId);
// dynamic.Add("@warehouseName", checkStockListParams[i].WarehouseName);
// dynamic.Add("@zoneId", checkStockListParams[i].ZoneId);
// dynamic.Add("@zoneName", checkStockListParams[i].ZoneName);
// dynamic.Add("@locateId", checkStockListParams[i].LocateId);
// dynamic.Add("@locateName", checkStockListParams[i].LocateName);
// dynamic.Add("@partId", checkStockListParams[i].PartId);
// dynamic.Add("@partNo", checkStockListParams[i].PartNo);
// dynamic.Add("@partSpec", checkStockListParams[i].PartSpec);
// dynamic.Add("@cartonNo", checkStockListParams[i].CartonNo);
// dynamic.Add("@qty", checkStockListParams[i].Qty);
// dynamic.Add("@factQty", checkStockListParams[i].FactQty);
// dynamic.Add("@unit", checkStockListParams[i].Unit);
// dynamic.Add("@snStatus", checkStockListParams[i].SnStatus);
// dynamic.Add("@transStatus", checkStockListParams[i].TransStatus);
// dynamic.Add("@factoryId", checkStockListParams[i].FactoryId);
// dynamic.Add("@factoryCode", checkStockListParams[i].FactoryCode);
// dynamic.Add("@createUserid", checkStockListParams[i].CreateUserId);
// parameters.Add(dynamic);
//}
#endregion
#region 批量更改
for (int i = 0; i < checkStockRanges.Count; i++)
{
//开始盘点,状态未冻结的条码 写入盘点清单表
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.wms_check_stock_list(order_no,warehouse_id,warehouse_name,zone_id,zone_name,locate_id,locate_name,part_id,part_no,part_spec,carton_no,qty,fact_qty,unit,sn_status,trans_status,factory_id,factory_code,enabled,create_userid,create_time,guid) ");
SqlStringBuilder.Append("select @orderNo as order_no,warehouse_id,warehouse_name,zone_id,zone_name,locate_id,locate_name,part_id,part_no,part_spec,carton_no,qty,0,unit,Status,10,Factory_id,Factory_code,enabled,@updateUserid as create_userid,CONVERT(varchar(50), GETDATE(), 21) as create_time,NEWID() as guid from sys_stock (nolock) as aaa where aaa.enabled='Y' and aaa.factory_code=@factoryCode and ( aaa.status=@status40 or aaa.status=@status50 or aaa.status=@status60 or aaa.status=@status70 or aaa.status=@status80 or aaa.status=@status90 ) ");
if (checkStockRanges[i].ZoneId != 0)
SqlStringBuilder.Append(" and aaa.zone_id=@zoneId and aaa.zone_name=@zoneName ");
if (checkStockRanges[i].LocateId != 0)
SqlStringBuilder.Append(" and aaa.locate_id=@locateId and aaa.locate_name=@locateName ");
if (!string.IsNullOrEmpty(checkStockRanges[i].PartNo))
SqlStringBuilder.Append(" and aaa.part_no=@partNo ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@updateUserid", userId);
dynamic.Add("@orderNo", orderNoList[m]);
dynamic.Add("@zoneId", checkStockRanges[i].ZoneId);
dynamic.Add("@zoneName", checkStockRanges[i].ZoneName);
dynamic.Add("@locateId", checkStockRanges[i].LocateId);
dynamic.Add("@locateName", checkStockRanges[i].LocateName);
dynamic.Add("@partNo", string.IsNullOrEmpty(checkStockRanges[i].PartNo) ? "" : checkStockRanges[i].PartNo);
dynamic.Add("@factoryCode", wmsChecks[0].FactoryCode);
dynamic.Add("@status40", (int)WmsEnumUtil.StockStatus.WAITING_INSTOCK);
dynamic.Add("@status50", (int)WmsEnumUtil.StockStatus.INSTOCKED);
dynamic.Add("@status60", (int)WmsEnumUtil.StockStatus.BATCHED);
dynamic.Add("@status70", (int)WmsEnumUtil.StockStatus.ONLINED);
dynamic.Add("@status80", (int)WmsEnumUtil.StockStatus.NC_QUARANTINE);
dynamic.Add("@status90", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
parameters.Add(dynamic);
#region 记录条码冻结事务
//记录条码冻结事务
SqlStringBuilder = new StringBuilder();
SqlStringBuilder.Append(" INSERT INTO dbo.sys_stock_trans ");
SqlStringBuilder.Append(@" select @trans_code as trans_code,carton_no,part_id,part_no,part_spec,locate_id as src_locate_id,locate_name as src_locate_name,locate_id as dest_locate_id,
locate_name as dest_locate_name, qty as old_qty, qty as new_qty, qty as trans_qty, status as old_status, status as new_status, qms_status as old_qms_status, qms_status as new_qms_status,
unit, factory_id, factory_code, erp_warehouse as src_erp_warehouse, erp_warehouse as dest_erp_warehouse, warehouse_id as src_warehouse_id, warehouse_name as src_warehouse_name,
warehouse_id as dest_warehouse_id, warehouse_name as dest_warehouse_name, zone_id as src_zone_id, zone_name as src_zone_name, zone_id as dest_zone_id, zone_name as dest_zone_name,
enabled, @updateUserid, CONVERT(varchar(50), GETDATE(), 21) as update_time, create_userid, CONVERT(varchar(50), GETDATE(), 21) as create_time, NEWID() guid, null, @ref_order_no
from sys_stock ");
SqlStringBuilder.Append(" where enabled='Y' and factory_code=@factory_code and ( status=@status40 or status=@status50 or status=@status60 or status=@status70 or status=@status80 or status=@status90 ) ");
if (checkStockRanges[i].ZoneId != 0)
SqlStringBuilder.Append(" and zone_id=@zoneId and zone_name=@zoneName ");
if (checkStockRanges[i].LocateId != 0)
SqlStringBuilder.Append(" and locate_id=@locateId and locate_name=@locateName ");
if (!string.IsNullOrEmpty(checkStockRanges[i].PartNo))
SqlStringBuilder.Append(" and part_no=@partNo ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@trans_code", (int)WmsEnumUtil.TransType.CS_FREEZE);
dynamic.Add("@updateUserid", userId);
dynamic.Add("@zoneId", checkStockRanges[i].ZoneId);
dynamic.Add("@zoneName", checkStockRanges[i].ZoneName);
dynamic.Add("@locateId", checkStockRanges[i].LocateId);
dynamic.Add("@locateName", checkStockRanges[i].LocateName);
dynamic.Add("@partNo", string.IsNullOrEmpty(checkStockRanges[i].PartNo) ? "" : checkStockRanges[i].PartNo);
dynamic.Add("@factory_code", wmsChecks[0].FactoryCode);
dynamic.Add("@ref_order_no", orderNo);
dynamic.Add("@status40", (int)WmsEnumUtil.StockStatus.WAITING_INSTOCK);
dynamic.Add("@status50", (int)WmsEnumUtil.StockStatus.INSTOCKED);
dynamic.Add("@status60", (int)WmsEnumUtil.StockStatus.BATCHED);
dynamic.Add("@status70", (int)WmsEnumUtil.StockStatus.ONLINED);
dynamic.Add("@status80", (int)WmsEnumUtil.StockStatus.NC_QUARANTINE);
dynamic.Add("@status90", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
parameters.Add(dynamic);
#endregion
#region 将条码冻结
//将条码冻结
SqlStringBuilder = new StringBuilder();
SqlStringBuilder.Append("update a set a.enabled='N',a.update_userid=@updateUserid , a.update_time = CONVERT(varchar(50), GETDATE(), 21) from sys_stock a,sys_stock b where a.ruid=b.ruid and b.enabled='Y' and b.factory_code=@factory_code and ( b.status=@status40 or b.status=@status50 or b.status=@status60 or b.status=@status70 or b.status=@status80 or b.status=@status90 ) ");
if (checkStockRanges[i].ZoneId != 0)
SqlStringBuilder.Append(" and b.zone_id=@zoneId and b.zone_name=@zoneName ");
if (checkStockRanges[i].LocateId != 0)
SqlStringBuilder.Append(" and b.locate_id=@locateId and b.locate_name=@locateName ");
if (!string.IsNullOrEmpty(checkStockRanges[i].PartNo))
SqlStringBuilder.Append(" and b.part_no=@partNo ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@updateUserid", userId);
dynamic.Add("@zoneId", checkStockRanges[i].ZoneId);
dynamic.Add("@zoneName", checkStockRanges[i].ZoneName);
dynamic.Add("@locateId", checkStockRanges[i].LocateId);
dynamic.Add("@locateName", checkStockRanges[i].LocateName);
dynamic.Add("@partNo", string.IsNullOrEmpty(checkStockRanges[i].PartNo) ? "" : checkStockRanges[i].PartNo);
dynamic.Add("@factory_code", wmsChecks[0].FactoryCode);
dynamic.Add("@status40", (int)WmsEnumUtil.StockStatus.WAITING_INSTOCK);
dynamic.Add("@status50", (int)WmsEnumUtil.StockStatus.INSTOCKED);
dynamic.Add("@status60", (int)WmsEnumUtil.StockStatus.BATCHED);
dynamic.Add("@status70", (int)WmsEnumUtil.StockStatus.ONLINED);
dynamic.Add("@status80", (int)WmsEnumUtil.StockStatus.NC_QUARANTINE);
dynamic.Add("@status90", (int)WmsEnumUtil.StockStatus.NC_INSTOCK);
parameters.Add(dynamic);
#endregion
}
#endregion
string updateOrderStatus = "update wms_check_stock set order_status=@orderStatus ,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) where order_no=@orderNo ";
sqlLists.Add(updateOrderStatus);
dynamic = new DynamicParameters();
dynamic.Add("@orderStatus", 20);
dynamic.Add("@updateUserid", userId);
dynamic.Add("@orderNo", orderNoList[m]);
parameters.Add(dynamic);
}
bool flag = ExecuteTransaction(sqlLists, parameters);
if (flag == true)
{
result.Add("status", 1);
result.Add("message", "开启盘点成功");
}
else
{
result.Add("status", 0);
result.Add("message", "开启盘点失败");
}
return result;
}
}
public Hashtable onCloseCycle(string orderno, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
List<string> sqlLists = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
DynamicParameters dynamic = new DynamicParameters();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
List<string> orders = orderno.Split(",").ToList();
for (int i = 0; i < orders.Count; i++)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" UPDATE dbo.wms_check_stock SET order_status = @orderStatus,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append(" WHERE order_no = @orderNo; ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderStatus", 60);
dynamic.Add("@updateUserid", userId);
dynamic.Add("@orderNo", orders[i]);
parameters.Add(dynamic);
}
bool flag = ExecuteTransaction(sqlLists, parameters);
if (flag == true)
{
result.Add("status", 1);
result.Add("message", "盘点指令关闭完成");
}
else
{
result.Add("status", 0);
result.Add("message", "盘点指令关闭失败");
}
return result;
}
}
//完成盘点
public Hashtable onCompleteCycle(string orderno, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
List<string> sqlStrings = new List<string>();
List<DynamicParameters> parameterList = new List<DynamicParameters>();
DynamicParameters dynamic = new DynamicParameters();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
List<string> orderNos = orderno.Split(",").ToList();
for (int i = 0; i < orderNos.Count; i++)
{
string sql = "select * from sap_cyco where IBLNR = @orderNo";
List<SapCyco> sapCycos = dbConn.Query<SapCyco>(sql, new { orderNO = orderNos[i] }).ToList();//判断接口接收单号,回传盘点结果
if (sapCycos.Count > 0)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT ISNULL(CONVERT(INT, SUM(b.fact_qty)),0) fact_qty,c.matnr as part_no,a.erp_warehouse,a.factory_id,a.factory_Code,a.order_no,c.ZEILI,b.unit ");
SqlStringBuilder.Append(" FROM dbo.sap_cyco c ");
SqlStringBuilder.Append(" LEFT JOIN dbo.wms_check_stock a ON c.IBLNR=a.order_no ");
SqlStringBuilder.Append(" LEFT JOIN dbo.wms_check_stock_list b ON a.order_no=b.order_no and c.matnr=b.part_no ");
SqlStringBuilder.Append(" WHERE a.order_no = @orderNo ");
SqlStringBuilder.Append(" and a.order_status in ('20','30') and a.enabled='Y' ");
SqlStringBuilder.Append(" GROUP BY a.erp_warehouse,a.factory_id,a.factory_Code,a.order_no,c.matnr,c.ZEILI,b.unit ");
List<WmsCheckStock> checkStocks = dbConn.Query<WmsCheckStock>(SqlStringBuilder.ToString(), new { orderNo = orderNos[i] }).ToList();
if (checkStocks.Count > 0)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.WMS_CYCR(IBLNR,ZEILI,MATNR,WERKS,LGORT,MENGE,MEINS,GJAHR ");
SqlStringBuilder.Append(" ,SID,RECTIM,SYNFLG,GUID) ");
SqlStringBuilder.Append(" VALUES(@IBLNR,@ZEILI,@MATNR,@WERKS,@LGORT,@MENGE,@MEINS,@GJAHR ");
SqlStringBuilder.Append(" ,@SID,@RECTIM,@SYNFLG,@GUID) ");
string sid = Guid.NewGuid().ToString().Replace("-", "");
for (int j = 0; j < checkStocks.Count; j++)
{
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@IBLNR", checkStocks[j].OrderNo);//盘点凭证号
parameters.Add("@ZEILI", checkStocks[j].ZEILI);//盘点单行号
parameters.Add("@MATNR", checkStocks[j].PartNo);//物料编码
parameters.Add("@WERKS", checkStocks[j].FactoryCode);//工厂
parameters.Add("@LGORT", checkStocks[j].ErpWarehouse);//库存地点
parameters.Add("@MENGE", checkStocks[j].FactQty);//盘点数量
parameters.Add("@MEINS", checkStocks[j].Unit);//计量单位
parameters.Add("@GJAHR", DateTime.Now.ToString("yyyy"));
parameters.Add("@SID", sid);
parameters.Add("@RECTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
parameters.Add("@SYNFLG", "N");
parameters.Add("@GUID", Guid.NewGuid().ToString());
sqlStrings.Add(SqlStringBuilder.ToString());
parameterList.Add(parameters);
}
}
}
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" UPDATE dbo.wms_check_stock SET order_status = @orderStatus,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append(" WHERE order_no = @orderNo; ");
sqlStrings.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderStatus", 40);
dynamic.Add("@updateUserid", userId);
dynamic.Add("@orderNo", orderNos[i]);
parameterList.Add(dynamic);
}
bool flag = ExecuteTransaction(sqlStrings, parameterList);
if (flag == true)
{
result.Add("status", 1);
result.Add("message", "完成盘点执行成功");
}
else
{
result.Add("status", 0);
result.Add("message", "完成盘点执行失败");
}
return result;
}
}
//复盘
public Hashtable onReplay(string orderNo, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
List<string> sqlLists = new List<string>();
List<DynamicParameters> parameters = new List<DynamicParameters>();
DynamicParameters dynamic = new DynamicParameters();
List<string> orderNoList = orderNo.Split(",").ToList();
for (int i = 0; i < orderNoList.Count; i++)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("update wms_check_stock_list set up_trans_status=trans_status,trans_status='10',up_fact_qty=fact_qty,fact_qty='0' ");
SqlStringBuilder.Append(",up_dest_warehouse_id=dest_warehouse_id,dest_warehouse_id='0',up_dest_warehouse_name=dest_warehouse_name,dest_warehouse_name='' ");
SqlStringBuilder.Append(",up_dest_zone_id=dest_zone_id,dest_zone_id='0',up_dest_zone_name=dest_zone_name,dest_zone_name='' ");
SqlStringBuilder.Append(",up_dest_locate_id=dest_locate_id,dest_locate_id='0',up_dest_locate_name=dest_locate_name,dest_locate_name='' ");
SqlStringBuilder.Append(",update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) ");
SqlStringBuilder.Append("where order_no=@orderNo ");
sqlLists.Add(SqlStringBuilder.ToString());
dynamic = new DynamicParameters();
dynamic.Add("@orderNo", orderNoList[i]);
dynamic.Add("@updateUserid", userId);
parameters.Add(dynamic);
string updateOrderStatus = "update wms_check_stock set order_status=@orderStatus ,update_userid=@updateUserid, update_time = CONVERT(varchar(50), GETDATE(), 21) where order_no=@orderNo";
sqlLists.Add(updateOrderStatus);
dynamic = new DynamicParameters();
dynamic.Add("@orderStatus", 20);
dynamic.Add("@updateUserid", userId);
dynamic.Add("@orderNo", orderNoList[i]);
parameters.Add(dynamic);
}
bool flag = ExecuteTransaction(sqlLists, parameters);
if (flag == true)
{
result.Add("status", 1);
result.Add("message", "复盘执行成功");
}
else
{
result.Add("status", 0);
result.Add("message", "复盘执行失败");
}
return result;
}
}
public int onClose(String ids, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String delStr = "update wms_check_stock set order_status='60',update_userid=" + userId + ", update_time = CONVERT(varchar(50), GETDATE(), 21) WHERE ruid in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
//启用
public int EnableData(String ids, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String delStr = "update wms_check_stock set Enabled='Y',update_userid=" + userId + ", update_time = CONVERT(varchar(50), GETDATE(), 21) WHERE ruid in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
//禁用
public int DisableData(String ids, string userId)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String delStr = "update wms_check_stock set Enabled='N',update_userid=" + userId + ", update_time = CONVERT(varchar(50), GETDATE(), 21) WHERE ruid in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
public List<CycleCountList> getCheckStockListByExportData(string strWhere)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" select a.*,b.enum_desc as sn_status_desc,c.enum_desc as trans_status_desc,cp.enum_desc as up_trans_status_desc from wms_check_stock_list a (nolock) " +
" LEFT JOIN sys_stock k (nolock) on a.carton_no = k.carton_no LEFT JOIN dbo.sys_enum b ON b.enum_type = 'sys_stock_status' AND k.status = b.enum_value " +
" LEFT JOIN dbo.sys_enum c ON c.enum_type = 'wms_check_stock_list_trans_status' AND a.trans_status = c.enum_value " +
" LEFT JOIN dbo.sys_enum cp ON cp.enum_type = 'wms_check_stock_list_trans_status' AND a.up_trans_status = cp.enum_value ");
SqlStringBuilder.Append(" where " + strWhere);
List<CycleCountList> result = dbConn.Query<CycleCountList>(SqlStringBuilder.ToString()).ToList();
return result;
}
}
#endregion 成员方法
}
}