test
15 小时以前 b2fc93e15a14847141b0a0a8bd591b945c9fa0a3
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -30,6 +30,7 @@
using System.Security.Cryptography.X509Certificates;
using AutoMapper.Configuration.Annotations;
using Utility;
using System.Diagnostics.Metrics;
namespace WMS.BLL.BllPdaServer
{
@@ -111,7 +112,15 @@
                    throw new Exception("未查询到托盘信息,请核实!");
                }
                //验证入库单明细是否存在
                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
                var detail = new BllArrivalNoticeDetail();
                if (string.IsNullOrEmpty(model.LotNo))
                {
                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo);
                }
                else
                {
                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
                }
                if (detail == null)
                {
                    throw new Exception("当前物料及批次与单据无关联,请核实!");
@@ -133,13 +142,20 @@
                #region 包装 
                var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);
                if (sku == null)
                {
                    throw new Exception("当前物料信息不存在,请核实!");
                }
                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
                if (pack == null)
                {
                    throw new Exception("当前物料包装信息不存在,请核实!");
                }
                var pNum = 0;//托盘物品数量 
                var bNum = 0;//箱码物品数量 
                //公共方法获取包装数量
                new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
                #endregion
@@ -188,9 +204,9 @@
                //绑定箱总数量
                //model.SkuQty = boxInfoList.Sum(s => s.Qty);
                //和选择的批次同批次的箱码信息
                var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList();
                var sameBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") == model.LotNo && w.Status == "0").ToList();
                //和选择的批次不同批次的箱码信息(拼箱批次)
                var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList();
                var notBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") != model.LotNo).ToList();
                #endregion
                if (sameBoxInfoList.Count <= 0)
@@ -301,7 +317,7 @@
                            InspectMark = bind.InspectMark,
                            InspectStatus = sku.IsInspect,
                            BitPalletMark = bind.BitPalletMark,
                            PackagNo = detail.PackagNo,                    //liudl 由sku的包装编号变为入库单明细的包装编码
                            PackagNo = sku.PackagNo,
                            IsBale = bind.IsBale,
                            IsBelt = bind.IsBelt,
@@ -360,7 +376,7 @@
                                continue;
                            }
                            //箱内物料批次与单据明细不符合
                            if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo)
                            if (box.SkuNo != detail.SkuNo || (box.LotNo ?? "") != model.LotNo)
                            {
                                throw new Exception($"-1:{box.BoxNo}箱内物料及批次与单据不一致,请核实!");
                            }
@@ -1178,12 +1194,20 @@
                #region 包装
                var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
                //var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);    // liudl 由Sku包装编号变更为入库单明细包装编号
                if (sku == null)
                {
                    throw new Exception("未查询到该物料信息,请核实!");
                }
                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
                if (pack == null)
                {
                    throw new Exception("未查询到该物料包装信息,请核实!");
                }
                var pNum = 0;//托盘物品数量 
                var bNum = 0;//箱码物品数量 
                //公共方法获取包装数量
                new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
                 
                #endregion
@@ -1340,7 +1364,7 @@
                        InspectMark = bind.InspectMark,
                        InspectStatus = inspectStatusStr,
                        BitPalletMark = bind.BitPalletMark,
                        PackagNo = detail.PackagNo,                    //liudl 由sku的包装编号变为入库单明细的包装编码
                        PackagNo = sku.PackagNo,                    //liudl 由sku的包装编号变为入库单明细的包装编码
                        IsBale = bind.IsBale,
                        IsBelt = bind.IsBelt,
@@ -2058,7 +2082,7 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
        /*public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
        {
            try
            {
@@ -2161,6 +2185,132 @@
            {
                throw ex;
            }
        }*/
        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno, string url)
        {
            try
            {
                #region 箱码请求接口,正式系统放开
                var data = new
                {
                    BoxNo = boxno
                };
                var jsonData = JsonConvert.SerializeObject(data);
                var response = HttpHelper.DoPost(url, jsonData, "箱码信息请求", "FM");
                var obj = JsonConvert.DeserializeObject<FuMaPostModel>(response);//解析返回数据
                if (obj.Success != true)
                {
                    throw new Exception("请求失败" + obj.Message);
                }
                #endregion
                if (string.IsNullOrEmpty(obj.Data.SkuNo))
                {
                    //测试用,发布正式前删除此段代码
                    //obj.Data.SkuNo = "50004632";
                    throw new Exception($"物料编码不能为空");
                }
                //查找物料信息
                var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Data.SkuNo);
                if (sku == null)
                {
                    throw new Exception($"未查询到物料{obj.Data.SkuNo}信息");
                }
                var pNum = 0;//托盘物品数量
                var bNum = 0;//箱码物品数量
                //获取包装信息
                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.Data.DetailList)
                {
                    foreach (var box2 in box.DetailList2)
                    {
                        var boxInfo = new BllBoxInfo()
                        {
                            BoxNo = obj.Data.BoxNo,
                            BoxNo2 = box.BoxNo2,
                            BoxNo3 = box2.BoxNo3,
                            Qty = obj.Data.Qty,
                            BitBoxMark = obj.Data.BitBoxMark,
                            ASNNo = "",
                            //ASNDetailNo = noticeDetail.Id,
                            OrderCode = "",//notice.OrderCode
                                           //BindNo = bindId,
                                           //PalletNo = model.PallNo,
                            FullQty = bNum,
                            Status = "0",
                            SkuNo = sku.SkuNo,
                            SkuName = sku.SkuName,
                            LotNo = box2.LotNo,
                            LotText = obj.Data.LotNoBoxNum,
                            ProductionTime = DateTime.Parse(box2.ProductionTime),
                            ExpirationTime = DateTime.Parse(box2.ExpirationTime),
                            //CompleteTime = "",
                            InspectMark = "0",
                            InspectStatus = "0",
                            Origin = "赋码",
                            CreateTime = comTime,
                            CreateUser = 0
                        };
                        boxList.Add(boxInfo);
                    };
                }
                try
                {
                    //开启事务
                    Db.BeginTran();
                    Db.Fastest<BllBoxInfo>().BulkCopy(boxList);
                    //提交事务
                    Db.CommitTran();
                }
                catch (Exception ex)
                {
                    //回滚事务
                    Db.RollbackTran();
                    throw new Exception("插入箱码失败:" + ex.Message);
                }
                string sqlString = $@"SELECT
                                        ASNNo,
                                        BoxNo,
                                        SkuNo,
                                        SkuName,
                                        LotNo,
                                        BitBoxMark,
                                        SUM(Qty) as Qty
                                      FROM BllBoxInfo
                                      WHERE IsDel = '0'
                                        AND Status='0'
                                        AND BoxNo = '{boxno}'
                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
                var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
                if (models.Count == 0)
                {
                    throw new Exception("箱码信息不存在!");
                }
                return models;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>