zhaowc
2024-08-29 06bc1ebcdbc217a7f53be2926ee4c25eb2990903
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -1888,16 +1888,17 @@
                                        BoxNo, 
                                        SkuNo,
                                        SkuName, 
                                        LotNo,
                                        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; ";
                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
                var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
                if (models == null)
                if (models.Count == 0 )
                {
                    throw new Exception("箱码信息不存在!");
                }
@@ -1909,6 +1910,55 @@
                throw ex;
            }
        }
        /// <summary>
        /// 根据箱码向追溯系统请求标签箱码信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno)
        {
            try
            {
                #region 箱码请求接口,正式系统放开
                /*var jsonData = JsonConvert.SerializeObject(boxno);
                var response = HttpHelper.DoPost(url, jsonData, "箱码信息请求", "FM");
                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据
                if (obj.Success != 0)
                {
                    throw new Exception("请求失败" + obj.Message);
                }*/
                #endregion
                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);  // response
                if (models.Count == 0)
                {
                    throw new Exception("箱码信息不存在!");
                }
                return models;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        // 根据单据号获取单据明细列表
        public List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model)
        {
@@ -3527,12 +3577,12 @@
                    boxInfoList.AddRange(list);
                    msgStr += $"尾箱号为{model.TailBoxNo}";
                }
                //绑定箱总数量
                //model.SkuQty = boxInfoList.Sum(s => s.Qty);
                //和选择的批次同批次的箱码信息
                var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo).ToList();
                var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList();
                //和选择的批次不同批次的箱码信息(拼箱批次)
                var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList();
                //拼箱数量(和选择的批次不同批次的箱码数量)
                decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty);
                #endregion
                if (sameBoxInfoList.Count <= 0)
@@ -3553,7 +3603,7 @@
                            PalletNo = model.PalletNo,
                            PalletNo2 = "",
                            PalletNo3 = "",
                            Qty = model.SkuQty - pinBoxQty,//不包含拼箱中非同批次数量
                            Qty = model.SkuQty,//不包含拼箱中非同批次数量
                            FullQty = pNum,
                            Status = "2",//入库完成
                            Type = "0",
@@ -3576,10 +3626,10 @@
                        bindId = bind.Id;
                        bind.Qty += model.SkuQty;
                    }
                    if (bind.Qty < 0)
                    /*if (bind.Qty < 0)
                    {
                        throw new Exception("组盘数量不能小于0");
                    }
                    }*/
                    #endregion
                    #region 库存明细和质检信息
@@ -3917,6 +3967,8 @@
                    }
                    var pinBoxNo = notBoxInfoList[0].BoxNo;//拼箱箱码
                    var pinBoxLotNo = notBoxInfoList[0].LotNo;//拼箱批次号
                    //拼箱数量(和选择的批次不同批次的箱码数量)
                    decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty);
                    var dataBoxList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == pinBoxNo && w.LotNo == pinBoxLotNo).ToList();
                    if (dataBoxList.Count > 0)//已有库存
@@ -3925,6 +3977,8 @@
                        var oldPalletBind = Db.Queryable<BllPalletBind>().First(w => w.Id == notBoxInfoList[0].BindNo);
                        //原入库单明细
                        var oldAsnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == oldPalletBind.ASNDetailNo);
                        //原入库单
                        var oldAsnNotice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == oldAsnDetail.ASNNo);
                        #region 托盘绑定信息
                        var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == oldAsnDetail.Id && m.PalletNo == model.PalletNo);
                        var bindId = 0;
@@ -3937,7 +3991,7 @@
                                PalletNo = model.PalletNo,
                                PalletNo2 = "",
                                PalletNo3 = "",
                                Qty = pinBoxQty,
                                Qty = 0,
                                FullQty = pNum,
                                Status = "2",//入库完成
                                Type = "0",
