Demo
2024-03-22 a9522f978edf6dee98949f9ed715fc36f999ed4f
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -17,6 +17,7 @@
using Model.ModelDto.PdaDto;
using Dm;
using Model.InterFaceModel;
using WMS.Entity.BllQualityEntity;
namespace WMS.BLL.BllPdaServer
{
@@ -68,7 +69,17 @@
                sqlString = $"select * from BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' and isdel='0' order by CreateTime;";
                var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString);
                return modelList;
                List<ArrivalNoticeDetailDto> list = new List<ArrivalNoticeDetailDto>();
                foreach (var item in modelList)
                {
                    string str = BySkuNoGetPackInfo(item.SkuNo);
                    if (str == "不存在")
                    {
                        list.Add(item);
                    }
                }
                return list;
            }
            catch (Exception ex)
            {
@@ -366,12 +377,12 @@
            {
                //获取任务信息
                var logtask = Db.Queryable<LogTask>().First(a => a.PalletNo == upBindPalletNo && a.IsDel == "0" && a.Status == "1");
                if (logtask == null)
                if (logtask != null)
                {
                    strMsg = "该托盘任务已完成 或未成功创建任务 请核实!";
                    return strMsg;
                }
                string bindstr = "select * from BllPalletBind Where IsDel = @isdel and PalletNo = @palletno and ASNDetailNo = 0 and ASNNo = ''";
                string bindstr = "select * from BllPalletBind Where IsDel = @isdel and PalletNo = @palletno and ASNDetailNo = 0 and ASNNo = '' ";
                //获取绑定托盘表信息
                List<PalletBindVm> bindVms = Db.Ado.SqlQuery<PalletBindVm>(bindstr, new
                {
@@ -387,10 +398,13 @@
                    return strMsg;
                }
                //删除绑定托盘表信息
                string delstr = "delete from BllPalletBind Where PalletNo = @palletno";
                string delstr = "update BllPalletBind set IsDel = 1,UpdateUser = @UpdateUser,UpdateTime = @UpdateTime Where PalletNo = @palletno and Id =@Id ";
                int i = Db.Ado.ExecuteCommand(delstr, new
                {
                    palletno = upBindPalletNo
                    UpdateUser = createUser,
                    UpdateTime = DateTime.Now,
                    palletno = upBindPalletNo,
                    Id = bindVms[0].Id
                });
                //修改托盘状态
                Db.BeginTran();
@@ -417,12 +431,12 @@
                box.IsDel = "1";
                Db.Updateable(box).ExecuteCommand();
                //修改任务状态
                logtask.IsDel = "1";
                logtask.Status = "4"; //3 已取消
                logtask.UpdateUser = createUser; //取消人
                logtask.UpdateTime = DateTime.Now; //取消时间
                Db.Updateable(logtask).ExecuteCommand();
                ////修改任务状态
                //logtask.IsDel = "1";
                //logtask.Status = "4"; //3 已取消
                //logtask.UpdateUser = createUser; //取消人
                //logtask.UpdateTime = DateTime.Now; //取消时间
                //Db.Updateable(logtask).ExecuteCommand();
                //更改库存数量
                //string str = $"update DataStock set Qty = Qty - {(int)bindVms[0].Qty} Where SkuNo = '100099'";
                // 更改托盘使用状态
@@ -1751,11 +1765,44 @@
                        }
                    }
                }
                return noticeList;
                List<ArrivalNoticeDetailDto> list = new List<ArrivalNoticeDetailDto>();
                foreach (var item in noticeList)
                {
                    string str = BySkuNoGetPackInfo(item.SkuNo);
                    if (str == "存在")
                    {
                        list.Add(item);
                    }
                }
                return list;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //根据物料获取是否存在包装信息
        public string BySkuNoGetPackInfo(string skuNo)
        {
            try
            {
                //获取物料信息
                var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == skuNo);
                //判断物料信息是否为空
                if (!string.IsNullOrWhiteSpace(sku.PackagNo))
                {
                    return "存在";
                }
                else
                {
                    return "不存在";
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
@@ -1788,9 +1835,9 @@
                }
                //根据单据号获取入库单总单
                var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo);
                if (notice.Status != "0" && notice.Status != "1")
                if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2")
                {
                    throw new Exception("-1:入库单状态不是等待执行或执行完成!");
                    throw new Exception("-1:该单据已关单!");
                }
                if (string.IsNullOrEmpty(model.LotNo))
                {
@@ -1815,7 +1862,7 @@
                    }
                }
                //判断物料数量是否为0 为0判断箱码信息 不为0继续
                if (model.SkuQty == 0)
                if (model.TableType == 0)
                {
                    if (string.IsNullOrEmpty(model.BoxNo))
                    {
@@ -1831,6 +1878,7 @@
                    }
                }
                int isTextTable = model.TableType;
                int isDeposit = 0;
                //判断总单单据是否为寄存单据
                if (notice.Type == "7")
@@ -1889,12 +1937,12 @@
                }
                //判断托盘是否在库外
                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
                if (stockDetail != null)// && !string.IsNullOrEmpty(stockDetail.WareHouseNo)
                {
                    throw new Exception("该托盘未在库外,请核实!");
                    throw new Exception("该托盘在库存已有信息,请核实!");
                }
                // 验证入库单明细是否存在
                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && model.LotNo.Contains(m.LotNo));
                var 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("-1:当前物料及批次与单据无关联,请核实!");
