啊鑫
2024-11-20 f26b99b11db7d779494a5f111b05dd8f5d55bf9c
消息中心推送消息的逻辑修改
已修改2个文件
151 ■■■■■ 文件已修改
Controllers/base/MessageCenterController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/base/GetErpParametersServer.cs 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/base/MessageCenterController.cs
@@ -43,7 +43,7 @@
        try
        {
            dynamic resultInfos = new ExpandoObject();
            //resultInfos.tbBillList = ErpParametersServer.Resend(data);
            resultInfos.tbBillList = ErpParametersServer.Resend(data);
            return new ResponseResult
            {
                status = 0,
service/base/GetErpParametersServer.cs
@@ -1,20 +1,163 @@
using System.Text;
using System.Web;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.service.Warehouse;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace NewPdaSqlServer.service.@base;
public class GetErpParametersServer
{
    // private readonly MesInvItemInCDetailsManager _invItemInCDetailsServer =
    //     new();
    //
    private readonly MesInvItemInCDetailsManager _invItemInCDetailsServer =
        new();
    // private readonly MesInvItemOutsManager _invItemOutsServer =
    //     new();
    private readonly MessageCenterManager _messageCenterServer = new();
    public string Resend(MessageCenter data)
    {
        //获取所有的回调
        var messageCenters =
            _messageCenterServer.GetList(it => it.Pid == data.Guid);
        messageCenters.Add(data);
        var erpParameters = GetErpParameters(messageCenters);
        return sendHttp(erpParameters).Result;
    }
    private List<MessageCenter> GetErpParameters(List<MessageCenter> data)
    {
        var centers = new List<MessageCenter>();
        //获取主请求
        var center = data.Find(p => p.Seq == 1);
        //解析URL
        var queryString =
            center.PageName.Substring(center.PageName.IndexOf('?') + 1);
        //提取参数
        var queryParameters = HttpUtility.ParseQueryString(queryString);
        var strings = center.TableName.Split("_");
        var centerUpdateBy = center.UpdateBy;
        var centerUpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        MessageCenter mesToErp = null;
        var query = new WarehouseQuery();
        switch (center.TableName)
        {
            //采购入库单审核
            case "MES_INV_ITEM_INS_A":
            //采购入库单反审核
            case "MES_INV_ITEM_INS_B":
                //获取到类型(审核还是反审核)
                query.Type = strings[^1];
                //获取url中附带的参数
                query.id = queryParameters["id"];
                query.billNo = queryParameters["billNo"];
                query.userName = centerUpdateBy;
                //重新获取请求的数据
                mesToErp = _invItemInCDetailsServer.MesToErpParam(query);
                //赋值主id
                mesToErp.Guid = center.Guid;
                mesToErp.UpdateBy = centerUpdateBy;
                mesToErp.UpdateDate = centerUpdateDate;
                centers.Add(mesToErp);
                //更新剩下的请求的参数
                var messageCenter = data[0];
                var json = new JObject
                {
                    new JProperty("id", query.id),
                    new JProperty("billNo", query.billNo),
                    new JProperty("userName", query.userName)
                };
                messageCenter.Data = json.ToString();
                messageCenter.UpdateBy = centerUpdateBy;
                messageCenter.UpdateDate = centerUpdateDate;
                centers.Add(messageCenter);
                break;
            //采购退料单审核
            case "MES_INV_ITEM_OUTS_A":
            //采购退料单反审核
            case "MES_INV_ITEM_OUTS_B":
                //获取到类型(审核还是反审核)
                query.Type = strings[^1];
                query.id = queryParameters["id"];
                query.billNo = queryParameters["itemOutNo"];
                query.userName = centerUpdateBy;
                //重新获取请求的数据
                // mesToErp = _invItemOutsServer.MesToErpParam(query);
                //更正为主id
                mesToErp.Guid = center.Guid;
                mesToErp.UpdateBy = centerUpdateBy;
                mesToErp.UpdateDate = centerUpdateDate;
                //添加到请求集合中
                centers.Add(mesToErp);
                //获取剩余的请求
                PostRequest(data, query, centers, centerUpdateDate);
                break;
            //生产领料单
            case "INV_ITEM_OUTS_A":
                //获取到类型(审核还是反审核)
                query.Type = strings[^1];
                query.id = queryParameters["id"];
                query.billNo = queryParameters["itemOutNo"];
                query.userName = centerUpdateBy;
                //重新获取请求的数据
                //mesToErp = _invItemOutsServer.ProductionMesToErpParam(query);
                //更正为主id
                mesToErp.Guid = center.Guid;
                mesToErp.UpdateBy = centerUpdateBy;
                mesToErp.UpdateDate = centerUpdateDate;
                //添加到请求集合中
                centers.Add(mesToErp);
                //获取剩余的请求
                PostRequest(data, query, centers, centerUpdateDate);
                break;
            default:
                throw new Exception("无法识别TableName类型");
        }
        //根据顺序返回
        return centers.OrderBy(p => p.Seq).ToList();
    }
    private void PostRequest(List<MessageCenter> data, WarehouseQuery query,
        List<MessageCenter> centers, string centerUpdateDate)
    {
        var find = data.FindAll(s => s.Seq != 1);
        var result = new JObject
        {
            new JProperty("id", query.id),
            new JProperty("billNo", query.billNo),
            new JProperty("userName", query.userName)
        };
        find.ForEach(s =>
        {
            s.Data = result.ToString();
            s.UpdateBy = query.userName;
            s.UpdateDate = centerUpdateDate;
            centers.Add(s);
        });
    }
    private async Task<string> sendHttp(List<MessageCenter> requestList)
    {
        var sortedRequests = requestList.OrderBy(r => r.Seq).ToList();