@@ -3967,7 +4021,7 @@
                        // 插入库存明细数据
                        var sd1 = new DataStockDetail()
                        {
                            LotNo = pinBoxNo,
                            LotNo = pinBoxLotNo,
                            LotText = notBoxInfoList[0].LotText,
                            SupplierLot = notBoxInfoList[0].SupplierLot,
                            SkuNo = sku.SkuNo,
@@ -3983,9 +4037,9 @@
                            RoadwayNo = "",//所属巷道
                            AreaNo = "",//所属区域
                            LocatNo = "",//储位地址
                            PalletNo = oldPalletBind.PalletNo,
                            PalletNo2 = oldPalletBind.PalletNo2,
                            PalletNo3 = oldPalletBind.PalletNo3,
                            PalletNo = bind.PalletNo,
                            PalletNo2 = bind.PalletNo2,
                            PalletNo3 = bind.PalletNo3,
                            PalletTags = "0",
                            CompleteTime = comTime,
                            ProductionTime = oldPalletBind.ProductionTime,
@@ -4002,6 +4056,17 @@
                            CreateUser = 0,
                            CreateTime = comTime
                        };
                        //维护库存明细货主/供应商信息
                        if (oldAsnNotice.Type == "0" || oldAsnNotice.Type == "2" || oldAsnNotice.Type == "4" || oldAsnNotice.Type == "6" || oldAsnNotice.Type == "7")//0:成品入库,2:中间品入库,4:车间余料入库,6:代储入库,7:寄存入库
                        {
                            sd1.OwnerNo = oldAsnNotice.CustomerNo;//货主编码
                            sd1.OwnerName = oldAsnNotice.CustomerName;//货主名称
                        }
                        else if (oldAsnNotice.Type == "1" || oldAsnNotice.Type == "5")//1:采购入库,2:其它入库
                        {
                            sd1.SupplierNo = oldAsnNotice.CustomerNo;//供应商编码
                            sd1.SupplierName = oldAsnNotice.CustomerName;//供应商名称
                        }
                        //添加库存明细
                        var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
                        foreach (var item in dataBoxList)
@@ -4029,7 +4094,7 @@
                        string sql = $@"SELECT detail.* FROM BllArrivalNoticeDetail as detail
                                        JOIN BllArrivalNotice as notice ON detail.ASNNo=notice.ASNNo
                                        WHERE notice.IsDel='0'
                                        AND notice.Status='1'
                                        AND ( notice.Status=0 or notice.Status=1 )
                                        AND detail.IsDel='0' 
                                        AND detail.LotNo='{pinBoxLotNo}' 
                                        AND detail.SkuNo='{sku.SkuNo}'
@@ -4041,7 +4106,7 @@
                            throw new Exception("拼箱内物料所属入库单明细不存在!");
                        }
                        //找到拼箱内其他批次所属入库单
                        var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo && w.Status == "1");
                        var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo);
                        if (arrNotice == null)
                        {
                            throw new Exception("拼箱内物料所属入库单不存在!");
@@ -4058,7 +4123,7 @@
                                PalletNo = model.PalletNo,
                                PalletNo2 = "",
                                PalletNo3 = "",
                                Qty = pinBoxQty,
                                Qty = 0,
                                FullQty = pNum,
                                Status = "2",//入库完成
                                Type = "0",
@@ -4079,9 +4144,6 @@
                        else
                        {
                            bindId = bind.Id;
                            bind.Qty += pinBoxQty;
                            Db.Updateable(bind).ExecuteCommand();
                        }
                        #endregion
@@ -4110,7 +4172,7 @@
                        {
                            sdId1 = sd1.Id;
                            // 库存已存在 更新数据
                            sd1.Qty = pinBoxQty;
                            sd1.Qty = bind.Qty;
                            sd1.CompleteTime = comTime;
                            sd1.UpdateUser = userId;
                            sd1.UpdateTime = comTime;
@@ -4128,7 +4190,7 @@
                                SkuNo = sku.SkuNo,
                                SkuName = sku.SkuName,
                                Standard = sku.Standard,
                                Qty = pinBoxQty,
                                Qty = bind.Qty,
                                LockQty = 0,
                                FrozenQty = 0,
                                InspectQty = 0,
@@ -4149,7 +4211,7 @@
                                InspectMark = bind.InspectMark,
                                InspectStatus = sku.IsInspect,
                                BitPalletMark = bind.BitPalletMark,
                                PackagNo = detail.PackagNo,                    //liudl 由sku的包装编号变为入库单明细的包装编码
                                PackagNo = arrDetail.PackagNo,                    //liudl 由sku的包装编号变为入库单明细的包装编码
                                IsBale = bind.IsBale,
                                IsBelt = bind.IsBelt,
@@ -4208,7 +4270,7 @@
                                    continue;
                                }
                                //箱内物料批次与单据明细不符合
                                if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo)
                                if (box.SkuNo != arrDetail.SkuNo || box.LotNo != arrDetail.LotNo)
                                {
                                    throw new Exception($"-1:{box.BoxNo}箱内物料及批次与单据不一致,请核实!");
                                }
