| | |
| | | } |
| | | } |
| | | var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo)) |
| | | .GroupBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); |
| | | .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); |
| | | |
| | | SysRoadwayUseLog useLog = Db.Ado.SqlQuerySingle<SysRoadwayUseLog>("select Top(1) * from SysRoadwayUseLog where IsDel=0 order by CreateTime desc"); //巷道最后一次使用记录 |
| | | SysRoadwayUseLog useLog = Db.Queryable<SysRoadwayUseLog>().Where(m=>m.IsDel =="0" && roadList.Contains(m.RoadwayNo)).OrderByDescending(l => l.Id).First(); //巷道最后一次使用记录 |
| | | |
| | | var bindNum = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.Status == "0" && !string.IsNullOrWhiteSpace(m.RoadwayNo)) |
| | | .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); |
| | | #region 确定巷道排序 |
| | | |
| | | List<string> roadList2 = new List<string>(); |
| | | List<string> roadSmall = new List<string>(); |
| | | List<string> roadLarge = new List<string>(); |
| | | if (useLog != null) |
| | | { |
| | | roadList2.Add(useLog.RoadwayNo); |
| | | foreach (var r in roadList) |
| | | { |
| | | if (r == useLog.RoadwayNo) |
| | | { |
| | | continue; |
| | | } |
| | | //如果结果为0,则说明两个字符串相等; |
| | | //如果结果小于0,则说明第一个字符串小于第二个字符串; |
| | | //如果结果大于0,则说明第一个字符串大于第二个字符串。 |
| | | var bol = String.CompareOrdinal(r, useLog.RoadwayNo); |
| | | if (bol < 0) |
| | | { |
| | | roadSmall.Add(r); |
| | | } |
| | | if (bol > 0) |
| | | { |
| | | roadLarge.Add(r); |
| | | } |
| | | } |
| | | roadList2.AddRange(roadLarge); |
| | | roadList2.AddRange(roadSmall); |
| | | } |
| | | |
| | | roadList = roadList2; |
| | | #endregion |
| | | |
| | | |
| | | var roadNo = ""; |
| | | if (laneAllot == 0)//跳巷道平均分配 |
| | | { |
| | | //如果同级巷道有多条则查上次位置日志 |
| | | if (roadList.Count > 1) |
| | | { |
| | | useLog = Db.Queryable<SysRoadwayUseLog>().OrderByDescending(l => l.Id).First(); |
| | | } |
| | | //取各巷道所有排第一个合适位 |
| | | foreach (var l in roadList) |
| | | { |
| | |
| | | } |
| | | |
| | | var locateCount = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo)).Count(); |
| | | .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == l).Count(); |
| | | |
| | | var bindNum = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo== l) |
| | | .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); |
| | | if (locateCount - bindNum > 0) |
| | | { |
| | | roadNo = l; |
| | |
| | | { |
| | | if (useLog != null) |
| | | { |
| | | roadNo = useLog.RoadwayNo; |
| | | var locateCount = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == useLog.RoadwayNo).Count(); |
| | | |
| | | var bindNum = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == useLog.RoadwayNo) |
| | | .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); |
| | | if (locateCount - bindNum > 0) |
| | | { |
| | | roadNo = useLog.RoadwayNo; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else//按照巷道优先级分配 |
| | | { |
| | | foreach (var item in roadList) |
| | | { |
| | | roadNo = item; |
| | | { |
| | | var locateCount = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == item).Count(); |
| | | |
| | | var bindNum = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == item) |
| | | .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); |
| | | |
| | | if (locateCount - bindNum > 0) |
| | | { |
| | | roadNo = item; |
| | | } |
| | | //当前巷有位置则退出 |
| | | if (roadNo != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | #endregion |
| | | |
| | | return null; |
| | | return comDto; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | #endregion |
| | | |
| | | break; |
| | | case "0": |
| | | case "0": |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.ASNDetailNo); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw new Exception("未查询到托盘绑定的入库单明细信息"); |
| | | } |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == noticeDetail.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | throw new Exception("未查询到托盘绑定的入库单信息"); |
| | | } |
| | | string ownerNo = notice.CustomerNo;//货主编码 |
| | | string ownerName = notice.CustomerName;//货主名称 |
| | | |
| | | var sku1 = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo); |
| | | string isinspect = "0"; |
| | |
| | | { |
| | | LotNo = item.LotNo, |
| | | LotText = noticeDetail.LotText, |
| | | SupplierLot = noticeDetail.SupplierLot, |
| | | SupplierLot = noticeDetail.SupplierLot, |
| | | SkuNo = noticeDetail.SkuNo, |
| | | SkuName = noticeDetail.SkuName, |
| | | Standard = noticeDetail.Standard, |
| | |
| | | PackagNo = noticeDetail.PackagNo, |
| | | IsBale = item.IsBale, |
| | | IsBelt = item.IsBelt, |
| | | Demo = item.Demo, |
| | | |
| | | OwnerNo = ownerNo, |
| | | OwnerName = ownerName, |
| | | |
| | | IsDel = "0", |
| | | CreateUser = 0, |
| | |
| | | LockQty = 0, |
| | | FrozenQty = 0, |
| | | |
| | | OwnerNo = ownerNo, |
| | | OwnerName = ownerName, |
| | | |
| | | IsDel = "0", |
| | | CreateUser = userId, |
| | | CreateTime = comTime |
| | |
| | | var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Count(m => m.IsDel == "0" && m.ASNNo == noticeDetail.ASNNo && m.Status != "2"); |
| | | if (asnDetailNum == 0) |
| | | { |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == noticeDetail.ASNNo); |
| | | { |
| | | notice.Status = "2"; |
| | | notice.CompleteTime = comTime; |
| | | Db.Updateable(notice).ExecuteCommand(); |