test
13 小时以前 b2fc93e15a14847141b0a0a8bd591b945c9fa0a3
添加赋码实体类和修改箱码方法,改正拣货拼托
3个文件已修改
266 ■■■■■ 已修改文件
Wms/Model/InterFaceModel/HttpModel.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/InterFaceModel/HttpModel.cs
@@ -484,6 +484,127 @@
    #endregion
        #region 赋码实体类
        public class FuMaPostModel
        {
            /// <summary>
            /// 操作是否成功
            /// </summary>
            public bool Success { get; set; }
            /// <summary>
            /// 消息提示
            /// </summary>
            public string Message { get; set; }
            /// <summary>
            /// 核心数据
            /// </summary>
            public FuMaOneModel Data { get; set; }
        }
        public class FuMaOneModel
        {
            /// <summary>
            /// 物料编码
            /// </summary>
            public string SkuNo { get; set; }
            /// <summary>
            /// 物料名称
            /// </summary>
            public string SkuName { get; set; }
            /// <summary>
            /// 规格
            /// </summary>
            public string Standard { get; set; }
            /// <summary>
            /// 箱码(一级箱码)
            /// </summary>
            public string BoxNo { get; set; }
            /// <summary>
            /// 数量
            /// </summary>
            public decimal Qty { get; set; }
            /// <summary>
            /// 满箱数量
            /// </summary>
            public string FullQty { get; set; }
            /// <summary>
            /// 结束批次号
            /// </summary>
            public string EndLotNo { get; set; }
            /// <summary>
            /// 批次箱数
            /// </summary>
            public string LotNoBoxNum { get; set; }
            /// <summary>
            /// 检验标识(0:未检验,1:已检验等)
            /// </summary>
            public string InsPectMark { get; set; }
            /// <summary>
            /// 箱码标识(0:正常,1:特殊等)
            /// </summary>
            public string BitBoxMark { get; set; }
            /// <summary>
            /// 检验状态
            /// </summary>
            public string InspectStatus { get; set; }
            /// <summary>
            /// 来源
            /// </summary>
            public string Origin { get; set; }
            /// <summary>
            /// 二级箱码列表
            /// </summary>
            public List<FuMaTwoModel> DetailList { get; set; }
        }
        public class FuMaTwoModel
        {
            /// <summary>
            /// 二级箱码编号
            /// </summary>
            public string BoxNo2 { get; set; }
            /// <summary>
            /// 三级箱码列表
            /// </summary>zl
            public List<FuMaThreeModel> DetailList2 { get; set; }
        }
        public class FuMaThreeModel
        {
            /// <summary>
            /// 三级箱码编号
            /// </summary>
            public string BoxNo3 { get; set; }
            /// <summary>
            /// 批次号
            /// </summary>
            public string LotNo { get; set; }
            /// <summary>
            /// 生产日期
            /// </summary>
            public string ProductionTime { get; set; } // 若需 DateTime 类型,可后续转换
            /// <summary>
            /// 过期时间
            /// </summary>
            public string ExpirationTime { get; set; } // 若需 DateTime 类型,可后续转换
        }
        #endregion
    #region#SAP实体类
    public class SapSkuInfoVm
    { 
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -30,6 +30,7 @@
using System.Security.Cryptography.X509Certificates;
using AutoMapper.Configuration.Annotations;
using Utility;
using System.Diagnostics.Metrics;
namespace WMS.BLL.BllPdaServer
{
@@ -2081,7 +2082,7 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
        /*public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
        {
            try
            {
@@ -2184,6 +2185,132 @@
            {
                throw ex;
            }
        }*/
        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno, string url)
        {
            try
            {
                #region 箱码请求接口,正式系统放开
                var data = new
                {
                    BoxNo = boxno
                };
                var jsonData = JsonConvert.SerializeObject(data);
                var response = HttpHelper.DoPost(url, jsonData, "箱码信息请求", "FM");
                var obj = JsonConvert.DeserializeObject<FuMaPostModel>(response);//解析返回数据
                if (obj.Success != true)
                {
                    throw new Exception("请求失败" + obj.Message);
                }
                #endregion
                if (string.IsNullOrEmpty(obj.Data.SkuNo))
                {
                    //测试用,发布正式前删除此段代码
                    //obj.Data.SkuNo = "50004632";
                    throw new Exception($"物料编码不能为空");
                }
                //查找物料信息
                var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Data.SkuNo);
                if (sku == null)
                {
                    throw new Exception($"未查询到物料{obj.Data.SkuNo}信息");
                }
                var pNum = 0;//托盘物品数量
                var bNum = 0;//箱码物品数量
                //获取包装信息
                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
                if (pNum == 0 || bNum == 0)
                {
                    throw new Exception($"{sku.SkuNo}物品包装未找到!");
                }
                var boxList = new List<BllBoxInfo>();
                var comTime = DateTime.Now;
                //添加箱码信息
                foreach (var box in obj.Data.DetailList)
                {
                    foreach (var box2 in box.DetailList2)
                    {
                        var boxInfo = new BllBoxInfo()
                        {
                            BoxNo = obj.Data.BoxNo,
                            BoxNo2 = box.BoxNo2,
                            BoxNo3 = box2.BoxNo3,
                            Qty = obj.Data.Qty,
                            BitBoxMark = obj.Data.BitBoxMark,
                            ASNNo = "",
                            //ASNDetailNo = noticeDetail.Id,
                            OrderCode = "",//notice.OrderCode
                                           //BindNo = bindId,
                                           //PalletNo = model.PallNo,
                            FullQty = bNum,
                            Status = "0",
                            SkuNo = sku.SkuNo,
                            SkuName = sku.SkuName,
                            LotNo = box2.LotNo,
                            LotText = obj.Data.LotNoBoxNum,
                            ProductionTime = DateTime.Parse(box2.ProductionTime),
                            ExpirationTime = DateTime.Parse(box2.ExpirationTime),
                            //CompleteTime = "",
                            InspectMark = "0",
                            InspectStatus = "0",
                            Origin = "赋码",
                            CreateTime = comTime,
                            CreateUser = 0
                        };
                        boxList.Add(boxInfo);
                    };
                }
                try
                {
                    //开启事务
                    Db.BeginTran();
                    Db.Fastest<BllBoxInfo>().BulkCopy(boxList);
                    //提交事务
                    Db.CommitTran();
                }
                catch (Exception ex)
                {
                    //回滚事务
                    Db.RollbackTran();
                    throw new Exception("插入箱码失败:" + ex.Message);
                }
                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);
                if (models.Count == 0)
                {
                    throw new Exception("箱码信息不存在!");
                }
                return models;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -216,10 +216,10 @@
                        throw Oops.Bah("该托盘上没有可拣货的箱子");
                    }
                    var boxQty = await boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
                    if (boxQty[0] > needQty)
                    {
                        throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量");
                    }
                    //if (boxQty[0] > needQty)
                    //{
                    //    throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量");
                    //}
                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                    var comList = new List<BllCompleteDetail>();
@@ -337,10 +337,10 @@
                        throw Oops.Bah("该托盘与箱码没有绑定关系");
                    }
                    var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
                    if (boxQty[0] > needQty)
                    {
                        throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量");
                    }
                    //if (boxQty[0] > needQty)
                    //{
                    //    throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量");
                    //}
                    
                    foreach (var item in boxInfos)
                    {