@@ -4309,7 +4371,7 @@
                            arrDetail.IsSampling = "1";
                        }
                        arrDetail.Status = "1";//0:等待执行 1:正在执行 2:执行完成
                        if (arrDetail.CompleteQty >= detail.Qty)
                        if (arrDetail.CompleteQty >= arrDetail.Qty)
                        {
                            arrDetail.Status = "2";
                            arrDetail.CompleteTime = comTime;
@@ -5141,7 +5203,7 @@
                        SendDate = serverTime,  //发送时间
                        BackDate = serverTime,  //返回时间
                        StartLocat = "",//起始位置
                        EndLocat = "力诺平库",//目标位置
                        EndLocat = "平库",//目标位置
                        PalletNo = bindInfo.PalletNo,//托盘码
                        IsSend = 0,//是否可再次下发
                        IsCancel = 0,//是否可取消
@@ -5149,7 +5211,7 @@
                        Type = "0",//任务类型 0 入库任务 1 出库任务  2 移库任务
                        Status = "2",//任务状态0:等待执行1正在执行2执行完成
                        OrderType = "0",//0 入库单 1 出库单  2 盘点单  3 移库单
                        Msg = "力诺平库的入库任务",
                        Msg = "平库的入库任务",
                    };
                    Db.Insertable(exTask).ExecuteCommand();
@@ -5163,6 +5225,27 @@
                    bindInfo.TaskNo = taskNo; //任务号
                    Db.Updateable(bindInfo).ExecuteCommand();
                    #endregion
                   /* #region 添加托盘上架记录
                    var upShelf = new BllPalletUpShelf()
                    {
                        TaskNo = exTask.TaskNo,
                        TraceNo = bindInfo.ASNNo,
                        PalletNo = bindInfo.PalletNo,
                        SkuNo = stockModel.SkuNo,
                        SkuName = stockModel.SkuName,
                        LotNo = stockModel.LotNo,
                        Status = "1",
                        WareHouseNo = bindInfo.WareHouseNo,
                        RoadwayNo = bindInfo.RoadwayNo,
                        AreaNo = "",
                        LocatNo = "",
                        CreateUser = 0,
                    };
                    Db.Insertable(upShelf).ExecuteCommand();
                    #endregion*/
                    #region 库存箱支明细表
                    // 插入新组的箱支信息
@@ -5259,7 +5342,7 @@
                        SendDate = DateTime.Now,  //发送时间
                        BackDate = DateTime.Now,  //返回时间
                        StartLocat = "",//起始位置
                        EndLocat = "牧原平库",//目标位置
                        EndLocat = "平库",//目标位置
                        PalletNo = model.PalletNo,//托盘码
                        IsSend = 0,//是否可再次下发
                        IsCancel = 0,//是否可取消
@@ -5267,7 +5350,7 @@
                        Type = "0",//任务类型 0 入库任务 1 出库任务  2 移库任务
                        Status = "2",//任务状态0:等待执行1正在执行2执行完成
                        OrderType = "3",//0 入库单 1 出库单  2 盘点单  3 移库单
                        Msg = "牧原平库的入库任务",
                        Msg = "平库的入库任务",
                    };
                    Db.Insertable(exTask).ExecuteCommand();
                    //托盘绑定信息
@@ -5283,6 +5366,27 @@
                        Db.Updateable(bindInfo).ExecuteCommand();
                    }
                    #endregion
                    #region 添加托盘上架记录
                    var palletupinfo = stockDetail.First();
                    var upShelf = new BllPalletUpShelf()
                    {
                        TaskNo = exTask.TaskNo,
                        TraceNo = bindInfo.ASNNo,
                        PalletNo = bindInfo.PalletNo,
                        SkuNo = palletupinfo.SkuNo,
                        SkuName = palletupinfo.SkuName,
                        LotNo = palletupinfo.LotNo,
                        Status = "2",
                        LocatNo = model.LocatNo,
                        WareHouseNo = bindInfo.WareHouseNo,
                        RoadwayNo = bindInfo.RoadwayNo,
                        AreaNo = storageLocat.AreaNo,
                        CreateUser = 0,
                    };
                    Db.Insertable(upShelf).ExecuteCommand();
                    #endregion
                }
                storageLocat.Status = "1";//状态已使用
                storageLocat.UpdateTime = serverTime; //修改时间