zhaowc
2025-03-27 d07f25c163706ac46a83bd2c63db1e3c52715222
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -22,6 +22,7 @@
using System.Security.Policy;
using WMS.Entity.DataEntity;
using WMS.Entity.BllQualityEntity;
using Microsoft.VisualBasic;
namespace WMS.BLL.BllAsnServer
{
@@ -155,6 +156,7 @@
                            data.ProductionTime = boxInfo.ProductionTime!= null ? ((DateTime)boxInfo.ProductionTime).ToString("yyyy-MM-dd"):"";
                            data.ExpirationTime = boxInfo.ExpirationTime != null ? ((DateTime)boxInfo.ExpirationTime).ToString("yyyy-MM-dd") : "";
                            data.StoreTime = boxInfo.StoreTime != null ? ((DateTime)boxInfo.StoreTime).ToString("yyyy-MM-dd") : "";
                        }
                    }
                }
@@ -162,6 +164,7 @@
                var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty);
                var qty = detail.Qty - labelQty;
                data.Qty = qty.ToString();
                data.SupplierLot = detail.SupplierLot;
                return data;
            }
            catch (Exception e)
@@ -212,7 +215,7 @@
                        break;
                    case "6"://代储入库
                        skuType = "(0,1,2,3,4)";
                        IsPack = 2; //不贴
                        //IsPack = 2; //不贴
                        break;
                    case "7"://寄存入库
                        //skuType = "(3)";
