入库和出库
This commit is contained in:
parent
7b546e5979
commit
0d9571a5b7
20
Infrastructure/ERP/Util/GetSign.cs
Normal file
20
Infrastructure/ERP/Util/GetSign.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using U8Server.Extensions;
|
||||||
|
|
||||||
|
namespace U8Server.Util
|
||||||
|
{
|
||||||
|
public class GetSign
|
||||||
|
{
|
||||||
|
public static string GetBy16Md5()
|
||||||
|
{
|
||||||
|
string appId = "gN9yId!!lfwaRoi3";
|
||||||
|
string appSecret = "xr35$IQAutBRX1UYhgOUY#CqChI#Y3b$";
|
||||||
|
string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture);
|
||||||
|
string key = $"{appSecret}{appId}{timestamp}{appSecret}";
|
||||||
|
string sign = key.ToMD5Encrypt(uppercase: false, is16bit: true)
|
||||||
|
?? throw new InvalidOperationException("MD5加密失败");
|
||||||
|
return sign;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
110
Infrastructure/ERP/Util/MD5Encryption.cs
Normal file
110
Infrastructure/ERP/Util/MD5Encryption.cs
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace U8Server.Util
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// 摘要:
|
||||||
|
// MD5 加密
|
||||||
|
public static class MD5Encryption
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// 摘要:
|
||||||
|
// MD5 比较
|
||||||
|
//
|
||||||
|
// 参数:
|
||||||
|
// text:
|
||||||
|
// 加密文本
|
||||||
|
//
|
||||||
|
// hash:
|
||||||
|
// MD5 字符串
|
||||||
|
//
|
||||||
|
// uppercase:
|
||||||
|
// 是否输出大写加密,默认 false
|
||||||
|
//
|
||||||
|
// is16:
|
||||||
|
// 是否输出 16 位
|
||||||
|
//
|
||||||
|
// 返回结果:
|
||||||
|
// bool
|
||||||
|
public static bool Compare(string text, string hash, bool uppercase = false, bool is16 = false)
|
||||||
|
{
|
||||||
|
return Compare(Encoding.UTF8.GetBytes(text), hash, uppercase, is16);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 摘要:
|
||||||
|
// MD5 加密
|
||||||
|
//
|
||||||
|
// 参数:
|
||||||
|
// text:
|
||||||
|
// 加密文本
|
||||||
|
//
|
||||||
|
// uppercase:
|
||||||
|
// 是否输出大写加密,默认 false
|
||||||
|
//
|
||||||
|
// is16:
|
||||||
|
// 是否输出 16 位
|
||||||
|
public static string Encrypt(string text, bool uppercase = false, bool is16 = false)
|
||||||
|
{
|
||||||
|
return Encrypt(Encoding.UTF8.GetBytes(text), uppercase, is16);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 摘要:
|
||||||
|
// MD5 加密
|
||||||
|
//
|
||||||
|
// 参数:
|
||||||
|
// bytes:
|
||||||
|
// 字节数组
|
||||||
|
//
|
||||||
|
// uppercase:
|
||||||
|
// 是否输出大写加密,默认 false
|
||||||
|
//
|
||||||
|
// is16:
|
||||||
|
// 是否输出 16 位
|
||||||
|
public static string Encrypt(byte[] bytes, bool uppercase = false, bool is16 = false)
|
||||||
|
{
|
||||||
|
byte[] array = MD5.HashData(bytes);
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
for (int i = 0; i < array.Length; i++)
|
||||||
|
{
|
||||||
|
stringBuilder.Append(array[i].ToString("x2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
string text = stringBuilder.ToString();
|
||||||
|
string text2 = ((!is16) ? text : text.Substring(8, 16));
|
||||||
|
if (uppercase)
|
||||||
|
{
|
||||||
|
return text2.ToUpper();
|
||||||
|
}
|
||||||
|
|
||||||
|
return text2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 摘要:
|
||||||
|
// MD5 比较
|
||||||
|
//
|
||||||
|
// 参数:
|
||||||
|
// bytes:
|
||||||
|
// 字节数组
|
||||||
|
//
|
||||||
|
// hash:
|
||||||
|
// MD5 字符串
|
||||||
|
//
|
||||||
|
// uppercase:
|
||||||
|
// 是否输出大写加密,默认 false
|
||||||
|
//
|
||||||
|
// is16:
|
||||||
|
// 是否输出 16 位
|
||||||
|
//
|
||||||
|
// 返回结果:
|
||||||
|
// bool
|
||||||
|
public static bool Compare(byte[] bytes, string hash, bool uppercase = false, bool is16 = false)
|
||||||
|
{
|
||||||
|
string value = Encrypt(bytes, uppercase, is16);
|
||||||
|
return hash.Equals(value, StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
20
Infrastructure/ERP/Util/StringExtensions.cs
Normal file
20
Infrastructure/ERP/Util/StringExtensions.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using U8Server.Util;
|
||||||
|
|
||||||
|
namespace U8Server.Extensions
|
||||||
|
{
|
||||||
|
public static class StringExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 对字符串进行 MD5 加密(扩展方法)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input">待加密的字符串</param>
|
||||||
|
/// <param name="uppercase">是否返回大写形式</param>
|
||||||
|
/// <param name="is16bit">是否返回 16 位 MD5(默认 32 位)</param>
|
||||||
|
/// <returns>加密后的字符串</returns>
|
||||||
|
public static string ToMD5Encrypt(this string input, bool uppercase = false, bool is16bit = false)
|
||||||
|
{
|
||||||
|
// 直接调用现有的 MD5Encryption.Encrypt 方法
|
||||||
|
return MD5Encryption.Encrypt(input, uppercase, is16bit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -95,6 +95,7 @@ namespace ZR.Admin.WebApi.Controllers.mes.wms
|
|||||||
|
|
||||||
return ToResponse(new ApiResult(200, msg, state));
|
return ToResponse(new ApiResult(200, msg, state));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 4.入库
|
/// 4.入库
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -117,8 +118,6 @@ namespace ZR.Admin.WebApi.Controllers.mes.wms
|
|||||||
if (num == 0)
|
if (num == 0)
|
||||||
{
|
{
|
||||||
msg = "入库数为0!";
|
msg = "入库数为0!";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (num >= 1)
|
else if (num >= 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<key id="41616b3c-f0c2-4c2e-8731-e00f4068434c" version="1">
|
||||||
|
<creationDate>2024-11-21T06:38:26.0026108Z</creationDate>
|
||||||
|
<activationDate>2024-11-21T06:38:25.7325286Z</activationDate>
|
||||||
|
<expirationDate>2025-02-19T06:38:25.7325286Z</expirationDate>
|
||||||
|
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
|
||||||
|
<descriptor>
|
||||||
|
<encryption algorithm="AES_256_CBC" />
|
||||||
|
<validation algorithm="HMACSHA256" />
|
||||||
|
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
|
||||||
|
<!-- Warning: the key below is in an unencrypted form. -->
|
||||||
|
<value>hJYyLuoFC/c5rG4kg/5UESdMoe+9+EWMl2sdrFlqW9KnQnx+pUVho8v/+Klq6ZEoQ4/8kBasEJ0FzCt8pkNstQ==</value>
|
||||||
|
</masterKey>
|
||||||
|
</descriptor>
|
||||||
|
</descriptor>
|
||||||
|
</key>
|
||||||
59
ZR.Model/MES/wms/ERP_WMS_interactiveModel.cs
Normal file
59
ZR.Model/MES/wms/ERP_WMS_interactiveModel.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ZR.Model.MES.wms
|
||||||
|
{
|
||||||
|
public class ERP_WMS_interactiveModel
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ERP_WMS_interactiveModelQuery
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 物料编码
|
||||||
|
/// </summary>
|
||||||
|
public string materialCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 位置
|
||||||
|
/// </summary>
|
||||||
|
public string location { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public string Qty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string LotNo { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public DateTime createTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string userID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string guid { get; set; }
|
||||||
|
|
||||||
|
public string lineno { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class ERP_WMS_interactiveModelResult
|
||||||
|
{
|
||||||
|
public string code { get; set; }
|
||||||
|
public string type { get; set; }
|
||||||
|
public string message { get; set; }
|
||||||
|
public Object result { get; set; }
|
||||||
|
public Object extras { get; set; }
|
||||||
|
public DateTime time { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
61
ZR.Service/mes/wms-u8/ERP_WMS_interactiveService.cs
Normal file
61
ZR.Service/mes/wms-u8/ERP_WMS_interactiveService.cs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
using Infrastructure;
|
||||||
|
using Infrastructure.Attribute;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using U8Server.Util;
|
||||||
|
using ZR.Model.MES.wms;
|
||||||
|
using ZR.Service.mes.wms.IService;
|
||||||
|
using ZR.Service.mes.wms_u8.IService;
|
||||||
|
|
||||||
|
namespace ZR.Service.mes.wms_u8
|
||||||
|
{
|
||||||
|
[AppService(ServiceType = typeof(IERP_WMS_interactive), ServiceLifetime = LifeTime.Transient)]
|
||||||
|
public class ERP_WMS_interactiveService : IERP_WMS_interactive
|
||||||
|
{
|
||||||
|
public ERP_WMS_interactiveModelResult inbounded(string urlBase,List<ERP_WMS_interactiveModelQuery> eRP_WMS_InteractiveModels)
|
||||||
|
{
|
||||||
|
string url = urlBase + "/wms/mes/inbounded";
|
||||||
|
|
||||||
|
string contentType = "application/json";
|
||||||
|
Dictionary<string, string> headers = new Dictionary<string, string>();
|
||||||
|
headers.Add("appid", "gN9yId!!lfwaRoi3");
|
||||||
|
headers.Add("timestamp", DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture));
|
||||||
|
headers.Add("sign", GetSign.GetBy16Md5());
|
||||||
|
|
||||||
|
string postData = JsonConvert.SerializeObject(eRP_WMS_InteractiveModels);
|
||||||
|
Object result = HttpHelper.HttpPost(url, postData, contentType, 30, headers);
|
||||||
|
if (result != null && result is ERP_WMS_interactiveModelResult)
|
||||||
|
{
|
||||||
|
return (ERP_WMS_interactiveModelResult)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ERP_WMS_interactiveModelResult outbounded(string urlBase, List<ERP_WMS_interactiveModelQuery> eRP_WMS_InteractiveModels)
|
||||||
|
{
|
||||||
|
string url = urlBase + "/wms/mes/outbounded";
|
||||||
|
|
||||||
|
string contentType = "application/json";
|
||||||
|
Dictionary<string, string> headers = new Dictionary<string, string>();
|
||||||
|
headers.Add("appid", "gN9yId!!lfwaRoi3");
|
||||||
|
headers.Add("timestamp", DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture));
|
||||||
|
headers.Add("sign", GetSign.GetBy16Md5());
|
||||||
|
|
||||||
|
string postData = JsonConvert.SerializeObject(eRP_WMS_InteractiveModels);
|
||||||
|
Object result = HttpHelper.HttpPost(url, postData, contentType, 30, headers);
|
||||||
|
if (result != null && result is ERP_WMS_interactiveModelResult)
|
||||||
|
{
|
||||||
|
return (ERP_WMS_interactiveModelResult)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
ZR.Service/mes/wms-u8/IService/IERP_WMS_interactive.cs
Normal file
27
ZR.Service/mes/wms-u8/IService/IERP_WMS_interactive.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ZR.Model.MES.wms;
|
||||||
|
|
||||||
|
namespace ZR.Service.mes.wms_u8.IService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 用友U8和WMS 交互接口
|
||||||
|
/// </summary>
|
||||||
|
public interface IERP_WMS_interactive
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 入库
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public ERP_WMS_interactiveModelResult inbounded(string urlBase, List<ERP_WMS_interactiveModelQuery> eRP_WMS_InteractiveModels);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 出库
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public ERP_WMS_interactiveModelResult outbounded(string urlBase, List<ERP_WMS_interactiveModelQuery> eRP_WMS_InteractiveModels);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user