更新一大堆代码

This commit is contained in:
2025-10-21 11:27:52 +08:00
parent d40ea96e27
commit eac8627c20
24 changed files with 2333 additions and 31 deletions

View File

@@ -0,0 +1,176 @@

using MyCode.Project.Infrastructure.JackYun;
using System;
using System.Collections.Generic;
using static System.Net.Mime.MediaTypeNames;
namespace MyCode.Project.Domain.Message.Request.JackYun
{
public class ReturnChangeGetRequestBizData : BaseRequestBizData
{
/// <summary>
/// 每页显示数据量
/// </summary>
public int? PageSize { get; set; } = 50;
/// <summary>
/// 当前页码
/// </summary>
public int? PageIndex { get; set; } = 0;
/// <summary>
/// 最后修改时间(起始)
/// </summary>
public string StartModified { get; set; }
/// <summary>
/// 最后修改时间(截止)
/// </summary>
public string EndModified { get; set; }
/// <summary>
/// 退换单号,多个单号用逗号分隔
/// </summary>
public string ReturnChangeNo { get; set; }
/// <summary>
/// 订单号,多个单号用逗号分隔
/// </summary>
public string TradeNo { get; set; }
/// <summary>
/// 创建时间(起始)
/// </summary>
public string StartGmtCreate { get; set; }
/// <summary>
/// 创建时间(结束)
/// </summary>
public string EndGmtCreate { get; set; }
/// <summary>
/// 审核时间(起始)
/// </summary>
public string StartAuditDate { get; set; }
/// <summary>
/// 审核时间(结束)
/// </summary>
public string EndAuditDate { get; set; }
/// <summary>
/// 收货时间(起始)
/// </summary>
public string StartDeliveryDate { get; set; }
/// <summary>
/// 收货时间(结束)
/// </summary>
public string EndDeliveryDate { get; set; }
/// <summary>
/// 结算时间(起始)
/// </summary>
public string StartSettlementDate { get; set; }
/// <summary>
/// 结算时间(结束)
/// </summary>
public string EndSettlementDate { get; set; }
/// <summary>
/// 处理状态1000异常件待处理1001待审核1002待收货1003待结算1004已结算待收货1005已收货待结算1007已完成1008已取消1009已拒绝1010待支付1014待退货-待通知退货1015待退货-已通知退货10081已取消-被合并10082已取消-被拆分)
/// </summary>
public string ProcessStatusList { get; set; }
/// <summary>
/// 销售渠道
/// </summary>
public string ShopName { get; set; }
/// <summary>
/// 退货仓库名称
/// </summary>
public string WarehouseName { get; set; }
/// <summary>
/// 退货仓库ID集合
/// </summary>
public List<string> WarehouseIdList { get; set; }
/// <summary>
/// 退换原因
/// </summary>
public string ReasonDesc { get; set; }
/// <summary>
/// 是否获取总记录数10
/// </summary>
public int? HasTotal { get; set; } = 1;
/// <summary>
/// 网店订单号
/// </summary>
public string SourceTradeNo { get; set; }
/// <summary>
/// 网店售后单号
/// </summary>
public string SourceTradeAfterNo { get; set; }
/// <summary>
/// 是否软删除
/// </summary>
public bool? Deleted { get; set; } = false;
/// <summary>
/// 店铺ID集合
/// </summary>
public List<string> ShopIds { get; set; }
/// <summary>
/// 是否查询组合装子件信息10
/// </summary>
public string SelectSubParts { get; set; } = "1";
/// <summary>
/// 是否同时返回未删除和回收站中的数据
/// </summary>
public bool? AllDeleteStatus { get; set; } = true;
/// <summary>
/// 完成时间开始时间
/// </summary>
public string StartCompleteTime { get; set; }
/// <summary>
/// 完成时间结束时间
/// </summary>
public string EndCompleteTime { get; set; }
/// <summary>
/// 是否归档0未归档1已归档
/// </summary>
public string QueryHistory { get; set; } = "0";
/// <summary>
/// 销售平台
/// </summary>
public string PlatName { get; set; }
/// <summary>
/// 申请时间开始时间
/// </summary>
public string ApplyTimeBegin { get; set; }
/// <summary>
/// 申请时间结束时间
/// </summary>
public string ApplyTimeEnd { get; set; }
}
}

View File

@@ -0,0 +1,286 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace MyCode.Project.Domain.Model
{
///<summary>
///退换货商品明细表(记录售后订单中的商品变更详情)
///</summary>
[SugarTable("ReturnChangeGoodsDetail")]
public partial class ReturnChangeGoodsDetail
{
public ReturnChangeGoodsDetail(){
}
/// <summary>
/// Desc:主键GUID格式
/// Default:newid()
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true)]
public Guid Id {get;set;}
/// <summary>
/// Desc:售后订单ID关联售后主表
/// Default:
/// Nullable:False
/// </summary>
public long TradeAfterId {get;set;}
/// <summary>
/// Desc:子订单ID关联销售明细
/// Default:
/// Nullable:False
/// </summary>
public long SubTradeId {get;set;}
/// <summary>
/// Desc:商品基础信息ID关联商品主表
/// Default:
/// Nullable:False
/// </summary>
public long GoodsId {get;set;}
/// <summary>
/// Desc:商品系统编号(唯一业务标识)
/// Default:
/// Nullable:True
/// </summary>
public string GoodsNo {get;set;}
/// <summary>
/// Desc:商品全称(显示名称)
/// Default:
/// Nullable:True
/// </summary>
public string GoodsName {get;set;}
/// <summary>
/// Desc:规格ID关联规格表
/// Default:
/// Nullable:True
/// </summary>
public long? SpecId {get;set;}
/// <summary>
/// Desc:规格组合名称(如:颜色:红;尺寸:XL
/// Default:
/// Nullable:True
/// </summary>
public string SpecName {get;set;}
/// <summary>
/// Desc:计量单位件、KG等
/// Default:
/// Nullable:True
/// </summary>
public string Unit {get;set;}
/// <summary>
/// Desc:销售单价(含税,单位:元)
/// Default:
/// Nullable:True
/// </summary>
public decimal? Price {get;set;}
/// <summary>
/// Desc:原始销售数量单位与Unit字段一致
/// Default:
/// Nullable:True
/// </summary>
public decimal? SellCount {get;set;}
/// <summary>
/// Desc:售后原因详细描述
/// Default:
/// Nullable:True
/// </summary>
public string ReasonDesc {get;set;}
/// <summary>
/// Desc:申请退货数量(可含小数)
/// Default:
/// Nullable:True
/// </summary>
public decimal? ReturnCount {get;set;}
/// <summary>
/// Desc:实际退货金额(=退货数量*单价-退货优惠)
/// Default:
/// Nullable:True
/// </summary>
public decimal? ReturnFee {get;set;}
/// <summary>
/// Desc:补发商品数量
/// Default:
/// Nullable:True
/// </summary>
public decimal? SendCount {get;set;}
/// <summary>
/// Desc:退货部分享受的优惠金额
/// Default:
/// Nullable:True
/// </summary>
public decimal? ReturnDiscounts {get;set;}
/// <summary>
/// Desc:补发部分享受的优惠金额
/// Default:
/// Nullable:True
/// </summary>
public decimal? SendDiscounts {get;set;}
/// <summary>
/// Desc:补发商品总金额
/// Default:
/// Nullable:True
/// </summary>
public decimal? SendFee {get;set;}
/// <summary>
/// Desc:理论应退金额(未计算分摊)
/// Default:
/// Nullable:True
/// </summary>
public decimal? ShouldReturnFee {get;set;}
/// <summary>
/// Desc:处理备注信息
/// Default:
/// Nullable:True
/// </summary>
public string Remark {get;set;}
/// <summary>
/// Desc:商品特性标记1-7分别对应定制/虚拟/卡券/代销/预售/序列号/需安装)
/// Default:
/// Nullable:True
/// </summary>
public int? GoodsAttribute {get;set;}
/// <summary>
/// Desc:最后修改时间格式yyyy-MM-dd HH:mm:ss
/// Default:
/// Nullable:True
/// </summary>
public string GmtModified {get;set;}
/// <summary>
/// Desc:记录创建时间格式yyyy-MM-dd HH:mm
/// Default:
/// Nullable:True
/// </summary>
public string GmtCreate {get;set;}
/// <summary>
/// Desc:商品条码(国际标准条码)
/// Default:
/// Nullable:True
/// </summary>
public string Barcode {get;set;}
/// <summary>
/// Desc:销售总金额(=单价*数量)
/// Default:
/// Nullable:True
/// </summary>
public decimal? SellTotal {get;set;}
/// <summary>
/// Desc:实际退货数量(仓库验收后)
/// Default:
/// Nullable:True
/// </summary>
public decimal? DeliveryCount {get;set;}
/// <summary>
/// Desc:组合装标识1=是组合装子商品)
/// Default:0
/// Nullable:True
/// </summary>
public int? IsFit {get;set;}
/// <summary>
/// Desc:赠品标识1=是赠品 0=正常商品)
/// Default:0
/// Nullable:True
/// </summary>
public int? IsGift {get;set;}
/// <summary>
/// Desc:分摊后退货金额(含订单级优惠分摊)
/// Default:
/// Nullable:True
/// </summary>
public decimal? ShareReturnFee {get;set;}
/// <summary>
/// Desc:分摊后补发金额(含订单级优惠分摊)
/// Default:
/// Nullable:True
/// </summary>
public decimal? ShareSendFee {get;set;}
/// <summary>
/// Desc:最终应退金额(含所有优惠和运费分摊)
/// Default:
/// Nullable:True
/// </summary>
public decimal? ShareShouldReturnFee {get;set;}
/// <summary>
/// Desc:货品批次信息JSON格式存储
/// Default:
/// Nullable:True
/// </summary>
public string GoodsBatchInfoList {get;set;}
/// <summary>
/// Desc:电商平台子订单编号(如淘宝子订单号)
/// Default:
/// Nullable:True
/// </summary>
public string SourceSubtradeNo {get;set;}
/// <summary>
/// Desc:次品数量描述5件破损
/// Default:
/// Nullable:True
/// </summary>
public string DefectiveAmount {get;set;}
/// <summary>
/// Desc:品牌名称
/// Default:
/// Nullable:True
/// </summary>
public string BrandName {get;set;}
/// <summary>
/// Desc:商品唯一序列号(用于高端商品追踪)
/// Default:
/// Nullable:True
/// </summary>
public string GoodsSerial {get;set;}
/// <summary>
/// Desc:平台商品ID第三方平台商品编码
/// Default:
/// Nullable:True
/// </summary>
public string PlatGoodsId {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public Guid? JackOrdersId {get;set;}
}
}