@@ -1908,7 +1956,7 @@
                var bNum = 0;//箱码物品数量 
                //判断是否为寄存物料
                if (isDeposit == 0)
                if (isDeposit == 0 && isTextTable == 0)
                {
                    if (pack == null)
                    {
@@ -1987,10 +2035,10 @@
                        Demo = model.Demo,
                    };
                    if (model.SkuQty > pNum && isDeposit == 0)
                    {
                        throw new Exception($"绑定失败,{model.PalletNo}托盘绑定数量大于该物品托盘包装数量!");
                    }
                    //if (model.TableType == 0 && isDeposit == 0 && isTextTable == 0)   不太理解这段代码的含义
                    //{
                    //    throw new Exception($"绑定失败,{model.PalletNo}托盘绑定数量大于该物品托盘包装数量!");
                    //}
                    // 插入托盘绑定表
                    bindId = Db.Insertable(bind).ExecuteReturnIdentity();
                }
@@ -2037,7 +2085,7 @@
                // 更改箱支关系表
                decimal factQty = 0.00m;//托盘总数量
                //成品组托
                if (model.SkuQty == 0)
                if (isTextTable == 0)
                {
                    var boxGroup = boxInfoList.GroupBy(m => m.BoxNo).ToList();
                    foreach (var g in boxGroup)
@@ -2077,7 +2125,7 @@
                    // 更新托盘绑定表
                    bind.Qty += factQty;
                }
                if (bind.FullQty < bind.Qty && isDeposit == 0)
                if (bind.FullQty < bind.Qty && isDeposit == 0 && isTextTable == 0)
                {
                    throw new Exception("托盘绑定数量已超出该物料包装数量");
                }
@@ -2086,7 +2134,7 @@
                {
                    bind.BitPalletMark = "0";
                }
                if (bind.Qty > pNum && isDeposit == 0)
                if (bind.Qty > pNum && isDeposit == 0 && isTextTable == 0)
                {
                    throw new Exception($"绑定失败,{bind.PalletNo}托盘绑定数量大于该物品托盘包装数量!");
                }
@@ -2224,7 +2272,7 @@
                    #endregion
                    #region 箱码信息
                    var boxInfoList = Db.Queryable<BllBoxInfo>().Where(w => w.IsDel == "0" && w.ASNNo == model.ASNNo).ToList();
                    var boxInfoList = Db.Queryable<BllBoxInfo>().Where(w => w.IsDel == "0" && w.ASNNo == model.ASNNo && w.PalletNo == model.PalletNo).ToList();
                    // type 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库
                    if (notice.Type == "2" || notice.Type == "6" || notice.Type == "7")
                    {
@@ -2298,6 +2346,12 @@
                            CreateUser = (int)model.CreateUser,
                            CreateTime = serverTime
                        };
                        //维护库存货主信息
                        if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:成品入库,2:中间品入库,4:车间余料入库,6:代储入库,7:寄存入库
                        {
                            stockModel.OwnerNo = notice.CustomerNo;//货主编码
                            stockModel.OwnerName = notice.CustomerName;//货主名称
                        }
                        //新增库存总信息
                        Db.Insertable<DataStock>(stockModel).ExecuteCommand();
                    }
@@ -2350,11 +2404,43 @@
                            PackagNo = sku.PackagNo,
                            IsBale = bindInfo.IsBale,
                            IsBelt = bindInfo.IsBelt,
                            CreateUser = (int)model.CreateUser,
                            CreateTime = serverTime
                        };
                        //维护库存明细货主/供应商信息
                        if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:成品入库,2:中间品入库,4:车间余料入库,6:代储入库,7:寄存入库
                        {
                            detailModel.OwnerNo = notice.CustomerNo;//货主编码
                            detailModel.OwnerName = notice.CustomerName;//货主名称
                        }
                        else if (notice.Type == "1" || notice.Type == "5")//1:采购入库,2:其它入库
                        {
                            detailModel.SupplierNo = notice.CustomerNo;//供应商编码
                            detailModel.SupplierName = notice.CustomerName;//供应商名称
                        }
                        #region  维护质检结果
                        //获取该批次最终质检结果
                        var quality = Db.Queryable<BllQualityInspect>().Where(a => a.LotNo == noticeDetail.LotNo && a.IsDel == "0").OrderByDescending(a => a.CreateTime).First();
                        if (quality != null)
                        {
                            //修改合格不合格数量
                            if (quality.IsQualified == "1") //合格
                            {
                                //增加合格数量
                                quality.PassQty += detailModel.Qty;
                                detailModel.InspectStatus = "1";
                            }
                            else if (quality.IsQualified == "0") //不合格
                            {
                                //增加不合格数量
                                quality.FailQty += detailModel.Qty;
                                detailModel.InspectStatus = "2";
                            }
                            Db.Updateable(quality).ExecuteCommand(); //修改质检信息
                        }
                        #endregion
                        stId = Db.Insertable<DataStockDetail>(detailModel).ExecuteReturnIdentity();
                    }
                    else
                    {