Administrator
2024-03-01 e6d5b88ce459fe8414aa7a96678820cc0246326c
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -278,7 +278,8 @@
                    .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                    .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                    .Select((a, b, c, d) => new ExportNoticeDto()
                    .LeftJoin<SysUserInfor>((a, b, c, d,e) => a.CheckUser == e.Id)
                    .Select((a, b, c, d,e) => new ExportNoticeDto()
                    {
                        Id = a.Id,
                        SONo = a.SONo,
@@ -300,7 +301,10 @@
                        CreateUserName = c.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                        UpdateTime = a.UpdateTime,
                        CheckUserName=e.RealName,
                        CheckTime=a.CheckTime
                    })
                    .OrderByDescending(a => a.CreateTime)
                    .ToOffsetPage(page, limit, ref total);
@@ -1043,6 +1047,10 @@
                {
                    throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭/已上传");
                }
                if (userId == notice.UpdateUser)
                {
                    throw new Exception("复核失败,复核人员和关闭订单人员不能相同!");
                }
                //出库单明细
                var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).Select(m => m.BoxNo3).ToList();
                Db.BeginTran();//开启事务
@@ -1057,8 +1065,13 @@
                    //} 
                    var dom = HttpHelper.EncodeParsToFuMa(comDetail, "ceshi", "ExInfoXml");
                    notice.Status = "6";//状态:已上传
                    notice.CheckTime = DateTime.Now;//复核时间
                    notice.CheckUser = userId;//复核人
                    Db.Updateable(notice).ExecuteCommand();
                    ////添加操作日志记录
                    //var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "关单", $"关闭了单据号为{notice.SONo}的单据信息", userId);
                     var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "复核", $"复核了单据号为{notice.SONo}的单据信息", userId);
                    Db.CommitTran();
                    return dom;
@@ -2711,5 +2724,58 @@
        #endregion
        /// <summary>
        /// 判断出库是否需要拆箱
        /// </summary>
        /// <param name="soNo"></param>
        /// <returns></returns>
        public string IsNeedUnpack(string soNo)
        {
            string result = "0";//是否需要拆箱,0:否  1:是
            if (string.IsNullOrEmpty(soNo))
            {
                throw new Exception("未找到对应出库单!");
            }
            try
            {
                var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo);
                if (notice == null)
                {
                    throw new Exception("未找到对应出库单!");
                }
                //物料编码表
                var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
                //包装表
                var packagList= Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
                //出库分配信息
                var allotList = Db.Queryable<BllExportAllot>().Where(w => w.IsDel == "0" && w.SONo == soNo).ToList();
                foreach (var item in allotList)
                {
                    var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
                    if (skuInfo == null)
                    {
                        throw new Exception("物料信息不存在!");
                    }
                    var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
                    if (packagInfo == null)
                    {
                        throw new Exception("包装信息不存在!");
                    }
                    if (packagInfo.L2Name == "箱")
                    {
                        if (item.Qty % (decimal)packagInfo.L2Num != 0)//能整除说明不用拆箱,不能整除说明需要拆箱
                        {
                            result = "1";//需要拆箱
                            break;
                        }
                    }
                }
                return result;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}