@@ -344,18 +347,28 @@
                            continue;
                        }
                    }
                    if (model.Type != "7")
                    if (!string.IsNullOrEmpty(detailModel.IsBale))
                    {
                        if (!TypeLot.Contains(model.Type))
                        detailModel.IsBale = detailModel.IsBale == "是" ? "1" : "0";
                        if (detailModel.IsBale != "1" && detailModel.IsBale != "0")
                        {
                            if (detailModel.LotNo.Length != 10)
                            {
                                strMessage = "-1:进厂编号位数长度有误;";
                                continue;
                            }
                            //判断是否裹包
                            strMessage = "-1:裹包字段只能录入“是”或“否”;";
                            continue;
                        }
                    }
                    //if (model.Type != "7")
                    //{
                    //    if (!TypeLot.Contains(model.Type))
                    //    {
                    //        if (detailModel.LotNo.Length != 12 && detailModel.LotNo.Length != 11 && detailModel.LotNo.Length != 10)
                    //        {
                    //            strMessage = "-1:进厂编号位数长度有误;";
                    //            continue;
                    //        }
                    //    }
                    //}
                    
                    if (model.Type == "1" && string.IsNullOrWhiteSpace(detailModel.SupplierLot)) //采购到货单原厂批号(供货批次)不能为空
                    {
@@ -399,6 +412,20 @@
                    if (model.Type == "0")//成品入库单下发WCS信息
                    {
                        //计算出总箱数
                        var packmodel = Db.Queryable<SysPackag>().First(w=>w.PackagNo == detailModel.SkuNo);
                        int xqty = 0;
                        if (packmodel.L1Name == "箱") {
                            xqty = (int)detailModel.Qty;
                        }
                        if (packmodel.L2Name == "箱")
                        {
                            xqty = (int)(detailModel.Qty / packmodel.L2Num);
                        }
                        if (packmodel.L3Name == "箱")
                        {
                            xqty = (int)(detailModel.Qty/ packmodel.L2Num / packmodel.L3Num);
                        }
                        addOder.Add(new ResponseOrderTaskModel()
                        {
                            OrderNo = model.ASNNo,
@@ -406,7 +433,7 @@
                            SkuNo = detailModel.SkuNo,
                            SkuName = detailModel.SkuName,
                            BoxType = detailModel.Standard,
                            Qty = (int)detailModel.Qty,
                            Qty = xqty,
                            TaskType = 0
                        });
                    }
@@ -429,34 +456,34 @@
                {
                    new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "添加", $"添加了单据号为{model.ASNNo}的单据信息", Convert.ToInt32(model.CreateUser));
                    //if (addOder.Count > 0)
                    //{
                    //    // 正式运行程序放开
                    //    var jsonData = JsonConvert.SerializeObject(addOder);
                    //    string response = "";
                    if (addOder.Count > 0)
                    {
                        // 正式运行程序放开
                        var jsonData = JsonConvert.SerializeObject(addOder);
                        string response = "";
                    //    try
                    //    {
                    //        var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                    //        //给WCS下发入库单信息
                    //        response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS");
                        try
                        {
                            var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            //给WCS下发入库单信息
                            response = HttpHelper.DoPost(url, jsonData, "下发给WCS入库命令", "WCS");
                    //        //////解析返回数据
                    //        var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                    //        if (wcsModel.StatusCode == 0)
                    //        {
                    //        }
                    //        if (wcsModel.StatusCode == -1)
                    //        {
                            //解析返回数据
                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                            if (wcsModel.StatusCode == 0)
                            {
                    //        }
                    //    }
                    //    catch (Exception ex)
                    //    {
                    //        throw new Exception(ex.Message);
                    //    }
                    //}
                            }
                            if (wcsModel.StatusCode == -1)
                            {
                                throw new Exception($"下发WCS失败:{wcsModel.Msg}");
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                    }
                    return strMessage;
                }
                else
@@ -497,6 +524,7 @@
                    strMessage = "-1:上游系统下发的单据,不可编辑;";
                    return strMessage;
                }
                sqlString += $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isDel = '0';";
                var asnInfo = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault();
@@ -550,6 +578,16 @@
                    {
                        strMessage = "-1:批次号不可为空;";
                        continue;
                    }
                    if (!string.IsNullOrEmpty(detailModel.IsBale))
                    {
                        detailModel.IsBale = detailModel.IsBale == "是" ? "1" : "0";
                        if (detailModel.IsBale != "1" && detailModel.IsBale != "0")
                        {
                            //判断是否裹包
                            strMessage = "-1:裹包字段只能录入“是”或“否”;";
                            continue;
                        }
                    }
                    if (model.Type == "2")   // 2:中间品入库
@@ -987,21 +1025,22 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public HttpReturnModel HttpCreateAsn(AsnInfo model)
        public HttpReturnModel HttpCreateAsn(AsnInfo model, string url)
        {
            try
            {
                var addOder = new List<ResponseOrderTaskModel>();
                var resultModel = new HttpReturnModel() { Success = "-1", Message = "" };
                if (string.IsNullOrEmpty(model.AsnType))
                {
                    resultModel.Message = "单据类型不可为空!";
                    return resultModel;
                }
                if (string.IsNullOrEmpty(model.Customer))
                {
                    resultModel.Message = "客户不可为空!";
                    return resultModel;
                }
                //if (string.IsNullOrEmpty(model.Customer))
                //{
                //    resultModel.Message = "客户不可为空!";
                //    return resultModel;
                //}
                if (string.IsNullOrEmpty(model.OrderCode))
                {
                    resultModel.Message = "上游系统单号不可为空!";
@@ -1014,11 +1053,14 @@
                }
                // 根据客户编号获取客户名称
                var custname = "";
                var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0");
                if (CustomerModel == null)
                if (CustomerModel != null)
                {
                    resultModel.Message = "客户编号不存在!";
                    return resultModel;
                    custname = CustomerModel.CustomerName;
                    //CustomerModel.CustomerName = "";
                    //resultModel.Message = "客户编号不存在!";
                    //return resultModel;
                }
                // 入库总表信息
@@ -1029,8 +1071,9 @@
                    Type = model.AsnType,
                    Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin,
                    CustomerNo = model.Customer,
                    CustomerName = CustomerModel.CustomerName,
                    CustomerName = custname,
                    OrderCode = model.OrderCode,
                    Status = "0",
                };
                // 入库明细表信息
@@ -1073,14 +1116,51 @@
                        LotNo = asnDetailModel.LotNo,
                        LotText = "",
                        Qty = (decimal)asnDetailModel.Qty,
                        PackagNo = asnDetailModel.PackagNo,
                        FactQty = 0,
                        CompleteQty = 0,
                        Price = 0,
                        Money = 0,
                        IsBale = "",
                        IsBelt = "",
                        PackagNo = skuModel.PackagNo,
                        SupplierLot = asnDetailModel.SupplierLot,
                        Status = "0",
                        CreateUser = 0
                    };
                    detailModels.Add(detailModel);
                    if (model.AsnType == "0")//成品入库单下发WCS信息
                    {
                        //计算出总箱数
                        var packmodel = Db.Queryable<SysPackag>().First(w => w.PackagNo == detailModel.SkuNo);
                        int xqty = 0;
                        if (packmodel.L1Name == "箱")
                        {
                            xqty = (int)detailModel.Qty;
                        }
                        if (packmodel.L2Name == "箱")
                        {
                            xqty = (int)(detailModel.Qty / packmodel.L2Num);
                        }
                        if (packmodel.L3Name == "箱")
                        {
                            xqty = (int)(detailModel.Qty / packmodel.L2Num / packmodel.L3Num);
                        }
                        addOder.Add(new ResponseOrderTaskModel()
                        {
                            OrderNo = asnNo,
                            LotNo = asnDetailModel.LotNo,
                            SkuNo = asnDetailModel.SkuNo,
                            SkuName = skuModel.SkuName,
                            BoxType = skuModel.Standard,
                            Qty = (int)asnDetailModel.Qty,
                            TaskType = 0
                        });
                    }
                }
                Db.BeginTran();
                // 插入入库单总表