View File

@@ -67,6 +67,7 @@
<Compile Include="Message\Act\Common\RequestModel.cs" />
<Compile Include="Message\Request\JackYun\CreateAndStockinGetRequestBizData.cs" />
<Compile Include="Message\Request\JackYun\CreateAndStockoutGetRequestBizData.cs" />
<Compile Include="Message\Request\JackYun\ReturnChangeGetRequestBizData.cs" />
<Compile Include="Message\Request\JackYun\OrderTradeFullInfoGetRequestBizData.cs" />
<Compile Include="Message\Request\KingDee\BillDelete.cs" />
<Compile Include="Message\Request\KingDee\BillSave.cs" />
@@ -98,6 +99,7 @@
<Compile Include="Model\JackOrdersItem.cs" />
<Compile Include="Model\PushKingDeeOrder.cs" />
<Compile Include="Model\PushKingDeeOrderItem.cs" />
<Compile Include="Model\ReturnChangeGoodsDetail.cs" />
<Compile Include="Model\SysWorkprocess.cs" />
<Compile Include="Model\WMStoJackyunInventoryMovementView1.cs" />
<Compile Include="Model\YTKJTShopParameter.cs" />
@@ -109,6 +111,7 @@
<Compile Include="Repositories\IPushKingDeeOrderRepository.cs" />
<Compile Include="Repositories\IRepository.cs" />
<Compile Include="Repositories\IRepository`.cs" />
<Compile Include="Repositories\IReturnChangeGoodsDetailRepository.cs" />
<Compile Include="Repositories\ISysWorkprocessRepository.cs" />
<Compile Include="Repositories\IWMStoJackyunInventoryMovementView1Repository.cs" />
<Compile Include="Repositories\IYTKJTShopParameterRepository.cs" />

View File

@@ -20,5 +20,11 @@ namespace MyCode.Project.Domain.Repositories
/// <returns></returns>
List<PushOrderListResp> GetPushOrder();
/// <summary>
/// 获取合并后的吉客云订单
/// </summary>
/// <returns></returns>
List<PushOrderListResp> GetPushReturnOrder();
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyCode.Project.Infrastructure;
using MyCode.Project.Domain;
using MyCode.Project.Domain.Model;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Domain.Message;
namespace MyCode.Project.Domain.Repositories
{
public interface IReturnChangeGoodsDetailRepository : IRepository<ReturnChangeGoodsDetail>
{
}
}

View File

@@ -288,7 +288,12 @@ namespace MyCode.Project.Infrastructure.Enumeration
/// 创建入库申请单并入库
/// </summary>
[Enum("创建入库申请单并入库", "erp.stock.createandstockin")]
CREATEANDSTOCKIN,
CREATEANDSTOCKIN,
/// <summary>
/// 分页查询退换补发单(新)
/// </summary>
[Enum("分页查询退换补发单(新)", "ass-business.returnchange.fullinfoget")]
RETURNCHANGE,
}
}

View File

