| | |
| | | using System.Text; |
| | | using Model.ModelDto; |
| | | using Model.ModelDto.DataDto; |
| | | using Model.ModelDto.SysDto; |
| | | using Model.ModelVm.DataVm; |
| | | using SqlSugar; |
| | | using WMS.DAL; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IDataServer; |
| | | |
| | | namespace WMS.BLL.DataServer |
| | |
| | | /// <param name="skuNo">物料编码</param> |
| | | /// <param name="skuName">物料名称</param> |
| | | /// <returns></returns> |
| | | public List<MateDataStockDto> GetDataStockList(string skuNo, string skuName, string ownerNo, string ownerName) |
| | | public List<MateDataStockDto> GetDataStockList(string skuNo, string skuName, string ownerNo, string ownerName, string lotNo) |
| | | { |
| | | string str = "select stock.SkuNo,stock.SkuName,stock.LotNo,stock.LotText,stock.Standard,stock.Qty," + |
| | | "stock.LockQty,stock.FrozenQty,stock.OwnerNo,stock.OwnerName,(mate.Weight * stock.Qty) WeightSum " + |
| | | "from DataStock stock " + |
| | | "left join SysMaterials mate on stock.SkuNo = mate.SkuNo " + |
| | | "Where stock.IsDel = @isdel"; |
| | | "Where stock.IsDel = @isdel and mate.IsDel = 0 "; |
| | | //判断物料编码是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | | { |
| | |
| | | { |
| | | str += " and stock.OwnerName like @ownerName"; |
| | | } |
| | | //判断货主名称是否为空 |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | str += " and stock.LotNo like @lotNo"; |
| | | } |
| | | //排序 |
| | | str += " order by stock.SkuNo"; |
| | | List<MateDataStockDto> StockList = Db.Ado.SqlQuery<MateDataStockDto>(str, new |
| | |
| | | skuno = "%" + skuNo + "%", //物料编码 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | ownerNo= "%" + ownerNo + "%", //货主编码 |
| | | ownerName= "%" + ownerName + "%" //货主名称 |
| | | ownerName= "%" + ownerName + "%", //货主名称 |
| | | lotNo= "%" + lotNo + "%", //批次号 |
| | | }); |
| | | |
| | | //库存总量 |
| | |
| | | |
| | | foreach (var item in StockList) |
| | | { |
| | | //判断库存总量是否拥有物料 |
| | | if (StockListDto.Count > 0) |
| | | { |
| | | int i = 0; |
| | | //foreach循环库存总量 |
| | | foreach (var dto in StockListDto) |
| | | { |
| | | //判断物料和批次是否相同 |
| | | if (dto.SkuNo == item.SkuNo && dto.LotNo == item.LotNo) |
| | | { |
| | | dto.Qty = (Convert.ToDecimal(dto.Qty) + Convert.ToDecimal(item.Qty)).ToString(); |
| | | dto.FrozenQty = (Convert.ToDecimal(dto.FrozenQty) + Convert.ToDecimal(item.FrozenQty)).ToString(); |
| | | dto.LockQty = (Convert.ToDecimal(dto.LockQty) + Convert.ToDecimal(item.LockQty)).ToString(); |
| | | dto.ResidueQty= (Convert.ToDecimal(dto.ResidueQty) + Convert.ToDecimal(item.ResidueQty)).ToString(); |
| | | break; |
| | | } |
| | | i += 1; |
| | | //判断已有相同物料 |
| | | if (i == StockListDto.Count) |
| | | { |
| | | StockListDto.Add(item); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | StockListDto.Add(item); |
| | | continue; |
| | | } |
| | | StockListDto.Add(item); |
| | | ////判断库存总量是否拥有物料 |
| | | //if (StockListDto.Count > 0) |
| | | //{ |
| | | // int i = 0; |
| | | // //foreach循环库存总量 |
| | | // foreach (var dto in StockListDto) |
| | | // { |
| | | // //判断物料和批次是否相同 |
| | | // if (dto.SkuNo == item.SkuNo && dto.LotNo == item.LotNo) |
| | | // { |
| | | // dto.Qty = (Convert.ToDecimal(dto.Qty) + Convert.ToDecimal(item.Qty)).ToString(); |
| | | // dto.FrozenQty = (Convert.ToDecimal(dto.FrozenQty) + Convert.ToDecimal(item.FrozenQty)).ToString(); |
| | | // dto.LockQty = (Convert.ToDecimal(dto.LockQty) + Convert.ToDecimal(item.LockQty)).ToString(); |
| | | // dto.ResidueQty= (Convert.ToDecimal(dto.ResidueQty) + Convert.ToDecimal(item.ResidueQty)).ToString(); |
| | | // break; |
| | | // } |
| | | // i += 1; |
| | | // //判断已有相同物料 |
| | | // if (i == StockListDto.Count) |
| | | // { |
| | | // StockListDto.Add(item); |
| | | // break; |
| | | // } |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // StockListDto.Add(item); |
| | | // continue; |
| | | //} |
| | | } |
| | | |
| | | return StockListDto; |
| | |
| | | /// <param name="palletNo">托盘条码</param> |
| | | /// <param name="status">库存状态</param> |
| | | /// <param name="inspectStatus">质检状态</param> |
| | | /// <param name="houseNo">所属仓库</param> |
| | | /// <param name="areaNo">所属区域</param> |
| | | /// <param name="type">物料类型</param> |
| | | /// <param name="ownerNo">货主编号</param> |
| | | /// <param name="ownerName">货主名称</param> |
| | | /// <returns></returns> |
| | | public List<StockDetailDto> GetInventoryList1(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, |
| | | string status, string inspectStatus, string ownerNo, string ownerName) |
| | | string status, string inspectStatus, string ownerNo, string ownerName, string houseNo, string areaNo, string categoryNo, string type) |
| | | { |
| | | string str = "select detail.*,house.WareHouseNo + '-' + house.WareHouseName as WareHouseName," + |
| | | string str = "select detail.*,sku.Type,house.WareHouseNo + '-' + house.WareHouseName as WareHouseName," + |
| | | "roadway.RoadwayNo + '-' + roadway.RoadwayName as RoadwayName,area.AreaNo + '-' + area.AreaName as AreaName " + |
| | | "from DataStockDetail detail " + |
| | | "left join SysStorageRoadway roadway on detail.RoadwayNo = roadway.RoadwayNo " + |
| | | "left join SysWareHouse house on detail.WareHouseNo = house.WareHouseNo " + |
| | | "left join SysStorageArea area on detail.AreaNo = area.AreaNo " + |
| | | "left join SysMaterials as sku on detail.skuNo = sku.skuNo " + |
| | | "left join SysMaterialCategory as cat on sku.CategoryNo = cat.CategoryNo " + |
| | | "Where detail.IsDel = @isdel"; |
| | | //判断物料编码是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | str += " and detail.LotNo like @lotno"; |
| | | } |
| | | } |
| | | //判断储位地址是否为空 |
| | | if (!string.IsNullOrEmpty(locatNo)) |
| | | { |
| | |
| | | if (!string.IsNullOrEmpty(ownerName)) |
| | | { |
| | | str += " and detail.OwnerName like @ownerName"; |
| | | } |
| | | if (!string.IsNullOrEmpty(houseNo)) |
| | | { |
| | | str += " and house.WareHouseNo = @wareHouseNo"; |
| | | } |
| | | if (!string.IsNullOrEmpty(areaNo)) |
| | | { |
| | | str += " and area.AreaNo = @areaNo"; |
| | | } |
| | | if (!string.IsNullOrEmpty(categoryNo)) |
| | | { |
| | | str += " and area.CategoryNo = @categoryNo"; |
| | | } |
| | | if (!string.IsNullOrEmpty(type)) |
| | | { |
| | | str += " and sku.Type = @type"; |
| | | } |
| | | |
| | | //排序 |
| | | str += " order by detail.SkuNo,detail.PalletNo,detail.LotNo"; |
| | | List<StockDetailDto> stockDetailsList = Db.Ado.SqlQuery<StockDetailDto>(str, new |
| | | { |
| | | isdel = "0", //是否删除 |
| | | skuno = "%" + skuNo + "%", //物料编码 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次 |
| | | locatno = "%" + locatNo + "%", //储位地址 |
| | | palletno = "%" + palletNo + "%", //托盘条码 |
| | | status = status, //库存状态 |
| | | inspectstatus = inspectStatus, //质检状态 |
| | | ownerNo = "%" + ownerNo + "%", //货主编码 |
| | | ownerName = "%" + ownerName + "%" //货主名称 |
| | | isdel = "0", //是否删除 |
| | | skuno = "%" + skuNo + "%", //物料编码 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次 |
| | | locatno = "%" + locatNo + "%", //储位地址 |
| | | palletno = "%" + palletNo + "%", //托盘条码 |
| | | status = status, //库存状态 |
| | | inspectstatus = inspectStatus, //质检状态 |
| | | ownerNo = "%" + ownerNo + "%", //货主编码 |
| | | ownerName = "%" + ownerName + "%", //货主名称 |
| | | wareHouseNo = houseNo, |
| | | areaNo = areaNo, //所属区域 |
| | | categoryNo = categoryNo, //逻辑库区 |
| | | type = type |
| | | }); |
| | | return stockDetailsList; |
| | | } |
| | |
| | | public List<TotalRecordDto> GetTotalRecord(string skuNo, string skuName, string lotNo, string startTime, string endTime) |
| | | { |
| | | //入库 |
| | | string rstr = "select LotNo,SkuNo,SkuName,SUM(Qty) RQty,SUM(FactQty) RFactQty,SUM(CompleteQty) RCompleteQty from BllArrivalNoticeDetail where IsDel = '0' and Id in (select ASNDetailNo from DataStockDetail where IsDel = '0' group by ASNDetailNo) "; |
| | | string rstr = "select LotNo,SkuNo,SkuName,SUM(Qty) RQty,SUM(FactQty) RFactQty,SUM(CompleteQty) RCompleteQty " + |
| | | "from BllArrivalNoticeDetail where IsDel = '0' and Id in (select ASNDetailNo from DataStockDetail " + |
| | | "where IsDel = '0' group by ASNDetailNo) "; |
| | | //出库 |
| | | string cstr = "select LotNo,SkuNo,SkuName,SUM(Qty) CQty,SUM(FactQty) CFactQty,SUM(CompleteQty) CompleteQty,SUM(AllotQty) CAllotQty from BllExportNoticeDetail where IsDel = '0' and LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | string cstr = "select LotNo,SkuNo,SkuName,SUM(Qty) CQty,SUM(FactQty) CFactQty,SUM(CompleteQty) CompleteQty,SUM(AllotQty) CAllotQty " + |
| | | "from BllExportNoticeDetail " + |
| | | "where IsDel = '0' and LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | |
| | | //判断物料号是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | |
| | | rstr += " and LotNo like @lotno"; |
| | | cstr += " and LotNo like @lotno"; |
| | | } |
| | | // liudl 时间不准确 暂时注释。 |
| | | //if (!string.IsNullOrWhiteSpace(startTime)) |
| | | //{ |
| | | // rstr += " and UpdateTime >= @startTime"; |
| | | // cstr += " and UpdateTime >= @startTime"; |
| | | //} |
| | | //if (!string.IsNullOrWhiteSpace(endTime)) |
| | | //{ |
| | | // rstr += " and UpdateTime <= @endTime"; |
| | | // cstr += " and UpdateTime <= @endTime"; |
| | | //} |
| | | |
| | | rstr += " group by LotNo,SkuNo,SkuName"; |
| | | cstr += " group by LotNo,SkuNo,SkuName"; |
| | | //入库 |
| | |
| | | skuno = "%" + skuNo + "%", //物料号 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | //startTime = startTime, |
| | | //endTime = endTime |
| | | |
| | | }); |
| | | List<TotalRecordDto> totalCListData = Db.Ado.SqlQuery<TotalRecordDto>(cstr, new |
| | | { |
| | |
| | | skuno = "%" + skuNo + "%", //物料号 |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | //startTime = startTime, |
| | | //endTime = endTime |
| | | }); |
| | | |
| | | //合并数据 |
| | |
| | | /// <param name="startTime">开始时间</param> |
| | | /// <param name="endTime">结束时间</param> |
| | | /// <returns></returns> |
| | | public List<TotalRecordDto> GetDetailedRecord(string skuNo, string skuName, string lotNo, string palletNo, string startTime, string endTime) |
| | | public List<TotalRecordDto> GetDetailedRecord(string skuNo, string skuName, string lotNo, string palletNo, |
| | | string startTime, string endTime) |
| | | { |
| | | //入库 |
| | | string rstr = "select notice.ASNNo,bind.LotNo,notice.SkuNo,notice.SkuName,bind.PalletNo,bind.Qty RQty,bind.Qty RFactQty,bind.Qty RCompleteQty,bind.CompleteTime,notice.LotText,notice.SupplierLot,bind.CompleteTime from BllPalletBind bind left join BllArrivalNoticeDetail notice on bind.ASNDetailNo = notice.Id where bind.IsDel = '0' and notice.IsDel = '0' and bind.LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | string rstr = "select notice.ASNNo,bind.LotNo,notice.SkuNo,notice.SkuName,bind.PalletNo,bind.Qty RQty," + |
| | | "bind.Qty RFactQty,bind.Qty RCompleteQty,bind.CompleteTime,notice.LotText,notice.SupplierLot,bind.CompleteTime " + |
| | | "from BllPalletBind bind left join BllArrivalNoticeDetail notice on bind.ASNDetailNo = notice.Id " + |
| | | "where bind.IsDel = '0' and notice.IsDel = '0' and bind.LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | //出库 |
| | | string cstr = "select notice.SONo,allot.LotNo,allot.TaskNo CTaskNo,allot.SkuNo,allot.SkuName,allot.PalletNo,allot.CreateTime CCreateTime,allot.Qty CQty,allot.Qty CAllotQty,Allot.Qty CFactQty,Allot.CompleteQty CompleteQty,allot.LotText,allot.SupplierLot from BllExportAllot allot left join BllExportNoticeDetail notice on allot.SODetailNo = notice.Id where allot.IsDel = '0' and notice.IsDel = '0' and notice.LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | string cstr = "select notice.SONo,allot.LotNo,allot.TaskNo CTaskNo,allot.SkuNo,allot.SkuName,allot.PalletNo," + |
| | | "allot.UpdateTime CCreateTime,allot.Qty CQty,allot.Qty CAllotQty,Allot.Qty CFactQty,Allot.CompleteQty CompleteQty," + |
| | | "allot.LotText,allot.SupplierLot " + |
| | | "from BllExportAllot allot left join BllExportNoticeDetail notice on allot.SODetailNo = notice.Id " + |
| | | "where allot.IsDel = '0' and notice.IsDel = '0' " + |
| | | "and notice.LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | |
| | | //判断物料号是否为空 |
| | | if (!string.IsNullOrEmpty(skuNo)) |
| | |
| | | rstr += " and notice.LotNo like @lotno"; |
| | | cstr += " and allot.LotNo like @lotno"; |
| | | } |
| | | |
| | | //判断托盘是否为空 |
| | | if (!string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | rstr += " and bind.PalletNo like @palletno"; |
| | | cstr += " and allot.PalletNo like @palletno"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(startTime)) |
| | | { |
| | | rstr += " and bind.CompleteTime >= @startTime"; |
| | | cstr += " and allot.UpdateTime >= @startTime"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(endTime)) |
| | | { |
| | | rstr += " and bind.CompleteTime <= @endTime"; |
| | | cstr += " and allot.UpdateTime <= @endTime"; |
| | | } |
| | | |
| | | //rstr += " group by bind.LotNo,bind.SkuNo,bind.SkuName"; |
| | |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | palletno = "%" + palletNo + "%", //托盘号 |
| | | startTime = startTime, |
| | | endTime = endTime |
| | | }); |
| | | //出库 |
| | | List<TotalRecordDto> totalCList = Db.Ado.SqlQuery<TotalRecordDto>(cstr, new |
| | |
| | | skuname = "%" + skuName + "%", //物料名称 |
| | | lotno = "%" + lotNo + "%", //批次号 |
| | | palletno = "%" + palletNo + "%", //托盘号 |
| | | startTime = startTime, |
| | | endTime = endTime |
| | | }); |
| | | |
| | | //合并 |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 年度报表 |
| | | |
| | | /// <summary> |
| | | /// 获取年报表总表 |
| | | /// </summary> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | public List<SysMaterials> GetAssSoInfo(string StartTime, string EndTime) |
| | | { |
| | | try |
| | | { |
| | | string str = "select* from SysMaterials where SkuNo in (select a.SkuNo from BllArrivalNoticeDetail a inner join BllExportNoticeDetail b on a.SkuNo = b.SkuNo"; |
| | | |
| | | //判断开始时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | str += $" and a.CompleteTime >= '{StartTime}' and b.UpdateTime >= '{StartTime}'"; |
| | | } |
| | | //判断结束时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString(); |
| | | str += $" and a.CompleteTime < '{EndTime}' and b.UpdateTime < '{EndTime}'"; |
| | | } |
| | | |
| | | str += " group by a.SkuNo,b.SkuNo)"; |
| | | |
| | | var sku = Db.Ado.SqlQuery<SysMaterials>(str); |
| | | return sku; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取年报表明细 |
| | | /// </summary> |
| | | /// <param name="skuNo"></param> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <returns></returns> |
| | | public List<AssSoDateStockInfoDto> GetAssSoInfoDetail(string skuNo, string StartTime, string EndTime) |
| | | { |
| | | try |
| | | { |
| | | //用于合并数据 |
| | | List<AssSoDateStockInfoDto> infolist = new List<AssSoDateStockInfoDto>(); |
| | | //获取开始时间当天的结存数量 |
| | | //DataStockInfo stockInfo = new DataStockInfo(); |
| | | //获取物料理论重量 |
| | | string weightstr = $"select Weight from SysMaterials where SkuNo = '{skuNo}'"; |
| | | var weight = Db.Ado.SqlQuerySingle<decimal>(weightstr); |
| | | |
| | | //判断开始时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | //string str = $"select * from DataStockInfo where IsDel = '0' and CONVERT(date,CreateTime) = '{StartTime}'"; |
| | | //获取当天库存信息 |
| | | //stockInfo = Db.Ado.SqlQuerySingle<DataStockInfo>(str); |
| | | } |
| | | //判断结束时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString(); |
| | | } |
| | | decimal countjie = 0; //统计结存数量 |
| | | ////判断库存信息是否为空 |
| | | //if (stockInfo != null) |
| | | //{ |
| | | // countjie = stockInfo.BalanceQty; //统计结存数量 |
| | | //} |
| | | //else if (stockInfo == null) |
| | | //{ |
| | | //判断开始时间是否为空 |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | //string StartTimelin = (Convert.ToDateTime(StartTime).AddDays(1)).ToString(); |
| | | //获取出库数量 |
| | | string str = $"select SUM(CompleteQty) as CompleteQtyc from BllExportNoticeDetail where IsDel = '0' and SkuNo = '{skuNo}' and Status != '0' and CreateTime < '{StartTime}'"; |
| | | string CompleteQtyc = Db.Ado.SqlQuerySingle<string>(str); |
| | | //获取入库数量 |
| | | str = $"select SUM(CompleteQty) as CompleteQtyr from BllArrivalNoticeDetail where IsDel = '0' and SkuNo = '{skuNo}' and Status != '0' and CreateTime < '{StartTime}'"; |
| | | string CompleteQtyr = Db.Ado.SqlQuerySingle<string>(str); |
| | | |
| | | //计算结存数量 |
| | | countjie = int.Parse(CompleteQtyr) - int.Parse(CompleteQtyc); |
| | | |
| | | } |
| | | |
| | | //} |
| | | decimal yeara = 0; //年入库 |
| | | decimal years = 0; //年出库 |
| | | decimal montha = 0; //月入库 |
| | | decimal months = 0; //月出库 |
| | | DateTime createTime = DateTime.Now.AddYears(-1000); //时间 |
| | | |
| | | //获取有多少年 |
| | | string yearstr = "select DATEPART(YEAR, CreateTime) SkuName from BllArrivalNoticeDetail where IsDel = '0' and Status = '2' "; |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | yearstr += $" and CreateTime >= '{StartTime}'"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | |
| | | yearstr += $" and CreateTime < '{EndTime}'"; |
| | | } |
| | | yearstr += "group by DATEPART(YEAR, CreateTime)"; |
| | | var yearlist = Db.Ado.SqlQuery<AssSoDateStockInfoDto>(yearstr); |
| | | if (!string.IsNullOrWhiteSpace(StartTime) && !string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | //判断开始时间年与结束时间年是否相等 |
| | | var startyear = StartTime.Split('-'); |
| | | var endyear = EndTime.Split("-"); |
| | | } |
| | | foreach (var yearcount in yearlist) |
| | | { |
| | | //获取当前物料每年入库单据明细 |
| | | string ruyearstr = $"select ASNNo,SkuNo,SkuName,CompleteQty as ASNQty,0 as ASNSOQty,CONVERT(date,CreateTime) as NoticeDateTime,DATEPART(MONTH,CreateTime) as month,CreateTime from BllArrivalNoticeDetail where IsDel = '0' and Status != '0' and SkuNo = '{skuNo}' and DATEPART(YEAR, CreateTime) = '{yearcount.SkuName}'"; |
| | | //获取当前物料每年出库单据明细 |
| | | string chuyearstr = $"select SONo,SkuNo,SkuName,CompleteQty as SOQty,0 as ASNSOQty,CONVERT(date,CreateTime) as NoticeDateTime,DATEPART(MONTH,CreateTime) as month,CreateTime from BllExportNoticeDetail where IsDel = '0' and Status != '0' and SkuNo = '{skuNo}' and DATEPART(YEAR, CreateTime) = '{yearcount.SkuName}'"; |
| | | |
| | | if (!string.IsNullOrWhiteSpace(StartTime)) |
| | | { |
| | | ruyearstr += $" and CreateTime >= '{StartTime}'"; |
| | | chuyearstr += $" and CreateTime >= '{StartTime}'"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(EndTime)) |
| | | { |
| | | //EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString(); |
| | | ruyearstr += $" and CreateTime < '{EndTime}'"; |
| | | chuyearstr += $" and CreateTime < '{EndTime}'"; |
| | | } |
| | | |
| | | ruyearstr += " order by CreateTime"; |
| | | chuyearstr += " order by CreateTime"; |
| | | //每年入库 |
| | | List<AssSoDateStockInfoDto> ruinfolist = Db.Ado.SqlQuery<AssSoDateStockInfoDto>(ruyearstr); |
| | | //每年出库 |
| | | List<AssSoDateStockInfoDto> chuinfolist = Db.Ado.SqlQuery<AssSoDateStockInfoDto>(chuyearstr); |
| | | |
| | | //循环12个月 |
| | | for (int i = 1; i <= 12; i++) |
| | | { |
| | | //临时入 |
| | | List<AssSoDateStockInfoDto> linshiru = new List<AssSoDateStockInfoDto>(); |
| | | //临时出 |
| | | List<AssSoDateStockInfoDto> linshichu = new List<AssSoDateStockInfoDto>(); |
| | | |
| | | if (ruinfolist.Count > 0) |
| | | { |
| | | linshiru = ruinfolist.Where(a => a.month == i.ToString()).ToList(); //获取当月入库信息 |
| | | } |
| | | if (chuinfolist.Count > 0) |
| | | { |
| | | linshichu = chuinfolist.Where(a => a.month == i.ToString()).ToList(); //获取当月出库信息 |
| | | } |
| | | if (linshichu.Count > 0) |
| | | { |
| | | foreach (var h in linshichu) |
| | | { |
| | | linshiru.Add(h); |
| | | } |
| | | } |
| | | var data = linshiru.OrderBy(a => a.CreateTime).ToList(); |
| | | |
| | | //判断是否存在当月入库信息 |
| | | if (linshiru.Count > 0) |
| | | { |
| | | |
| | | foreach (var item in data) |
| | | { |
| | | item.NoticeDateTime = Convert.ToDateTime(item.NoticeDateTime).ToString("yyyy-MM-dd"); |
| | | //总计结存数量 |
| | | if (item.ASNNo != null) |
| | | { |
| | | //入库 |
| | | countjie += item.ASNQty; |
| | | montha += item.ASNQty; //月入库 |
| | | yeara += item.ASNQty; //年入库 |
| | | } |
| | | else if (item.SONo != null) |
| | | { |
| | | //出库 |
| | | countjie -= item.SOQty; |
| | | months += item.SOQty; //月出库 |
| | | years += item.SOQty; //年出库 |
| | | } |
| | | item.ASNSOQty = countjie; //结存数量 |
| | | item.Weight = weight; //重量 |
| | | infolist.Add(item); |
| | | |
| | | if (createTime < item.CreateTime) |
| | | { |
| | | createTime = item.CreateTime; //时间 |
| | | } |
| | | } |
| | | } |
| | | //判断是否存在当月出库信息 |
| | | //if (linshichu.Count > 0) |
| | | //{ |
| | | // //出库 |
| | | // foreach (var item in linshichu) |
| | | // { |
| | | // item.NoticeDateTime = Convert.ToDateTime(item.NoticeDateTime).ToString("yyyy-MM-dd"); |
| | | // countjie -= item.SOQty; //总计结存数量 |
| | | // item.ASNSOQty = countjie; //结存数量 |
| | | // item.Weight = weight; //重量 |
| | | // infolist.Add(item); |
| | | // months += item.SOQty; //月出库 |
| | | // years += item.SOQty; //年出库 |
| | | // if (createTime < item.CreateTime) |
| | | // { |
| | | // createTime = item.CreateTime; //时间 |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | //判断是否有月出入库 |
| | | if (linshiru.Count > 0 || linshichu.Count > 0) |
| | | { |
| | | //月信息 |
| | | var addmonthinfo = new AssSoDateStockInfoDto() |
| | | { |
| | | ASNNo = "", // 入库单据 |
| | | SONo = "", // 出库单据 |
| | | |
| | | SkuNo = "", // 物料编码 |
| | | SkuName = "", // 物料名称 |
| | | |
| | | NoticeType = "本月累计", //统计类别 |
| | | |
| | | ASNQty = montha, // 入库数量 |
| | | SOQty = months, // 出库数量 |
| | | ASNSOQty = countjie, // 结存数量 |
| | | |
| | | Weight = weight, // 理论重量 |
| | | |
| | | NoticeDateTime = yearcount.SkuName + "年" + i + "月", // 单据时间 |
| | | CreateTime = createTime, //时间 |
| | | }; |
| | | infolist.Add(addmonthinfo); |
| | | } |
| | | montha = 0; //月入库 |
| | | months = 0; //月出库 |
| | | } |
| | | //判断是否有年出入库 |
| | | if (ruinfolist.Count > 0 || chuinfolist.Count > 0) |
| | | { |
| | | //年信息 |
| | | var addyearinfo = new AssSoDateStockInfoDto() |
| | | { |
| | | ASNNo = "", // 入库单据 |
| | | SONo = "", // 出库单据 |
| | | |
| | | SkuNo = "", // 物料编码 |
| | | SkuName = "", // 物料名称 |
| | | |
| | | NoticeType = "本年累计", //统计类别 |
| | | |
| | | ASNQty = yeara, // 入库数量 |
| | | SOQty = years, // 出库数量 |
| | | ASNSOQty = countjie, // 结存数量 |
| | | |
| | | Weight = weight, // 理论重量 |
| | | |
| | | NoticeDateTime = yearcount.SkuName + "年", // 单据时间 |
| | | CreateTime = createTime, //时间 |
| | | }; |
| | | infolist.Add(addyearinfo); |
| | | } |
| | | yeara = 0; //年入库 |
| | | years = 0; //年出库 |
| | | } |
| | | |
| | | infolist = infolist.OrderBy(x => x.CreateTime).ToList(); |
| | | return infolist; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 导出库存 |
| | | /// <summary> |
| | | /// 导出库存总量 |
| | |
| | | //判断物料是否相同 |
| | | if (dto.SkuNo == item.SkuNo) |
| | | { |
| | | dto.Qty = (Convert.ToInt32(dto.Qty) + Convert.ToInt32(item.Qty)).ToString(); |
| | | dto.FrozenQty = (Convert.ToInt32(dto.FrozenQty) + Convert.ToInt32(item.FrozenQty)).ToString(); |
| | | dto.LockQty = (Convert.ToInt32(dto.LockQty) + Convert.ToInt32(item.LockQty)).ToString(); |
| | | dto.ResidueQty = (Convert.ToInt32(dto.ResidueQty) + Convert.ToInt32(item.ResidueQty)).ToString(); |
| | | var s = Convert.ToDecimal(dto.Qty) ; |
| | | var ss = Convert.ToDecimal(item.Qty); |
| | | dto.Qty = (Convert.ToDecimal(dto.Qty) + Convert.ToDecimal(item.Qty)).ToString(); |
| | | dto.FrozenQty = (Convert.ToDecimal(dto.FrozenQty) + Convert.ToDecimal(item.FrozenQty)).ToString(); |
| | | dto.LockQty = (Convert.ToDecimal(dto.LockQty) + Convert.ToDecimal(item.LockQty)).ToString(); |
| | | dto.ResidueQty = (Convert.ToDecimal(dto.ResidueQty) + Convert.ToDecimal(item.ResidueQty)).ToString(); |
| | | break; |
| | | } |
| | | i += 1; |