chengsc
2024-10-24 716b29fea5945ca7dc4419d9f1f980c379312b32
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -23,6 +23,7 @@
using System.Reflection;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Net.WebSockets;
namespace WMS.BLL.BllPdaServer
{
@@ -208,6 +209,8 @@
                if (modelList.Count > 0)
                {
                    var notice = Db.Queryable<BllArrivalNotice>().First(m=>m.IsDel == "0" && m.ASNNo == modelList[0].ASNNo);
                    modelList[0].UDF5 = notice.Demo;
                    return modelList[0];
                }
@@ -1903,15 +1906,21 @@
                }
                if (!string.IsNullOrWhiteSpace(model.ASNNo))
                {
                    var asnData = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == model.ASNNo);
                    if (asnData != null && (asnData.Type == "0" || asnData.Type == "3"))
                    var detailId = model.ASNNo.Split("-")[0];
                    var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m=>m.IsDel =="0" && m.Id == int.Parse(detailId));
                    if (detail != null)
                    {
                        var count = Db.Queryable<BllBoxInfo>().Count(m => m.IsDel == "0" && m.Status == "0" && m.BoxNo == model.BoxNo);
                        if (count == 0)
                        var asnData = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo);
                        if (asnData != null && (asnData.Type == "0" || asnData.Type == "3"))
                        {
                            GetBoxInfoByFuMa(model.BoxNo, ""); //从赋码系统获取箱码信息
                            var count = Db.Queryable<BllBoxInfo>().Count(m => m.IsDel == "0" && m.Status == "0" && m.BoxNo == model.BoxNo);
                            if (count == 0)
                            {
                                GetBoxInfoByFuMa(model.BoxNo, ""); //从赋码系统获取箱码信息
                            }
                        }
                    }
                }
                string sqlString = $@"SELECT 