@@ -0,0 +1,340 @@
using MyCode.Project.Infrastructure.Common;
using NPOI.POIFS.FileSystem;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace MyCode.Project.Infrastructure.JackYun
{
/// <summary>
/// http 接口类
/// </summary>
public class JackyunOpenHttpUtils
{
# region
/// <summary>
/// 并发控制锁对象
/// </summary>
private static readonly Object __LOCK__ = new Object();
/// <summary>
/// 在吉客云开放平台上申请的Appekey
/// </summary>
private const string APPKEY = "71030238";//"21578653";
/// <summary>
/// 在吉客云开放平台上申请的AppeSecret
/// </summary>
private const string APPSECRET = "0fbe36cc4308405cacadf516338be4c8";// "d6ea919cb75a44879fcdbea211066b9c";
private const string customerJackyunUser = "887868"; //吉客云号
/// <summary>
///
/// </summary>
private const string Token = "c421527ef46ae6b3654fe73fef13c3e0";
/// <summary>
/// 吉客云开放平台网关
/// </summary>
private const string GATEWAY = "https://open.jackyun.com/open/openapi/do";
//private const string GATEWAY = "http://localhost:9090/open/openapi/do";
#endregion
#region http Post方法
/// <summary>
/// 请求开放平台的Post方法
/// </summary>
/// <param name="method">方法名</param>
/// <param name="version">版本号</param>
/// <param name="bizData">业务参数信息</param>
/// <returns></returns>
public static string Post(string method, string version, BaseRequestBizData bizData)
{
// 构造请求参数(name1=value1&name2=value2格式)。
var dic = new SortedDictionary<string, string>();
dic.Add("method", method);
dic.Add("appkey", APPKEY);
dic.Add("version", version);
dic.Add("contenttype", "json");
dic.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//dic.Add("customerJackyunUser", customerJackyunUser);
dic.Add("bizcontent", JsonHelper.ToJson(bizData));
// 构建待签名的字符串。
StringBuilder sbSignData = new StringBuilder(APPSECRET);
foreach (var entry in dic)
{
sbSignData.Append(entry.Key + entry.Value);
}
sbSignData.Append(APPSECRET);
string signStr = sbSignData.ToString().ToLower();
// 生成签名。
dic.Add("sign", MakeMD5(sbSignData.ToString().ToLower(), Encoding.UTF8));
//构造请求参数(name1=value1&name2=value2格式)
StringBuilder sbPostData = new StringBuilder();
foreach (var entry in dic)
{
sbPostData.Append("&").Append(entry.Key).Append("=").Append(entry.Value);
}
sbPostData.Append("&").Append("token").Append("=").Append(Token);
string postDataStr = sbPostData.ToString().Substring(1);
LogHelper.Info("postDataStr:"+postDataStr);
return postData(GATEWAY, postDataStr);
}
#endregion
#region MD5方法
/// <summary>
/// 生成MD5码。
/// </summary>
/// <param name="original">待生成字符串</param>
/// <param name="encoding">编码格式</param>
/// <returns></returns>
public static string MakeMD5(string original, Encoding encoding)
{
var hashmd5 = new MD5CryptoServiceProvider();
byte[] byteOriginal = hashmd5.ComputeHash(encoding.GetBytes(original));
StringBuilder ciphertext = new StringBuilder(32);
for (int i = 0; i < byteOriginal.Length; i++)
{
ciphertext.Append(byteOriginal[i].ToString("x").PadLeft(2, '0'));
}
return ciphertext.ToString();
}
#endregion
#region http
#region http post
/// <summary>
/// http post 请求方法。
/// </summary>
/// <param name="url">路径</param>
/// <param name="data">发送的数据(name1=value1&name2=value2)格式</param>
/// <returns>HTTP-Post返回结果</returns>
public static string postData(string url, string data)
{
return postData(url, data, Encoding.UTF8, 300000);
}
public static string postData(string url, string postData, Encoding encoding, int timeOut)
{
string method = "POST";
return Request(url, postData, method, null, null, null, timeOut, null, encoding, null);
}
/// <summary>
/// 通用请求。
/// </summary>
/// <param name="url">地址</param>
/// <param name="postData">请求数据(当为GET时自动追加到url中)</param>
/// <param name="method">请求方式</param>
/// <param name="accept">Accept 标识</param>
/// <param name="contentType">ContentType标识</param>
/// <param name="host">Host 标识</param>
/// <param name="timeout">超时时间</param>
/// <param name="headers">请求头部文件</param>
/// <param name="spType">安全协议</param>
/// <param name="en">字符编码</param>
/// <returns>http请求结果</returns>
public static string Request(string url, string postData, string method, string accept, string contentType, string host, int timeout, NameValueCollection headers, Encoding en, SecurityProtocolType? spType)
{
//字符编码。
if (null == en)
en = Encoding.UTF8;
//超时时间。
if (timeout <= 0)
timeout = 60000;
//自动拼接GET请求的URL。
if (method.ToUpper().Equals("GET") && !string.IsNullOrEmpty(postData))
{
if (url.IndexOf("?") > 0)
url += "&" + postData;
else
url += "?" + postData;
}
//创建请求。
var request = CreateHttpWebRequest(url, method, accept, contentType, host, timeout, headers, en, spType);
//如果是非GET加入POST数据流。
if (!method.ToUpper().Equals("GET") && !string.IsNullOrEmpty(postData))
WriteBytes(request, postData, en);
return ResponseString(request, en);
}
#endregion
#region HttpWebRequest对象
/// <summary>
/// 创建HttpWebRequest对象。
/// </summary>
/// <param name="url">地址</param>
/// <param name="method">请求方式Post Get Put Delete</param>
/// <param name="accept">Accept 标识</param>
/// <param name="contentType">ContentType 标识</param>
/// <param name="host">Host 标识</param>
/// <param name="timeout">超时时间</param>
/// <param name="headers">请求头部参数</param>
/// <param name="spType">安全协议标识</param>
/// <returns>HttpWebRequest</returns>
public static HttpWebRequest CreateHttpWebRequest(string url, string method, string accept, string contentType, string host, int timeout, NameValueCollection headers, Encoding en, SecurityProtocolType? spType)
{
var request = WebRequest.Create(url) as HttpWebRequest;
request.KeepAlive = false;
request.AllowAutoRedirect = true;
request.Timeout = timeout;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0";
//请求方式 默认为Post
if (string.IsNullOrEmpty(method))
method = "Post";
request.Method = method;
//Accept 标识 默认text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
if (string.IsNullOrEmpty(accept))
accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Accept = accept;
//ContentType 标识 默认"application/x-www-form-urlencoded; charset=" + this.Encode.WebName
if (string.IsNullOrEmpty(contentType))
contentType = "application/x-www-form-urlencoded; charset=" + en.WebName;
request.ContentType = contentType;
///Host 标识
if (!string.IsNullOrEmpty(host))
request.Host = host;
//头部文件
if (headers != null)
{
foreach (string item in headers.Keys)
{
//特殊处理前端将Content-Type加到requestHeaders中这里进行处理。
if (string.Equals(item, "Content-Type", StringComparison.CurrentCultureIgnoreCase))
{
request.ContentType = headers[item];
continue;
}
else if (string.Equals(item, "Host", StringComparison.CurrentCultureIgnoreCase))
{
request.Host = headers[item];
continue;
}
else if (string.Equals(item, "ProtocolVersion", StringComparison.CurrentCultureIgnoreCase))
{
request.ProtocolVersion = string.Equals("Version10", headers[item], StringComparison.CurrentCultureIgnoreCase) ? HttpVersion.Version10 : HttpVersion.Version11;
continue;
}
request.Headers[item] = headers[item];
}
}
//Https安全协议
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
if (spType != null)
ServicePointManager.SecurityProtocol = spType.Value;
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; });
request.Credentials = CredentialCache.DefaultCredentials;
}
return request;
}
#endregion
#region POST请求字节流
/// <summary>
/// 写入POST请求字节流。
/// </summary>
/// <param name="request">http请求</param>
/// <param name="senddate">请求参数</param>
/// <param name="en">字符编码</param>
private static void WriteBytes(HttpWebRequest request, string postData, Encoding en)
{
if (null == postData)
return;
var buffer = en.GetBytes(postData);
request.ContentLength = buffer.Length;
using (var reqStream = request.GetRequestStream())
{
reqStream.Write(buffer, 0, buffer.Length);
}
}
#endregion
#region
/// <summary>
/// 输出字符串。
/// </summary>
/// <param name="request">HttpWebRequest</param>
/// <param name="en">字符编码</param>
/// <returns>输出字节流</returns>
private static string ResponseString(HttpWebRequest request, Encoding en)
{
using (var res = GetResponse(request))
{
if (null == en || en == Encoding.UTF32)
en = Encoding.GetEncoding(res.CharacterSet);
using (Stream resStream = res.GetResponseStream())
{
using (var sr = new StreamReader(resStream, en))
{
return sr.ReadToEnd();
}
}
}
}
#endregion
#region
/// <summary>
/// 获取网络资源的响应。
/// </summary>
/// <param name="request">http请求对象</param>
/// <returns></returns>
private static HttpWebResponse GetResponse(HttpWebRequest request)
{
try
{
return (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
var res = (HttpWebResponse)ex.Response;
if (res == null)
throw;
return res;
}
}
#endregion
#endregion
}
}

View File

@@ -85,7 +85,7 @@ namespace MyCode.Project.Infrastructure.JackYun
}
sbPostData.Append("&").Append("token").Append("=").Append(Token);
string postDataStr = sbPostData.ToString().Substring(1);
LogHelper.Info("postDataStr:"+postDataStr);
LogHelper.Info("postDataStr:" + postDataStr);
return postData(GATEWAY, postDataStr);
}

View File

