1
dengjunjie
8 天以前 a770206c91e495b802b3e9371e06834586ad7715
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs
@@ -15,6 +15,7 @@
using WIDESEA_DTO.SquareCabin;
using WIDESEA_Common;
using System.Xml.Linq;
using WIDESEA_Common.OrderEnum;
namespace WIDESEA_WMSServer
{
@@ -65,10 +66,10 @@
                // ååºåˆ—化
                var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
                if (response.resultCode != "0")
                if (response == null || response.resultCode != "0" || requestData == null)
                {
                    // è°ƒç”¨å¼‚常接口
                    SendErrorToUpstream(1, "", response.resultMsg ?? "上游接口返回失败", "");
                    //SendErrorToUpstream(1, "", response.resultMsg ?? "上游接口返回失败", "");
                    return responseContent.Error(response.resultMsg ?? "上游接口返回失败");
                }
@@ -76,8 +77,10 @@
                {
                    return responseContent.OK("无新入库单数据");
                }
                var ordernos = response.data.Select(x => x.order_no).ToList();
                // èŽ·å–æ‰€æœ‰å·²å­˜åœ¨çš„å…¥åº“å•å·
                var existingOrderNos = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>()
                    .Where(x => ordernos.Contains(x.Order_no))
                    .Select(x => x.Order_no)
                    .Distinct().ToList();
@@ -86,7 +89,7 @@
                    .Where(order => !existingOrderNos.Contains(order.order_no))
                    .ToList();
                if (!newOrders.Any())
                if (newOrders.Count < 1)
                {
                    return responseContent.OK("所有入库单已存在,无需新增");
                }
@@ -151,8 +154,8 @@
                    {
                        _unitOfWorkManage.RollbackTran();
                        _messageInfoService.AddMessageInfo(messageGroupBy, name, ex.Message, messageStatus);
                        SendErrorToUpstream(1, "", ex.Message, "");
                        return responseContent.Error("同步失败: " + ex.Message);
                        //SendErrorToUpstream(1, "", ex.Message, "");
                        //return responseContent.Error("同步失败: " + ex.Message);
                    }
                };
                return responseContent.OK("同步入库单成功");
@@ -161,7 +164,7 @@
            catch (Exception ex)
            {
                // å…¨å±€å¼‚常时,也推送异常给上游
                SendErrorToUpstream(1, "", ex.Message, "");
                //SendErrorToUpstream(1, "", ex.Message, "");
                return responseContent.Error("同步失败: " + ex.Message);
            }
        }
@@ -174,8 +177,8 @@
            var responseContent = new WebResponseContent();
            try
            {
                //var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder";
                var url = "http://127.0.0.1:4523/m1/5660322-5340849-default/GYZ2/95fck/outOrder";
                var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder";
                //var url = "http://127.0.0.1:4523/m1/5660322-5340849-default/GYZ2/95fck/outOrder";
                if (string.IsNullOrEmpty(SearchOutDate)) SearchOutDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //// è¯·æ±‚参数
                var requestData = new
@@ -190,7 +193,7 @@
                if (response.resultCode != "0")
                {
                    SendErrorToUpstream(3, "", response.resultMsg ?? "上游接口返回失败", "");
                    //SendErrorToUpstream(3, "", response.resultMsg ?? "上游接口返回失败", "");
                    return responseContent.Error(response.resultMsg ?? "上游接口返回失败");
                }
@@ -198,9 +201,10 @@
                {
                    return responseContent.OK("无新出库单数据");
                }
                var ordernos = response.data.Select(x => x.order_no).ToList();
                // å·²å­˜åœ¨å‡ºåº“单号
                var existingOutOrderNos = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>()
                    .Where(x => ordernos.Contains(x.Out_no))
                    .Select(x => x.Out_no)
                    .Distinct().ToList();
@@ -211,7 +215,7 @@
                List<string> order_no = newOutOrders.Select(x => x.order_no).ToList();
                if (!newOutOrders.Any())
                if (newOutOrders.Count < 1)
                {
                    return responseContent.OK("所有出库单已存在,无需新增");
                }
@@ -278,15 +282,15 @@
                    {
                        _unitOfWorkManage.RollbackTran();
                        _messageInfoService.AddMessageInfo(messageGroupBy, name, ex.Message, messageStatus);
                        SendErrorToUpstream(3, "", ex.Message, "");
                        return responseContent.Error("同步失败: " + ex.Message);
                        //SendErrorToUpstream(3, "", ex.Message, "");
                        //return responseContent.Error("同步失败: " + ex.Message);
                    }
                }
                return responseContent.OK($"同步出库单成功,共{_DeliveryOrders.Count}条");
            }
            catch (Exception ex)
            {
                SendErrorToUpstream(3, "", ex.Message, "");
                //SendErrorToUpstream(3, "", ex.Message, "");
                return responseContent.Error("同步失败: " + ex.Message);
            }
        }
@@ -391,7 +395,7 @@
                    }
                    else
                    {
                        SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS æŽ¨é€å¤±è´¥", "");
                        //SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS æŽ¨é€å¤±è´¥", "");
                        Console.WriteLine($"订单 {order.Order_no} æŽ¨é€å¤±è´¥ï¼š{resp?.msg}");
                        return new WebResponseContent { Status = false, Message = "订单推送失败" };
                    }
@@ -480,8 +484,8 @@
                        };
                        // 4. è°ƒç”¨æŽ¥å£
                        //var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
                        var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363076920";
                        var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
                        //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363076920";
                        var result = HttpHelper.Post(url, ediDto.ToJsonString());
                        var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
