zhaowc
2025-03-27 d07f25c163706ac46a83bd2c63db1e3c52715222
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -156,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") : "";
                        }
                    }
                }
@@ -163,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)
@@ -213,7 +215,7 @@
                        break;
                    case "6"://代储入库
                        skuType = "(0,1,2,3,4)";
                        IsPack = 2; //不贴
                        //IsPack = 2; //不贴
                        break;
                    case "7"://寄存入库
                        //skuType = "(3)";
@@ -355,18 +357,18 @@
                            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 != "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)) //采购到货单原厂批号(供货批次)不能为空
                    {
@@ -410,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,
@@ -417,7 +433,7 @@
                            SkuNo = detailModel.SkuNo,
                            SkuName = detailModel.SkuName,
                            BoxType = detailModel.Standard,
                            Qty = (int)detailModel.Qty,
                            Qty = xqty,
                            TaskType = 0
                        });
                    }
@@ -1009,10 +1025,11 @@
        /// </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))
                {
@@ -1056,6 +1073,7 @@
                    CustomerNo = model.Customer,
                    CustomerName = custname,
                    OrderCode = model.OrderCode,
                    Status = "0",
                };
                // 入库明细表信息
@@ -1098,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();
                // 插入入库单总表
@@ -1114,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 = "成功";
@@ -1161,6 +1246,10 @@
                {
                    throw new Exception("复核失败,复核人员和关闭订单人员不能相同!");
                }
                if (date.Id == notice.CreateUser)
                {
                    throw new Exception("复核失败,复核人员和创建订单人员不能相同!");
                }
                //单据类型是 成品入库或采购入库 判断入库物料是否合格
                if (notice.Type == "0" || notice.Type == "1")
                {
@@ -1194,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 退货入库
@@ -1211,7 +1300,7 @@
                    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);
                    //调用接口
@@ -1234,7 +1323,7 @@
                    }
                }
                #endregion
                notice.Status = "4";