| | |
| | | using System.Xml.Schema; |
| | | using ZXing.OneD; |
| | | using System.Threading.Tasks; |
| | | using System.Security.Policy; |
| | | using Newtonsoft.Json; |
| | | using Utility.Tools; |
| | | |
| | | namespace WMS.BLL.BllPdaServer |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model) |
| | | public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model,string url) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | throw new Exception("请扫描外箱条码!"); |
| | | } |
| | | string sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | |
| | | if (models.Count == 0) |
| | | if (string.IsNullOrWhiteSpace(model.ASNNo)) |
| | | { |
| | | throw new Exception("箱码信息不存在!"); |
| | | throw new Exception("请选择入库单号!"); |
| | | } |
| | | var noticeList = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == model.ASNNo).ToList(); |
| | | if (noticeList.Count != 1) |
| | | { |
| | | throw new Exception("入库单号重复!"); |
| | | } |
| | | var notice = noticeList.First(); |
| | | if (notice.Type == "0") //成品入库 |
| | | { |
| | | string sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | |
| | | return models; |
| | | if (models.Count != 0) |
| | | { |
| | | return models; |
| | | } |
| | | else |
| | | { |
| | | var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList(); |
| | | |
| | | if (boxInfo.Count == 0) |
| | | { |
| | | models = GetFMBindBoxInfos(model.BoxNo, url); |
| | | return models; |
| | | } |
| | | else |
| | | { |
| | | if (boxInfo.Count(m => m.Status != "0") > 0) |
| | | { |
| | | throw new Exception("箱码信息状态不是等待执行"); |
| | | } |
| | | return models; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | else if (notice.Type == "1" || notice.Type == "4") //采购入库 |
| | | { |
| | | string sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | |
| | | if (models.Count != 0) |
| | | { |
| | | return models; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("没有查询到箱码信息"); |
| | | } |
| | | } |
| | | else if (notice.Type == "3") //退货入库 |
| | | { |
| | | string sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | |
| | | if (models.Count != 0) |
| | | { |
| | | return models; |
| | | } |
| | | else |
| | | { |
| | | sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo2 = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | if (models.Count != 0) |
| | | { |
| | | return models; |
| | | } |
| | | else |
| | | { |
| | | sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo3 = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | if (models.Count != 0) |
| | | { |
| | | return models; |
| | | } |
| | | } |
| | | } |
| | | |
| | | #region 获取最后一次出库拣货中的箱码信息 |
| | | |
| | | var comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); |
| | | if (comBox.Count == 0) |
| | | { |
| | | comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo2 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); |
| | | if (comBox.Count == 0) |
| | | { |
| | | comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo3 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); |
| | | } |
| | | } |
| | | var i = 0;//循环次数 |
| | | DateTime time = DateTime.Now; |
| | | var allotId = 0; |
| | | foreach (var item in comBox) |
| | | { |
| | | var comBoxList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == item).OrderByDescending(m => m.CreateTime).First(); |
| | | if (i == 0) |
| | | { |
| | | time = comBoxList.CreateTime; |
| | | allotId = comBoxList.ExportAllotId; |
| | | } |
| | | else if (comBoxList.CreateTime > time) |
| | | { |
| | | time = comBoxList.CreateTime; |
| | | allotId = comBoxList.ExportAllotId; |
| | | } |
| | | i++; |
| | | } |
| | | if (allotId != 0) |
| | | { |
| | | var addComBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotId).ToList(); |
| | | var addComList = addComBox.GroupBy(m => m.BoxNo).ToList(); |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == addComBox.First().SkuNo); |
| | | var pNum = 0; |
| | | var bNum = 0; |
| | | new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); |
| | | var boxList = new List<BllBoxInfo>(); |
| | | foreach (var com in addComList) |
| | | { |
| | | //箱内总数和 |
| | | var qtySum = addComBox.Where(m => m.BoxNo == com.Key).Sum(m => m.CompleteQty); |
| | | var bitBox = "1"; |
| | | if (qtySum == bNum) |
| | | { |
| | | bitBox = "0"; |
| | | } |
| | | foreach (var item in com) |
| | | { |
| | | if (item.BoxNo != model.BoxNo) |
| | | { |
| | | if (item.BoxNo2 != model.BoxNo) |
| | | { |
| | | if (item.BoxNo3 != model.BoxNo) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | var boxInfo = new BllBoxInfo() |
| | | { |
| | | BoxNo = item.BoxNo, |
| | | BoxNo2 = item.BoxNo2, |
| | | BoxNo3 = item.BoxNo3, |
| | | SkuNo = item.SkuNo, |
| | | SkuName = item.SkuName, |
| | | LotNo = item.LotNo, |
| | | LotText = item.LotText, |
| | | Qty = (decimal)item.CompleteQty, |
| | | FullQty = bNum, |
| | | //ProductionTime = , |
| | | //ExpirationTime = , |
| | | InspectMark = "0", |
| | | InspectStatus = "0", |
| | | BitBoxMark = bitBox, |
| | | Origin = "WMS", |
| | | Status = "0", |
| | | CreateUser = 0 |
| | | }; |
| | | boxList.Add(boxInfo); |
| | | } |
| | | |
| | | } |
| | | Db.Insertable(boxList).ExecuteCommand(); |
| | | |
| | | string sqlString2 = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | var models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); |
| | | |
| | | if (models2.Count != 0) |
| | | { |
| | | return models2; |
| | | } |
| | | else |
| | | { |
| | | sqlString2 = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo2 = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); |
| | | if (models2.Count != 0) |
| | | { |
| | | return models2; |
| | | } |
| | | else |
| | | { |
| | | sqlString2 = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |
| | | SkuNo, |
| | | SkuName, |
| | | LotNo, |
| | | BitBoxMark, |
| | | SUM(Qty) as Qty |
| | | FROM BllBoxInfo |
| | | WHERE IsDel = '0' |
| | | AND Status='0' |
| | | AND BoxNo3 = '{model.BoxNo}' |
| | | GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; |
| | | models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); |
| | | if (models2.Count != 0) |
| | | { |
| | | return models2; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | throw new Exception("箱码信息不存在!"); |
| | | #endregion |
| | | |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("单据类型错误"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public List<BoxInfoDto> GetFMBindBoxInfos(string boxno) |
| | | public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url) |
| | | { |
| | | try |
| | | { |
| | | #region 箱码请求接口,正式系统放开 |
| | | /*var jsonData = JsonConvert.SerializeObject(boxno); |
| | | var data = new |
| | | { |
| | | BoxCode = boxno |
| | | }; |
| | | var jsonData = JsonConvert.SerializeObject(data); |
| | | |
| | | var response = HttpHelper.DoPost(url, jsonData, "箱码信息请求", "FM"); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据 |
| | | if (obj.Success != 0) |
| | | var obj = JsonConvert.DeserializeObject<FumaGetBoxModel>(response);//解析返回数据 |
| | | if (obj.Success != "0") |
| | | { |
| | | throw new Exception("请求失败" + obj.Message); |
| | | }*/ |
| | | } |
| | | #endregion |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Product.SkuNo); |
| | | var pNum = 0;//托盘物品数量 |
| | | var bNum = 0;//箱码物品数量 |
| | | if (sku == null) |
| | | { |
| | | throw new Exception($"未查询到物料{obj.Product.SkuNo}信息"); |
| | | } |
| | | new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); |
| | | if (pNum == 0 || bNum == 0) |
| | | { |
| | | throw new Exception($"{sku.SkuNo}物品包装未找到!"); |
| | | } |
| | | |
| | | var boxList = new List<BllBoxInfo>(); |
| | | var comTime = DateTime.Now; |
| | | //添加箱码信息 |
| | | foreach (var box in obj.Product.BoxInfoList) |
| | | { |
| | | foreach (var box2 in box.BoxInfo2List) |
| | | { |
| | | foreach (var box3 in box2.BoxInfo3List) |
| | | { |
| | | var boxInfo = new BllBoxInfo() |
| | | { |
| | | BoxNo = box.BoxNo, |
| | | BoxNo2 = box2.BoxNo2, |
| | | BoxNo3 = box3.BoxNo3, |
| | | Qty = box3.Qty, |
| | | BitBoxMark = box.BitBoxMark, |
| | | |
| | | ASNNo = "", |
| | | //ASNDetailNo = noticeDetail.Id, |
| | | OrderCode = "",//notice.OrderCode |
| | | //BindNo = bindId, |
| | | //PalletNo = model.PallNo, |
| | | FullQty = bNum, |
| | | Status = "2", |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | LotNo = obj.Product.LotNo, |
| | | LotText = obj.Product.LotText, |
| | | ProductionTime = DateTime.Parse(obj.Product.ProductionTime), |
| | | ExpirationTime = DateTime.Parse(obj.Product.ExpirationTime), |
| | | //CompleteTime = "", |
| | | InspectMark = "0", |
| | | InspectStatus = "0", |
| | | Origin = "赋码", |
| | | CreateTime = comTime, |
| | | CreateUser = 0 |
| | | }; |
| | | boxList.Add(boxInfo); |
| | | } |
| | | |
| | | } |
| | | } |
| | | Db.Fastest<BllBoxInfo>().BulkCopy(boxList); |
| | | |
| | | |
| | | string sqlString = $@"SELECT |
| | | ASNNo, |
| | | BoxNo, |