@@ -503,14 +507,14 @@
                        }
                        else
                        {
                            SendErrorToUpstream(3, order.Out_no, resp?.msg ?? "WCS æŽ¨é€å¤±è´¥", "");
                            //SendErrorToUpstream(3, order.Out_no, resp?.msg ?? "WCS æŽ¨é€å¤±è´¥", "");
                            Console.WriteLine($"订单 {order.Out_no} æŽ¨é€å¤±è´¥ï¼š{resp?.msg}");
                        }
                        //删除全部状为已完成的明细和表头,移入历史表
                    }
                    catch (Exception ex)
                    {
                        SendErrorToUpstream(3, order.Out_no, ex.Message, "");
                        //SendErrorToUpstream(3, order.Out_no, ex.Message, "");
                        Console.WriteLine($"订单 {order.Out_no} æŽ¨é€å¼‚常:{ex.Message}");
                    }
                }
@@ -536,39 +540,61 @@
            var responseContent = new WebResponseContent();
            try
            {
                _unitOfWorkManage.BeginTran();
                #region æŸ¥æ‰¾æ‰€æœ‰å·²å®Œæˆå…¥åº“单
                var inorders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "已完成").Select(x => x.Order_no).Distinct().ToList();
                foreach (var inorder in inorders)
                {
                    //var Orders = BaseDal.QueryData(x => x.Order_no == inorder);
                    var Orders = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == inorder).Includes(x => x.Details).ToList();
                    if (!Orders.Where(x => x.OdrderStatus != "已完成").Any())
                    {
                        _unitOfWorkManage.BeginTran();
                        foreach (var item in Orders)
                        if (Orders.FirstOrDefault().Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString())
                        {
                            if (item.Details != null)
                                _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.自动完成);
                            item.Details = null;
                        }
                        _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.自动完成);
                        // è°ƒç”¨ä¸Šæ¸¸æŽ¥å£
                        var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
                        var result = HttpHelper.Post(url, new { order_no = inorder }.ToJsonString());
                        var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                        if (response.resultCode == "0")
                        {
                            // æäº¤äº‹åŠ¡
                            _unitOfWorkManage.CommitTran();
                            foreach (var item in Orders)
                            {
                                if (item.Details != null)
                                    _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.自动完成);
                                item.Details = null;
                            }
                            _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.自动完成);
                        }
                        else
                        {
                            _unitOfWorkManage.RollbackTran();
                            SendErrorToUpstream(2, "", $"上游接口返回失败: {response.resultMsg}", inorder);
                            // è°ƒç”¨ä¸Šæ¸¸æŽ¥å£
                            var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
                            var result = HttpHelper.Post(url, new { order_no = inorder }.ToJsonString());
                            var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                            if (response.resultCode == "0")
                            {
                                foreach (var item in Orders)
                                {
                                    if (item.Details != null)
                                        _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.自动完成);
                                    item.Details = null;
                                }
                                _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.自动完成);
                                // æäº¤äº‹åŠ¡
                            }
                            else
                            {
                                string mess = "上报ERP无响应";
                                if (response != null) mess = response.resultMsg;
                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"入库单号【{inorder}】完成上报ERP失败", mess);
                                //_unitOfWorkManage.RollbackTran();
                                //SendErrorToUpstream(2, "", $"上游接口返回失败: {response.resultMsg}", inorder);
                                continue;
                            }
                        }
                    }
                }
                #endregion
                _unitOfWorkManage.CommitTran();
                return responseContent.OK();
            }
            catch (Exception ex)
@@ -590,38 +616,58 @@
            var responseContent = new WebResponseContent();
            try
            {
                _unitOfWorkManage.BeginTran();
                #region æŸ¥æ‰¾æ‰€æœ‰å·²å®Œæˆå‡ºåº“单
                var outorders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "已完成").Select(x => x.Out_no).Distinct().ToList();
                foreach (var outorder in outorders)
                {
                    var Orders = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == outorder).Includes(x => x.Details).ToList();
                    if (!Orders.Where(x => x.OutStatus != "已完成").Any())
                    {
                        _unitOfWorkManage.BeginTran();
                        foreach (var item in Orders)
                        if (Orders.FirstOrDefault().Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString())
                        {
                            if (item.Details != null)
                                _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.自动完成);
                            item.Details = null;
                            foreach (var item in Orders)
                            {
                                if (item.Details != null)
                                    _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.自动完成);
                                item.Details = null;
                            }
                            _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.自动完成);
                        }
                        _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.自动完成);
                        var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
                        var requestDate = new
                        {
                            order_no = outorder
                        };
                        var result = HttpHelper.Post(url, requestDate.ToJsonString());
                        var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                        if (response.resultCode == "0") _unitOfWorkManage.CommitTran();
                        else
                        {
                            _unitOfWorkManage.RollbackTran();
                            SendErrorToUpstream(4, "", $"上游接口返回失败: {response.resultMsg}", outorder);
                            var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
                            var requestDate = new
                            {
                                order_no = outorder
                            };
                            var result = HttpHelper.Post(url, requestDate.ToJsonString());
                            var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
                            if (response != null && response.resultCode == "0")
                            {
                                foreach (var item in Orders)
                                {
                                    if (item.Details != null)
                                        _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.自动完成);
                                    item.Details = null;
                                }
                                _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.自动完成);
                            }
                            else
                            {
                                string mess = "上报ERP无响应";
                                if (response != null) mess = response.resultMsg;
                                _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, $"出库单号【{outorder}】完成上报ERP失败", mess);
                                //_unitOfWorkManage.RollbackTran();
                                //SendErrorToUpstream(4, "", $"上游接口返回失败: {response.resultMsg}", outorder);
                                continue;
                            }
                        }
                    }
                }
                #endregion
                _unitOfWorkManage.CommitTran();
                return responseContent.OK();
            }
            catch (Exception ex)