using Masuit.Tools;
|
using MES.Service.DB;
|
using MES.Service.Dto.service;
|
using MES.Service.Modes;
|
using MES.Service.util;
|
using MySqlConnector;
|
using Newtonsoft.Json;
|
using RestSharp;
|
using SharpCompress.Factories;
|
using SqlSugar;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Xml.Linq;
|
using ZstdSharp.Unsafe;
|
using System.Net.Http;
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
|
using DbType = System.Data.DbType;
|
using System.Text;
|
using System.Security.Cryptography;
|
using AngleSharp.Io;
|
|
|
namespace MES.Service.service.QC;
|
|
public class LljService
|
{
|
private static readonly HttpClient client = new();
|
|
public (List<LtsLlj> item, int TotalCount) GetPage(XJPageResult queryObj)
|
{
|
if (queryObj.createUser.IsNullOrEmpty()) return ([], 0);
|
|
var db = SqlSugarHelper.GetInstance();
|
|
var id = Convert.ToDecimal(queryObj.id);
|
|
var totalCount = 0;
|
|
//var itemIds = GetQaItem(db, queryObj.createUser);
|
|
var pageList = db
|
.Queryable<LtsLlj, IqcBefore, VMesQaItemsDetect01, SysUser,
|
IqcBeforeFrom, SysUser, InspectorChangeLog, SysUser>((a, b, d, e, f, g,h,i) =>
|
new JoinQueryInfos(JoinType.Left, a.ItemId == b.ItemId,
|
JoinType.Inner, a.Id == d.Id,
|
JoinType.Left, a.CreateBy == e.Fcode,
|
JoinType.Left, f.Id == b.PID,
|
JoinType.Left, f.Sid == g.Fid,
|
JoinType.Left,a.ReleaseNo==h.InspectionNo && h.IsValid=="Y",
|
JoinType.Left,i.Fcode==h.Inspector
|
))
|
.WhereIF(
|
StringUtil.IsNotNullOrEmpty(queryObj.result) &&
|
"未完成".Equals(queryObj.result),
|
(a, b, d) => a.FcheckResu == null)
|
.WhereIF(
|
StringUtil.IsNotNullOrEmpty(queryObj.result) &&
|
!"未完成".Equals(queryObj.result),
|
(a, b, d) => a.FcheckResu != null)
|
//.WhereIF(
|
// itemIds is { Length: > 0 },
|
// (a, b, c) => itemIds.Contains(a.ItemId))
|
.WhereIF(id > 0, (a, b, d) => a.Id == id)
|
.WhereIF(queryObj.createUser!="PL017"&& queryObj.UserIndex=="0", (a, b, d, e, f, g,h, i) => (g.Fcode == queryObj.createUser || i.Fcode == queryObj.createUser))//判断此单的检验员,或者检验为空就显示此单据
|
//加筛选条件,根据供应商,物料编码,物料名称,项目搜索
|
//.WhereIF(queryObj.SearchValue != null && queryObj.SearchValue != "",
|
//(a, b, d) => (a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower())
|
//|| a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower())
|
//|| a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower())
|
//|| d.ProjectCodes.ToLower().Contains(queryObj.SearchValue.ToLower())
|
//))
|
|
//根据下拉框搜索条件筛选(0项目, 1物料编号, 2物料名称, 3供应商, 4采购员)
|
.WhereIF(queryObj.SelectedIndex == "0" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (d.ProjectCodes.ToLower().Contains(queryObj.SearchValue.ToLower())))
|
.WhereIF(queryObj.SelectedIndex == "1" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower())))
|
.WhereIF(queryObj.SelectedIndex == "2" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower())))
|
.WhereIF(queryObj.SelectedIndex == "3" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower())))
|
.WhereIF(queryObj.result== "已完成", (a, b, d, e) => (a.IqcDate>= queryObj.startDate.ToDateTime()&& a.IqcDate <= queryObj.endDate.ToDateTime().AddDays(1)))
|
.WhereIF(queryObj.result == "已完成" && queryObj.state!= "所有状态",(a, b, d, e) => (a.FcheckResu == queryObj.state))
|
// .WhereIF(queryObj.result == "未完成" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d, e) => (e.Fname.ToLower().Contains(queryObj.SearchValue.ToLower())))
|
//.OrderByDescending((a, b, d) => a.Id)
|
.Select((a, b, d, e, f, g,h,i) => new LtsLlj
|
{
|
//UserName = g.Fname,
|
//UserName = (i.Fname!=null ||i.Fname!="") ? i.Fname : g.Fname,
|
UserName = (i.Fname!=null ||i.Fname!="") ? i.Fname : g.Fname,
|
FIRST = d.First,
|
CreateUserName = e.Fname,
|
NewFngDesc = d.NewFngDesc,
|
ProjectCodes = d.ProjectCodes
|
}, true)
|
.ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
|
|
|
return (pageList, totalCount);
|
}
|
|
private decimal[] GetQaItem(SqlSugarClient db, string? user)
|
{
|
var itemsId = db.Queryable<MesItems>()
|
.Select(s => s.Id).ToList();
|
|
var iqc = db.Queryable<IqcBefore>()
|
.Select(a => a.ItemId).ToList();
|
|
var decimals = itemsId.Except(iqc).ToList();
|
|
var array = db.Queryable<SysUser, IqcBefore, MesItems>((a, b, c) =>
|
new JoinQueryInfos(JoinType.Inner, a.Fid == b.Sid,
|
JoinType.Inner, b.ItemId == c.Id))
|
.Where((a, b, c) => a.Fcode == user)
|
.Select((a, b, c) => c.Id).ToList();
|
|
decimals.AddRange(array);
|
|
var decimals1 = decimals.Distinct().ToArray();
|
|
return decimals1;
|
}
|
|
|
//根据检验标准来计算检验个数
|
//public List<MesQaItemsDetectDetail5> SetItems(string itemNo,
|
// decimal quantity, string releaseNo)
|
//{
|
// var db = SqlSugarHelper.GetInstance();
|
|
|
// var count = db.Queryable<MesQaIqc>().Where(s => s.EE == 1 &&
|
// s.ISENABLED == 1
|
// && s.ItemNo == itemNo && s.FTYPE == "1").Count();
|
|
// if (count <= 0) return [];
|
|
// var mesQaIqcItem = db
|
// .Queryable<MesQaIqc>().Where(s => s.EE == 1 && s.ISENABLED == 1
|
// && s.ItemNo == itemNo && s.FTYPE == "1").Select(
|
// b => new MesQaItemsDetectDetail5
|
// {
|
// ReleaseNo = releaseNo,
|
// FacLevel = b.FacLevel,
|
// FcheckItem = b.FcheckItem,
|
// FdownAllow = b.FdownAllow,
|
// FcheckLevel = b.FREQUENCY,
|
// Fstand = b.FSTAND,
|
// FupAllow = b.FupAllow,
|
// SampleSizeNo = b.SampleSizeNo,
|
// FenterQty = 0,
|
// Factory = "1000",
|
// Company = "1000",
|
|
|
// // FcheckItemDesc = "0",
|
// // FcheckResu = "0",
|
// FcheckTool = b.FcheckTool,
|
// FspecRequ = b.FspecRequ
|
// // FtextType = "0",
|
// // Funit = "0",
|
// // LastupdateBy = "0",
|
// // ProcNo = "0",
|
// // WorkshopCenterCode = "0"
|
// }).ToList();
|
|
// mesQaIqcItem.ForEach(item =>
|
// {
|
// var LEV = item.FcheckLevel switch
|
// {
|
// null => "" // 默认值
|
// ,
|
// { } s when s.Contains("S1") => "B.FLEVEL_S1",
|
// { } s when s.Contains("S2") => "B.FLEVEL_S2",
|
// { } s when s.Contains("S3") => "B.FLEVEL_S3",
|
// { } s when s.Contains("S4") => "B.FLEVEL_S4",
|
// { } s when s.Contains("(I)") => "B.FLEVEL_I",
|
// { } s when s.Contains("(II)") => "B.FLEVEL_II",
|
// { } s when s.Contains("(III)") => "B.FLEVEL_III",
|
// _ => ""
|
// };
|
|
// if (string.IsNullOrEmpty(LEV))
|
// throw new Exception(item.SampleSizeNo + "的检验水平不正确");
|
|
// var sql =
|
// "SELECT " + LEV +
|
// " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO='" +
|
// item.SampleSizeNo + "' AND B.LOT_FROM<= " + quantity +
|
// " AND " +
|
// quantity + "<=B.LOT_TO";
|
|
// var maxBillNo = db.Ado.SqlQuerySingle<string>(sql);
|
|
// if (string.IsNullOrEmpty(maxBillNo))
|
// throw new Exception(item.SampleSizeNo + "下的" + quantity +
|
// "这个范围下没有匹配到检验项目");
|
|
// var result = ExtractSubstring(item.FacLevel, '(', ')');
|
|
// if (string.IsNullOrEmpty(result))
|
// throw new Exception(item.SampleSizeNo + "下的" + quantity +
|
// "拒收水平不正确");
|
|
// sql = "SELECT FSAMPLE_SIZE_WORD, " + result +
|
// " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" +
|
// item.SampleSizeNo + "' AND SAMPLE_SIZE_WORD= '" + maxBillNo +
|
// "'";
|
// var resultClass = db.Ado.SqlQuerySingle<ResultClass>(sql);
|
|
// item.CheckQyt = resultClass.FSAMPLE_SIZE_WORD;
|
// item.FreQty = resultClass.Result;
|
// });
|
|
// return mesQaIqcItem;
|
//}
|
|
|
/// <summary>
|
/// 调用存储过程,重新获取检验项目
|
/// </summary>
|
/// <param name="itemNo"></param>
|
/// <param name="quantity"></param>
|
/// <param name="releaseNo"></param>
|
/// <returns></returns>
|
public string[] SetItems(string itemNo,
|
decimal quantity, string releaseNo)
|
{
|
// 定义输出参数
|
var outputResult = new SugarParameter("o_Result", null,
|
DbType.Int32, ParameterDirection.Output,
|
4000);
|
|
var outputMessage = new SugarParameter("o_Msg", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("P_RELEASE_NO", releaseNo,
|
DbType.String, ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN PRC_QA_ITEM_INSERT_BTN(:P_RELEASE_NO, :o_Result, :o_Msg); END;",
|
parameters.ToArray());
|
|
// 获取输出参数的值
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
string[] msg = new string[2];
|
msg[0] = resultValue;
|
msg[1] = messageValue;
|
return msg;
|
|
}
|
|
|
|
|
/// <summary>
|
/// 保存新检验员
|
/// </summary>
|
/// <param name="NewStaffUserID">新检验员ID</param>
|
/// <param name="userID">修改人</param>
|
/// <param name="releaseNo">检验单号</param>
|
/// <returns></returns>
|
public string[] SaveCheckBy(string NewStaffUserID, string userID, string releaseNo)
|
{
|
// 定义输出参数
|
var outputResult = new SugarParameter("o_Result", null,
|
DbType.Int32, ParameterDirection.Output,
|
4000);
|
|
var outputMessage = new SugarParameter("o_Msg", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("P_FCHECK_BY", NewStaffUserID,
|
DbType.String, ParameterDirection.Input),
|
new("p_Release_No", releaseNo,
|
DbType.String, ParameterDirection.Input),
|
new("p_User", userID,
|
DbType.String, ParameterDirection.Input),
|
|
outputResult,
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN Prc_Mes_Iqc_Qa_Update_CheckBy(:P_FCHECK_BY,:p_Release_No,:p_User, :o_Result, :o_Msg); END;",
|
parameters.ToArray());
|
|
// 获取输出参数的值
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
string[] msg = new string[2];
|
msg[0] = resultValue;
|
msg[1] = messageValue;
|
return msg;
|
|
}
|
|
|
|
public string[] SaveSysSubmit(SysSubmit sysSubmit)
|
{
|
// 定义输出参数
|
var outputResult = new SugarParameter("o_Result", null,
|
DbType.Int32, ParameterDirection.Output,
|
4000);
|
|
var outputMessage = new SugarParameter("o_Msg", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("PI_BILLNO", sysSubmit.PI_BILLNO,
|
DbType.String, ParameterDirection.Input),
|
new("PI_USER", sysSubmit.PI_USER,
|
DbType.String, ParameterDirection.Input),
|
new("PI_SAMPLE_STATUS", sysSubmit.PI_SAMPLE_STATUS,
|
DbType.String, ParameterDirection.Input),
|
new("PI_SAMPLE_TYPE", sysSubmit.PI_SAMPLE_TYPE,
|
DbType.String, ParameterDirection.Input),
|
new("PI_SAMPLE_REASON", sysSubmit.PI_SAMPLE_REASON,
|
DbType.String, ParameterDirection.Input),
|
new("PI_INSPECT_TYPE", sysSubmit.PI_INSPECT_TYPE,
|
DbType.String, ParameterDirection.Input),
|
new("PI_SAMPLE_PREPARATION", sysSubmit.PI_SAMPLE_PREPARATION,
|
DbType.String, ParameterDirection.Input),
|
new("PI_URGENCY", sysSubmit.PI_URGENCY,
|
DbType.String, ParameterDirection.Input),
|
new("PI_FIRMWAREVERSION", sysSubmit.PI_FIRMWAREVERSION,
|
DbType.String, ParameterDirection.Input),
|
new("PI_HARDWAREVERSION", sysSubmit.PI_HARDWAREVERSION,
|
DbType.String, ParameterDirection.Input),
|
new("PI_REMARK", sysSubmit.PI_REMARK,
|
DbType.String, ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN PRC_MES_IQC_QC_SYSSUBMIT(:PI_BILLNO,:PI_USER,:PI_SAMPLE_STATUS,:PI_SAMPLE_TYPE,:PI_SAMPLE_REASON,:PI_INSPECT_TYPE,:PI_SAMPLE_PREPARATION,:PI_URGENCY,:PI_FIRMWAREVERSION,:PI_HARDWAREVERSION,:PI_REMARK, :o_Result, :o_Msg); END;",
|
parameters.ToArray());
|
|
// 获取输出参数的值
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
string[] msg = new string[2];
|
msg[0] = resultValue;
|
msg[1] = messageValue;
|
return msg;
|
|
}
|
|
|
public class DataAcquisitionConfiguration
|
{
|
//测试环境
|
public const string TEST_COMPANY_CODE = "55958795";
|
public const string TEST_APP_KEY = "ab2d86b6dffabcc81dca6855c727c246";
|
public const string TEST_APP_SECRET = "01b17babe2a96d5ebd802e67709f33d1";
|
public const string TEST_ERP_CODE = "Z106";
|
|
//正式环境
|
public const string COMPANY_CODE = "72505985";
|
public const string APP_KEY = "a2866f03bb7f76387bfb1a98001f0e31";
|
public const string APP_SECRET = "f13bd1bcb130f0090ed92dc021e5f4e1";
|
public const string ERP_CODE = "Z106";
|
}
|
[Serializable]
|
public class ApiCommonParam
|
{
|
//发放给用户的Key
|
public string appKey { get; set; }
|
//接口版本
|
public string version { get; set; }
|
//数据所属公司编码
|
public string ownerCompanyCode { get; set; }
|
//操作者所属公司编码
|
public string operateCompanyCode { get; set; }
|
//签名
|
public string sign { get; set; }
|
//时间戳
|
public long? timestamps { get; set; }
|
////扩展字段
|
//public object Reserver { get; set; }
|
}
|
[Serializable]
|
public class BodyParam
|
{
|
public string erpCode { get; set; }
|
public string dnXkNo { get; set; }
|
}
|
public static string BuildCurrentSign(string paramJson, string appSecret)
|
{
|
var commonDict = new Dictionary<string, string>();
|
var jsonDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(paramJson);
|
|
var keyList = new List<string>();
|
foreach (var entry in jsonDict)
|
{
|
if (entry.Key.Equals("sign", StringComparison.OrdinalIgnoreCase))
|
continue;
|
|
var value = entry.Value?.ToString().Trim() ?? "";
|
commonDict[entry.Key] = value;
|
keyList.Add(entry.Key);
|
}
|
|
// 按字母顺序排序键
|
keyList.Sort((x, y) => string.Compare(x, y, StringComparison.Ordinal));
|
|
// 拼接签名字符串
|
var sb = new StringBuilder();
|
foreach (var key in keyList)
|
{
|
sb.Append(commonDict[key]).Append(":");
|
}
|
sb.Append(appSecret);
|
|
// 计算MD5
|
using var md5 = MD5.Create();
|
byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()));
|
|
return BitConverter.ToString(hashBytes)
|
.Replace("-", "")
|
.ToLowerInvariant();
|
}
|
public class XkyCommonParam
|
{
|
public ApiCommonParam commonParam { get; set; }
|
public BodyParam body { get; set; }
|
|
public static XkyCommonParam GetInit()
|
{
|
var apiParam = new ApiCommonParam
|
{
|
// 发携客云提供的appKey
|
appKey = DataAcquisitionConfiguration.APP_KEY,
|
// 接口版本
|
version = "1.0",
|
// 操作者所属公司编码
|
operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
|
// 数据所属公司编码,非集团公司默认赋值为操作公司
|
ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
|
// 当前时间对应的时间戳(秒数)
|
timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
|
};
|
|
|
string appSecret = DataAcquisitionConfiguration.APP_SECRET;
|
|
// 生成签名
|
string sign = BuildCurrentSign(
|
JsonConvert.SerializeObject(apiParam),
|
appSecret);
|
apiParam.sign = sign;
|
|
return new XkyCommonParam
|
{
|
commonParam = apiParam
|
};
|
}
|
}
|
|
public async Task<string[]> SignDelivery(string id)
|
{
|
string[] msg = new string[2];
|
//发起请求,签收送货单
|
|
try
|
{
|
var requestData = XkyCommonParam.GetInit();
|
requestData.body = new BodyParam
|
{
|
erpCode = "Z106",
|
dnXkNo = id
|
};
|
|
// 序列化为JSON
|
string json = JsonConvert.SerializeObject(requestData);
|
|
using (var client = new HttpClient())
|
{
|
// 设置请求内容
|
var content = new StringContent(json, Encoding.UTF8, "application/json");
|
// 发送POST请求
|
HttpResponseMessage response = await client.PostAsync(
|
"https://openapi.xiekeyun.com/delivery/updateDeliveryStatus.json",
|
content);
|
// 处理响应
|
if (response.IsSuccessStatusCode)
|
{
|
string responseBody = await response.Content.ReadAsStringAsync();
|
var result =
|
JsonConvert.DeserializeObject<XKYApiResponse>(responseBody);
|
//成功后手动下推到货单
|
if (result.Result == 1) {
|
|
// 定义输出参数
|
|
var outputMessage = new SugarParameter("C_RESULT", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("C_IN_STR", "送货单签收[BTNOK[PL017["+id,
|
DbType.String, ParameterDirection.Input),
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;",
|
parameters.ToArray());
|
|
|
// 获取输出参数的值
|
|
var messageValue = outputMessage.Value?.ToString();
|
|
msg[0] = "0";
|
msg[1] = messageValue;
|
}
|
else
|
{
|
if (result.ErrorMsg== "出货单据不是已送货状态!")
|
{
|
// 定义输出参数
|
|
var outputMessage = new SugarParameter("C_RESULT", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("C_IN_STR", "送货单签收[BTNOK[PL017["+id,
|
DbType.String, ParameterDirection.Input),
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;",
|
parameters.ToArray());
|
|
|
// 获取输出参数的值
|
|
var messageValue = outputMessage.Value?.ToString();
|
|
msg[0] = "0";
|
msg[1] = messageValue;
|
}
|
else
|
{
|
msg[0] = "1";
|
msg[1] = "002[" + id + "签收失败," + result.ErrorMsg;
|
}
|
|
}
|
|
}
|
else
|
{
|
|
msg[0] = "1";
|
msg[1] = $"002[{id}签收失败,请求失败,状态码:{response.StatusCode}";
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
|
msg[0] = "1";
|
msg[1] = $"002[请求失败,状态码:{ex.Message}";
|
}
|
|
|
//msg[0] = "1";
|
//msg[1] = responseBody;
|
return msg;
|
|
}
|
|
|
|
private string ExtractSubstring(string input, char startChar, char endChar)
|
{
|
var startIndex = input.IndexOf(startChar);
|
var endIndex = input.IndexOf(endChar, startIndex);
|
|
if (startIndex == -1 || endIndex == -1)
|
// 如果未找到起始字符或结束字符,则返回空字符串或者抛出异常,根据实际情况选择
|
return string.Empty;
|
// 或者抛出异常
|
// throw new ArgumentException("Start or end character not found");
|
// 提取子字符串
|
var length = endIndex - startIndex - 1;
|
return input.Substring(startIndex + 1, length);
|
}
|
|
public int saveItem(LLJDto rkjDto)
|
{
|
var items = rkjDto.items;
|
var userNo = rkjDto.userNo;
|
|
SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
foreach (var item in items) item.ReleaseNo = rkjDto.releaseNo;
|
|
return db.Insertable(items).ExecuteCommand();
|
});
|
|
rkjDto.items = GetItems(rkjDto.releaseNo, null);
|
|
var db = SqlSugarHelper.GetInstance();
|
|
rkjDto.items.ForEach(s =>
|
{
|
if (s.FupAllow != null || s.Fstand != null ||
|
s.FdownAllow != null) return;
|
|
// 没有录入参考值,判断有多少个NG,那么录入的抽检结果必须是OK或者NG,NG代表不合格
|
var ifck = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(x => x.FcheckResu == "NG" && x.MainId == s.Id).Count();
|
|
//检验明细总数
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(x1 => x1.MainId == s.Id).Count();
|
|
if (ifck > s.FreQty && s.CheckQyt == count)
|
s.FcheckResu = "不合格";
|
else if (ifck < s.FreQty && s.CheckQyt == count)
|
s.FcheckResu = "合格";
|
else
|
s.FcheckResu = "未完成";
|
|
|
var detail = new MesQaItemsDetectDetail12();
|
detail.MainId = s.Id;
|
detail.ReleaseNo = rkjDto.releaseNo;
|
detail.Fstand = "√";
|
detail.FcheckResu = "OK";
|
detail.LastupdateBy = rkjDto.userNo;
|
detail.count = (int?)s.CheckQyt;
|
SetQSItemDetail(detail);
|
});
|
|
return Convert.ToInt32(rkjDto.gid);
|
}
|
|
public List<MesQaItemsDetectDetail5> GetItems(string? releaseNo,
|
decimal? id)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
return db.Queryable<MesQaItemsDetectDetail5, MesQaItemsDetectDetail12>(
|
(a, b) =>
|
new JoinQueryInfos(JoinType.Left, a.Id == b.MainId))
|
.Where((a, b) => a.ReleaseNo == releaseNo)
|
// .WhereIF(id > 0, (a, b) => a.Id == id)
|
.OrderByDescending((a, b) => a.FcheckItem)
|
.GroupBy((a, b) => new
|
{
|
a.Id,
|
a.ReleaseNo,
|
a.FacLevel,
|
a.FcheckItem,
|
a.FcheckTool,
|
a.FdownAllow,
|
a.FcheckLevel,
|
a.Fstand,
|
a.FupAllow,
|
a.SampleSizeNo,
|
a.FspecRequ,
|
a.FreQty,
|
a.CheckQyt,
|
a.FcheckResu,
|
a.FcheckItemDesc
|
}).Select((a, b) => new MesQaItemsDetectDetail5
|
{
|
Id = a.Id,
|
ReleaseNo = a.ReleaseNo,
|
CheckQyt = a.CheckQyt,
|
FacLevel = a.FacLevel,
|
FcheckItem = a.FcheckItem,
|
FcheckTool = a.FcheckTool,
|
FdownAllow = a.FdownAllow,
|
FcheckLevel = a.FcheckLevel,
|
Fstand = a.Fstand,
|
FupAllow = a.FupAllow,
|
SampleSizeNo = a.SampleSizeNo,
|
FspecRequ = a.FspecRequ,
|
FreQty = a.FreQty,
|
Factory = "1000",
|
Company = "1000",
|
FenterQty = SqlFunc.AggregateCount(b.Id),
|
FcheckResu = a.FcheckResu,
|
FcheckItemDesc = a.FcheckItemDesc
|
}).ToList();
|
}
|
|
|
|
public DataTable getAllInspectors()
|
{
|
OracleSQLHelper SQLHelper = new();
|
var sql =string.Format(@"select a.USER_NAME label,U.FCODE value from IQC_BEFORE_FROM a JOIN SYS_USER U ON U.FID=A.SID");
|
return SQLHelper.ExecuteQuery(sql);
|
}
|
|
|
public int SetQSItemDetail(MesQaItemsDetectDetail12 detail)
|
{
|
var dbd = SqlSugarHelper.GetInstance();
|
var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
List<MesQaItemsDetectDetail12> result = new();
|
for (var i = 0; i < detail.count; i++)
|
{
|
var item = new MesQaItemsDetectDetail12();
|
item.MainId = detail.MainId;
|
item.ReleaseNo = detail.ReleaseNo;
|
item.Fstand = detail.Fstand;
|
item.FcheckResu = detail.FcheckResu;
|
item.CreateBy = detail.LastupdateBy;
|
item.CreateDate = DateTime.Now;
|
item.Factory = "1000";
|
item.Company = "1000";
|
result.Add(item);
|
}
|
|
return db.Insertable(result).ExecuteCommand();
|
});
|
|
detail.CreateBy = detail.LastupdateBy;
|
|
|
autoResult(detail);
|
|
return oracle;
|
}
|
|
|
private int autoResult(MesQaItemsDetectDetail12 detail)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
// Single 没有查询到结果时返回Null,如果结果大于1条会抛出错误
|
var QsItemOqcItem = db.Queryable<MesQaItemsDetectDetail5>()
|
.Single(s => s.Id == detail.MainId);
|
|
if (QsItemOqcItem == null) return 0;
|
|
//查询这个检验项目下的检验结果
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId).Count();
|
|
updateDetail5(detail);
|
var result = "";
|
|
//检验实际结果不等于应该检验的个数时直接推出
|
if (QsItemOqcItem.CheckQyt != count) return 0;
|
|
//合格的有多少个
|
var passCount = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId && s.Fstand == "√").Count();
|
//不合格的有多少个
|
var noCount = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId && s.Fstand == "×").Count();
|
|
if (count == passCount)
|
result = "合格";
|
//else if (count - passCount < QsItemOqcItem.FreQty)
|
// result = "不合格";
|
else if (noCount >= QsItemOqcItem.FreQty)
|
result = "不合格";
|
var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle(
|
db =>
|
{
|
var commit = 0;
|
commit += db.Updateable<MesQaItemsDetectDetail5>()
|
.SetColumns(s => s.FcheckResu == result)
|
.SetColumns(s => s.FenterQty == count)
|
.Where(s => s.Id == detail.MainId)
|
.ExecuteCommand();
|
|
return commit;
|
});
|
|
var isNull = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == null)
|
.Count();
|
|
if (isNull > 0) return 1;
|
|
|
//获取检验单的检验项目的个数
|
var sum = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == detail.ReleaseNo).Count();
|
|
if (sum == 0) return 1;
|
|
//获取检验单下的合格的检验项目个数
|
var icount = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == "合格")
|
.Count();
|
|
var FcheckResu = "不合格";
|
|
//实际个数等于理论个数时对检验单进行判定
|
if (sum == icount)
|
//合格的检验结果等于总检验数视为合格
|
FcheckResu = "合格";
|
|
var sysUser = db.Queryable<SysUser>()
|
.Where(s => s.Fcode == detail.CreateBy).First();
|
|
SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetect01>()
|
.SetColumns(s => s.FcheckResu == FcheckResu)
|
.SetColumns(s => s.FcheckDate == DateTime.Now)
|
.SetColumns(s => s.FcheckBy == sysUser.Fname)
|
.SetColumns(s => s.LastupdateBy == detail.CreateBy)
|
.SetColumns(s => s.LastupdateDate == DateTime.Now)
|
.Where(s => s.ReleaseNo == detail.ReleaseNo)
|
.ExecuteCommand();
|
});
|
// if (FcheckResu.Equals("不合格"))
|
//自动生成入库检异常对策
|
/// saveDetect02(detail.Id, detail.CreateBy);
|
|
return useTransactionWithOracle;
|
}
|
/* public int saveDetect02(decimal? gid, string? createBy)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
var qsItemOqcReq =
|
db.Queryable<QsItemOqcReq>().Single(s => s.Id == gid);
|
|
var mesInvItemIns = db.Queryable<MesInvItemIns>()
|
.Single(s => s.BillNo == qsItemOqcReq.BillNo);
|
|
var mesSchemeResult = db.Queryable<MesSchemeResult>()
|
.Single(s => s.BillNo == mesInvItemIns.CbillNo);
|
|
var entity = new MesQaItemsDetect02();
|
entity.ItemNo = mesSchemeResult.BoardItem;
|
entity.BoardItem = mesSchemeResult.BoardItem;
|
entity.LineNo = mesSchemeResult.LineNo;
|
entity.Aufnr = mesSchemeResult.TaskNo;
|
entity.ReleaseNo = qsItemOqcReq.ReleaseNo;
|
entity.LotNo = qsItemOqcReq.BillNo;
|
entity.FcheckDate = qsItemOqcReq.FcheckDate;
|
entity.FcheckMemo = qsItemOqcReq.Remarks;
|
entity.Gid = qsItemOqcReq.Id;
|
// entity.PlanQty = qsItemOqcReq.FcheckDate;
|
|
|
entity.FcheckResu = "不合格";
|
entity.FcheckLevel = "严重";
|
entity.CreateDate = DateTime.Now;
|
entity.Factory = "10000";
|
entity.Company = "1000";
|
entity.Ftype = "4";
|
entity.Fversion = 0;
|
entity.Modify1Flag = 0;
|
entity.IpqcStatus = 0;
|
entity.Fsubmit = 1;
|
entity.CreateBy = createBy;
|
entity.FcheckBy = createBy;
|
|
return SqlSugarHelper.UseTransactionWithOracle(db => db
|
.Insertable(entity)
|
.ExecuteCommand());
|
}
|
*/
|
|
public LLJDto getXjDetail02ById(decimal? id)
|
{
|
var rkjDto = new LLJDto();
|
|
var db = SqlSugarHelper.GetInstance();
|
var qsItemOqcItem =
|
db.Queryable<MesQaItemsDetectDetail5>().Single(s => s.Id == id);
|
|
/* if (qsItemOqcItem.IsPass == 0)
|
qsItemOqcItem.Result = "不合格";
|
else if (qsItemOqcItem.IsPass == 1)
|
qsItemOqcItem.Result = "合格";
|
else
|
qsItemOqcItem.Result = "未完成";
|
|
if (qsItemOqcItem.Picture is { Length: > 0 })
|
qsItemOqcItem.imageData =
|
Convert.ToBase64String(qsItemOqcItem.Picture);
|
*/
|
//获取不合格数
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.Fstand == "×" && s.MainId == id).Count();
|
|
qsItemOqcItem.Unqualified = count;
|
|
rkjDto.ItemXj01 = qsItemOqcItem;
|
|
|
rkjDto.ItemXj02s = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == id)
|
.ToList();
|
|
return rkjDto;
|
}
|
|
|
public DataTable getFromInfo(string BarCode)
|
{
|
OracleSQLHelper SQLHelper = new();
|
var sql = string.Format(@"select b.ID,b.LOT_NO,b.RELEASE_NO,b.FSUBMIT from MES_INV_ITEM_BARCODES A
|
left join MES_QA_ITEMS_DETECT_01 B on A.BILL_NO=b.LOT_NO and A.ITEM_ID=b.ITEM_ID
|
where ITEM_BARCODE='"+ BarCode + "'");
|
return SQLHelper.ExecuteQuery(sql);
|
}
|
public DataTable getImgBDlist(string id)
|
{
|
OracleSQLHelper SQLHelper = new();
|
var sql = string.Format(@"select id,FID,IMAGE_DATA from MES_QS_IMAGE where FID="+id+"");
|
return SQLHelper.ExecuteQuery(sql);
|
}
|
/// <summary>
|
/// 一致性项目
|
/// </summary>
|
public class Component
|
{
|
public string Name { get; set; }
|
public List<string> Specs { get; set; }
|
public List<string> Manufacturers { get; set; }
|
public List<string> Id { get; set; }
|
public int SelectedSpec { get; set; }
|
public int SelectedMfg { get; set; }
|
}
|
public List<Component> getYzxBDlist(string id)
|
{
|
OracleSQLHelper SQLHelper = new();
|
//查元器件
|
var sql1 = string.Format(@"select ITEMNAME from MES_IQC_CONSISTENCY_ck where PID='"+id+"' group by ITEMNAME order by ITEMNAME");
|
//查明细
|
var sql2 = string.Format(@"select * from MES_IQC_CONSISTENCY_ck where PID='"+id+"' order by ITEMNAME,ITEMMODE,SUPPNAME");
|
DataTable dataTable1= SQLHelper.ExecuteQuery(sql1);
|
DataTable dataTable2 = SQLHelper.ExecuteQuery(sql2);
|
List<Component> Components = new List<Component>();
|
|
|
|
for (int i = 0; i <dataTable1.Rows.Count; i++)
|
{
|
Component component = new Component();
|
component.Name= dataTable1.Rows[i]["ITEMNAME"].ToString();
|
component.Specs= new List<string>();
|
component.Manufacturers = new List<string>();
|
component.Id = new List<string>();
|
component.SelectedSpec = -1;
|
component.SelectedMfg = -1;
|
int index = 0;
|
for (int j = 0; j < dataTable2.Rows.Count; j++)
|
{
|
|
if (dataTable2.Rows[j]["ITEMNAME"].ToString()== dataTable1.Rows[i]["ITEMNAME"].ToString())
|
{
|
component.Specs.Add(dataTable2.Rows[j]["ITEMMODE"].ToString());
|
component.Manufacturers.Add(dataTable2.Rows[j]["SUPPNAME"].ToString());
|
component.Id.Add(dataTable2.Rows[j]["ID"].ToString());
|
if (dataTable2.Rows[j]["ISCHACK"].ToString()=="1")
|
{
|
component.SelectedSpec = index;
|
component.SelectedMfg = index;
|
}
|
index++;
|
}
|
}
|
|
Components.Add(component);
|
}
|
return Components;
|
}
|
|
public DataTable getBlmsItem()
|
{
|
OracleSQLHelper SQLHelper = new();
|
//查不良描述
|
var sql1 = string.Format(@"select DEFECT_NAME
|
from MES_DEFECT_CODE A
|
left join MES_DEFECT_TYPE X ON X.TYPE_NO = A.DEFECT_SORT AND X.COMPANY = A.COMPANY AND X.FACTORY = A.FACTORY");
|
|
return SQLHelper.ExecuteQuery(sql1);
|
}
|
public DataTable getBlmsItem(string id)
|
{
|
OracleSQLHelper SQLHelper = new();
|
//查不良描述
|
var sql1 = string.Format(@"select FCHECK_ITEM,FUNIT from mes_qa_items_detect_detail5 f where RELEASE_NO='"+id+"' and FUNIT is not null order by FCHECK_ITEM");
|
|
return SQLHelper.ExecuteQuery(sql1);
|
}
|
public void saveYzxBDlist(string id,DataTable DB)
|
{
|
OracleSQLHelper SQLHelper = new();
|
//先把结果清空
|
var sql1 = string.Format(@"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='"+ id + "' ");
|
SQLHelper.ExecuteQuery(sql1);
|
string rowId = "";
|
for (int i = 0; i < DB.Rows.Count; i++)
|
{
|
rowId += "'" + DB.Rows[i]["id"] + "',";
|
}
|
rowId = rowId.Substring(0, rowId.Length - 1);
|
|
|
//修改结果
|
var sql2 = string.Format(@"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" + id + "'and id in("+ rowId + ") ");
|
SQLHelper.ExecuteQuery(sql2);
|
|
}
|
|
public string[] YzxImgVerify(string id)
|
{
|
string[] msgStr = new string[2];
|
|
OracleSQLHelper SQLHelper = new();
|
//修改结果
|
var sql2 = string.Format(@"select A.ITEMNAME from ( select 888||min(id) id,ITEMNAME from MES_IQC_CONSISTENCY_CK where pid='"+ id + "' group by ITEMNAME) A " +
|
"left join MES_QS_IMAGE b on a.id=b.fid where B.id is null order by ITEMNAME");
|
DataTable db= SQLHelper.ExecuteQuery(sql2);
|
if (db.Rows.Count > 0)
|
{
|
msgStr[1] = "元器件:";
|
for (int i = 0; i < db.Rows.Count; i++)
|
{
|
msgStr[1] += db.Rows[i]["ITEMNAME"]+ ",";
|
}
|
msgStr[1] += "未完成图片上传,请上传!";
|
msgStr[0] = "1";
|
}
|
else
|
{
|
msgStr[0] = "0";
|
msgStr[1] = "ok";
|
}
|
|
return msgStr;
|
}
|
|
public int UpdateQSItemDetail(MesQaItemsDetectDetail12 detail)
|
{
|
var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetectDetail12>()
|
.SetColumns(s => s.LastupdateBy == detail.LastupdateBy)
|
// .SetColumns(s => s.LastupdateDate == DateTime.Now)
|
.SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
|
s => s.Fstand == detail.Fstand)
|
.SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
|
s => s.FcheckResu == detail.FcheckResu)
|
.Where(s => s.MainId == detail.MainId && s.Id == detail.Id)
|
.ExecuteCommand();
|
});
|
|
detail.CreateBy = detail.LastupdateBy;
|
|
withOracle += autoResult(detail);
|
|
return withOracle;
|
}
|
|
//更新检验明细已检、不合格数量
|
private int updateDetail5(MesQaItemsDetectDetail12 detail)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
//查询这个检验项目下的检验数量
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId).Count();
|
|
//获取不合格数
|
var countNo = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId && s.Fstand == "×").Count();
|
//更新检验明细已检数量
|
var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetectDetail5>()
|
.SetColumns(s => s.FenterQty == count)
|
.SetColumns(s => s.FngQty == countNo)
|
.Where(s => s.Id == detail.MainId)
|
.ExecuteCommand();
|
});
|
|
return withOracle;
|
}
|
|
//主表修改备注字段
|
public int saveRemarksGid(LLJDto dto)
|
{
|
return SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetect01>()
|
.SetColumns(it =>
|
it.FngDesc == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值
|
.Where(it => it.ReleaseNo == dto.releaseNo)
|
.ExecuteCommand();
|
});
|
}
|
|
//子表修改备注字段
|
public int saveRemarksPid(LLJDto dto)
|
{
|
return SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetectDetail5>()
|
.SetColumns(it =>
|
it.Funit == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值
|
.Where(it => it.Id == dto.pid)
|
.ExecuteCommand();
|
});
|
}
|
|
//删除主表并且连级删除子表和孙表
|
public int removeXJ(string? releaseNo)
|
{
|
var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
var commit = 0;
|
//删除主表
|
commit += db.Deleteable<MesQaItemsDetect01>()
|
.Where(s => s.ReleaseNo == releaseNo)
|
.ExecuteCommand();
|
//删除子表
|
commit += db.Deleteable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == releaseNo)
|
.ExecuteCommand();
|
//删除孙表
|
commit += db.Deleteable<MesQaItemsDetectDetail12>()
|
.Where(s => s.ReleaseNo == releaseNo)
|
.ExecuteCommand();
|
return commit;
|
});
|
|
return withOracle;
|
}
|
|
public string[] IqcQaSubmit(LLJDto dto)
|
{
|
var (factory, company) = UserUtil.GetFactory(dto.userNo);
|
try
|
{
|
// 定义输出参数
|
var outputResult = new SugarParameter("o_Result", null,
|
DbType.Int32, ParameterDirection.Output,
|
4000);
|
|
var outputMessage = new SugarParameter("o_Msg", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("PI_FACTORY", factory,
|
DbType.String, ParameterDirection.Input),
|
new("PI_COMPANY", company, DbType.String,
|
ParameterDirection.Input),
|
new("p_Release_No", dto.releaseNo, DbType.String,
|
ParameterDirection.Input),
|
new("p_User", dto.userNo, DbType.String,
|
ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN Prc_Mes_Iqc_Qa_Submit82(:PI_FACTORY, :PI_COMPANY, :p_Release_No, :p_User, :o_Result, :o_Msg); END;",
|
parameters.ToArray());
|
|
// 获取输出参数的值
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
string[] msg = new string[2];
|
msg[0] = resultValue;
|
msg[1] = messageValue;
|
return msg;
|
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 从U9获取料号图纸列表
|
/// </summary>
|
/// <param name="Type">u9No:u9物料编号</param>
|
/// <param name="U9No">type:1:图纸规格书 2:进料检验文件 </param>
|
/// <returns></returns>
|
/// <exception cref="Exception"></exception>
|
public async Task<string[]> GetFileUrlByU9List(string Type, string U9No)
|
{
|
try
|
{
|
var requestUrl =
|
$"https://erp.dream-maker.com/api/public/getFileUrlByU9No?u9No={Uri.EscapeDataString(U9No)}&type={Type}";
|
var response = await client.GetAsync(requestUrl);
|
response.EnsureSuccessStatusCode(); // 检查HTTP状态码
|
var responseContent = await response.Content.ReadAsStringAsync();
|
var result =
|
JsonConvert.DeserializeObject<ApiResponse>(responseContent);
|
|
if (result.Status == 0 && result.Data != null) return result.Data;
|
|
return null;
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 料号图纸接口返回对象
|
/// </summary>
|
public class ApiResponse
|
{
|
[JsonProperty("status")] public int Status { get; set; }
|
|
[JsonProperty("message")] public string Message { get; set; }
|
|
[JsonProperty("data")] public string[] Data { get; set; }
|
|
[JsonProperty("totalCount")] public int TotalCount { get; set; }
|
}
|
/// <summary>
|
/// 携客云接口返回对象
|
/// </summary>
|
public class XKYApiResponse
|
{
|
[JsonProperty("errorCode")]
|
public string ErrorCode { get; set; }
|
|
[JsonProperty("errorMsg")]
|
public string ErrorMsg { get; set; }
|
|
[JsonProperty("result")]
|
public int Result { get; set; }
|
|
[JsonProperty("data")]
|
public object Data { get; set; }
|
|
[JsonProperty("curServerTime")]
|
public long CurServerTime { get; set; }
|
|
// 如果需要时间转换可以添加这个属性
|
public DateTime ServerTime => DateTimeOffset.FromUnixTimeMilliseconds(CurServerTime).DateTime;
|
}
|
}
|