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 { /// /// 数据访问类 /// public class CycleCountManageRepository : BaseRepository, ICycleCountManageRepository { public CycleCountManageRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext) { } #region 成员方法 /// /// 盘点单 /// 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 dataList = dbConn.Query("Com_Pagination", Params, commandType: CommandType.StoredProcedure).ToList(); result.Add("dataList", dataList); result.Add("totalCount", Params.Get("@TotalCount")); return result; } } /// /// 盘点单明细 /// public List 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } //盘点单零件号 public List 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } //盘点单存储区 public List 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } //盘点单库位 public List 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } //盘点单范围 public List 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } public List getCheckStockByOrderNo(string orderNo) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); String strSql = "select * from wms_check_stock (nolock) where order_no='" + orderNo + "'"; List result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(strSql).ToList(); return result; } } public List 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 result = dbConn.Query(sql).ToList(); return result; } } public List 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 result = dbConn.Query(sql).ToList(); return result; } } public List 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 result = dbConn.Query(sql).ToList(); return result; } } /// /// 获取下拉框菜单数据 这里显示的是待添加的厂区信息,厂区名称 /// /// public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List 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 result = dbConn.Query(sql, param).ToList(); return result; } } public List 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 result = dbConn.Query(sql, param).ToList(); return result; } } //根据库区查询零件号 public List getPartNoByZoneIds(string zoneIds) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { List result = new List(); 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(sql).ToList(); } return result; } } //根据库区查询零件号 public List getPartNoByLocateIds(string locateIds) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); List result = new List(); 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(sql).ToList(); } return result; } } public List getPartNoByZoneIdsOrLocateIds(string zoneIds, string locateIds) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); List result = new List(); 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(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(sql).ToList(); } return result; } } //根据库区查询零件号 public List getPartNoByZoneId(string zoneId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { List result = new List(); 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(sql).ToList(); } return result; } } //根据库区查询零件号 public List getPartNoByLocateId(string locateId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); List result = new List(); 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(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 dataList = dbConn.Query("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 partlists = dbConn.Query(sql).ToList(); result.Add("dataList", partlists); result.Add("totalCount", Params.Get("@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 dataList = dbConn.Query("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 zonelists = dbConn.Query(sql).ToList(); result.Add("dataList", zonelists); result.Add("totalCount", Params.Get("@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 dataList = dbConn.Query("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 locatelists = dbConn.Query(sql).ToList(); result.Add("dataList", locatelists); result.Add("totalCount", Params.Get("@TotalCount")); return result; } } public List 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 result = dbConn.Query(sql).ToList(); return result; } } /// /// 获取订单编号 /// /// public string GetOrderNo() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); DynamicParameters parameter = new DynamicParameters(); parameter.Add("@orderNo", null, DbType.String, ParameterDirection.Output, 255); List depts = dbConn.Query("sys_create_sapo_no", parameter, commandType: CommandType.StoredProcedure).ToList(); return parameter.Get("@orderNo"); } } /// /// 插入菜单数据 /// /// /// public bool saveCycleCountManage(WmsCheckStock checkStockParams, List checkStockPartParams, List checkStockZoneParams, List checkStockLocateParams, List checkStockRangeParams) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { string orderNo = GetOrderNo(); checkStockParams.OrderNo = orderNo; List sqlLists = new List(); List parameters = new List(); 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 sqlStrings, List 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 sqlLists = new List(); List 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 sysStocks = dbConn.Query(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 stockLists = dbConn.Query(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(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; } } /// /// 获得调差指令 /// /// /// /// public List 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 result = dbConn.Query(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(SqlStringBuilder.ToString()); return result; } } //整单解冻不调差 public Hashtable onNoAdjustment(String orderNos, string userId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); Hashtable result = new Hashtable(); List sqlLists = new List(); List parametersList = new List(); StringBuilder query = new StringBuilder(1024); DynamicParameters parameters = new DynamicParameters(); List 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 sysStocks = dbConn.Query(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 stockLists = dbConn.Query(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 sqlLists = new List(); List parameters = new List(); DynamicParameters dynamic = new DynamicParameters(); List 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 wmsChecks = dbConn.Query(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 checkStockRanges = dbConn.Query(strSql).ToList(); List checkStockListParams = new List(); #region 逐条更改 //for (int i = 0; i < checkStockRanges.Count; i++) //{ // //开始盘点,状态未冻结的条码 // List sysStocksInfo = new List(); // 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(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(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(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(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(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 sqlLists = new List(); List parameters = new List(); DynamicParameters dynamic = new DynamicParameters(); StringBuilder SqlStringBuilder = new StringBuilder(1024); List 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 sqlStrings = new List(); List parameterList = new List(); DynamicParameters dynamic = new DynamicParameters(); StringBuilder SqlStringBuilder = new StringBuilder(1024); List orderNos = orderno.Split(",").ToList(); for (int i = 0; i < orderNos.Count; i++) { string sql = "select * from sap_cyco where IBLNR = @orderNo"; List sapCycos = dbConn.Query(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 checkStocks = dbConn.Query(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 sqlLists = new List(); List parameters = new List(); DynamicParameters dynamic = new DynamicParameters(); List 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 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 result = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return result; } } #endregion 成员方法 } }