IPC-610
2024-09-26 2be1922b035c182c3c516427aa68be54badd6938
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -17,6 +17,7 @@
using WMS.Entity.Context;
using WMS.Entity.SysEntity;
using WMS.IBLL.IBllAsnServer;
using WMS.BLL.SysServer;
namespace WMS.BLL.BllAsnServer
{
@@ -112,7 +113,7 @@
                sqlString += "LEFT JOIN SysMaterials AS tb5 on tb1.SkuNo = tb5.SkuNo ";
                sqlString += "LEFT JOIN SysUnit AS tb6 on tb5.UnitNo = tb6.UnitNo ";
                sqlString += "LEFT JOIN SysPackag AS tb7 on tb1.PackagNo = tb7.PackagNo ";
                sqlString += $"WHERE tb1.ASNNo = '{model.ASNNo}' AND tb1.IsDel = '0' order by tb1.SkuNo desc ";
                sqlString += $"WHERE tb1.ASNNo = '{model.ASNNo}' AND tb1.IsDel = '0' AND tb5.IsDel = '0' order by tb1.SkuNo desc ";
                sqlString += $"offset {((model.Page - 1) * model.Limit)} rows fetch next {rowCount} rows only;";
                var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString);
@@ -201,7 +202,7 @@
                }
                Expression<Func<SysMaterials, bool>> item = Expressionable.Create<SysMaterials>()
                    .AndIF(model.Type != "7", it => skuType.Contains(it.Type))
                    .AndIF(model.Type != "7", it => skuType.Contains(it.Type) && it.SkuNo != "100088")
                    .AndIF(model.Type == "7", it => it.SkuNo == "100088")
                    .AndIF(IsPack == 1, it => it.PackagNo != "")
                    .AndIF(IsPack == 2, it => it.PackagNo == "")
@@ -869,11 +870,11 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ErpModel CreateAsn(AsnInfo model)
        public HttpReturnModel HttpCreateAsn(AsnInfo model)
        {
            try
            {
                var resultModel = new ErpModel() { Success = -1, Message = "" };
                var resultModel = new HttpReturnModel() { Success = "-1", Message = "" };
                if (string.IsNullOrEmpty(model.AsnType))
                {
                    resultModel.Message = "单据类型不可为空!";
@@ -972,7 +973,7 @@
                Db.Insertable(detailModels).ExecuteCommand();
                Db.CommitTran();
                resultModel.Success = 0;
                resultModel.Success = "0";
                resultModel.Message = "成功";
                return resultModel;
            }
@@ -984,7 +985,7 @@
        }
        //订单回传上游系统
        public bool FinishAsn(int id, string url, int userId)
        public bool FinishAsn(int id, string erpUrl, string mesUrl,string mesTokenUrl, int userId)
        {
            try
            {
@@ -1019,23 +1020,53 @@
                    };
                    list.Add(item);
                }
                var soInfo = new AsnInfo()
                var asnInfo = new AsnInfo()
                {
                    OrderCode = notice.OrderCode,
                    AsnDetails = list
                };
                #region 通过接口发送至erp
                #region 通过接口发送至erp 或 mes
                //系统对接后放开
                /*var jsonData = JsonConvert.SerializeObject(soInfo);
                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 退货入库
                var response = HttpHelper.DoPost(url, jsonData, "入库单完成上传", "ERP");
                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据
                if (obj.Success != 0)
                if (mesList.Contains(notice.Type)) // mes
                {
                    throw new Exception("上传失败" + obj.Message);
                }*/
                    //获取令牌
                    var token = new Token().GetMesToken(mesTokenUrl);
                    Dictionary<string, string> mesDic = new Dictionary<string, string>()
                    {
                        {"Authorization",token }
                    };
                    var mesData = new FinishAsnModel()
                    {
                        no = asnInfo.OrderCode,
                        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")
                    {
                        throw new Exception("上传失败" + obj.message);
                    }
                }
                else if (erpList.Contains(notice.Type)) //erp
                {
                    var response = HttpHelper.DoPost(erpUrl, jsonData, "入库单完成上传", "ERP");
                    var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据
                    if (obj.Success != 0)
                    {
                        throw new Exception("上传失败" + obj.Message);
                    }
                }
                #endregion
                notice.Status = "4";
@@ -1052,6 +1083,29 @@
            }
        }
        public void UpLocate(string wareNo,string locatNo)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(wareNo) || string.IsNullOrWhiteSpace(locatNo))
                {
                    throw new Exception("仓库或储位不能为空");
                }
                var locate = Db.Queryable<SysStorageLocat>().First(m=>m.IsDel == "0" && m.LocatNo == locatNo && m.WareHouseNo == wareNo);
                if (locate == null)
                {
                    throw new Exception("未查询到储位信息");
                }
                locate.Status = "0";//储位状态变更空储位
                Db.Updateable(locate).ExecuteCommand();
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        #endregion
    }