chengsc
2024-11-03 5ce969ed34e91c931cce38e2feb5d2c208633a96
Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -77,12 +77,13 @@
                    {
                        throw new Exception("单据号不可为空!");
                    }
                    if (model.AsnDetailNo == 0)
                    {
                        throw new Exception("单据明细不可为空!");
                    }
                    //if (model.AsnDetailNo == 0)
                    //{
                    //    throw new Exception("单据明细不可为空!");
                    //}
                    //根据单据号获取入库单总单
                    notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo && a.OrderCode == model.OrderCode);
                    notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo);
                    //notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo && a.OrderCode == model.OrderCode);
                    if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2")
                    {
                        throw new Exception("该单据已关单!");
@@ -96,7 +97,8 @@
                        throw new Exception("批次不能为空!");
                    }
                    // 验证入库单明细是否存在
                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailNo && m.ASNNo == model.AsnNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
                    //detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailNo && m.ASNNo == model.AsnNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
                    if (detail == null)
                    {
                        throw new Exception("当前物料及批次与单据无关联,请核实!");
@@ -176,18 +178,19 @@
                #endregion
                //判断托盘绑定信息中是否有
                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailNo && m.PalletNo == model.PalletNo && m.Status != "2");
                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == detail.Id && m.PalletNo == model.PalletNo && m.Status != "2");
                var bindId = 0;
                var boxQtyZong = model.Detail.Sum(m => m.Qty);
                if (bind == null)
                {
                    bind = new BllPalletBind
                    {
                        ASNNo = model.AsnNo,
                        ASNDetailNo = model.AsnDetailNo,
                        ASNNo = notice.ASNNo,
                        ASNDetailNo = detail.Id,
                        PalletNo = model.PalletNo,
                        PalletNo2 = "",
                        PalletNo3 = "",
                        Qty = model.Qty,
                        Qty = boxQtyZong,
                        FullQty = pNum,
                        Status = "0",//等待执行
                        Type = model.Type, //托盘类型  0物料托  1空托盘托
@@ -211,7 +214,8 @@
                }
                else
                {
                    throw new Exception("组盘信息重复");
                    //throw new Exception("组盘信息重复");
                    return;
                }
@@ -230,8 +234,8 @@
                    {
                        var boxInfo = new BllBoxInfo()
                        {
                            ASNNo = model.AsnNo,
                            ASNDetailNo = model.AsnDetailNo,
                            ASNNo = notice.ASNNo,
                            ASNDetailNo = detail.Id,
                            OrderCode = box.OrderCode,
                            BindNo = bindId,
                            BoxNo = box.BoxNo,
@@ -270,10 +274,10 @@
                }
                else if (model.Type == "0")//物料托
                {
                    if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0)
                    {
                        throw new Exception($"托盘绑定明细中,含有箱码生产工单不一致");
                    }
                    //if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0)
                    //{
                    //    throw new Exception($"托盘绑定明细中,含有箱码生产工单不一致");
                    //}
                    if (model.Detail.Count(m => m.SkuNo != model.SkuNo || m.LotNo != model.LotNo) > 0)
                    {
                        throw new Exception($"托盘绑定明细中,含有箱码物料或批次不一致");
@@ -288,8 +292,8 @@
                            boxFullQty += box.Qty;
                            var boxInfo = new BllBoxInfo()
                            {
                                ASNNo = model.AsnNo,
                                ASNDetailNo = model.AsnDetailNo,
                                ASNNo = detail.ASNNo,
                                ASNDetailNo = detail.Id,
                                OrderCode = box.OrderCode,
                                BindNo = bindId,
                                BoxNo = box.BoxNo,
@@ -314,8 +318,8 @@
                                Standard = box.Standard,
                                PackageStandard = box.PackageStandard,
                                StoreTime = box.StoreTime,
                                QtyCount = (int)box.QtyCount,
                                QtyOrd = (int)box.QtyOrd,
                                QtyCount = box.QtyCount.HasValue? (int)box.QtyCount : 0,
                                QtyOrd = box.QtyOrd.HasValue ? (int)box.QtyOrd : 0,
                                CreateUser = userId,
                                CreateTime = comTime,
                            };
@@ -376,9 +380,9 @@
                // 更改托盘使用状态
                var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{model.PalletNo}';";
                //添加托盘记录表数据
                sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','组盘','0',getDate(),{userId},NULL,NULL);";
                sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{notice.ASNNo}','组盘','0',getDate(),{userId},NULL,NULL);";
                Db.Ado.ExecuteCommand(sqlStr);
                new OperationASNServer().AddLogOperationAsn("PDA模块", "托盘绑定", model.AsnNo, "添加", $"添加了托盘码为:{model.PalletNo}的组盘信息", userId);
                new OperationASNServer().AddLogOperationAsn("PDA模块", "托盘绑定", notice.ASNNo, "添加", $"添加了托盘码为:{model.PalletNo}的组盘信息", userId);
                Db.CommitTran();
            }
@@ -491,6 +495,7 @@
                    .GroupBy((a, b) => new
                    {
                        a.PalletNo,
                        a.BindNo,
                        a.BoxNo,
                        a.SkuNo,
                        a.SkuName,
@@ -508,6 +513,7 @@
                    .Select((a, b) => new BoxInfoDto()
                    {
                        BoxNo = a.BoxNo,
                        BindNo = a.BindNo,
                        PalletNo = a.PalletNo,
                        Qty = SqlFunc.AggregateSum(a.Qty),
                        FullQty = a.FullQty,
@@ -538,9 +544,10 @@
        /// <param name="boxNo">箱码</param>
        /// <param name="boxNo3">支码</param>
        /// <returns></returns>
        public List<BoxInfoDto> GetBoxInfoByBoxNo(string boxNo, string boxNo3)
        public List<BoxInfoDto> GetBoxInfoByBoxNo(string bindNo, string boxNo, string boxNo3)
        {
            Expression<Func<BllBoxInfo, bool>> item = Expressionable.Create<BllBoxInfo>()
                .AndIF(!string.IsNullOrWhiteSpace(bindNo), it => it.BindNo == int.Parse(bindNo))
                .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo.Trim())
                .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3.Contains(boxNo3.Trim()))
                .And(m => m.IsDel == "0")
@@ -2520,6 +2527,7 @@
                                SkuName = boxInfo.SkuName,
                                Standard = sku.Standard,
                                ProductionTime = boxInfo.ProductionTime,
                                ExpirationTime = boxInfo.ExpirationTime,
                                SupplierLot = boxInfo.SupplierLot,
                                InspectStatus = boxInfo.InspectStatus,
                                InspectMark = boxInfo.InspectMark,
@@ -2693,6 +2701,7 @@
                                    SkuName = demo.SkuName,
                                    Standard = noticeDetail.Standard,
                                    ProductionTime = demo.ProductionTime,
                                    ExpirationTime = demo.ExpirationTime,
                                    SupplierLot = demo.SupplierLot,
                                    InspectStatus = demo.InspectStatus,
                                    InspectMark = demo.InspectMark,