@@ -0,0 +1,796 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCode.Project.Infrastructure.JackYun
{
public class ReturnChangeData
{
/// <summary>
/// 退货订单
/// </summary>
public List<ReturnChangeListResp> returnChangeList { get; set; }
/// <summary>
/// 总数Integer类型长度4
/// </summary>
public int TotalResults { get; set; }
/// <summary>
/// 每页显示数据量Integer类型长度4
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 当前页码Integer类型长度4
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 敏感数据标识Boolean类型长度10
/// </summary>
public bool SensitiveData { get; set; }
/// <summary>
/// 总数Integer类型长度100
/// </summary>
public int TotalRecords { get; set; }
/// <summary>
/// 分页信息Object类型无长度
/// </summary>
public PageInfo PageInfo { get; set; }
}
/// <summary>
/// 退换补发单结果集合
/// </summary>
public class ReturnChangeListResp
{
/// <summary>
/// 售后单系统Id
/// </summary>
public long TradeAfterId { get; set; }
/// <summary>
/// 售后单编号
/// </summary>
public string ReturnChangeNo { get; set; }
/// <summary>
/// 售后单来源1手工新建4纠纷单5Excel导入6门店7网店下载8错漏9异常件创建
/// </summary>
public int TradeAfterFrom { get; set; }
/// <summary>
/// 售后单状态1000预入库待确认1001待审核1002待收货1003待结算1004已结算待收货1005已收货待结算1007已完成1008已取消1009已拒绝1010待支付1014待退货-待通知退货1015待退货-已通知退货10081已取消-被合并10082已取消-被拆分)
/// </summary>
public string TradeAfterStatus { get; set; }
/// <summary>
/// 系统订单id
/// </summary>
public string TradeId { get; set; }
/// <summary>
/// 系统订单号
/// </summary>
public string TradeNo { get; set; }
/// <summary>
/// 网店订单号
/// </summary>
public string SourceTradeNo { get; set; }
/// <summary>
/// 网点售后单号
/// </summary>
public string SourceTradeAfterNo { get; set; }
/// <summary>
/// 退货仓库id
/// </summary>
public long WarehouseId { get; set; }
/// <summary>
/// 退货仓库编码
/// </summary>
public string WarehouseCode { get; set; }
/// <summary>
/// 退货仓库名称
/// </summary>
public string WarehouseName { get; set; }
/// <summary>
/// 物流公司id
/// </summary>
public long LogisticId { get; set; }
/// <summary>
/// 物流名称
/// </summary>
public string LogisticName { get; set; }
/// <summary>
/// 发货仓库id
/// </summary>
public long SendWarehouseId { get; set; }
/// <summary>
/// 发货仓库名称
/// </summary>
public string SendWarehouseName { get; set; }
/// <summary>
/// 物流单号
/// </summary>
public string MainPostid { get; set; }
/// <summary>
/// 销售渠道id
/// </summary>
public long ShopId { get; set; }
/// <summary>
/// 销售渠道
/// </summary>
public string ShopName { get; set; }
/// <summary>
/// 销售渠道Code
/// </summary>
public string ShopCode { get; set; }
/// <summary>
/// 公司ID
/// </summary>
public long CompanyId { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public string CompanyName { get; set; }
/// <summary>
/// 原订单渠道id
/// </summary>
public long SourceShopId { get; set; }
/// <summary>
/// 原订单渠道
/// </summary>
public string SourceShopName { get; set; }
/// <summary>
/// 售后原因描述
/// </summary>
public string ReasonDesc { get; set; }
/// <summary>
/// 取消售后原因描述
/// </summary>
public string CancelReasonDesc { get; set; }
/// <summary>
/// 拒绝售后原因描述
/// </summary>
public string RejectReasonDesc { get; set; }
/// <summary>
/// 问题描述
/// </summary>
public string ProbleamDesc { get; set; }
/// <summary>
/// 客户备注
/// </summary>
public string CustomerRemark { get; set; }
/// <summary>
/// 客服备注
/// </summary>
public string ServiceRemark { get; set; }
/// <summary>
/// 审核时间
/// </summary>
public string AuditTime { get; set; }
/// <summary>
/// 收货时间
/// </summary>
public string DeliveryTime { get; set; }
/// <summary>
/// 发货时间
/// </summary>
public string ConsignTime { get; set; }
/// <summary>
/// 货品摘要
/// </summary>
public string Goodslist { get; set; }
/// <summary>
/// 标记id
/// </summary>
public string FlagIds { get; set; }
/// <summary>
/// 标记名称
/// </summary>
public string FlagNames { get; set; }
/// <summary>
/// 登记人id
/// </summary>
public long RegisterId { get; set; }
/// <summary>
/// 登记人
/// </summary>
public string Registrant { get; set; }
/// <summary>
/// 责任人code
/// </summary>
public long ResponsiblePersonCode { get; set; }
/// <summary>
/// 责任人描述
/// </summary>
public string ResponsiblePersonDesc { get; set; }
/// <summary>
/// 三方仓入库单号
/// </summary>
public string StockInNo { get; set; }
/// <summary>
/// 收货单号
/// </summary>
public string DeliveryNo { get; set; }
/// <summary>
/// 收货经办人
/// </summary>
public string DeliveryPerson { get; set; }
/// <summary>
/// 审核人id
/// </summary>
public long AuditorId { get; set; }
/// <summary>
/// 审核人
/// </summary>
public string Auditor { get; set; }
/// <summary>
/// 源仓库id
/// </summary>
public long SourceWarehouseId { get; set; }
/// <summary>
/// 源仓库名称
/// </summary>
public string SourceWarehouseName { get; set; }
/// <summary>
/// 订单摘要
/// </summary>
public string TradeOrderSummary { get; set; }
/// <summary>
/// 冻结标记1冻结0未冻结
/// </summary>
public int IsFreeze { get; set; }
/// <summary>
/// 冻结原因
/// </summary>
public string FreezeReason { get; set; }
/// <summary>
/// 建单时间
/// </summary>
public string GmtCreate { get; set; }
/// <summary>
/// 最后修改时间
/// </summary>
public string GmtModified { get; set; }
/// <summary>
/// 原销售单状态
/// </summary>
public int SourceTradeStatus { get; set; }
/// <summary>
/// 退货货品信息
/// </summary>
public List<JkyReturnChangeGoodsDetail> ReturnChangeGoodsDetail { get; set; }
/// <summary>
/// 售后类型String类型无长度
/// </summary>
public string TradeAfterType { get; set; }
/// <summary>
/// 售后类型说明String类型无长度
/// </summary>
public string TradeAfterTypeExplain { get; set; }
}
public class PageInfo
{
/// <summary>
/// 当前页码
/// </summary>
public int pageIndex { get; set; }
/// <summary>
/// 每页显示数据量
/// </summary>
public int pageSize { get; set; }
/// <summary>
/// 排序字段
/// </summary>
public string sortOrder { get; set; }
/// <summary>
/// 倒序或升序文本
/// </summary>
public string sortField { get; set; }
/// <summary>
/// 总数(
/// </summary>
public int total { get; set; }
}
/// <summary>
/// 货品信息
/// </summary>
public class JkyReturnChangeGoodsDetail
{
/// <summary>
/// 售后订单id
/// </summary>
public long TradeAfterId { get; set; }
/// <summary>
/// 货品id
/// </summary>
public long SubTradeId { get; set; }
/// <summary>
/// 货品编号id
/// </summary>
public long GoodsId { get; set; }
/// <summary>
/// 货品编号
/// </summary>
public string GoodsNo { get; set; }
/// <summary>
/// 货品名称
/// </summary>
public string GoodsName { get; set; }
/// <summary>
/// 规格id
/// </summary>
public long SpecId { get; set; }
/// <summary>
/// 规格名称
/// </summary>
public string SpecName { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 销售单数量
/// </summary>
public decimal SellCount { get; set; }
/// <summary>
/// 售后原因描述
/// </summary>
public string ReasonDesc { get; set; }
/// <summary>
/// 退货数量
/// </summary>
public decimal ReturnCount { get; set; }
/// <summary>
/// 退货金额
/// </summary>
public decimal ReturnFee { get; set; }
/// <summary>
/// 发货数量
/// </summary>
public decimal SendCount { get; set; }
/// <summary>
/// 退货优惠
/// </summary>
public decimal ReturnDiscounts { get; set; }
/// <summary>
/// 发货优惠
/// </summary>
public decimal SendDiscounts { get; set; }
/// <summary>
/// 发货金额
/// </summary>
public decimal SendFee { get; set; }
/// <summary>
/// 应退金额
/// </summary>
public decimal ShouldReturnFee { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 货品业务特性1定制生产转生产后发货2虚拟物品/服务无仓储作业3卡券结算冲抵4代销转供应商发货5预售品转预售单6序列号管理单品跟踪7需上门安装发货后转工单
/// </summary>
public int GoodsAttribute { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public string GmtModified { get; set; }
/// <summary>
/// 退换单创建时间
/// </summary>
public string GmtCreate { get; set; }
/// <summary>
/// 条码
/// </summary>
public string Barcode { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal SellTotal { get; set; }
/// <summary>
/// 实退数量
/// </summary>
public decimal DeliveryCount { get; set; }
/// <summary>
/// 组合装标记1是组合装0不是组合装
/// </summary>
public int IsFit { get; set; }
/// <summary>
/// 赠品标记1是赠品0不是赠品
/// </summary>
public int IsGift { get; set; }
/// <summary>
/// 分摊后退货金额
/// </summary>
public decimal ShareReturnFee { get; set; }
/// <summary>
/// 分摊后发货金额
/// </summary>
public decimal ShareSendFee { get; set; }
/// <summary>
/// 分摊后应退金额
/// </summary>
public decimal ShareShouldReturnFee { get; set; }
/// <summary>
/// 货品批次信息
/// </summary>
public List<GoodsBatchInfo> GoodsBatchInfoList { get; set; }
/// <summary>
/// 网店子订单编号
/// </summary>
public string SourceSubtradeNo { get; set; }
/// <summary>
/// 次品数量
/// </summary>
public string DefectiveAmount { get; set; }
/// <summary>
/// 品牌
/// </summary>
public string BrandName { get; set; }
/// <summary>
/// 唯一码
/// </summary>
public string GoodsSerial { get; set; }
/// <summary>
/// 平台商品ID
/// </summary>
public string PlatGoodsId { get; set; }
}
/// <summary>
/// 货品批次信息
/// </summary>
public class GoodsBatchInfo
{
/// <summary>
/// 批次号
/// </summary>
public string BatchNo { get; set; }
/// <summary>
/// 批次数量
/// </summary>
public decimal BatchAmount { get; set; }
/// <summary>
/// 生产日期
/// </summary>
public string ProductionDate { get; set; }
/// <summary>
/// 到期日期
/// </summary>
public string ExpirationDate { get; set; }
}
/// <summary>
/// 售后订单主表
/// </summary>
public class TradeAfter
{
/// <summary>
/// 售后订单ID
/// </summary>
public long TradeAfterId { get; set; }
/// <summary>
/// 货品信息列表
/// </summary>
public List<TradeAfterGoods> GoodsInfoList { get; set; }
/// <summary>
/// 结算信息
/// </summary>
public ReturnChangePay PaymentInfo { get; set; }
/// <summary>
/// 收件人信息
/// </summary>
public ReturnChangeReceiver ReceiverInfo { get; set; }
/// <summary>
/// 补发销售单号列表
/// </summary>
public List<string> SendTradeNo { get; set; }
/// <summary>
/// 退货销售单号列表
/// </summary>
public List<string> ReturnTradeNo { get; set; }
}
/// <summary>
/// 售后订单货品信息
/// </summary>
public class TradeAfterGoods
{
/// <summary>
/// 货品ID
/// </summary>
public long SubTradeId { get; set; }
/// <summary>
/// 货品编号ID
/// </summary>
public long GoodsId { get; set; }
/// <summary>
/// 货品编号
/// </summary>
public string GoodsNo { get; set; }
/// <summary>
/// 货品名称
/// </summary>
public string GoodsName { get; set; }
/// <summary>
/// 规格ID
/// </summary>
public long SpecId { get; set; }
/// <summary>
/// 规格名称
/// </summary>
public string SpecName { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Unit { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 销售单数量
/// </summary>
public decimal SellCount { get; set; }
/// <summary>
/// 售后原因描述
/// </summary>
public string ReasonDesc { get; set; }
/// <summary>
/// 退货数量
/// </summary>
public decimal ReturnCount { get; set; }
/// <summary>
/// 退货金额
/// </summary>
public decimal ReturnFee { get; set; }
/// <summary>
/// 发货数量
/// </summary>
public decimal SendCount { get; set; }
/// <summary>
/// 发货金额
/// </summary>
public decimal SendFee { get; set; }
/// <summary>
/// 应退金额
/// </summary>
public decimal ShouldReturnFee { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 货品批次信息列表
/// </summary>
public List<GoodsBatchInfo> GoodsBatchInfoList { get; set; }
}
/// <summary>
/// 结算信息
/// </summary>
public class ReturnChangePay
{
/// <summary>
/// 退货金额
/// </summary>
public decimal ReturnAccounts { get; set; }
/// <summary>
/// 发货金额
/// </summary>
public decimal SendAccounts { get; set; }
/// <summary>
/// 应退合计
/// </summary>
public decimal ReturnTotal { get; set; }
/// <summary>
/// 结算币种
/// </summary>
public string SettlementCurrency { get; set; }
/// <summary>
/// 结算币种code
/// </summary>
public string SettlementCurrencyCode { get; set; }
/// <summary>
/// 付款状态0未付款1部分付款2已付款
/// </summary>
public int PayStatus { get; set; }
/// <summary>
/// 付款金额
/// </summary>
public decimal PayAccounts { get; set; }
/// <summary>
/// 付款时间
/// </summary>
public string PayTime { get; set; }
}
/// <summary>
/// 收件人信息
/// </summary>
public class ReturnChangeReceiver
{
/// <summary>
/// 客户名称
/// </summary>
public string CustomerName { get; set; }
/// <summary>
/// 客户账户
/// </summary>
public string CustomerAccount { get; set; }
/// <summary>
/// 邮编
/// </summary>
public string Zip { get; set; }
/// <summary>
/// 国家
/// </summary>
public string Country { get; set; }
/// <summary>
/// 省
/// </summary>
public string State { get; set; }
/// <summary>
/// 城市
/// </summary>
public string City { get; set; }
/// <summary>
/// 区县
/// </summary>
public string District { get; set; }
/// <summary>
/// 街道
/// </summary>
public string Town { get; set; }
}
}

View File

@@ -193,9 +193,15 @@ namespace MyCode.Project.Infrastructure.JackYun
/// </summary>
public int apiType { get; set; }
/// <summary>
/// 货品详情
/// 销售货品详情
/// </summary>
public List<GoodsDetailItem> goodsDetail { get; set; }
/// <summary>
/// 退货货品信息
/// </summary>
public List<JkyReturnChangeGoodsDetail> ReturnChangeGoodsDetail { get; set; }
/// <summary>
/// 系统编码
/// </summary>
@@ -247,7 +253,7 @@ namespace MyCode.Project.Infrastructure.JackYun
public string scrollId { get; set; }
}
public class TradeFullinfogetResp
public class TradeFullinfogetResp<T>
{
/// <summary>
///
@@ -256,7 +262,7 @@ namespace MyCode.Project.Infrastructure.JackYun
/// <summary>
///
/// </summary>
public TradeFullinfogetData data { get; set; }
public T data { get; set; }
/// <summary>
///
/// </summary>

View File

@@ -267,6 +267,7 @@
<Compile Include="JackYun\EnumAttribute.cs" />
<Compile Include="JackYun\GoodsDetail.cs" />
<Compile Include="JackYun\JackyunResponse.cs" />
<Compile Include="JackYun\ReturnChangeListResp.cs" />
<Compile Include="JackYun\TradeFullinfogetResp.cs" />
<Compile Include="PayModels\ExtendedGateway.cs" />
<Compile Include="PayModels\FuiouBarcodepay.cs" />

View File

@@ -35,7 +35,7 @@ namespace MyCode.Project.Repositories
FROM [JackOrders] a WITH (NOLOCK)
LEFT JOIN [dbo].[JackOrdersItem] b WITH (NOLOCK)
ON a.id = b.JackOrdersId
WHERE a.status = 0
WHERE a.status = 0 and TradeType in (1,7) and sellCount <> 0
GROUP BY [shopCode],[shopName], [shopId], [warehouseName], [warehouseCode], [status], CONVERT(NVARCHAR(30),[consignTime],23) ,[goodsNo], [goodsId], [barcode] ,[warehouseId], [TradeType],Unit";
var list = this.SelectList<PushOrderListResp>(sql);
return list;
@@ -43,5 +43,31 @@ GROUP BY [shopCode],[shopName], [shopId], [warehouseName], [warehouseCode], [s
#endregion
#region GetPushOrder()
/// <summary>
/// 获取合并后的吉客云订单
/// </summary>
/// <returns></returns>
public List<PushOrderListResp> GetPushReturnOrder()
{
string sql = $@"
SELECT [shopCode], [shopName], [shopId], [warehouseName], [warehouseCode],
[status], CONVERT(NVARCHAR(30),[consignTime],23) [consignTime],
[goodsNo], [goodsId],SUM([sellTotal]*-1) [sellTotal],
SUM([returnCount]*-1) [sellCount], SUM([ShareShouldReturnFee]*-1) AS [divideSellTotal],
[barcode], [TradeType] ,[warehouseId],Unit
FROM [JackOrders] a WITH (NOLOCK)
LEFT JOIN [dbo].[ReturnChangeGoodsDetail] b WITH (NOLOCK)
ON a.id = b.JackOrdersId
WHERE a.status = 0 and [TradeType]=8 and returnCount <> 0
GROUP BY [shopCode],[shopName], [shopId], [warehouseName], [warehouseCode], [status], CONVERT(NVARCHAR(30),[consignTime],23) ,[goodsNo],
[goodsId], [barcode] ,[warehouseId], [TradeType],Unit
ORDER BY [shopCode],[consignTime] desc,[TradeType]
";
var list = this.SelectList<PushOrderListResp>(sql);
return list;
}
#endregion
}
}

View File

@@ -91,6 +91,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="PushKingDeeOrderItemRepository.cs" />
<Compile Include="PushKingDeeOrderRepository.cs" />
<Compile Include="ReturnChangeGoodsDetailRepository.cs" />
<Compile Include="SysWorkprocessRepository.cs" />
<Compile Include="WMStoJackyunInventoryMovementView1Repository.cs" />
<Compile Include="YTKJTShopParameterRepository.cs" />

View File

@@ -0,0 +1,26 @@
using MyCode.Project.Repositories.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyCode.Project.Domain.Message;
using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.Search;
namespace MyCode.Project.Repositories
{
public class ReturnChangeGoodsDetailRepository: Repository<ReturnChangeGoodsDetail>, IReturnChangeGoodsDetailRepository
{
public ReturnChangeGoodsDetailRepository(MyCodeSqlSugarClient context) : base(context)
{ }
}
}

View File

@@ -31,7 +31,7 @@
<!-- 在第三方系统登录授权页面点击“生成测试链接”按钮后即可查看 -->
<add key="X-KDApi-AcctID" value="65229a397eb2e2" />
<add key="X-KDApi-AcctID" value="66d918bdc00906" />
<!-- 第三方系统登录授权的 集成用户名称 -->
@@ -39,15 +39,15 @@
<!-- 若第三方系统登录授权已勾选“允许全部用户登录”,则无以上限制 -->
<add key="X-KDApi-UserName" value="demo" />
<add key="X-KDApi-UserName" value="黄志荣" />
<!-- 第三方系统登录授权的 应用ID -->
<add key="X-KDApi-AppID" value="325373_Q7eD7+GKTkCWRUzEQ/XD1+ytTK692smv" />
<add key="X-KDApi-AppID" value="400925_wYdO4+jLQMDf091IQYTB48WNRjSaXKLu" />
<!-- 第三方系统登录授权的 应用密钥 -->
<add key="X-KDApi-AppSec" value="e0258153efb04c2a911a4ac20639e31a" />
<add key="X-KDApi-AppSec" value="41dfa53b0e634b72b01e303d14fa6e35" />
<!-- 账套语系默认2052 -->
@@ -61,7 +61,7 @@
<!-- 服务Url地址(私有云和公有云都须配置金蝶云星空产品地址K3Cloud/结尾)-->
<add key="X-KDApi-ServerUrl" value="http://127.0.0.1/k3Cloud/" />
<add key="X-KDApi-ServerUrl" value="http://192.168.116.83/k3Cloud/" />
@@ -70,7 +70,7 @@
<!--当前环境,1:生产环境 0开发环境-->
<add key="Env" value="0" />
<!--因公司IP时常变化先用13跳转-->
<add key="RedisAddress" value="" />
<add key="RedisAddress" value="19VhOco9ayRaH41syZnWYn2S46x3FcKIjYKgr6K3L/tu7vmlJvhB0CKrIBfMVl1Y" />
<!--缓存前缀-->
<add key="CachePrefix" value="lxm-report:dev:" />
<!--jwtkey-->

View File

@@ -22,5 +22,13 @@ namespace MyCode.Project.Services
/// <exception cref="BaseException"></exception>
List<TradesItem> testTradeFullInfoGet(DateTime now);
/// <summary>
/// 退货查询
/// </summary>
/// <param name="now">截止日期</param>
/// <returns></returns>
/// <exception cref="BaseException"></exception>
List<TradesItem> GetReturnChangeList(DateTime now);
}
}

View File

@@ -1,4 +1,5 @@
using MyCode.Project.Domain.Message.Response.Common;
using MyCode.Project.Infrastructure.JackYun;
using MyCode.Project.Repositories.Common;
using System.Collections.Generic;
@@ -18,5 +19,25 @@ namespace MyCode.Project.Services
/// <returns></returns>
string GetAndMergeJackYunOrder(string now);
/// <summary>
/// 调度运行抓吉客云退货订单
/// </summary>
/// <param name="now"></param>
void TaskGetReturnChangeList(string now);
/// <summary>
/// 把吉客云退货订单存进本地数据库
/// </summary>
/// <param name="trades"></param>
void SetReturnOrder(List<TradesItem> trades);
/// <summary>
/// 合并吉客云退货订单到新表
/// </summary>
/// <returns></returns>
string GetAndMergeJackReturnYunOrder(string now);
}
}

View File

@@ -19,7 +19,7 @@ namespace MyCode.Project.Services.Implementation
_yTKJTShopParameterRepository = yTKJTShopParameterRepository;
}
DateTime startTime = DateTime.Parse("2025-09-01");
DateTime startTime = DateTime.Parse("2025-08-01");
/// <summary>
/// 请求开放平台服务
/// </summary>
@@ -85,7 +85,7 @@ namespace MyCode.Project.Services.Implementation
requestBizData.EndAuditTime = "";// DateTime.ParseExact(value1, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.StartConsignTime = value;// value;// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.EndConsignTime = value1;// value1;// DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
//requestBizData.TradeStatus = 1010;
//requestBizData.TradeStatus = 1010;
requestBizData.TradeType = 1;
requestBizData.SourceTradeNos = "";
requestBizData.ShopIds = null; // new long[] { 378761130654261100, 378761130654261100 };
@@ -106,7 +106,7 @@ namespace MyCode.Project.Services.Implementation
if (response.code == "200")
{
var orderjson = JsonHelper.ToJson(response.result);
var list1 = JsonHelper.ToObject<TradeFullinfogetResp>(orderjson);
var list1 = JsonHelper.ToObject<TradeFullinfogetResp<TradeFullinfogetData>>(orderjson);
int pageIndex = 1;
@@ -122,7 +122,7 @@ namespace MyCode.Project.Services.Implementation
if (response.code == "200")
{
orderjson = JsonHelper.ToJson(response.result);
list1 = JsonHelper.ToObject<TradeFullinfogetResp>(orderjson);
list1 = JsonHelper.ToObject<TradeFullinfogetResp<TradeFullinfogetData>>(orderjson);
}
}
@@ -139,7 +139,131 @@ namespace MyCode.Project.Services.Implementation
}
#endregion
#region 退
/// <summary>
/// 退货查询
/// </summary>
/// <param name="now">截止日期</param>
/// <returns></returns>
/// <exception cref="BaseException"></exception>
public List<TradesItem> GetReturnChangeList(DateTime now)
{
int total = 1;
var shopConfigs = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
ReturnChangeGetRequestBizData requestBizData = new ReturnChangeGetRequestBizData();
//string value = "2025-06-15 00:00:00";// DateTime.Now.Date.AddDays(-5).ToString("yyyy-MM-dd HH:mm:ss") ;
//string value1 = "2025-06-20 00:00:00";//DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss");
string value = now.Date.AddDays(-7).ToString("yyyy-MM-dd");
string value1 = now.Date.ToString("yyyy-MM-dd");
if (now.Date.AddDays(-7) < startTime)
{
value = startTime.ToString("yyyy-MM-dd");
}
requestBizData.StartModified = "";// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.StartDeliveryDate = value;
requestBizData.EndDeliveryDate = value1;
requestBizData.EndModified = ""; //DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.TradeNo = "";
requestBizData.HasTotal = total;
requestBizData.PageSize = 200;
requestBizData.PageIndex = 0;
requestBizData.StartModified = null;// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
//requestBizData.TradeStatus = 1010;
requestBizData.ShopIds = null; // new long[] { 378761130654261100, 378761130654261100 };
List<int> TradeTypeList = new List<int>();
TradeTypeList.Add(1005);
List<TradesItem> reslut = new List<TradesItem>();
List<ReturnChangeListResp> trades = new List<ReturnChangeListResp>();
TradeTypeList.ForEach(ty =>
{
requestBizData.ProcessStatusList = "";
string lggl = JsonHelper.ToJson(requestBizData);
LogHelper.Info(lggl);
JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.RETURNCHANGE).Value, "1.0", requestBizData);
string ll = JsonHelper.ToJson(response);
LogHelper.Info(ll);
if (response.code == "200")
{
var orderjson = JsonHelper.ToJson(response.result);
var list1 = JsonHelper.ToObject<TradeFullinfogetResp<ReturnChangeData>>(orderjson);
int pageIndex = 1;
int TotalResults = list1.data.TotalResults;
while (requestBizData.PageIndex* requestBizData.PageSize< TotalResults)
{
//list1.data.returnChangeList.ForEach(h => h.TradeType = ty);
trades.AddRange(list1.data.returnChangeList);
requestBizData.PageIndex = pageIndex;
pageIndex++;
Thread.Sleep(100);
response = Call(EnumAttribute.GetAttribute(ApiEnum.RETURNCHANGE).Value, "1.0", requestBizData);
if (response.code == "200")
{
orderjson = JsonHelper.ToJson(response.result);
list1 = JsonHelper.ToObject<TradeFullinfogetResp<ReturnChangeData>>(orderjson);
}
}
}
else
{
string msg = response.msg;
throw new BaseException(msg);
}
});
var shocodes = shopConfigs.Select(t => t.FSHOPCODE).ToList();
trades = trades.Where(t => shocodes.Contains(t.ShopCode)).ToList();
//reslut = trades.Select(t => new TradesItem { tradeId = t.TradeId, couponFee = 0, realFee = 0, shopCode = t.ShopCode ,orderNo=t.ReturnChangeNo, tradeNo =t.TradeNo
//,isDelete=0, mainPostid=t.MainPostid,
// companyName=t.CompanyName,
// flagNames=t.FlagNames,
// shopName=t.ShopName,
// warehouseName=t.WarehouseName
//}).ToList();
reslut = trades.Select(rc => new TradesItem
{
tradeId = rc.TradeAfterId.ToString(),
couponFee = 0,
realFee = 0,
shopCode = rc.ShopCode,
orderNo = rc.ReturnChangeNo,
tradeNo = rc.TradeNo,
isDelete = 0,
mainPostid = rc.MainPostid,
companyName = rc.CompanyName,
flagNames = rc.FlagNames,
shopName = rc.ShopName,
warehouseName = rc.WarehouseName,
warehouseCode = rc.WarehouseCode,
logisticName = rc.LogisticName,
shopId = rc.ShopId.ToString(),
TradeType = 8, // 假设这是售后退货类型
consignTime = !string.IsNullOrWhiteSpace(rc.DeliveryTime) ? (DateTime?)DateTime.Parse(rc.DeliveryTime) : null,
payTime = null, // 可根据需要设置
tradeStatus = int.Parse(rc.TradeAfterStatus), // 注意类型转换
warehouseId = rc.WarehouseId.ToString(),
shopTypeCode = "",
apiType = -114, // 默认值
ReturnChangeGoodsDetail = rc.ReturnChangeGoodsDetail
}).ToList();
return reslut;
}
#endregion
}

