using Dapper; using Estsh.Core.Dapper; using Estsh.Core.Model.EnumUtil; using Estsh.Core.Model.Result; using Estsh.Core.Models; using Estsh.Core.Repository.IRepositories; using System.Collections; using System.Data; using System.Text; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:移动出库单管理 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Repositories { /// /// 数据访问类 /// public class MovementInstockManageRepository : BaseRepository, IMovementInstockManageRepository { public MovementInstockManageRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext) { } #region 成员方法 /// /// 获取分页数据列表 /// public Hashtable getMoveHeaderListByPage(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_instock a (nolock) left join sys_enum b (nolock) on b.enum_type='wms_instock_order_type' and a.order_type=b.enum_value left join sys_enum c (nolock) on c.enum_type='wms_move_header_order_status' and a.order_status=c.enum_value " + " left join sys_vendor v (nolock) on a.vendor_id=v.vendor_id left join sys_customer cu (nolock) on a.customer_id=cu.customer_id "); Params.Add("@Column", " a.ruid,a.order_no,a.order_type,b.enum_desc as order_type_desc,a.order_status,c.enum_desc as order_status_desc,a.ref_order_no,a.factory_id,a.factory_code,a.enabled,a.vendor_id,a.vendor_code,v.vendor_name,a.customer_id,a.customer_code,cu.customer_name,a.create_time "); 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(); result.Add("dataList", dataList); result.Add("totalCount", Params.Get("@TotalCount")); return result; } } /// /// 获取分页数据列表 /// public Hashtable getMoveDetailListByPage(string strWhere) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); Hashtable result = new Hashtable(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select a.ruid,a.order_no,a.item_no,a.part_id,a.part_no,a.part_spec,a.qty,a.rec_qty,a.unit,a.plan_date, "); SqlStringBuilder.Append(" a.plan_time,b.enum_desc as item_status_desc,item_status,a.dest_warehouse_id,a.dest_warehouse_name, "); SqlStringBuilder.Append(" a.dest_zone_id,a.dest_zone_name,a.dest_erp_warehouse,a.factory_id,a.factory_code,a.enabled from "); SqlStringBuilder.Append(" wms_instock_detail a (nolock) left join sys_enum b (nolock) on b.enum_type='wms_move_detail_item_status' and a.item_status=convert(int,b.enum_value) where " + strWhere); List dataList = dbConn.Query(SqlStringBuilder.ToString()).ToList(); result.Add("dataList", dataList); result.Add("totalCount", dataList.Count()); return result; } } /// /// 获取分页数据列表 /// public Hashtable getMoveSnListByPage(string strWhere) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); Hashtable result = new Hashtable(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select a.ruid,a.order_no,a.item_no,a.part_id,a.part_no,a.part_spec,p.part_spec2,a.carton_no,a.qty,a.unit,b.enum_desc as status_desc,a.status, a.factory_id,a.factory_code,a.enabled "); SqlStringBuilder.Append(" ,cd.plan_date,cd.plan_time,c.vendor_code,d.vendor_name,c.customer_code,cu.customer_name "); SqlStringBuilder.Append(" from wms_instock_sn a (nolock) left join sys_enum b on b.enum_type='wms_move_sn_status' and a.status=convert(int,b.enum_value) "); SqlStringBuilder.Append(" left join wms_instock c (nolock) on a.order_no=c.order_no "); SqlStringBuilder.Append(" left join wms_instock_detail cd (nolock) on c.order_no=cd.order_no and cd.part_id=a.part_id "); SqlStringBuilder.Append(" left join sys_vendor d (nolock) on c.vendor_id=d.vendor_id "); SqlStringBuilder.Append(" left join sys_customer cu (nolock) on c.customer_id=cu.customer_id left join sys_part p (nolock) on a.part_id=p.part_id "); SqlStringBuilder.Append(" where " + strWhere); List dataList = dbConn.Query(SqlStringBuilder.ToString()).ToList(); result.Add("dataList", dataList); result.Add("totalCount", dataList.Count()); return result; } } public List getInstockListByPrintCount(string strWhere) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); Hashtable result = new Hashtable(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select count(1) row_count from wms_instock_sn a (nolock) left join sys_enum b on b.enum_type='wms_move_sn_status' and a.status=convert(int,b.enum_value) "); SqlStringBuilder.Append(" left join wms_instock c (nolock) on a.order_no=c.order_no "); SqlStringBuilder.Append(" left join wms_instock_detail cd (nolock) on c.order_no=cd.order_no and cd.part_id=a.part_id "); SqlStringBuilder.Append(" left join sys_vendor d (nolock) on c.vendor_id=d.vendor_id "); SqlStringBuilder.Append(" left join sys_customer cu (nolock) on c.customer_id=cu.customer_id left join sys_part p (nolock) on a.part_id=p.part_id "); SqlStringBuilder.Append(" where " + strWhere); List dataList = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return dataList; } } public List getInstockListByPrintRange(string strWhere,string endrowCount, string rowCount) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); Hashtable result = new Hashtable(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select * from ( "); SqlStringBuilder.Append(" select top "+ rowCount + " a.* "); SqlStringBuilder.Append(" from (select top "+ endrowCount + " a.ruid,a.order_no,a.item_no,a.part_id,a.part_no,a.part_spec,p.part_spec2,a.carton_no,a.qty,a.unit,b.enum_desc as status_desc,a.status, a.factory_id,a.factory_code,a.enabled "); SqlStringBuilder.Append(" ,cd.plan_date,cd.plan_time,c.vendor_code,d.vendor_name,c.customer_code,cu.customer_name,p.default_box_qty from wms_instock_sn a (nolock) left join sys_enum b on b.enum_type='wms_move_sn_status' and a.status=convert(int,b.enum_value) "); SqlStringBuilder.Append(" left join wms_instock c (nolock) on a.order_no=c.order_no "); SqlStringBuilder.Append(" left join wms_instock_detail cd (nolock) on c.order_no=cd.order_no and cd.part_id=a.part_id "); SqlStringBuilder.Append(" left join sys_vendor d (nolock) on c.vendor_id=d.vendor_id "); SqlStringBuilder.Append(" left join sys_customer cu (nolock) on c.customer_id=cu.customer_id left join sys_part p (nolock) on a.part_id=p.part_id where " + strWhere + " order by a.ruid ) as a order by a.ruid desc) as al "); SqlStringBuilder.Append(" order by al.ruid "); List dataList = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return dataList; } } public List getMoveSnListByPrint(string strWhere) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); Hashtable result = new Hashtable(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select a.ruid,a.order_no,a.item_no,a.part_id,a.part_no,a.part_spec,p.part_spec2,a.carton_no,a.qty,a.unit,b.enum_desc as status_desc,a.status, a.factory_id,a.factory_code,a.enabled,cd.plan_date "); SqlStringBuilder.Append(" ,cd.plan_date,cd.plan_time,c.vendor_code,d.vendor_name,c.customer_code,cu.customer_name,p.default_box_qty "); SqlStringBuilder.Append(" from wms_instock_sn a (nolock) left join sys_enum b on b.enum_type='wms_move_sn_status' and a.status=convert(int,b.enum_value) "); SqlStringBuilder.Append(" left join wms_instock c (nolock) on a.order_no=c.order_no "); SqlStringBuilder.Append(" left join wms_instock_detail cd (nolock) on c.order_no=cd.order_no and cd.part_id=a.part_id "); SqlStringBuilder.Append(" left join sys_vendor d (nolock) on c.vendor_id=d.vendor_id "); SqlStringBuilder.Append(" left join sys_customer cu (nolock) on c.customer_id=cu.customer_id left join sys_part p (nolock) on a.part_id=p.part_id "); SqlStringBuilder.Append(" where " + strWhere+ " order by a.ruid "); List dataList = dbConn.Query(SqlStringBuilder.ToString()).ToList(); return dataList; } } public List GetErpwarehouse() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); String strSql = "select distinct erp_warehouse as [key] , erp_warehouse as value from sys_zone (nolock) where enabled='Y' "; List result = dbConn.Query(strSql).ToList(); return result; } } public List GetMoveOrderType() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT [enum_value] as [value],[enum_desc] as [key] FROM sys_enum (nolock) where enum_type='wms_instock_order_type' and enabled='Y'"; List result = dbConn.Query(sql).ToList(); return result; } } public List GetMoveOrderStatus() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT [enum_value] as [value],[enum_desc] as [key] FROM sys_enum (nolock) where enum_type ='wms_move_header_order_status' and enabled='Y' order by enum_value"; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 生成条码 /// /// /// public Hashtable onBarcodeGenerator(string orderNo, string userId, string factoryId, string factoryCode) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string orderNoVal = ""; string[] orderNoArr = orderNo.Split(","); for (int i = 0; i < orderNoArr.Length; i++) { orderNoVal += orderNo + ","; } orderNoVal = orderNoVal.Substring(0, orderNoVal.Length - 1); string detailPur = @"SELECT a.order_no,a.order_type,a.order_status,b.part_id,b.part_no,b.part_spec,b.qty,b.unit,b.dest_warehouse_id,b.dest_warehouse_name,b.dest_zone_id,b.dest_zone_name,b.dest_erp_warehouse,c.default_box_qty FROM dbo.wms_instock a (nolock) left JOIN dbo.wms_instock_detail b (nolock) ON a.order_no=b.order_no LEFT JOIN dbo.sys_part c (nolock) ON b.part_id=c.part_id where a.order_no in (" + orderNoVal + ")"; List WmsInstockDetailInfo = dbConn.Query(detailPur).ToList(); List sqlInsert = new List(); List parameInsert = new List(); for (int i = 0; i < WmsInstockDetailInfo.Count; i++) { int qty = Convert.ToInt32(WmsInstockDetailInfo[i].Qty); int defaultBoxQty = Convert.ToInt32(WmsInstockDetailInfo[i].DefaultBoxQty) == 0 ? qty : Convert.ToInt32(WmsInstockDetailInfo[i].DefaultBoxQty); int qtyNum = qty / defaultBoxQty;//数量 int remaNum = qty % defaultBoxQty;//求余 int vendorId = 0;//WmsInstockDetailInfo[i].VendorId;//供应商代码 string vendorCode = "";//WmsInstockDetailInfo[i].VendorName;//供应商代码 string sedate = WmsInstockDetailInfo[i].PlanDate;//交货日期 string setime = WmsInstockDetailInfo[i].PlanTime;//交货时间 int partId_I = WmsInstockDetailInfo[i].PartId; string partNo_I = WmsInstockDetailInfo[i].PartNo; string partSpec_I = WmsInstockDetailInfo[i].PartSpec; string unit = WmsInstockDetailInfo[i].Unit;//单位 string dock = "";// WmsInstockDetailInfo[i].Dock;//道口 string orderNo_New = WmsInstockDetailInfo[i].OrderNo;//GetOrderNo(); StringBuilder SqlStringBuilder = new StringBuilder(); int itemNum = 0; for (int j = 0; j < qtyNum; j++) { string carNo_New = GetOrderNo("StockOrder", "M"); SqlStringBuilder.Remove(0, SqlStringBuilder.Length); SqlStringBuilder.Append("INSERT INTO dbo.sys_stock "); SqlStringBuilder.Append(" (vendor_id,vendor_code "); SqlStringBuilder.Append(" ,carton_no "); SqlStringBuilder.Append(" ,part_id ,part_no ,part_spec "); SqlStringBuilder.Append(" ,lot_no ,status "); SqlStringBuilder.Append(" ,qty ,snp_qty "); SqlStringBuilder.Append(" ,locate_id ,locate_name "); SqlStringBuilder.Append(" ,group_no ,erp_warehouse "); SqlStringBuilder.Append(" ,ref_order_no ,unit "); SqlStringBuilder.Append(" ,dock ,warehouse_id ,warehouse_name "); SqlStringBuilder.Append(" ,zone_id ,zone_name "); SqlStringBuilder.Append(" ,factory_id ,factory_code "); SqlStringBuilder.Append(" ,enabled ,create_userid ,create_time "); SqlStringBuilder.Append(" ) "); SqlStringBuilder.Append(" VALUES "); SqlStringBuilder.Append(" (@vendorId ,@vendorCode "); SqlStringBuilder.Append(" ,@cartonNo "); SqlStringBuilder.Append(" ,@partId ,@partNo ,@partSpec "); SqlStringBuilder.Append(" ,@lotNo ,@status "); SqlStringBuilder.Append(" ,@qty ,@snpQty "); SqlStringBuilder.Append(" ,@locateId,@locateName "); SqlStringBuilder.Append(" ,@groupNo ,@erpWarehouse "); SqlStringBuilder.Append(" ,@refOrderNo ,@unit "); SqlStringBuilder.Append(" ,@dock ,@warehouseId ,@warehouseName "); SqlStringBuilder.Append(" ,@zoneId ,@zoneName "); SqlStringBuilder.Append(" ,@factoryId,@factoryCode "); SqlStringBuilder.Append(" ,@enabled,@createUserid "); SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21) "); SqlStringBuilder.Append(" ) "); DynamicParameters param3 = new DynamicParameters(); param3.Add("@vendorId", vendorId); param3.Add("@vendorCode", vendorCode); param3.Add("@cartonNo", carNo_New); param3.Add("@partId", partId_I); param3.Add("@partNo", partNo_I); param3.Add("@partSpec", partSpec_I); param3.Add("@lotNo", DateTime.Now.ToString("yyyyMMdd")); if (WmsInstockDetailInfo[i].OrderType == (int)WmsEnumUtil.InStockType.OUTSOURCE_BACK) { param3.Add("@status", (int)WmsEnumUtil.StockStatus.SHIPPED); } else if (WmsInstockDetailInfo[i].OrderType == (int)WmsEnumUtil.InStockType.EXCEPTION_IN_STOCK) { param3.Add("@status", (int)WmsEnumUtil.StockStatus.WAITINSTOCKED); } else if (WmsInstockDetailInfo[i].OrderType == (int)WmsEnumUtil.InStockType.RESERVE_IN) { param3.Add("@status", (int)WmsEnumUtil.StockStatus.WAITINSTOCKED); } else { param3.Add("@status", (int)WmsEnumUtil.StockStatus.WAITING_INSTOCK); } param3.Add("@qty", defaultBoxQty); param3.Add("@snpQty", defaultBoxQty); param3.Add("@locateId", 0); param3.Add("@locateName", ""); param3.Add("@groupNo", ""); param3.Add("@erpWarehouse", WmsInstockDetailInfo[i].DestErpWarehouse); param3.Add("@refOrderNo", orderNo_New); param3.Add("@unit", unit); param3.Add("@dock", dock); param3.Add("@warehouseId", 0); param3.Add("@warehouseName", ""); param3.Add("@zoneId", 0); param3.Add("@zoneName", ""); param3.Add("@factoryId", factoryId); param3.Add("@factoryCode", factoryCode); param3.Add("@enabled", "Y"); param3.Add("@createUserid", userId); sqlInsert.Add(SqlStringBuilder.ToString()); parameInsert.Add(param3); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.wms_instock_sn "); SqlStringBuilder.Append(" (order_no,item_no "); SqlStringBuilder.Append(" ,part_id,part_no,part_spec "); SqlStringBuilder.Append(" ,carton_no,qty,unit "); SqlStringBuilder.Append(" ,status "); SqlStringBuilder.Append(" ,factory_id,factory_code "); SqlStringBuilder.Append(" ,enabled,create_userid "); SqlStringBuilder.Append(" ,create_time,guid) "); SqlStringBuilder.Append(" VALUES "); SqlStringBuilder.Append(" (@orderNo,@itemNo "); SqlStringBuilder.Append(" ,@partId,@partNo,@partSpec "); SqlStringBuilder.Append(" ,@cartonNo,@qty "); SqlStringBuilder.Append(" ,@unit,@status "); SqlStringBuilder.Append(" ,@factoryId,@factoryCode"); SqlStringBuilder.Append(" ,'Y',@createUserid "); SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21) "); SqlStringBuilder.Append(" ,NEWID()) "); param3 = new DynamicParameters(); param3.Add("@orderNo", orderNo_New); param3.Add("@itemNo", itemNum); param3.Add("@partId", partId_I); param3.Add("@partNo", partNo_I); param3.Add("@partSpec", partSpec_I); param3.Add("@cartonNo", carNo_New); param3.Add("@qty", defaultBoxQty); param3.Add("@unit", unit); param3.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.GENERATED); param3.Add("@factoryId", factoryId); param3.Add("@factoryCode", factoryCode); param3.Add("@createUserid", userId); sqlInsert.Add(SqlStringBuilder.ToString()); parameInsert.Add(param3); } if (remaNum > 0) { string carNo_New = GetOrderNo("StockOrder", "M");// repository.GetOrderNo(); SqlStringBuilder.Remove(0, SqlStringBuilder.Length); SqlStringBuilder.Append("INSERT INTO dbo.sys_stock "); SqlStringBuilder.Append(" (vendor_id,vendor_code "); SqlStringBuilder.Append(" ,carton_no "); SqlStringBuilder.Append(" ,part_id ,part_no ,part_spec "); SqlStringBuilder.Append(" ,lot_no ,status "); SqlStringBuilder.Append(" ,qty ,snp_qty "); SqlStringBuilder.Append(" ,locate_id ,locate_name "); SqlStringBuilder.Append(" ,group_no ,erp_warehouse "); SqlStringBuilder.Append(" ,ref_order_no ,unit "); SqlStringBuilder.Append(" ,dock ,warehouse_id ,warehouse_name "); SqlStringBuilder.Append(" ,zone_id ,zone_name "); SqlStringBuilder.Append(" ,factory_id ,factory_code "); SqlStringBuilder.Append(" ,enabled ,create_userid ,create_time "); SqlStringBuilder.Append(" ) "); SqlStringBuilder.Append(" VALUES "); SqlStringBuilder.Append(" (@vendorId ,@vendorCode "); SqlStringBuilder.Append(" ,@cartonNo "); SqlStringBuilder.Append(" ,@partId ,@partNo ,@partSpec "); SqlStringBuilder.Append(" ,@lotNo ,@status "); SqlStringBuilder.Append(" ,@qty ,@snpQty "); SqlStringBuilder.Append(" ,@locateId,@locateName "); SqlStringBuilder.Append(" ,@groupNo ,@erpWarehouse "); SqlStringBuilder.Append(" ,@refOrderNo ,@unit "); SqlStringBuilder.Append(" ,@dock ,@warehouseId ,@warehouseName "); SqlStringBuilder.Append(" ,@zoneId ,@zoneName "); SqlStringBuilder.Append(" ,@factoryId,@factoryCode "); SqlStringBuilder.Append(" ,@enabled,@createUserid "); SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21) "); SqlStringBuilder.Append(" ) "); DynamicParameters param3 = new DynamicParameters(); param3.Add("@vendorId", vendorId); param3.Add("@vendorCode", vendorCode); param3.Add("@cartonNo", carNo_New); param3.Add("@partId", partId_I); param3.Add("@partNo", partNo_I); param3.Add("@partSpec", partSpec_I); param3.Add("@lotNo", DateTime.Now.ToString("yyyyMMdd")); if (WmsInstockDetailInfo[i].OrderType == (int)WmsEnumUtil.InStockType.OUTSOURCE_BACK) { param3.Add("@status", (int)WmsEnumUtil.StockStatus.SHIPPED); } else if (WmsInstockDetailInfo[i].OrderType == (int)WmsEnumUtil.InStockType.EXCEPTION_IN_STOCK) { param3.Add("@status", (int)WmsEnumUtil.StockStatus.WAITINSTOCKED); } else if (WmsInstockDetailInfo[i].OrderType == (int)WmsEnumUtil.InStockType.RESERVE_IN) { param3.Add("@status", (int)WmsEnumUtil.StockStatus.WAITINSTOCKED); } else { param3.Add("@status", (int)WmsEnumUtil.StockStatus.WAITING_INSTOCK); } param3.Add("@qty", remaNum); param3.Add("@snpQty", defaultBoxQty); param3.Add("@locateId", 0); param3.Add("@locateName", ""); param3.Add("@groupNo", ""); param3.Add("@erpWarehouse", WmsInstockDetailInfo[i].DestErpWarehouse); param3.Add("@refOrderNo", orderNo_New); param3.Add("@unit", unit); param3.Add("@dock", dock); param3.Add("@warehouseId", 0); param3.Add("@warehouseName", ""); param3.Add("@zoneId", 0); param3.Add("@zoneName", ""); param3.Add("@factoryId", factoryId); param3.Add("@factoryCode", factoryCode); param3.Add("@enabled", "Y"); param3.Add("@createUserid", userId); sqlInsert.Add(SqlStringBuilder.ToString()); parameInsert.Add(param3); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.wms_instock_sn "); SqlStringBuilder.Append(" (order_no,item_no "); SqlStringBuilder.Append(" ,part_id,part_no,part_spec "); SqlStringBuilder.Append(" ,carton_no,qty "); SqlStringBuilder.Append(" ,unit,status "); SqlStringBuilder.Append(" ,factory_id,factory_code "); SqlStringBuilder.Append(" ,enabled,create_userid "); SqlStringBuilder.Append(" ,create_time,guid) "); SqlStringBuilder.Append(" VALUES "); SqlStringBuilder.Append(" (@orderNo,@itemNo "); SqlStringBuilder.Append(" ,@partId,@partNo,@partSpec "); SqlStringBuilder.Append(" ,@cartonNo,@qty,@unit "); SqlStringBuilder.Append(" ,@status "); SqlStringBuilder.Append(" ,@factoryId,@factoryCode "); SqlStringBuilder.Append(" ,'Y',@createUserid "); SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21) "); SqlStringBuilder.Append(" ,NEWID()) "); param3 = new DynamicParameters(); param3.Add("@orderNo", orderNo_New); param3.Add("@itemNo", itemNum); param3.Add("@partId", partId_I); param3.Add("@partNo", partNo_I); param3.Add("@partSpec", partSpec_I); param3.Add("@cartonNo", carNo_New); param3.Add("@qty", remaNum); param3.Add("@unit", unit); param3.Add("@status", (int)WmsEnumUtil.MoveOrderSnStatus.GENERATED); param3.Add("@factoryId", factoryId); param3.Add("@factoryCode", factoryCode); param3.Add("@createUserid", userId); sqlInsert.Add(SqlStringBuilder.ToString()); parameInsert.Add(param3); } } Hashtable result = new Hashtable(); if (!ExecuteSqlTransaction(sqlInsert, parameInsert)) { result.Add("message", "生成条码失败,请重查看!"); result.Add("flag", "error"); } else { List sqlUpdate = new List(); List parameUpdate = new List(); string updateSql = "update wms_instock set order_status=@orderStatus where order_no in (" + orderNoVal + ")"; sqlUpdate.Add(updateSql); DynamicParameters dynamic = new DynamicParameters(); dynamic.Add("@orderStatus", (int)WmsEnumUtil.MoveOrderStatus.GENERATED); parameUpdate.Add(dynamic); string updateSql2 = "update wms_instock_detail set item_status=@itemStatus where order_no in (" + orderNoVal + ")"; sqlUpdate.Add(updateSql2); dynamic = new DynamicParameters(); dynamic.Add("@itemStatus", (int)WmsEnumUtil.MoveOrderStatus.GENERATED); parameUpdate.Add(dynamic); if (this.ExecuteSqlTransaction(sqlUpdate, parameUpdate)) { result.Add("message", "生成条码成功"); result.Add("flag", "OK"); } else { result.Add("message", "生成条码失败"); result.Add("flag", "No"); } } return result; } } public bool ExecuteSqlTransaction(List sqlStrings, List parameters) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); IDbTransaction transaction = dbConn.BeginTransaction(); try { for (int i = 0; i < sqlStrings.Count; i++) { dbConn.Execute(sqlStrings[i], parameters[i], transaction); } transaction.Commit(); return true; } catch (Exception ex) { transaction.Rollback(); return false; } } } /// /// 获取下拉框菜单数据 这里显示的是待添加的厂区信息,厂区名称 /// /// 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() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select warehouse_id as [value],warehouse_desc as [key] from sys_warehouse where Enabled = 'Y'"); 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 getSelectWarehouseByName(string warehouseName) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select * from sys_warehouse where Enabled = 'Y' and warehouse_name='" + warehouseName + "'"); 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 getSelectZoneByName(string zoneName) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select * from sys_zone where Enabled = 'Y' and zone_name='" + zoneName + "'"); List result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List getSelectZone() { 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'"); List result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List getSelectLocateDown(string zoneId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select locate_id as [value],locate_name as [key] from sys_locate 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 getSelectVendor() { 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'"); List result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List getSelectVendor(string vendor_code) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select * from sys_Vendor where Enabled = 'Y' and vendor_code='" + vendor_code + "'"); List result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List getSelectCustomer() { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select customer_id as [value],customer_name as [key] from sys_customer where Enabled = 'Y'"); List result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List getSelectCustomer(string customerId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); StringBuilder strSql = new StringBuilder(); strSql.Append("select * from sys_customer where Enabled = 'Y' and customer_id='" + customerId + "'"); List result = dbConn.Query(strSql.ToString()).ToList(); return result; } } public List GetPart(int type) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id as [value],part_no as [key] FROM sys_part (NOLOCK) WHERE enabled='Y' ORDER BY part_no"; DynamicParameters param = new DynamicParameters(); param.Add("@part_type", type); List result = dbConn.Query(sql, param).ToList(); return result; } } public List GetPart(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"; DynamicParameters param = new DynamicParameters(); param.Add("@part_type", type); List result = dbConn.Query(sql, param).ToList(); return result; } } /// /// 获取订单编号 /// /// public string GetOrderNo(string stockOrder, string p) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); DynamicParameters list = new DynamicParameters(); list.Add("@order_type", stockOrder); list.Add("@order_prefix", p); list.Add("@order_no", null, DbType.String, ParameterDirection.Output, 50); var hashtable = dbConn.Execute("sys_create_orderno", list, commandType: CommandType.StoredProcedure); string result = list.Get("@order_no"); return result; } } /// /// 插入菜单数据 /// /// /// public bool saveMovementManage(WmsInstock htParams, IList htDetailParams) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { string orderNo = GetOrderNo("ShiftProduction", "P"); if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.PICK) { orderNo = GetOrderNo("ShiftProduction", "P");//生产领料单 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.EXCEPTION_IN_STOCK) { orderNo = GetOrderNo("ShiftSporadicEntry", "I");//零星入库单 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.EXCEPTION_OUT_STOCK) { orderNo = GetOrderNo("ShiftOutgoing", "O");//零星出库单 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.NC_IN_STOCK) { orderNo = GetOrderNo("ShiftWarehouse", "M");//NC入库 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.NC_CONCESSION) { orderNo = GetOrderNo("ShiftNCOutbound", "R");//NC出库单 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.NC_SCRAP) { orderNo = GetOrderNo("ShiftNCScrap", "S");//NC报废单 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.NO_JIS_SHIPPING) { orderNo = GetOrderNo("ShiftNonJis", "F");//非JIS发运单 } else if (htParams.OrderType == (int)WmsEnumUtil.MoveOrderType.NC_MOVE) { orderNo = GetOrderNo("ShiftWarehouse", "M");//NC移库单 } htParams.OrderNo = orderNo; List sqlLists = new List(); List parameters = new List(); dbConn.Open(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.wms_instock(order_no,order_type,order_status,vendor_id,vendor_code,customer_id,customer_code,ref_order_no,factory_id,factory_code,enabled,create_userid,create_time,guid)"); SqlStringBuilder.Append("VALUES(@orderNo, @orderType, @orderStatus,@vendorId,@vendorCode,@customerId,@customerCode,@refOrderNo, @factoryId, @factoryCode, @enabled, @createUserid, CONVERT(varchar(50), GETDATE(), 21), newid()) "); sqlLists.Add(SqlStringBuilder.ToString()); DynamicParameters dynamic = new DynamicParameters(); dynamic.Add("@orderNo", htParams.OrderNo); dynamic.Add("@orderType", htParams.OrderType); dynamic.Add("@orderStatus", 10); dynamic.Add("@vendorId", htParams.VendorId); dynamic.Add("@vendorCode", htParams.VendorCode); dynamic.Add("@customerId", htParams.CustomerId); dynamic.Add("@customerCode", htParams.CustomerCode); dynamic.Add("@refOrderNo", htParams.RefOrderNo); dynamic.Add("@enabled", "Y"); dynamic.Add("@factoryId", htParams.FactoryId); dynamic.Add("@factoryCode", htParams.FactoryCode); dynamic.Add("@createUserid", htParams.CreateUserId); parameters.Add(dynamic); for (int i = 0; i < htDetailParams.Count; i++) { StringBuilder SqlDetailStringBuilder = new StringBuilder(1024); SqlDetailStringBuilder.Append("INSERT INTO dbo.wms_instock_detail(order_no,item_no,part_id,part_no,part_spec,qty,rec_qty,unit,plan_date,plan_time,item_status"); SqlDetailStringBuilder.Append(", dest_warehouse_id, dest_warehouse_name, dest_zone_id"); SqlDetailStringBuilder.Append(", dest_zone_name,dest_locate_id,dest_locate_name , dest_erp_warehouse, factory_id, factory_code, enabled, create_userid, create_time, guid)"); SqlDetailStringBuilder.Append("VALUES(@orderNo, @itemNo, @partId, @partNo, @partSpec, @qty, @recQty, @unit, @planDate, @planTime, @itemStatus"); SqlDetailStringBuilder.Append(", @destWarehouseId, @destWarehouseName, @destZoneId, @destZoneName,@destLocateId,@destLocateName, @destErpWarehouse"); SqlDetailStringBuilder.Append(", @factoryId, @factoryCode, @enabled, @createUserid, CONVERT(varchar(50), GETDATE(), 21), newid())"); sqlLists.Add(SqlDetailStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", orderNo); dynamic.Add("@itemNo", htDetailParams[i].ItemNo); dynamic.Add("@partId", htDetailParams[i].PartId); dynamic.Add("@partNo", htDetailParams[i].PartNo); dynamic.Add("@partSpec", htDetailParams[i].PartSpec); dynamic.Add("@qty", htDetailParams[i].Qty); dynamic.Add("@recQty", htDetailParams[i].RecQty); dynamic.Add("@unit", htDetailParams[i].Unit); dynamic.Add("@planDate", htDetailParams[i].PlanDate); dynamic.Add("@planTime", htDetailParams[i].PlanTime); dynamic.Add("@itemStatus", "10"); dynamic.Add("@destWarehouseId", htDetailParams[i].DestWarehouseId); dynamic.Add("@destWarehouseName", htDetailParams[i].DestWarehouseName); dynamic.Add("@destZoneId", htDetailParams[i].DestZoneId); dynamic.Add("@destZoneName", htDetailParams[i].DestZoneName); dynamic.Add("@destLocateId", htDetailParams[i].DestLocateId); dynamic.Add("@destLocateName", htDetailParams[i].DestLocateName); dynamic.Add("@destErpWarehouse", htDetailParams[i].DestErpWarehouse); dynamic.Add("@factoryId", htDetailParams[i].FactoryId); dynamic.Add("@factoryCode", htDetailParams[i].FactoryCode); dynamic.Add("@enabled", "Y"); dynamic.Add("@createUserid", htDetailParams[i].CreateUserId); parameters.Add(dynamic); } bool flag = ExecuteTransaction(sqlLists, parameters); return flag; } } public List GetfileVendor(string vendorName, int factoryId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT vendor_id,vendor_code,vendor_name FROM sys_vendor (NOLOCK) WHERE enabled='Y' AND vendor_name LIKE '%" + vendorName + "%' and factory_id=" + factoryId + " ORDER BY vendor_name"; List result = dbConn.Query(sql).ToList(); return result; } } public SysVendor GetVendorInfoByName(string vendorName, int factoryId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT vendor_id,vendor_code,vendor_name FROM sys_vendor (NOLOCK) WHERE enabled='Y' AND vendor_name= '" + vendorName + "' and factory_id=" + factoryId; SysVendor result = dbConn.Query(sql).FirstOrDefault(); return result; } } /// /// 获得零件信息 /// /// public List GetPartNoInfo(string part_no) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id,part_no,part_spec,default_box_qty FROM sys_part (NOLOCK) WHERE enabled='Y' AND part_no LIKE '%" + part_no + "%' ORDER BY part_no"; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获得零件信息 /// /// public List GetPartNoInfoByPartNo(string part_no) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id,part_no,part_spec,default_box_qty,unit FROM sys_part (NOLOCK) WHERE enabled='Y' AND part_no = '" + part_no + "'"; List result = dbConn.Query(sql).ToList(); return result; } } /// /// 获得零件简码信息 /// /// public List GetPartSpecInfo(string partSpec) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id,part_no,part_spec,default_box_qty FROM sys_part (NOLOCK) WHERE enabled='Y' AND part_spec LIKE '%" + partSpec + "%' ORDER BY part_no"; List result = dbConn.Query(sql).ToList(); return result; } } public List GetPartSpecInfoByPartSpec(string partSpec) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); string sql = "SELECT part_id,part_no,part_spec,default_box_qty FROM sys_part (NOLOCK) WHERE enabled='Y' AND part_spec = '" + partSpec + "'"; List result = dbConn.Query(sql).ToList(); return result; } } //关闭 public bool onClose(String ids, String empId) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); List sqlLists = new List(); List parameters = new List(); DynamicParameters dynamic = new DynamicParameters(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock set order_status='60',update_userid=@updateUserid,update_time = CONVERT(varchar(50), GETDATE(), 21) WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@updateUserid", empId); parameters.Add(dynamic); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock_detail set item_status='100',update_userid=@updateUserid,update_time = CONVERT(varchar(50), GETDATE(), 21) WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@updateUserid", empId); parameters.Add(dynamic); bool flag = ExecuteTransaction(sqlLists, parameters); return flag; } } //启用 public bool EnableData(String ids) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); List sqlLists = new List(); List parameters = new List(); DynamicParameters dynamic = new DynamicParameters(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock set Enabled='Y' WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", ids); parameters.Add(dynamic); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock_detail set Enabled='Y' WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", ids); parameters.Add(dynamic); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock_sn set Enabled='Y' WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", ids); parameters.Add(dynamic); bool flag = ExecuteTransaction(sqlLists, parameters); return flag; } } //禁用 public bool DisableData(String ids) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { dbConn.Open(); List sqlLists = new List(); List parameters = new List(); DynamicParameters dynamic = new DynamicParameters(); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock set Enabled='N' WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", ids); parameters.Add(dynamic); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock_detail set Enabled='N' WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", ids); parameters.Add(dynamic); SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update wms_instock_sn set Enabled='N' WHERE order_no in (" + ids + ")"); sqlLists.Add(SqlStringBuilder.ToString()); dynamic = new DynamicParameters(); dynamic.Add("@orderNo", ids); parameters.Add(dynamic); bool flag = ExecuteTransaction(sqlLists, parameters); return flag; } } //事务批量执行添加、修改 public bool InsertData(List sqlStrings, List parameterList) { using (IDbConnection dbConn = dapperDbContext.GetDbConnection()) { if (dbConn.State == ConnectionState.Closed) { dbConn.Open(); } //执行事务 IDbTransaction transaction = dbConn.BeginTransaction(); if (parameterList == null || parameterList.Count == 0) { try { for (int i = 0; i < sqlStrings.Count; i++) { dbConn.Execute(sqlStrings[i], null, transaction); } transaction.Commit(); return true; } catch (Exception exception) { transaction.Rollback(); return false; } } else { try { for (int i = 0; i < sqlStrings.Count; i++) { dbConn.Execute(sqlStrings[i], parameterList[i], transaction); } transaction.Commit(); return true; } catch (Exception exception) { transaction.Rollback(); return false; } } } } #endregion 成员方法 } }