admin
2 天以前 51e0304ffad3ddfbbfd212a55fa4220ae8a7f047
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -613,11 +613,11 @@
                        CreateUser = 0,
                    };
                    if (houseNo == "1000" || houseNo == "1001" || houseNo == "2000" || houseNo == "2002" || houseNo == "2003" || houseNo == "2004")
                    if (houseNo == "1000" || houseNo == "1001" || houseNo == "1002" || houseNo == "1003" || houseNo == "1098" || houseNo == "2000" || houseNo == "2001" || houseNo == "2002" || houseNo == "2003" || houseNo == "2004" || houseNo == "3101" || houseNo == "3102" || houseNo == "3103" || houseNo == "3104")
                    {
                        notice.WareHouseNo = "W02";
                    }
                    else if (houseNo == "4000")
                    else if (houseNo == "4000" | houseNo == "4001")
                    {
                        notice.WareHouseNo = "W01";
                    }
@@ -753,12 +753,12 @@
                    //系统对接后放开
                    var jsonData = JsonConvert.SerializeObject(soInfo);
                    var response = HttpHelper.DoPost(url, jsonData, "出库单完成上传", "ERP");
                    var response = HttpHelper.DoPost(url, jsonData, "出库单完成上传", "SAP");
                    var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据
                    if (obj.Success != 0)
                    var obj = JsonConvert.DeserializeObject<SapResultModel>(response);//解析返回数据
                    if (obj.RESULT != true)
                    {
                        throw new Exception("上传失败" + obj.Message);
                        throw new Exception("上传失败" + obj.MESSAGE);
                    }
                    #endregion
                }
@@ -1231,7 +1231,7 @@
                    //添加出库单
                    foreach (var d in model.Detail)
                    {
                        if (d.Qty < 1)
                        if (d.Qty <= 0)
                        {
                            throw new Exception("出库数量必须大于0");
                        }
@@ -1452,7 +1452,8 @@
                {
                    throw new Exception("未查询到出库单据信息");
                }
                if (notice.Origin != "WMS" || notice.Status != "0")
                //if (notice.Origin != "WMS" || notice.Status != "0")
                if (notice.Status != "0")
                {
                    throw new Exception("参数异常,请检查状态是否未等待执行或来源是否是WMS");
                }
@@ -1509,7 +1510,7 @@
                        //更新出库单
                        foreach (var d in model.Detail)
                        {
                            if (d.Qty < 1)
                            if (d.Qty <= 0)
                            {
                                throw new Exception("出库数据必须大于0");
                            }
@@ -2013,6 +2014,13 @@
            }
        }
        /// <summary>
        /// 导出xml文件
        /// </summary>
        /// <param name="id"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public XmlNode AddExXmlStr(int id, int userId)
        {
            try
@@ -2022,27 +2030,80 @@
                {
                    throw new Exception("未查询到出库单据信息");
                }
                var noticeDetial = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.SONo == notice.SONo).First();
                if (noticeDetial == null)
                {
                    throw new Exception("未查询到出库单据明细信息");
                }
                var statusLis = new List<string>() { "4", "5", "6" };
                if (!statusLis.Contains(notice.Status))
                {
                    throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭/已上传");
                }
                string xmlName = string.Empty;
                switch (notice.Type)
                {
                    case "0"://成品出库/销售出库
                        xmlName = "SalesWareHouseOut";
                        break;
                    case "2"://抽检出库
                        xmlName = "CheckWareHouseOut";
                        break;
                    default:
                        throw new Exception("单据类型异常");
                }
                var materiDetial = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == noticeDetial.SkuNo);
                var packType = Db.Queryable<SysPackag>().First(w => w.IsDel == "0" && w.PackagNo == materiDetial.PackagNo);
                int level = 0;
                if (!string.IsNullOrEmpty(packType.L2Name))
                {
                    level = 1;
                }
                if (!string.IsNullOrEmpty(packType.L3Name))
                {
                    level = 2;
                }
                if (!string.IsNullOrEmpty(packType.L4Name))
                {
                    level = 3;
                }
                //出库单明细
                var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).Select(m => m.BoxNo3).ToList();
                var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList();
                var userinfo = Db.Queryable<SysUserInfor>().Where(m => m.Id == comDetail.First().CreateUser).First().RealName;
                Db.BeginTran();//开启事务
                try
                {
                    //Hashtable pars = new Hashtable();       //用来存放参数
                    var pars = new List<string>();
                    //for (int i = 0; i < 10; i++)
                    //{
                    //    pars.Add("202203240009000479940290");
                    //}
                    string[] strr = new string[comDetail.Count];
                    var dom = HttpHelper.EncodeParsToFuMa(comDetail, "ceshi", "ExInfoXml");
                    for (int i = 0; i < comDetail.Count(); i++)
                    {
                        switch (level)
                        {
                            case 1:
                                strr[i] = comDetail[i].BoxNo + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime);
                                break;
                            case 2:
                                strr[i] = comDetail[i].BoxNo3 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime);
                                break;
                            case 3:
                                strr[i] = comDetail[i].BoxNo2 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime);
                                break;
                            default:
                                break;
                        }
                        pars.Add(strr[i]);
                    }
                    //string fileName = $"{xmlName}_{notice.OrderCode}_linklink";
                    var dom = HttpHelper.EncodeParsToFuMa(pars, "", xmlName, "ExInfoXml");
                    ////添加操作日志记录
                    //var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "关单", $"关闭了单据号为{notice.SONo}的单据信息", userId);
                    var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "上传", $"上传了单据号为{notice.SONo}的单据信息", userId);
                    Db.CommitTran();
                    return dom;