View File

@@ -1,18 +1,14 @@
using MyCode.Project.Domain.Message.Response.JackYun;
using MyCode.Project.Domain.Message.Response.JackYun;
using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.JackYun;
using MyCode.Project.Repositories;
using MyCode.Project.Repositories.Common;
using MyCode.Project.Services.IServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MyCode.Project.Services.Implementation
{
@@ -24,6 +20,8 @@ namespace MyCode.Project.Services.Implementation
private IPushKingDeeOrderRepository _pushKingDeeOrderRepository;
private IPushKingDeeOrderItemRepository _pushKingDeeOrderItemRepository;
private IYTKJTShopParameterRepository _yTKJTShopParameterRepository;
private IReturnChangeGoodsDetailRepository _ReturnChangeGoodsDetailRepository;
private IWorkProcessService _workProcessService;
public JackYunTaskService(IJackOrdersRepository jackOrdersRepository
@@ -31,6 +29,7 @@ namespace MyCode.Project.Services.Implementation
, IPushKingDeeOrderRepository pushKingDeeOrderRepository
, IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository
, IYTKJTShopParameterRepository yTKJTShopParameterRepository
, IReturnChangeGoodsDetailRepository returnChangeGoodsDetailRepository
, IJackYunService jackYunService,
IWorkProcessService workProcessService)
{
@@ -39,6 +38,7 @@ namespace MyCode.Project.Services.Implementation
_pushKingDeeOrderItemRepository = pushKingDeeOrderItemRepository;
_jackOrdersRepository = jackOrdersRepository;
_jackOrdersItemRepository = jackOrdersItemRepository;
_ReturnChangeGoodsDetailRepository = returnChangeGoodsDetailRepository;
_jackYunService = jackYunService;
_workProcessService = workProcessService;
}
@@ -125,7 +125,7 @@ namespace MyCode.Project.Services.Implementation
list.ForEach(sheet =>
{
if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId
&& t.ConsignTime.Value.ToString("yyyy-MM-dd")==sheet.ConsignTime).Count() > 0)
&& t.ConsignTime.Value.ToString("yyyy-MM-dd")==sheet.ConsignTime && t.TradeType != 8).Count() > 0)
{
return;
}
@@ -178,7 +178,146 @@ namespace MyCode.Project.Services.Implementation
return JsonHelper.ToJson(list);
}
#endregion
#endregion
#region TaskGetReturnChangeList(退)
/// <summary>
/// 调度运行抓吉客云退货订单
/// </summary>
/// <param name="now"></param>
public void TaskGetReturnChangeList(string now)
{
DateTime runTime = DateTime.Parse(now);
var list = _jackYunService.GetReturnChangeList(runTime);
SetReturnOrder(list);
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackReturnYunOrder", "合并吉客云退货订单到新表", now, 1);
}
#endregion
#region SetReturnOrder(退)
/// <summary>
/// 把吉客云退货订单存进本地数据库
/// </summary>
/// <param name="trades"></param>
[TransactionCallHandler]
public void SetReturnOrder(List<TradesItem> trades)
{
var ids = trades.Select(t => t.tradeId).Distinct().ToList();
ids = _jackOrdersRepository.Queryable().Where(t => ids.Contains(t.TradeId)).Select(t => t.TradeId).Distinct().ToList();
if (ids.Count > 0)
trades = trades.Where(t => !ids.Contains(t.tradeId)).ToList();
List<JackOrders> jackOrdersList = new List<JackOrders>();
List<ReturnChangeGoodsDetail> ordersItemList = new List<ReturnChangeGoodsDetail>();
var shopConfig = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
var shopCodeList = shopConfig.Select(t => t.FSHOPCODE).ToList();
trades.ForEach(t =>
{
if (shopCodeList.Contains(t.shopCode))
{
JackOrders jackOrders = new JackOrders();
jackOrders = AutoMapperHelper.AutoMappToSingle<JackOrders, TradesItem>(t);
jackOrders.Id = Guid.NewGuid();
jackOrders.Status = 0;
jackOrders.UpdateTime = DateTime.Now;
jackOrders.CreateTime = DateTime.Now;
if (t.ReturnChangeGoodsDetail != null)
{
var items = AutoMapperHelper.AutoMappToList< ReturnChangeGoodsDetail, JkyReturnChangeGoodsDetail>(t.ReturnChangeGoodsDetail);
items.ForEach(k =>
{
k.JackOrdersId = jackOrders.Id;
});
jackOrdersList.Add(jackOrders);
ordersItemList.AddRange(items);
}
}
});
if (jackOrdersList.Count > 0)
{
_jackOrdersRepository.Add(jackOrdersList);
_ReturnChangeGoodsDetailRepository.Add(ordersItemList);
}
}
#endregion
#region GetAndMergeJackReturnYunOrder(退)
/// <summary>
/// 合并吉客云退货订单到新表
/// </summary>
/// <returns></returns>
[TransactionCallHandler]
public string GetAndMergeJackReturnYunOrder(string now)
{
var list = _jackOrdersItemRepository.GetPushReturnOrder();
List<string> mesg = new List<string>();
var shopParemList = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
List<PushKingDeeOrderItem> pushKingDeeOrderItems = new List<PushKingDeeOrderItem>();
List<PushKingDeeOrder> pushKingDeeOrders = new List<PushKingDeeOrder>();
list.ForEach(sheet =>
{
if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId
&& t.ConsignTime.Value.ToString("yyyy-MM-dd") == sheet.ConsignTime && t.TradeType==8).Count() > 0)
{
return;
}
PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder();
pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrder, PushOrderListResp>(sheet);
pushKingDeeOrder.Id = Guid.NewGuid();
pushKingDeeOrder.CreateTime = DateTime.Now;
pushKingDeeOrder.UpdateTime = DateTime.Now;
pushKingDeeOrders.Add(pushKingDeeOrder);
var tempList = list.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId && sheet.ConsignTime == t.ConsignTime).ToList();
tempList.ForEach(item =>
{
PushKingDeeOrderItem pushKingDeeOrderItem = new PushKingDeeOrderItem();
pushKingDeeOrderItem = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrderItem, PushOrderListResp>(item);
pushKingDeeOrderItem.PushKingDeeOrderId = pushKingDeeOrder.Id;
pushKingDeeOrderItem.Id = Guid.NewGuid();
pushKingDeeOrderItems.Add(pushKingDeeOrderItem);
});
//var shopParem = shopParemList.Where(h => h.FSHOPCODE == sheet.ShopId.Value.ToString()&& h.FWAREHOUSE.Value.ToString()==sheet.WarehouseId ).FirstOrDefault();
//if (shopParem != null)
//{
//}
//else
//{
// mesg.Add($@"店铺{sheet.ShopName}没有配置店铺参数或者配置的仓库不是 {sheet.WarehouseCode}");
//}
});
if (pushKingDeeOrders.Count > 0)
{
var oldList = _jackOrdersRepository.Queryable().Where(t => t.Status == 0).ToList();
oldList.ForEach(t =>
{
if (pushKingDeeOrders.Count(h => h.ShopId == t.ShopId && t.WarehouseId == h.WarehouseId) > 0)
{
t.Status = 1;
t.UpdateTime = DateTime.Now;
}
});
oldList = oldList.Where(t => t.Status == 1).ToList();
_jackOrdersRepository.Update(oldList);
_pushKingDeeOrderRepository.Add(pushKingDeeOrders);
_pushKingDeeOrderItemRepository.Add(pushKingDeeOrderItems);
}
pushKingDeeOrders.ForEach(t =>
{
_workProcessService.Add<IOrderPushService>(this.MerchantId, "PushOrderToKingDee", "推送退货订单到云星空或者WMS", t.Id, 1);
Thread.Sleep(300);
});
return JsonHelper.ToJson(list);
}
#endregion
}
}

