cdk
2025-11-27 53c7de340f55ab0c917a03d54d883b4a8082f42d
增加通过网址获取供应商评分数据的接口
已添加3个文件
157 ■■■■■ 文件已修改
Controllers/Warehouse/MesSuppScController.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesSuppSc.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesSuppScManager.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesSuppScController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
using MES.Service.service.Kingdee;
using MES.Service.service.Warehouse;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using System.Dynamic;
namespace NewPdaSqlServer.Controllers.Warehouse;
[ApiController]
[Route("api/[controller]")]
public class MesSuppScController : ControllerBase
{
    private readonly MesSuppScManager kc = new();
    private readonly string METHOD = "POST";
    private readonly string TableName = "MES_SUPPSCORE";
    private readonly string URL = "http://localhost:10054/api/ErpKc/";
    //
    [HttpPost("Save")]
    public async Task<ResponseResult> Save()
    {
        try
        {
            // ä»Žè¿œç«¯è¯»å–并保存
            var ok = await Task.Run(() => kc.FetchAndSaveFromUrl());
            if (!ok)
                throw new Exception("保存失败:无数据或插入数据库失败");
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = (object)null
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
entity/MesSuppSc.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using SqlSugar;
namespace NewPdaSqlServer.entity;
[SugarTable("MES_SUPPSCORE")]
public class MesSuppSc
{
    /// <summary>
    ///     é»˜è®¤å€¼: (newid())
    /// </summary>
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid ID { get; set; }
    [SugarColumn(ColumnName = "SuppDate")]
    public string? SuppDate { get; set; }
    [SugarColumn(ColumnName = "SuppName")]
    public string? SuppName { get; set; }
    [SugarColumn(ColumnName = "SuppNum")]
    public decimal? SuppNum { get; set; }
}
service/Warehouse/MesSuppScManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@

using Kingdee.CDP.WebApi.SDK;
using MES.Service.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using System.Text;
namespace MES.Service.service.Warehouse;
public class MesSuppScManager : Repository<MesSuppSc>
{
    private const string SourceUrl = "https://qixizhaopin.modaniot.com:8443/wetchat/ToGSMesServlet?password=gsmes";
    /// <summary>
    /// ä»ŽæŒ‡å®šç½‘址读取 JSON æ•°æ®å¹¶ä¿å­˜åˆ° MES_SUPPSCORE è¡¨
    /// </summary>
    public bool FetchAndSaveFromUrl()
    {
        string json;
        try
        {
            using var http = new HttpClient();
            // å¯æ ¹æ®éœ€è¦è®¾ç½®è¶…æ—¶
            http.Timeout = TimeSpan.FromSeconds(30);
            json = http.GetStringAsync(SourceUrl).Result;
        }
        catch (Exception ex)
        {
            throw new Exception($"获取远程数据失败: {ex.Message}", ex);
        }
        if (string.IsNullOrWhiteSpace(json))
            throw new Exception("远程返回内容为空");
        JToken root;
        try
        {
            root = JToken.Parse(json);
        }
        catch (Exception ex)
        {
            throw new Exception($"解析 JSON å¤±è´¥: {ex.Message}");
        }
        var data = root["data"] as JArray;
        if (data == null || data.Count == 0)
            throw new Exception("JSON ä¸­æœªåŒ…含 data æˆ– data ä¸ºç©º");
        var list = new List<MesSuppSc>();
        foreach (var item in data)
        {
            var rq = item["rq"]?.ToString();
            var gysmc = item["gysmc"]?.ToString();
            var zf = item["zf"]?.ToString();
            decimal? zfDec = null;
            if (!string.IsNullOrWhiteSpace(zf) && decimal.TryParse(zf, out var tmp))
                zfDec = tmp;
            list.Add(new MesSuppSc
            {
                ID = Guid.NewGuid(),
                SuppDate = rq,
                SuppName = gysmc,
                SuppNum = zfDec
            });
        }
        // å†™å…¥æ•°æ®åº“:先清空表再插入(按原逻辑)
        var result = UseTransaction(db =>
        {
            // æ³¨æ„ï¼šè¿™é‡Œä½¿ç”¨ä¼ å…¥çš„ db(SqlSugarScope)执行原子操作
            db.Deleteable<MesSuppSc>().ExecuteCommand();
            var inserted = db.Insertable(list).ExecuteCommand();
            return inserted > 0 ? 1 : 0;
        }) > 0;
        return result;
    }
}