@@ -2395,7 +2456,7 @@
                var allot = new AllotLocation();
                #region 集合 
                Db.BeginTran();
                try
                {
@@ -2732,7 +2793,7 @@
                        decimal needQty = detail.Qty - (detail.AllotQty == null ? 0 : decimal.Parse(detail.AllotQty.ToString()));
                        //库存明细 Status 0:待分配 1:部分分配  2:已分配 
                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0"
                        && m.AreaNo != "B06" && m.AreaNo != "B07" && m.AreaNo != "B09" && m.AreaNo != "B24")//排除车间库存
                        && m.AreaNo != "B06" && m.AreaNo != "B07" && m.AreaNo != "B09" && m.AreaNo != "B24" && m.AreaNo != "B26" && m.AreaNo != "B27" && m.AreaNo != "B28")//排除车间库存
                            .ToList();
@@ -2836,7 +2897,7 @@
                            {
                                s.Status = "1";
                            }
                            var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
                        }
@@ -2913,7 +2974,7 @@
                            notice.Status = "3";//正在执行
                        }
                    }
                    notice.UpdateUser = userId;
                    notice.UpdateTime = DateTime.Now;
                    var zd = Db.Updateable(notice).ExecuteCommand();
@@ -4370,7 +4431,7 @@
                                }
                            }
                        }
                        if(string.IsNullOrEmpty(newAddress))
                        if (string.IsNullOrEmpty(newAddress))
                        {
                            //已有物品的巷道
                            var roadwayHave = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01").GroupBy(g => g.RoadwayNo).Select(s => s.RoadwayNo).ToList();
@@ -4401,7 +4462,7 @@
                                }
                            }
                        }
                    }
                }
@@ -4582,7 +4643,7 @@
                else
                {
                    // 取最上面一排
                    location = slotModel[0].LocatNo;
                    location = slotModel[0].LocatNo;
                }
                bl = true;
@@ -4703,7 +4764,9 @@
                    }
                    var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m => m.LocatNo).ToList();
                    //所属区域集合
                    List<string> areNolist = new List<string>() { "B01", "B02", "B05" };
                    var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && areNolist.Contains(m.AreaNo)).Select(m => m.LocatNo).ToList();
                    //判断是否是原辅料出库任务  货架储位=》平库储位
                    if (endLocateList.Contains(task.EndLocat) && PalletType == "0")
                    {