View File

@@ -143,8 +143,8 @@ namespace MyCode.Project.Services.Implementation
CustomerId = param.FCANGKUHUOZHU, // 货主ID
Sku = n.Barcode,
Barcode = n.Barcode,
OrderQty = n.SellCount,
OrderPrice = Math.Round(n.DivideSellTotal / n.SellCount, 10),
OrderQty =Math.Abs( n.SellCount),
OrderPrice = Math.Abs( Math.Round(n.DivideSellTotal /(n.SellCount), 10)),
ItemId = n.GoodsNo, // 商品
LocationId = param.FWAREHOUSECODE,
CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),

View File

@@ -44,6 +44,7 @@ namespace MyCode.Project.Services.Implementation
DateTime now = DateTime.Now.Date;
_workProcessService.Add<IWMSService>(this.MerchantId, "GetList", "抓取WMS订单到本地数据库", now.AddDays(-3).ToString("yyyy-MM-dd"), 1);
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "TaskGetJackYunOrder", "调度运行抓吉客云销售订单", now.ToString("yyyy-MM-dd"), 1);
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "TaskGetReturnChangeList", "调度运行抓吉客云退货订单", now.ToString("yyyy-MM-dd"), 1);
}
#endregion

View File

@@ -5,6 +5,7 @@ using MyCode.Project.Services.Implementation;
using MyCode.Project.Services.IServices;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web.Http;
namespace MyCode.Project.WebApi.Controllers
@@ -54,6 +55,19 @@ namespace MyCode.Project.WebApi.Controllers
#endregion
#region 退
/// <summary>
/// 调度运行抓吉客云退货订单
/// </summary>
[HttpGet]
[AllowAnonymous]
public void TaskGetReturnChangeList(string now)
{
_jackYunTaskService.TaskGetReturnChangeList(now);
}
#endregion
#region WMS订单
/// <summary>
/// 抓WMS订单
@@ -78,6 +92,46 @@ namespace MyCode.Project.WebApi.Controllers
}
#endregion
#region 退
/// <summary>
/// 合并吉客云退货订单到新表
/// </summary>
[HttpGet]
[AllowAnonymous]
public string GetAndMergeJackReturnYunOrder(string now)
{
return _jackYunTaskService.GetAndMergeJackReturnYunOrder(now);
}
#endregion
/// <summary>
/// 替换或添加URL中的端口号支持指定协议
/// </summary>
/// <param name="input"></param>
/// <param name="newPort"></param>
/// <param name="protocol"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public string ReplaceOrAddPortAdvanced(string input, string newPort, string protocol = "http")
{
// 构建协议特定的模式
string protocolPattern = string.IsNullOrEmpty(protocol) ? @"(https?|ftp)://" : $"{protocol}://";
// 匹配已有端口号
string patternWithPort = $@"({protocolPattern}[^/]+?):\d+";
// 匹配没有端口号
string patternWithoutPort = $@"({protocolPattern}[^/:/]+)(?=/|$)";
// 先尝试替换已有端口号
string result = Regex.Replace(input, patternWithPort, $"$1:{newPort}");
// 如果没有端口号被替换,尝试添加端口号
if (result == input)
result = Regex.Replace(input, patternWithoutPort, $"$1:{newPort}");
return result;
}
//#region 订单查询