@@ -1089,6 +1169,36 @@
                // 插入入库单明细表
                Db.Insertable(detailModels).ExecuteCommand();
                Db.CommitTran();
                if (addOder.Count > 0)
                {
                    // 正式运行程序放开
                    var jsonData = JsonConvert.SerializeObject(addOder);
                    string response = "";
                    try
                    {
                        var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                                                 //给WCS下发入库单信息
                        response = HttpHelper.DoPost(url, jsonData, "下发给WCS入库命令", "WCS");
                        //解析返回数据
                        var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                        if (wcsModel.StatusCode == 0)
                        {
                        }
                        if (wcsModel.StatusCode == -1)
                        {
                            throw new Exception($"下发WCS失败:{wcsModel.Msg}");
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
                resultModel.Success = "0";
                resultModel.Message = "成功";
@@ -1136,6 +1246,10 @@
                {
                    throw new Exception("复核失败,复核人员和关闭订单人员不能相同!");
                }
                if (date.Id == notice.CreateUser)
                {
                    throw new Exception("复核失败,复核人员和创建订单人员不能相同!");
                }
                //单据类型是 成品入库或采购入库 判断入库物料是否合格
                if (notice.Type == "0" || notice.Type == "1")
                {
@@ -1169,7 +1283,7 @@
                };
                #region 通过接口发送至erp 或 mes
                //系统对接后放开
                ////系统对接后放开
                var jsonData = JsonConvert.SerializeObject(asnInfo);
                var mesList = new List<string>() { "0", "4" };  //0 成品入库 4余料退回入库
                var erpList = new List<string>() { "1", "2", "3" }; //1 采购入库  2中间品入库  3 退货入库
@@ -1177,7 +1291,8 @@
                if (mesList.Contains(notice.Type)) // mes 
                {
                    //获取令牌
                    var token = new Token().GetMesToken(mesTokenUrl);
                    //var token = new Token().GetMesToken(mesTokenUrl); //测试不使用TOKEN,正式运行时放开
                    var token = "";
                    Dictionary<string, string> mesDic = new Dictionary<string, string>()
                    {
                        {"Authorization",token }
@@ -1185,14 +1300,14 @@
                    var mesData = new FinishAsnModel()
                    {
                        no = asnInfo.OrderCode,
                        qty = asnInfo.AsnDetails.Sum(m=>m.Qty)
                        qty = asnInfo.AsnDetails.Sum(m => m.Qty)
                    };
                    jsonData = JsonConvert.SerializeObject(mesData);
                    //调用接口
                    var response = HttpHelper.DoPost(mesUrl, jsonData, "入库单完成上传", "MES", mesDic);
                    var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据
                    if (obj.status != "0")
                    if (obj.status != "success")
                    {
                        throw new Exception("上传失败" + obj.message);
                    }
@@ -1208,7 +1323,7 @@
                    }
                }
                #endregion
                notice.Status = "4";