/// <summary> /// 发布 /// </summary> /// <param name="aId"></param> /// <param name="loginUser"></param> /// <returns></returns> public bool StartInfos(List <string> rowsKeyValues, string loginUser) { if (dal.GetList("[ID] IN (" + string.Join(",", rowsKeyValues) + ") and [STATUS] = " + (int)InventoryOrderStatusConstants.CREATED + "", string.Empty).Count == 0) { throw new Exception("MC:0x00000369");///状态为已创建的盘点单才允许进行发布 } List <InventoryNoticeOrderInfo> info = dal.GetList("[ID] IN (" + string.Join(",", rowsKeyValues) + ")", string.Empty); if (info.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } List <PartsStockInfo> partsStocks = new PartsStockDAL().GetList("[WM_NO] in ('" + string.Join("','", info.Select(d => d.WmNo).ToArray()) + "') and [ZONE_NO] in ('" + string.Join("','", info.Select(d => d.ZoneNo).ToArray()) + "') and [KEEPER] in ('" + string.Join("','", info.Select(d => d.Keeper).ToArray()) + "')", string.Empty); if (partsStocks.Count == 0) { throw new Exception("MC:0x00000370");///没有相关的物料仓储信息 } List <StocksInfo> stocks = new StocksDAL().GetList("[WM_NO] in ('" + string.Join("','", partsStocks.Select(d => d.WmNo).ToArray()) + "') and [ZONE_NO] in ('" + string.Join("','", partsStocks.Select(d => d.ZoneNo).ToArray()) + "') and [PACKAGE_MODEL] in ('" + string.Join("','", partsStocks.Select(d => d.InboundPackageModel).ToArray()) + "') and [PART_NO] in ('" + string.Join("','", partsStocks.Select(d => d.PartNo).ToArray()) + "') and [SUPPLIER_NUM] in ('" + string.Join("','", partsStocks.Select(d => d.SupplierNum).ToArray()) + "')", string.Empty); string check = new ConfigBLL().GetValueByCode("NO_STOCK_MATERIAL_NOT_RELEASE_TO_INVENTORY_ORDER"); string stock = new ConfigBLL().GetValueByCode("MATERIALS_USED_IN_AVAILABLE_STOCK"); string sql = string.Empty; foreach (var item in info) { List <PartsStockInfo> partsStockInfos = partsStocks.Where(d => d.Keeper == item.Keeper && d.WmNo == item.WmNo && d.ZoneNo == item.ZoneNo).ToList(); if (partsStockInfos.Count == 0) { throw new Exception("MC:0x00000370");///没有相关的物料仓储信息 } foreach (var items in partsStockInfos) { List <StocksInfo> stocksInfos = stocks.Where(d => d.Keeper == items.Keeper && d.WmNo == items.WmNo && d.ZoneNo == item.ZoneNo && d.PartNo == items.PartNo).ToList(); string Package = items.Package == null ? "null" : items.Package.ToString(); if (check == "true") { int sum = 0; if (stock == "true") { sum = (int)stocksInfos.Select(d => d.AvailbleStocks).Sum(); } else { sum = (int)stocksInfos.Select(d => d.StocksNum).Sum(); } if (sum > 0) { sql += "insert into [LES].[TT_WMM_INVENTORY_ORDER_PART] " + "([FID],[ORDER_CODE],[ORDER_FID],[WM_NO],[ZONE_NO],[DLOC],[PART_NO],[SUPPLIER_NUM],[PACKAGE_MODEL],[PACKAGE],[PART_CNAME],[PACKAGE_QTY],[REFERENCE_QTY],[VALID_FLAG],[CREATE_DATE],[CREATE_USER])" + "values(" + "newid()," + "N'" + item.OrderCode + "'," + "N'" + item.Fid + "'," + "N'" + items.WmNo + "'," + "N'" + items.ZoneNo + "'," + "N'" + items.Dloc + "'," + "N'" + items.PartNo + "'," + "N'" + items.SupplierNum + "'," + "N'" + items.InboundPackageModel + "'," + Package + "," + "N'" + items.PartCname + "'," + "N'" + stocksInfos.Select(d => d.Stocks).Sum() + "'," + "N'" + sum + "'," + "1," + "GETDATE()," + "N'" + loginUser + "'" + ")\n"; } } else { int sum = 0; if (stock == "true") { sum = (int)stocksInfos.Select(d => d.AvailbleStocks).Sum(); } else { sum = (int)stocksInfos.Select(d => d.StocksNum).Sum(); } sql += "insert into [LES].[TT_WMM_INVENTORY_ORDER_PART] " + "([FID],[ORDER_CODE],[ORDER_FID],[WM_NO],[ZONE_NO],[DLOC],[PART_NO],[SUPPLIER_NUM],[PACKAGE_MODEL],[PACKAGE],[PART_CNAME],[PACKAGE_QTY],[REFERENCE_QTY],[VALID_FLAG],[CREATE_DATE],[CREATE_USER])" + "values(" + "newid()," + "N'" + item.OrderCode + "'," + "N'" + item.Fid + "'," + "N'" + items.WmNo + "'," + "N'" + items.ZoneNo + "'," + "N'" + items.Dloc + "'," + "N'" + items.PartNo + "'," + "N'" + items.SupplierNum + "'," + "N'" + items.PackageModel + "'," + Package + "," + "N'" + items.PartCname + "'," + "N'" + stocksInfos.Select(d => d.Stocks).Sum() + "'," + "N'" + sum + "'," + "1," + "GETDATE()," + "N'" + loginUser + "'" + ")\n"; } } } using (TransactionScope trans = new TransactionScope()) { if (string.IsNullOrEmpty(sql)) { throw new Exception("MC:0x00000440");///没有相关物料明细 } sql += "update [LES].[TT_WMM_INVENTORY_NOTICE_ORDER] set [STATUS] = " + (int)InventoryOrderStatusConstants.PUBLISHED + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' where [VALID_FLAG] = 1 and [ID] IN (" + string.Join(",", rowsKeyValues) + ") "; CommonDAL.ExecuteNonQueryBySql(sql); trans.Complete(); } return(true); }