@@ -1938,6 +1947,111 @@
                throw ex;
            }
        }
        /// <summary>
        /// 根据箱码获取标签最小追溯码信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<BoxInfoDto> GetBindBoxInfo2s(BoxInfoVm model)
        {
            try
            {
                if (string.IsNullOrEmpty(model.BoxNo3))
                {
                    throw new Exception("请扫描最小追溯条码!");
                }
                if (!string.IsNullOrWhiteSpace(model.ASNNo))
                {
                    var detailId = model.ASNNo.Split("-")[0];
                    var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == int.Parse(detailId));
                    if (detail != null)
                    {
                        var asnData = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo);
                        if (asnData != null)
                        {
                            if (asnData.Type != "3")
                            {
                                throw new Exception("单据请选择退货入库单!");
                            }
                            var count = Db.Queryable<BllBoxInfo>().Count(m => m.IsDel == "0" && m.Status == "0" && m.BoxNo3 == model.BoxNo3);
                            if (count == 0)
                            {
                                //优先WMS查找
                                var comDetail = Db.Queryable<BllBoxInfo>().First(m=>m.BoxNo3 == model.BoxNo3 && m.IsDel =="0" && m.Status =="2");
                                if (comDetail!= null)
                                {
                                    var boxInfo = new BllBoxInfo()
                                    {
                                        ASNNo = "",
                                        //ASNDetailNo = 0,
                                        OrderCode = "",
                                        //BindNo = 0,
                                        BoxNo = comDetail.BoxNo,
                                        BoxNo2 = comDetail.BoxNo2,
                                        BoxNo3 = comDetail.BoxNo3,
                                        PalletNo = "",
                                        Qty = comDetail.Qty,
                                        FullQty = comDetail.FullQty,
                                        Status = "0",
                                        SkuNo = comDetail.SkuNo,
                                        SkuName = comDetail.SkuName,
                                        LotNo = comDetail.LotNo,
                                        LotText = comDetail.LotText,
                                        SupplierLot = comDetail.SupplierLot,
                                        ProductionTime = comDetail.ProductionTime,
                                        ExpirationTime = comDetail.ExpirationTime,
                                        //CompleteTime = comTime,
                                        InspectMark = comDetail.InspectMark,
                                        BitBoxMark = "1",
                                        InspectStatus = comDetail.InspectStatus,
                                        Origin = "赋码",
                                        Standard = comDetail.Standard,
                                        PackageStandard = comDetail.PackageStandard,
                                        StoreTime = comDetail.StoreTime,
                                        QtyOrd = comDetail.QtyOrd,
                                        QtyCount = comDetail.QtyCount,
                                        CreateUser = 0,
                                        CreateTime = DateTime.Now,
                                    };
                                    Db.Insertable(boxInfo).ExecuteCommand();
                                }
                                else
                                {
                                   // GetBoxInfoByFuMa(model.BoxNo3, ""); //从赋码系统获取箱码信息
                                }
                            }
                        }
                    }
                }
                string sqlString = $@"SELECT
                                        ASNNo,
                                        BoxNo,
                                        SkuNo,
                                        SkuName,
                                        LotNo,
                                        SUM(Qty) as Qty
                                      FROM BllBoxInfo
                                      WHERE IsDel = '0'
                                        AND Status='0'
                                        AND BoxNo3 = '{model.BoxNo3}'
                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo; ";
                var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
                if (models.Count == 0)
                {
                    throw new Exception("最小追溯码信息不存在!");
                }
                return models;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        // 根据单据号获取单据明细列表
        public List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model)
        {
@@ -2090,19 +2204,35 @@
                //判断物料数量是否为0 为0判断箱码信息 不为0继续
                if (model.TableType == 0)
                {
                    if (string.IsNullOrEmpty(model.BoxNo))
                    if (notice.Type != "3")
                    {
                        throw new Exception("-1:箱码信息不可为空!");
                    }
                    if (model.IsContinue == "1")
                    {
                        if (string.IsNullOrWhiteSpace(model.TailBoxNo))
                        if (string.IsNullOrEmpty(model.BoxNo))
                        {
                            throw new Exception("-1:开启连续组托时,尾箱码信息不可为空!");
                            throw new Exception("-1:箱码信息不可为空!");
                        }
                        if (model.IsContinue == "1")
                        {
                            if (string.IsNullOrWhiteSpace(model.TailBoxNo))
                            {
                                throw new Exception("-1:开启连续组托时,尾箱码信息不可为空!");
                            }
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(model.BoxNo01))
                        {
                            throw new Exception("-1:追溯码信息不可为空!");
                        }
                        if (model.IsContinue == "1")
                        {
                            throw new Exception("-1:追溯码不可连续组托!");
                        }
                    }
                }
                int isTextTable = model.TableType;
                int isDeposit = 0;
@@ -2302,27 +2432,40 @@
                var boxInfoList = new List<BllBoxInfo>();
                if (model.SkuQty == 0)
                {
                    //首箱
                    var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo && m.Status == "0").ToList();
                    if (boxInfo.Count == 0)
                    if (notice.Type == "3")
                    {
                        throw new Exception("-1:箱码信息不存在!");
                    }
                    boxInfoList.AddRange(boxInfo);
                    //是否连续组托
                    if (model.IsContinue == "1")
                    {
                        //尾箱
                        var boxInfo2 = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo && m.Status == "0").ToList();
                        if (boxInfo2.Count == 0)
                        //首箱
                        var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo3 == model.BoxNo01 && m.Status == "0").ToList();
                        if (boxInfo.Count == 0)
                        {
                            throw new Exception("-1:尾箱码信息不存在!");
                            throw new Exception("-1:箱码信息不存在!");
                        }
                        boxInfoList.AddRange(boxInfo2);
                        var sql = $"select * from BllBoxInfo where IsDel = '0' and Status = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}'; ";
                        var list = Db.Ado.SqlQuery<BllBoxInfo>(sql);
                        boxInfoList.AddRange(list);
                        msgStr += $"尾箱号为{model.TailBoxNo}";
                        boxInfoList.AddRange(boxInfo);
                    }
                    else
                    {
                        //首箱
                        var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo && m.Status == "0").ToList();
                        if (boxInfo.Count == 0)
                        {
                            throw new Exception("-1:箱码信息不存在!");
                        }
                        boxInfoList.AddRange(boxInfo);
                        //是否连续组托
                        if (model.IsContinue == "1")
                        {
                            //尾箱
                            var boxInfo2 = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo && m.Status == "0").ToList();
                            if (boxInfo2.Count == 0)
                            {
                                throw new Exception("-1:尾箱码信息不存在!");
                            }
                            boxInfoList.AddRange(boxInfo2);
                            var sql = $"select * from BllBoxInfo where IsDel = '0' and Status = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}'; ";
                            var list = Db.Ado.SqlQuery<BllBoxInfo>(sql);
                            boxInfoList.AddRange(list);
                            msgStr += $"尾箱号为{model.TailBoxNo}";
                        }
                    }
                }
                #endregion