From d64f81bccb25c98261b84a4355f92c3b32470606 Mon Sep 17 00:00:00 2001 From: zhaowc <526854230@qq.com> Date: 星期一, 07 四月 2025 09:32:56 +0800 Subject: [PATCH] 日期显示问题修改 --- Wms/WMS.BLL/DataServer/StockServer.cs | 1321 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 1,266 insertions(+), 55 deletions(-) diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs index 99a4ebd..f784e43 100644 --- a/Wms/WMS.BLL/DataServer/StockServer.cs +++ b/Wms/WMS.BLL/DataServer/StockServer.cs @@ -4,13 +4,25 @@ using System.Linq; using System.Runtime.Intrinsics.X86; using System.Security.Claims; +using System.Security.Policy; using System.Text; +using Model.InterFaceModel; using Model.ModelDto; using Model.ModelDto.DataDto; +using Model.ModelDto.LogDto; +using Model.ModelDto.SysDto; +using Model.ModelVm.DataVm; +using Newtonsoft.Json; using SqlSugar; +using Utility.Tools; +using WMS.BLL.LogServer; using WMS.DAL; +using WMS.Entity.BllAsnEntity; +using WMS.Entity.BllSoEntity; using WMS.Entity.Context; using WMS.Entity.DataEntity; +using WMS.Entity.LogEntity; +using WMS.Entity.SysEntity; using WMS.IBLL.IDataServer; namespace WMS.BLL.DataServer @@ -38,7 +50,7 @@ "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)) { @@ -78,39 +90,66 @@ //搴撳瓨鎬婚噺 List<MateDataStockDto> StockListDto = new List<MateDataStockDto>(); + DataStockDetail detail = new DataStockDetail(); foreach (var item in StockList) { - //鍒ゆ柇搴撳瓨鎬婚噺鏄惁鎷ユ湁鐗╂枡 - if (StockListDto.Count > 0) + + detail = Db.Queryable<DataStockDetail>().First(w => w.SkuNo == item.SkuNo && w.LotNo == item.LotNo && w.IsDel == "0"); + if (detail != null) { - int i = 0; - //foreach寰幆搴撳瓨鎬婚噺 - foreach (var dto in StockListDto) + if (!string.IsNullOrEmpty(detail.ProductionTime.ToString())) { - //鍒ゆ柇鐗╂枡鍜屾壒娆℃槸鍚︾浉鍚� - 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; - } + item.ProductionTime = (DateTime)detail.ProductionTime; } + else + { + item.ProductionTime = null; + } + if (!string.IsNullOrEmpty(detail.ExpirationTime.ToString())) + { + item.ExpirationTime = (DateTime)detail.ExpirationTime; + } + else + { + item.ExpirationTime = null; + } + item.InspectStatus = detail.InspectStatus; } - 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; @@ -126,16 +165,23 @@ /// <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)) @@ -151,11 +197,7 @@ if (!string.IsNullOrEmpty(lotNo)) { str += " and detail.LotNo like @lotno"; - } - if (!string.IsNullOrEmpty(skuNo) && string.IsNullOrEmpty(lotNo)) - { - str += " and detail.LotNo = ''"; - } + } //鍒ゆ柇鍌ㄤ綅鍦板潃鏄惁涓虹┖ if (!string.IsNullOrEmpty(locatNo)) { @@ -185,26 +227,107 @@ 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 cat.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 }); + foreach (var item in stockDetailsList) + { + if (!string.IsNullOrEmpty(item.LocatNo)) + { + if (item.WareHouseNo == "W01") + { + item.PLCLocatNo = GetDjAdress(item.LocatNo.Substring(1, 2), item.LocatNo.Substring(0, 2), item.LocatNo.Substring(6, 2)).ToString() + item.LocatNo.Substring(2, 2) + item.LocatNo.Substring(4, 2); + } + } + + } return stockDetailsList; } #endregion + + /// <summary> + /// 鏍规嵁鍌ㄤ綅鎺掕幏鍙栬泛鏈哄搴旂殑鍦板潃鎺�03010302 + /// </summary> + /// <param name="road">鎺�02</param> + /// <param name="pai">鎺�03</param> + /// <param name="dept">娣卞害02</param> + /// <returns></returns> + public static int GetDjAdress(string road, string pai, string dept) + { + var roadNum = int.Parse(road); + var paiNum = int.Parse(pai); + var deptNum = int.Parse(dept); + + var paiVal = 0; + + // 鍒ゆ柇鎺掑鍋舵暟 + if (paiNum % 2 == 0) + { + if (deptNum == 1) + { + paiVal = 3; + } + else + { + paiVal = 4; + } + } + else + { + if (deptNum == 1) + { + paiVal = 2; + + } + else + { + paiVal = 1; + + } + } + + if (paiVal == 0) + { + throw new Exception("鎺掕浆鎹㈠け璐�"); + } + return paiVal; + + } #region 浣庡簱瀛橀璀� @@ -268,9 +391,13 @@ 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)) @@ -290,6 +417,18 @@ 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"; //鍏ュ簱 @@ -299,6 +438,9 @@ skuno = "%" + skuNo + "%", //鐗╂枡鍙� skuname = "%" + skuName + "%", //鐗╂枡鍚嶇О lotno = "%" + lotNo + "%", //鎵规鍙� + //startTime = startTime, + //endTime = endTime + }); List<TotalRecordDto> totalCListData = Db.Ado.SqlQuery<TotalRecordDto>(cstr, new { @@ -306,10 +448,15 @@ skuno = "%" + skuNo + "%", //鐗╂枡鍙� skuname = "%" + skuName + "%", //鐗╂枡鍚嶇О lotno = "%" + lotNo + "%", //鎵规鍙� + //startTime = startTime, + //endTime = endTime }); + DataStock stock = new DataStock(); + stock = Db.Queryable<DataStock>().First(); //鍚堝苟鏁版嵁 int a = 0; + decimal qty = 0; foreach (var h in totalHListData) { if (a >= totalCListData.Count) @@ -318,16 +465,23 @@ } foreach (var c in totalCListData) { + //鍒ゆ柇鍑哄簱鏄惁鎷ユ湁鐩稿悓鎵规 涓旂墿鏂欑浉鍚� if (h.LotNo == c.LotNo) { if (h.SkuNo == c.SkuNo && h.SkuName == c.SkuName) { + stock = Db.Queryable<DataStock>().First(w=>w.SkuNo == h.SkuNo && w.SkuName == h.SkuName && w.LotNo == h.LotNo && w.IsDel == "0"); + if (stock != null) + { + qty = stock.Qty; + } h.CQty = c.CQty; //鍑哄簱鏁伴噺 h.CAllotQty = c.CAllotQty; //鍒嗛厤鏁伴噺 h.CFactQty = c.CFactQty; //涓嬫灦鏁伴噺 h.CompleteQty = c.CompleteQty; //鎷h揣鏁伴噺 - //h.SONo = c.SONo; //鍑哄簱鍗曞彿 + h.Qty = qty; //褰撳墠搴撳瓨 + a += 1; @@ -350,12 +504,21 @@ /// <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)) @@ -375,12 +538,21 @@ 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"; @@ -393,6 +565,8 @@ skuname = "%" + skuName + "%", //鐗╂枡鍚嶇О lotno = "%" + lotNo + "%", //鎵规鍙� palletno = "%" + palletNo + "%", //鎵樼洏鍙� + startTime = startTime, + endTime = endTime }); //鍑哄簱 List<TotalRecordDto> totalCList = Db.Ado.SqlQuery<TotalRecordDto>(cstr, new @@ -402,6 +576,8 @@ skuname = "%" + skuName + "%", //鐗╂枡鍚嶇О lotno = "%" + lotNo + "%", //鎵规鍙� palletno = "%" + palletNo + "%", //鎵樼洏鍙� + startTime = startTime, + endTime = endTime }); //鍚堝苟 @@ -460,6 +636,299 @@ #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> /// 瀵煎嚭搴撳瓨鎬婚噺 @@ -504,10 +973,12 @@ //鍒ゆ柇鐗╂枡鏄惁鐩稿悓 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; @@ -655,5 +1126,745 @@ return stockDetailsList; } #endregion + + #region AGV灏忚溅浠诲姟瀹屾垚鏇存柊搴撳瓨 + + /// <summary> + /// AGV鍏ュ簱瀹屾垚 + /// </summary> + /// <param name="TaskCode">浠诲姟鍙�</param> + /// <param name="wcsurl">涓嬪彂WCS鏀捐揣瀹屾垚鍦板潃</param> + /// <returns></returns> + public void ArriveFinish(string TaskCode,string wcsurl) + { + try + { + var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "0" && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭� + if (palletNo == null) + { + throw new Exception("姝や换鍔″凡瀹屾垚"); + + } + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); + //寮�鍚簨鍔� + Db.BeginTran(); + + //淇敼璧峰搴撲綅鐘舵�� + storageLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //淇敼浠诲姟鐘舵�� + palletNo.Status = "2"; //宸插畬鎴� + Db.Updateable(palletNo).ExecuteCommand(); + + + if (stockDetail !=null) + { + //淇敼搴撳瓨鏄庣粏 + stockDetail.Status = "0";//寰呭垎閰� + stockDetail.LocatNo = ""; + stockDetail.AreaNo = ""; + stockDetail.RoadwayNo = ""; + stockDetail.WareHouseNo = ""; + Db.Updateable(stockDetail).ExecuteCommand(); + } + + + #region 涓嬪彂WCS鏀捐揣瀹屾垚 + var data = new + { + Port = palletNo.EndLocat + }; + var jsonData = JsonConvert.SerializeObject(data); + string response = ""; + try + { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + response = HttpHelper.DoPost(wcsurl, jsonData, "涓嬪彂缁橶CS鏀捐揣瀹屾垚鍛戒护", "WCS"); + var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + + //////瑙f瀽杩斿洖鏁版嵁 + var res = JsonConvert.DeserializeObject<WcsModel>(response); + if (res.StatusCode == -1) + { + throw new Exception("鏀捐揣澶辫触锛學CS杩斿洖淇℃伅閿欒"); + } + } + + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + #endregion + palletNo.IsCancel = 0; + palletNo.IsSend = 0; + palletNo.IsFinish = 0; + Db.Updateable(palletNo).ExecuteCommand(); + + Db.CommitTran(); + + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception("AGV杩斿洖鍏ュ簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex); + } + } + + /// <summary> + /// AGV鍑哄簱瀹屾垚 + /// </summary> + /// <param name="TaskCode">浠诲姟鍙�</param> + /// <param name="url">鍙嶉MES澶囨枡瀹屾垚鍦板潃</param> + /// <returns></returns> + public void SoFinish(string TaskCode,string url) + { + try + { + var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "1" && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭� + if (palletNo == null) + { + throw new Exception("姝や换鍔″凡瀹屾垚"); + } + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅 + var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); //鑾峰彇搴撳瓨淇℃伅 + + //寮�鍚簨鍔� + Db.BeginTran(); + //淇敼鐩殑搴撲綅鐘舵�� + storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //淇敼浠诲姟鐘舵�� + palletNo.Status = "2"; //宸插畬鎴� + Db.Updateable(palletNo).ExecuteCommand(); + + //淇敼搴撳瓨鏄庣粏 + stockDetail.Status = "2";// 0:寰呭垎閰� 1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾 + stockDetail.LocatNo = storageLocat.LocatNo; + stockDetail.AreaNo = storageLocat.AreaNo; + stockDetail.RoadwayNo = storageLocat.RoadwayNo; + stockDetail.WareHouseNo = storageLocat.WareHouseNo; + Db.Updateable(stockDetail).ExecuteCommand(); + + + Db.CommitTran(); + + } + catch (Exception ex ) + { + + throw new Exception("AGV杩斿洖鍑哄簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex); + } + } + + + //瀹屾垚鎺ュ彛淇敼锛堟湭瀹屾垚锛� + //try + //{ + // var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭� + // if (palletNo == null) + // { + // throw new Exception("姝や换鍔″凡瀹屾垚"); + // } + // var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅 + // var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅 + // var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo).ToList(); + // if (stockDetail.Count == 0) + // { + // throw new Exception("鎵樼洏涓婄墿鏂欏簱瀛樻槑缁嗕俊鎭笉瀛樺湪,璇锋鏌�!"); + // } + // //寮�鍚簨鍔� + // Db.BeginTran(); + // if (storageLocat != null) + // { + // if (storageLocat.AreaNo == "B12")//杞﹂棿缂撳瓨浣嶉渶瑕侀�氱煡MES + // { + // var data = new List<RequertBeiliaoInfoModel>(); + // //鏇存敼搴撳瓨鏄庣粏 + // foreach (var item in stockDetail) + // { + // item.LocatNo = item.LocatNo;//鍌ㄤ綅鏇存敼 + // item.WareHouseNo = item.WareHouseNo;//鎵�灞炰粨搴撴洿鏀� + // item.RoadwayNo = item.RoadwayNo;//鎵�灞炲贩閬撴洿鏀� + // item.AreaNo = item.AreaNo;//鎵�灞炲尯鍩熸洿鏀� + + // Db.Updateable(item).ExecuteCommand(); + + + // if (string.IsNullOrWhiteSpace(item.SONo)) + // { + // throw new Exception("褰撳墠鎵樼洏涓嶆槸鎷兼墭鍑哄簱鎵樼洏"); + // } + // var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).ToList(); + // if (boxInfo.Count == 0) + // { + // throw new Exception("鎵樼洏涓婄墿鏂欑鐮佷俊鎭笉瀛樺湪,璇锋鏌�!"); + // } + // //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList(); + // var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new + // { + // m.BoxNo + // }).Select(it => new DataBoxInfo() + // { + // BoxNo = it.BoxNo + // }).ToList(); + + // //璁板綍鎵樼洏涓婁俊鎭粰MES + // foreach (var item2 in boxno) + // { + // var a = item.ProductionTime.ToString(); + // data.Add(new RequertBeiliaoInfoModel() + // { + // no = item2.BoxNo, + // materiel_no = item.SkuNo, + // materiel_name = item.SkuName, + // qty = item.Qty, + // batch = item.LotNo, + // producttime = item.ProductionTime.ToString().Substring(0, 10), + // expiry = item.ExpirationTime.ToString().Substring(0, 10) + + // }); + // } + // //搴撳瓨绠辩爜鏄庣粏鍒犻櫎 + // Db.Deleteable(boxInfo).ExecuteCommand(); + // //鍒犻櫎搴撳瓨鎵樼洏淇℃伅 + // Db.Deleteable(item).ExecuteCommand(); + // //鏇存敼搴撳瓨鎬昏〃 + // var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo); + // stock.LockQty -= (decimal)item.Qty; + // stock.Qty -= (decimal)item.Qty; + // Db.Updateable(stock).ExecuteCommand(); + // //鏇存敼鎵樼洏鐘舵�� + // var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); + // if (pallet != null) + // { + // pallet.Status = "0"; + // Db.Updateable(pallet).ExecuteCommand(); + // } + + // } + + // //鑾峰彇浠ょ墝 + // //var token = new Token().GetMesToken(mesTokenUrl); + // var token = ""; + // Dictionary<string, string> mesDic = new Dictionary<string, string>() + // { + // {"Authorization",token } + // }; + // var endlono = palletNo.EndLocat; + // //缂撳瓨搴撲綅杞崲 + // switch (palletNo.EndLocat.ToString().Substring(4, 1)) + // { + // case "1": + // endlono = "Y003_00" + palletNo.EndLocat.ToString().Substring(6, 1); + // break; + // case "2": + // endlono = "Y138_0" + palletNo.EndLocat.ToString().Substring(5, 2); + // break; + // case "3": + // endlono = "Y128_0" + palletNo.EndLocat.ToString().Substring(5, 2); + // break; + // default: + // break; + // } + // var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First(); + // var mesData = new RequertBeiliaoModel() + // { + // morder_no = mescode.OrderCode, + // pallet = stockDetail.First().PalletNo, + // layer_no = endlono, + // items = data + // }; + // var jsonData = JsonConvert.SerializeObject(mesData); + // //璋冪敤鎺ュ彛 + // var response = HttpHelper.DoPost(url, jsonData, "澶囨枡瀹屾垚杩愯嚦缂撳瓨鍖哄弽棣堣嚦MES", "MES", mesDic); + + // var obj = JsonConvert.DeserializeObject<MesModel>(response);//瑙f瀽杩斿洖鏁版嵁 + // if (obj.status != "success") + // { + // throw new Exception("澶囨枡鍚屾MES澶辫触锛�" + obj.message); + // } + + + // } + // //淇敼鐩殑搴撲綅鐘舵�� + // storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + // Db.Updateable(storageLocat).ExecuteCommand(); + + // //淇敼浠诲姟鐘舵�� + // palletNo.Status = "2"; //宸插畬鎴� + // Db.Updateable(palletNo).ExecuteCommand(); + + // //淇敼搴撳瓨鏄庣粏 + // item.Status = "2";// 0:寰呭垎閰� 1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾 + // stockDetail.LocatNo = storageLocat.LocatNo; + // stockDetail.AreaNo = storageLocat.AreaNo; + // stockDetail.RoadwayNo = storageLocat.RoadwayNo; + // stockDetail.WareHouseNo = storageLocat.WareHouseNo; + // Db.Updateable(stockDetail).ExecuteCommand(); + // } + // Db.CommitTran(); + + //} + /// <summary> + /// AGV绉诲簱瀹屾垚 + /// </summary> + /// <param name="TaskCode">浠诲姟鍙�</param> + /// <param name="url">鍙嶉MES澶囨枡瀹屾垚鍦板潃</param> + /// <returns></returns> + public void MoveFinish(string TaskCode,string url) + { + try + { + var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "3" && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭� + if (palletNo == null) + { + throw new Exception("姝や换鍔″凡瀹屾垚"); + } + var startLocat = new SysStorageLocat(); + + var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇鐩殑搴撲綅淇℃伅 + if (endLocat == null) + { + throw new Exception("鏈壘鍒扮浉搴旂殑鐩殑搴撲綅"); + } + var storageStart = new SysStorageLocat(); + + int isstock = 1; + var bindDetail = new BllPalletBind(); + var sysPanlno = new SysPallets(); + + var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo).ToList(); //鑾峰彇搴撳瓨淇℃伅 + if (stockDetail.Count == 0) + { + //鏈壘鍒板簱瀛樺悗闇�瑕佸垽鏂槸鍚︽槸绌烘墭鐩樼Щ搴� + isstock = 0; + bindDetail = Db.Queryable<BllPalletBind>().OrderByDescending(w=>w.Id).First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat);//鑾峰彇缁勬墭鐩樹俊鎭� + if (bindDetail == null) + { + bindDetail = Db.Queryable<BllPalletBind>().OrderByDescending(w => w.Id).First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat);//鑾峰彇缁勬墭鐩樹俊鎭� + if (bindDetail == null) + { + throw new Exception("鏈壘鍒扮┖鎵樼洏缁勬墭淇℃伅"); + } + } + } + else + { + storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇璧峰搴撲綅淇℃伅 + if (storageStart == null) + { + isstock = 2; //搴撳彛鍒扮紦瀛樹綅浠诲姟 + } + } + //var soAllot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);//鑾峰彇鍒嗛厤淇℃伅 + + + //寮�鍚簨鍔� + Db.BeginTran(); + + //淇敼鐩殑搴撲綅鐘舵�� + endLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(endLocat).ExecuteCommand(); + + //淇敼浠诲姟鐘舵�� + palletNo.Status = "2"; //宸插畬鎴� + Db.Updateable(palletNo).ExecuteCommand(); + + if (isstock == 1) + { + startLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); + //淇敼璧峰搴撲綅鐘舵�� + startLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(startLocat).ExecuteCommand(); + + + #region + var data = new List<RequertBeiliaoInfoModel>(); + + //鏇存敼搴撳瓨鏄庣粏 + foreach (var item in stockDetail) + { + item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼 + item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀� + item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀� + item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀� + + Db.Updateable(item).ExecuteCommand(); + + if (endLocat != null && endLocat.AreaNo == "B12") //鏄惁鏄�3妤肩紦瀛樺尯 鏄細鍒犻櫎搴撳瓨 + { + if (string.IsNullOrWhiteSpace(item.SONo)) + { + throw new Exception("褰撳墠鎵樼洏涓嶆槸鎷兼墭鍑哄簱鎵樼洏"); + } + var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).ToList(); + if (boxInfo.Count == 0) + { + throw new Exception("鎵樼洏涓婄墿鏂欑鐮佷俊鎭笉瀛樺湪,璇锋鏌�!"); + } + //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList(); + var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new + { + m.BoxNo, + m.ProductionTime, + m.ExpirationTime, + }).Select(it => new DataBoxInfo() + { + BoxNo = it.BoxNo, + ProductionTime = it.ProductionTime, + ExpirationTime = it.ExpirationTime, + }).ToList(); + + //璁板綍鎵樼洏涓婁俊鎭粰MES + foreach (var item2 in boxno) + { + //var a = item.ProductionTime.ToString(); + data.Add(new RequertBeiliaoInfoModel() + { + no = item2.BoxNo, + materiel_no = item.SkuNo, + materiel_name = item.SkuName, + qty = item.Qty, + batch = item.LotNo, + producttime = item2.ProductionTime.ToString().Substring(0, 10), + expiry = item2.ExpirationTime.ToString().Substring(0, 10) + + }); + } + //搴撳瓨绠辩爜鏄庣粏鍒犻櫎 + Db.Deleteable(boxInfo).ExecuteCommand(); + //鍒犻櫎搴撳瓨鎵樼洏淇℃伅 + Db.Deleteable(item).ExecuteCommand(); + //鏇存敼搴撳瓨鎬昏〃 + var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo); + stock.LockQty -= (decimal)item.Qty; + stock.Qty -= (decimal)item.Qty; + Db.Updateable(stock).ExecuteCommand(); + //鏇存敼鎵樼洏鐘舵�� + var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo); + if (pallet != null) + { + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + } + } + + + if (endLocat != null && endLocat.AreaNo == "B12") + { + //鑾峰彇浠ょ墝 + //var token = new Token().GetMesToken(mesTokenUrl); + var token = ""; + Dictionary<string, string> mesDic = new Dictionary<string, string>() + { + {"Authorization",token } + }; + var endlono = endLocat.LocatNo; + //缂撳瓨搴撲綅杞崲 + switch (endLocat.LocatNo.ToString().Substring(4, 1)) + { + case "1": + endlono = "Y003_0" + endLocat.LocatNo.ToString().Substring(5, 2); + break; + + } + var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First(); + var mesData = new RequertBeiliaoModel() + { + morder_no = mescode.OrderCode, + pallet = stockDetail.First().PalletNo, + layer_no = endlono, + items = data + }; + var jsonData = JsonConvert.SerializeObject(mesData); + //璋冪敤鎺ュ彛 + var response = HttpHelper.DoPost(url, jsonData, "澶囨枡瀹屾垚杩愯嚦缂撳瓨鍖哄弽棣堣嚦MES", "MES", mesDic); + + var obj = JsonConvert.DeserializeObject<MesModel>(response);//瑙f瀽杩斿洖鏁版嵁 + if (obj.status != "success") + { + throw new Exception("澶囨枡鍚屾MES澶辫触锛�" + obj.message); + } + + } + #endregion + } + else if (isstock == 0) + { + //淇敼缁勬墭淇℃伅 + if (bindDetail.WareHouseNo == "W01") //1銆佺┖鎵樼洏鍨涘埌绌烘墭鐩樻敹闆嗗櫒锛� + { + bindDetail.WareHouseNo = "W02"; + bindDetail.LocatNo = endLocat.LocatNo; + bindDetail.RoadwayNo = ""; + //淇敼璧峰搴撲綅鐘舵�� + startLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(startLocat).ExecuteCommand(); + } + else//2銆佹嫞璐у彨绌烘墭鐩橈紝灏忚溅瀹屾垚涓�娆★紝鎵e噺涓�涓┖鎵樼洏鍨涗笂鏁伴噺 + { + bindDetail.Qty = bindDetail.Qty - 1; + if (bindDetail.Qty == 0)//鏁伴噺涓�0鍚庢洿鏀圭粍鎵樼姸鎬佸拰鎵樼洏浣跨敤鐘舵�� + { + bindDetail.Status = "2"; + bindDetail.IsDel = "1"; + //淇敼璧峰搴撲綅鐘舵�� + startLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(startLocat).ExecuteCommand(); + } + else + { + bindDetail.LocatNo = startLocat.LocatNo;//?????鎷h揣浣嶆墭鐩樺浣曞鐞嗭紝鎷h揣浣嶆槸鍚﹂渶瑕佹洿鏀圭姸鎬侊紝鏄惁闇�瑕佸鍔犲簱瀛橈紱 + } + } + Db.Updateable(bindDetail).ExecuteCommand(); + + } + else //搴撳彛绉诲簱鍒扮紦瀛樹綅 + { + + foreach (var item in stockDetail) + { + item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼 + item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀� + item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀� + item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀� + + Db.Updateable(item).ExecuteCommand(); + } + } + palletNo.IsCancel = 0; + palletNo.IsSend = 0; + palletNo.IsFinish = 0; + Db.Updateable(palletNo).ExecuteCommand(); + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception("AGV杩斿洖绉诲簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細"+ex); + } + } + #endregion + + #region 鏁板瓧瀛敓绯荤粺鍙嶉淇℃伅 + + /// <summary> + /// 鍙嶉鏁板瓧瀛敓绯荤粺搴撳瓨淇℃伅 + /// </summary> + /// <param name=""></param> + /// <returns></returns> + public List<ReLocateDataModel> GetLocateList() + { + try + { + + //搴撳瓨淇℃伅 + var stockDetailsList = Db.Queryable<DataStockDetail>().ToList(); + var sql = "select LocatNo,PalletNo,SkuName,Standard,LotNo,InspectStatus,Qty,ExpirationTime as Warranty from DataStockDetail "; + + List<ReLocateDataModel> list = Db.Ado.SqlQuery<ReLocateDataModel>(sql); + + //if (stockDetailsList.Count == 0) + //{ + // return list; + //} + //foreach (var item in stockDetailsList) + //{ + // list.Add(item); + + //} + //for (int i = 0; i < stockDetailsList.Count; i++) + //{ + + // list.Add(stockDetailsList); + // list[i].LocatNo = stockDetailsList[i].LocatNo; //搴撲綅 + // list[i].PalletNo = stockDetailsList[i].PalletNo; //鎵樼洏鍙� + // list[i].SkuName = stockDetailsList[i].SkuName; //鐗╂枡鍚嶇О + // list[i].Stadard = stockDetailsList[i].Standard; //瑙勬牸 + // list[i].LotNo = stockDetailsList[i].LotNo; //鎵规 + // list[i].InspectStatus = stockDetailsList[i].InspectStatus; //璐ㄩ噺鐘舵�� + // list[i].Qty = stockDetailsList[i].Qty.ToString(); //搴撳瓨鏁伴噺 + // list[i].Warranty = stockDetailsList[i].ExpirationTime.ToString(); //鏈夋晥鏈� ??杩囨湡鏃堕棿锛屾槸鍚﹁鏇存敼 + //} + return list; + } + catch (Exception ex) + { + + throw new Exception("杩斿洖搴撳瓨淇℃伅鏈夎锛岄敊璇俊鎭細" + ex); + } + } + + + + /// <summary> + /// 鍙嶉鏁板瓧瀛敓绯荤粺鎿嶄綔淇℃伅 + /// </summary> + /// <param name=""></param> + /// <returns></returns> + public List<ReLogDataModel> GetLogDataList() + { + try + { + + //搴撳瓨淇℃伅 + var stockDetailsList = Db.Queryable<DataStockDetail>().ToList(); + var sql = "select LocatNo,PalletNo,SkuName,Standard,LotNo,InspectStatus,Qty,ExpirationTime as Warranty from DataStockDetail "; + + + var item2 = Expressionable.Create<LogOperationSO>() + .And(it => it.IsDel == "0") + .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� + + var list2 = Db.Queryable<LogOperationSO>().Where(item2) + .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) + .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) + .Select((it, dic, users) => new OperationDto() + { + Id = it.Id, + ParentNo = it.ParentNo, + MenuNo = it.MenuNo, + MenuName = it.MenuName, + FkNo = it.FkNo, + Type = dic.DictName, + Msg = it.Msg, + CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), + CreateUserName = users.RealName, + }); + + List<ReLogDataModel> list = Db.Ado.SqlQuery<ReLogDataModel>(sql); + + return list; + } + catch (Exception ex) + { + + throw new Exception("杩斿洖搴撳瓨淇℃伅鏈夎锛岄敊璇俊鎭細" + ex); + } + } + + + /// <summary> + /// 鏌ヨ鎿嶄綔鏃ュ織 + /// </summary> + /// <param name="menuName">鑿滃崟鍚嶇О</param> + /// <param name="type">绫诲瀷</param> + /// <returns></returns> + public List<OperationDto> ReLogData() + { + try + { + var total = 0; + #region asn + + var item = Expressionable.Create<LogOperationASN>() + .And(it => it.IsDel == "0") + .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� + + var list = Db.Queryable<LogOperationASN>().Where(item) + .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) + .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) + .Select((it, dic, users) => new OperationDto() + { + Id = it.Id, + ParentNo = it.ParentNo, + MenuNo = it.MenuNo, + MenuName = it.MenuName, + FkNo = it.FkNo, + Type = dic.DictName, + Msg = it.Msg, + CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), + CreateUserName = users.RealName, + }); + + #endregion + + #region so + + var item2 = Expressionable.Create<LogOperationSO>() + .And(it => it.IsDel == "0") + .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� + + var list2 = Db.Queryable<LogOperationSO>().Where(item2) + .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) + .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) + .Select((it, dic, users) => new OperationDto() + { + Id = it.Id, + ParentNo = it.ParentNo, + MenuNo = it.MenuNo, + MenuName = it.MenuName, + FkNo = it.FkNo, + Type = dic.DictName, + Msg = it.Msg, + CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), + CreateUserName = users.RealName, + }); + + #endregion + + #region cr + + var item3 = Expressionable.Create<LogOperationCR>() + .And(it => it.IsDel == "0") + .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� + + var list3 = Db.Queryable<LogOperationCR>().Where(item3) + .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) + .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) + .Select((it, dic, users) => new OperationDto() + { + Id = it.Id, + ParentNo = it.ParentNo, + MenuNo = it.MenuNo, + MenuName = it.MenuName, + FkNo = it.FkNo, + Type = dic.DictName, + Msg = it.Msg, + CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), + CreateUserName = users.RealName, + }); + + #endregion + + #region sys + + var item4 = Expressionable.Create<LogOperationSys>() + .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� + + var list4 = Db.Queryable<LogOperationSys>().Where(item4) + .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) + .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) + .Select((it, dic, users) => new OperationDto() + { + Id = it.Id, + ParentNo = it.ParentNo, + MenuNo = it.MenuNo, + MenuName = it.MenuName, + FkNo = it.FkNo, + Type = dic.DictName, + Msg = it.Msg, + CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), + CreateUserName = users.RealName, + }); + + #endregion + + var data = Db.UnionAll(list, list2, list3, list4).OrderByDescending(it => it.CreateTime); + return data.OrderByDescending(m => m.CreateTime).ToList(); + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + #endregion } } -- Gitblit v1.8.0