View File

@@ -0,0 +1,263 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=301879
-->
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-type,Authorization,*" />
<add name="Access-Control-Request-Headers" value="*" />
<add name="Access-Control-Request-Method" value="*" />
<add name="Access-Control-Allow-Credentials" value="*" />
<add name="Access-Control-Max-Age" value="1728000" />
</customHeaders>
</httpProtocol>
</system.webServer>
<connectionStrings>
<!-- 数据库测试-->
<!--<add name="WMSConn" connectionString="Data Source=192.168.221.155; Initial Catalog=ESB_DTC; User ID=app_k3;Password=Postman2025k3; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun2" providerName="System.Data.SqlClient" />
<add name="YunTongConn" connectionString="Data Source=192.168.116.209; Initial Catalog=K3ZMFS_0905; User ID=sa;Password=Ac661978!; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun1" providerName="System.Data.SqlClient" />-->
<add name="WMSConn" connectionString="Data Source=127.0.0.1; Initial Catalog=yuntong; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun2" providerName="System.Data.SqlClient" />
<add name="YunTongConn" connectionString="Data Source=127.0.0.1; Initial Catalog=yuntong; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun1" providerName="System.Data.SqlClient" />
<add name="YunTongConn" connectionString="Data Source=172.100.1.148; Initial Catalog=AIS20221018145647; User ID=sa;Password=YT3059**!@#; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun1" providerName="System.Data.SqlClient" />
<add name="WMSConn" connectionString="Data Source=172.16.18.87; Initial Catalog=ESB_DTC; User ID=app_k3;Password=Postman2025k3; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun2" providerName="System.Data.SqlClient" />
<!--测试MYSQL内网-->
<!--<add name="MasterConn" connectionString="" providerName="MySql.Data.MySqlClient" />-->
</connectionStrings>
<appSettings>
<!-- 当前使用的 账套ID(即数据中心id) -->
<!-- 第三方系统登录授权的账套ID即open.kingdee.com网站的第三方系统登录授权中的数据中心标识-->
<!-- 在第三方系统登录授权页面点击“生成测试链接”按钮后即可查看 -->
<add key="X-KDApi-AcctID" value="66d918bdc00906" />
<!-- 第三方系统登录授权的 集成用户名称 -->
<!-- 补丁版本为PT-146894 [7.7.0.202111]及后续的版本,则为指定用户登录列表中任一用户 -->
<!-- 若第三方系统登录授权已勾选“允许全部用户登录”,则无以上限制 -->
<add key="X-KDApi-UserName" value="黄志荣" />
<!-- 第三方系统登录授权的 应用ID -->
<add key="X-KDApi-AppID" value="400925_wYdO4+jLQMDf091IQYTB48WNRjSaXKLu" />
<!-- 第三方系统登录授权的 应用密钥 -->
<add key="X-KDApi-AppSec" value="41dfa53b0e634b72b01e303d14fa6e35" />
<!-- 账套语系默认2052 -->
<add key="X-KDApi-LCID" value="2052" />
<!-- 组织编码,启用多组织时配置对应的组织编码才有效 -->
<!--<add key="X-KDApi-OrgNum" value="*****"/>-->
<!-- 服务Url地址(私有云和公有云都须配置金蝶云星空产品地址K3Cloud/结尾)-->
<add key="X-KDApi-ServerUrl" value="http://192.168.116.83/k3Cloud/" />
<!--解决swagger出错问题-->
<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
<!--当前环境,1:生产环境 0开发环境-->
<add key="Env" value="0" />
<!--因公司IP时常变化先用13跳转-->
<add key="RedisAddress" value="" />
<!--缓存前缀-->
<add key="CachePrefix" value="" />
<!--jwtkey-->
<add key="JwtKey" value="t9Hu5zhiFWunJR1+XDrUM6Jp2aAvTjOa/XoxOrZ7bbI=" />
<!--是否输出Sql命令0:不输出 1:输出-->
<add key="OutputSql" value="0" />
<!--是否输出请求日志-->
<add key="OutputRequstLog" value="1" />
<!--本地上传的存放路径-->
<add key="UploadFolder" value="D:\" />
<!--取消owin启动-->
<add key="owin:AutomaticAppStartup" value="false" />
<!--钉钉通知机器人-->
<add key="DingDingApiUrl" value="" />
<!--区域层增加的前缀路径-->
<add key="AreaUrlPrePath" value="" />
<!--生产环境D:\publish\lxm-report-api\App_File\-->
<!--服务器文件保存的路径这里调度用如果是webapi则不需要用这个-->
<add key="AppFilePath" value="D:\publish\LxmReportApi\api\App_File\" />
<!--<add key="AppFilePath" value="D:\App_File\" />-->
<add key="WebSocketUrl" value="ws://127.0.0.1:9798/" />
</appSettings>
<!--
有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。
可在 <httpRuntime> 标记上设置以下特性。
<system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>
-->
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.8" />
<httpRuntime targetFramework="4.6.1" />
<customErrors mode="Off" />
</system.web>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name="File" value="App_Log\Error\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="30" />
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2008-08-31.log-->
<param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %logger" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="ERROR" />
<filter type="log4net.Filter.DenyAllFilter" />
</filter>
</appender>
<appender name="InfoLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name="File" value="App_Log\Info\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="30" />
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2008-08-31.log-->
<param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %logger" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
<filter type="log4net.Filter.DenyAllFilter" />
</filter>
</appender>
<!-- MySQL Appender -->
<!--<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
<connectionString value="Server=;port=3306;Database=;Uid=;Pwd=;charset=utf8mb4" />
<commandText value="INSERT INTO api_log (level,message,api_type,create_time) VALUES (?log_level,?message,4, ?log_date)" />
<parameter>
<parameterName value="?log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="?log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="?message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>-->
<root>
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低)-->
<level value="ALL" />
<appender-ref ref="InfoLogFileAppender" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="AdoNetAppender" />
</root>
</log4net>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -22,9 +22,11 @@
</system.webServer>
<connectionStrings>
<!-- 数据库测试-->
<add name="WMSConn" connectionString="Data Source=172.16.18.87; Initial Catalog=ESB_DTC; User ID=app_k3;Password=Postman2025k3; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun2" providerName="System.Data.SqlClient" />
<add name="YunTongConn" connectionString="Data Source=127.0.0.1; Initial Catalog=yuntong; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun1" providerName="System.Data.SqlClient" />
<!--测试MYSQL内网-->
<add name="WMSConn" connectionString="Data Source=127.0.0.1; Initial Catalog=yuntong; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun2" providerName="System.Data.SqlClient" />
<add name="YunTongConn" connectionString="Data Source=127.0.0.1; Initial Catalog=yuntong; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=JiKeYun1" providerName="System.Data.SqlClient" />
<!--测试MYSQL内网-->
<!--<add name="MasterConn" connectionString="" providerName="MySql.Data.MySqlClient" />-->
</connectionStrings>
<appSettings>
@@ -33,15 +35,15 @@
<!-- 当前使用的 账套ID(即数据中心id) -->
<!-- 第三方系统登录授权的账套ID即open.kingdee.com网站的第三方系统登录授权中的数据中心标识-->
<!-- 在第三方系统登录授权页面点击“生成测试链接”按钮后即可查看 -->
<add key="X-KDApi-AcctID" value="65229a397eb2e2" />
<add key="X-KDApi-AcctID" value="654dcb96b00765" />
<!-- 第三方系统登录授权的 集成用户名称 -->
<!-- 补丁版本为PT-146894 [7.7.0.202111]及后续的版本,则为指定用户登录列表中任一用户 -->
<!-- 若第三方系统登录授权已勾选“允许全部用户登录”,则无以上限制 -->
<add key="X-KDApi-UserName" value="demo" />
<add key="X-KDApi-UserName" value="API" />
<!-- 第三方系统登录授权的 应用ID -->
<add key="X-KDApi-AppID" value="325373_Q7eD7+GKTkCWRUzEQ/XD1+ytTK692smv" />
<add key="X-KDApi-AppID" value="401100_Te8pSzHvRuHfQ/TuWfXsSY8GQKR/QoMo" />
<!-- 第三方系统登录授权的 应用密钥 -->
<add key="X-KDApi-AppSec" value="e0258153efb04c2a911a4ac20639e31a" />
<add key="X-KDApi-AppSec" value="74b800916ed64ff081734856c9301d13" />
<!-- 账套语系默认2052 -->
<add key="X-KDApi-LCID" value="2052" />
<!-- 组织编码,启用多组织时配置对应的组织编码才有效 -->