Compare commits

47 Commits

Author SHA1 Message Date
4766ddf18c 退货类型订单 2025-10-20 16:25:51 +08:00
c8ad77df21 9 2025-10-18 18:33:55 +08:00
71f1368e6b 1 2025-10-18 15:05:26 +08:00
316e78f4f2 11 2025-10-17 17:54:23 +08:00
f42519dd61 1 2025-10-16 19:32:10 +08:00
0a28417898 9 2025-10-15 20:03:27 +08:00
e9d7d9c9ae 11 2025-09-19 09:52:24 +08:00
7a212d5890 1 2025-09-04 15:34:57 +08:00
13bf2695dc 1 2025-08-12 19:38:21 +08:00
8de5bbe2a1 11 2025-08-12 14:11:01 +08:00
19724363af 1 2025-08-11 17:33:46 +08:00
a17e3d2807 11 2025-08-11 17:32:59 +08:00
a4f40a4e47 修复一些BUG 2025-08-11 13:30:29 +08:00
be8f4f17ae 11 2025-08-01 10:02:52 +08:00
d5410caafe 11 2025-07-30 11:36:45 +08:00
44462fce14 1 2025-07-29 10:12:36 +08:00
de8447bece 111 2025-07-28 17:28:21 +08:00
6335e88415 0 2025-07-28 14:29:34 +08:00
e790bd1517 修改Web.Config为正式环境的变量 2025-07-28 12:36:29 +08:00
9eb9b63524 新增日志调度Id 2025-07-28 12:04:37 +08:00
855706e9ca 修复系统参数在没审核时也生效的问题 2025-07-28 11:57:11 +08:00
1e85ccf537 11 2025-07-26 18:31:01 +08:00
74dd275168 1111 2025-07-25 22:23:48 +08:00
a5ed0ba6c3 11 2025-07-25 11:07:58 +08:00
68c41a3431 0 2025-07-23 18:07:21 +08:00
ec335d585a 0 2025-07-23 16:11:35 +08:00
c50652de25 将WMS的地址添加到Web.Config中 2025-07-23 14:33:16 +08:00
Administrator
c6fd76f937 Merge branch 'jackYun' of http://8.130.121.29:3000/yuyubo/YunTongJackYunTask into jackYun 2025-07-23 14:27:56 +08:00
Administrator
db6f97a954 0 2025-07-23 14:27:52 +08:00
b454163569 0 2025-07-23 14:09:48 +08:00
49c39d3bf4 0 2025-07-23 13:50:12 +08:00
f8f23c5a31 0 2025-07-23 11:39:14 +08:00
Administrator
25a1e710da 0 2025-07-23 11:37:03 +08:00
Administrator
ef93f1ca19 Merge branch 'jackYun' of http://8.130.121.29:3000/yuyubo/YunTongJackYunTask into jackYun 2025-07-23 11:34:45 +08:00
Administrator
7b06ea967a 0 2025-07-23 11:34:41 +08:00
77807cf3cc 0 2025-07-23 11:34:05 +08:00
57ac7284c1 1 2025-07-23 11:01:40 +08:00
564f5720af Merge branch 'jackYun' of http://8.130.121.29:3000/yuyubo/YunTongJackYunTask into jackYun 2025-07-22 15:14:18 +08:00
7f31d9664f 7天 2025-07-22 15:14:10 +08:00
782737d29c 0 2025-07-22 14:09:36 +08:00
ff93525afe 0 2025-07-22 14:09:17 +08:00
Administrator
81c63c1fc9 0 2025-07-22 13:57:07 +08:00
Administrator
9530c0bba1 Merge branch 'jackYun' of http://8.130.121.29:3000/yuyubo/YunTongJackYunTask into jackYun 2025-07-22 10:56:54 +08:00
ecd750ec06 Merge branch 'jackYun' of http://8.130.121.29:3000/yuyubo/YunTongJackYunTask into jackYun 2025-07-22 10:54:00 +08:00
dee74cbf73 0 2025-07-22 10:53:57 +08:00
Administrator
66643a86f4 1 2025-07-22 10:53:30 +08:00
Administrator
019992fc61 1 2025-07-22 10:52:28 +08:00
50 changed files with 2101 additions and 312 deletions

View File

@@ -28,7 +28,7 @@
<!--生产MYSQL外网-->
<add name="MasterConn" connectionString="uYQMlgrT7yPCM5hH1R9pwX1avjzJOodMR+BJKv8zn8fRS17LbVzxaCNMZeAjOqon2XacDYaEbPFIJvcXkoeqZSUe5jXN+feDhdzpoUuZW7m6/cE5zlfMnn4sARvQ1w09ATqFjkP9HIxwpq3BCrQEzg==" providerName="MySql.Data.MySqlClient" />
<!--流行美生产数据库-->
<!--生产数据库-->
<add name="LxmConn" connectionString="hnNuF+qU5pHG0wDjHFsJt6YwEDw8k3B5EGVxNIeRyYPb8RZVGDR8Uwfz0yuMYSmad1azdNXW8R92X4P6TtYlgO2oFvOFfuhkHGAPEiK0nv+Djc60jdmZKKuv87FPnRXvkA3Phxleh+MyDzHUy1RZTcESrwbjSuz2JR6qmud4eTgVjlKsTjK1s1drvFlzOBOvXr5mLFbnPfdAFmICP6fbCcl07yfSaRUIDyXEi7jdL6bVAEhuBKxRaVJf7GZkkoIG" providerName="System.Data.SqlClient" />
</connectionStrings>

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

@@ -1,6 +1,7 @@

using System;
using System.Collections.Generic;
using System.Diagnostics.SymbolStore;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -66,6 +67,11 @@ namespace MyCode.Project.Domain.Message.Request.KingDee
/// </summary>
public object Model { get; set; }
/// <summary>
/// 自动提交并审核
/// </summary>
public bool IsAutoSubmitAndAudit { get; set; }
}
}

View File

@@ -12,6 +12,6 @@ namespace MyCode.Project.Domain.Message.Response.KingDee.K3Result
/// <summary>
/// 返回对象
/// </summary>
public KingdeeResult Result { get; set; }
public K3CloudResult Result { get; set; }
}
}

View File

@@ -5,7 +5,7 @@ namespace MyCode.Project.Domain.Message.Response.KingDee.K3Result.Model
/// <summary>
/// 响应对象
/// </summary>
public class ResponseStatus
public class K3CloudResponseStatus
{
/// <summary>
/// 错误代码
@@ -18,15 +18,15 @@ namespace MyCode.Project.Domain.Message.Response.KingDee.K3Result.Model
/// <summary>
/// 错误信息列表
/// </summary>
public List<ResultInfo> Errors { get; set; }
public List<K3CloudResultInfo> Errors { get; set; }
/// <summary>
/// 成功实体
/// </summary>
public List<SuccessEntity> SuccessEntitys { get; set; }
public List<K3CloudSuccessEntity> SuccessEntitys { get; set; }
/// <summary>
/// 成功消息
/// </summary>
public List<ResultInfo> SuccessMessages { get; set; }
public List<K3CloudResultInfo> SuccessMessages { get; set; }
/// <summary>
/// 消息代码
/// </summary>

View File

@@ -3,17 +3,17 @@
/// <summary>
/// 返回类
/// </summary>
public class KingdeeResult
public class K3CloudResult
{
/// <summary>
/// 响应对象
/// </summary>
public ResponseStatus ResponseStatus { get; set; }
public K3CloudResponseStatus ResponseStatus { get; set; }
/// <summary>
/// 转换响应对象
/// </summary>
public ResponseStatus ConvertResponseStatus { get; set; }
public K3CloudResponseStatus ConvertResponseStatus { get; set; }
/// <summary>
/// 返回结果,用于查看单据

View File

@@ -3,7 +3,7 @@
/// <summary>
/// 金蝶云星空查看错误信息类
/// </summary>
public class ResultInfo
public class K3CloudResultInfo
{
/// <summary>
/// 字段名称

View File

@@ -3,7 +3,7 @@
/// <summary>
/// 成功实体
/// </summary>
public class SuccessEntity
public class K3CloudSuccessEntity
{
/// <summary>
/// 单据Id

View File

@@ -1,10 +0,0 @@
namespace MyCode.Project.Domain.Message.Response.KingDee.K3Result.Model
{
/// <summary>
/// 成功信息
/// </summary>
public class SuccessMessage
{
}
}

View File

@@ -6,11 +6,14 @@ using System.Threading.Tasks;
namespace MyCode.Project.Domain.Message.Response.WMS
{
/// <summary>
/// WMS响应对象
/// </summary>
public class WMSResponse
{
public int Code { get; set; }
public int? Code { get; set; }
public string Message { get; set; }
public Dictionary<string, string> Value { get; set; }
public int View { get; set; }
public int? View { get; set; }
}
}

View File

@@ -202,5 +202,13 @@ namespace MyCode.Project.Domain.Model
/// </summary>
public string Unit {get;set;}
/// <summary>
/// Desc:分摊后金额
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName="shareFavourableAfterFee")]
public decimal? ShareFavourableAfterFee {get;set;}
}
}

View File

@@ -110,5 +110,13 @@ namespace MyCode.Project.Domain.Model
/// </summary>
public int? TradeType {get;set;}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsIdentity=true)]
public int Sheet {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

@@ -128,5 +128,12 @@ namespace MyCode.Project.Domain.Model
/// </summary>
public int? Priority {get;set;}
/// <summary>
/// Desc:程序执行结果返回内容
/// Default:
/// Nullable:True
/// </summary>
public string Result {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" />
@@ -81,11 +82,10 @@
<Compile Include="Message\Response\JackYun\PushOrderListResp.cs" />
<Compile Include="Message\Response\KingDee\ErrorResponse.cs" />
<Compile Include="Message\Response\KingDee\K3Result\K3ApiResult.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\KingdeeResult.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\ResponseStatus.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\ResultInfo.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\SuccessEntity.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\SuccessMessage.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\K3CloudResult.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\K3CloudResponseStatus.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\K3CloudResultInfo.cs" />
<Compile Include="Message\Response\KingDee\K3Result\Model\K3CloudSuccessEntity.cs" />
<Compile Include="Message\Response\LxmZHMDReport\ReportCalRateResp.cs" />
<Compile Include="Message\Response\Queue\QueueProcess.cs" />
<Compile Include="Message\Response\User\AdminLoginInfo.cs" />
@@ -99,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" />
@@ -110,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

@@ -33,25 +33,25 @@ namespace MyCode.Project.Infrastructure.Constant
/// </summary>
public static string HasDownloadZipCacheKey = "HasDownloadZipCacheKey";
/// <summary>
/// 冰芙云店铺id列表
/// </summary>
public static string BfyShopListByLoginIdKey = "BfyShopListByLoginIdKey";
///// <summary>
///// 冰芙云店铺id列表
///// </summary>
//public static string BfyShopListByLoginIdKey = "BfyShopListByLoginIdKey";
/// <summary>
/// 冰芙云店铺id列表
/// </summary>
public static string GetShopIdsByOrganizationId = "GetShopIdsByOrganizationId";
///// <summary>
///// 冰芙云店铺id列表
///// </summary>
//public static string GetShopIdsByOrganizationId = "GetShopIdsByOrganizationId";
/// <summary>
/// 拿流行美卡数据的Key
/// </summary>
public static string LxmOrderDataCacheKey = "lastupdate";
///// <summary>
///// 拿流行美卡数据的Key
///// </summary>
//public static string LxmOrderDataCacheKey = "lastupdate";
/// <summary>
/// 拿流行美卡数据的Key
/// </summary>
public static string UpdateLxmOrderDataCacheKey = "UpdateLxmOrderData";
///// <summary>
///// 拿流行美卡数据的Key
///// </summary>
//public static string UpdateLxmOrderDataCacheKey = "UpdateLxmOrderData";
/// <summary>
/// 得到最后服务单时间
@@ -63,29 +63,29 @@ namespace MyCode.Project.Infrastructure.Constant
/// </summary>
public static string LxmLastCalMoreThan500TimeCacheKey = "MoreThan500Time";
/// <summary>
/// 流行美使用天数数据的缓存key
/// </summary>
public static string LxmUseSysDaysCacheKey = "LxmUseSysDays";
///// <summary>
///// 流行美使用天数数据的缓存key
///// </summary>
//public static string LxmUseSysDaysCacheKey = "LxmUseSysDays";
/// <summary>
/// 宝典新会员销售计划缓存KEY
/// </summary>
public static string BaoDianNewMemberPackageListCacheKey = "BaoDianNewMemberPackageList";
///// <summary>
///// 宝典新会员销售计划缓存KEY
///// </summary>
//public static string BaoDianNewMemberPackageListCacheKey = "BaoDianNewMemberPackageList";
/// <summary>
/// 宝典老会员销售计划缓存KEY
/// </summary>
public static string BaoDianOldMemberPackageListCacheKey = "BaoDianOldMemberPackageList";
///// <summary>
///// 宝典老会员销售计划缓存KEY
///// </summary>
//public static string BaoDianOldMemberPackageListCacheKey = "BaoDianOldMemberPackageList";
/// <summary>
/// 宝典销售计划缓存KEY
/// </summary>
public static string BaoDianSalasPackageListCacheKey = "BaoDianSalasPackageList";
///// <summary>
///// 宝典销售计划缓存KEY
///// </summary>
//public static string BaoDianSalasPackageListCacheKey = "BaoDianSalasPackageList";
/// <summary>
/// 得到最后销售套餐时间
/// </summary>
public static string LastSalesServiceSetidBookTimeCacheKey = "LastSalesServiceSetidBookTime";
///// <summary>
///// 得到最后销售套餐时间
///// </summary>
//public static string LastSalesServiceSetidBookTimeCacheKey = "LastSalesServiceSetidBookTime";
}
}

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

@@ -26,18 +26,18 @@ namespace MyCode.Project.Infrastructure.JackYun
/// <summary>
/// 在吉客云开放平台上申请的Appekey
/// </summary>
private const string APPKEY = "21578653";
private const string APPKEY = "71030238";//"21578653";
/// <summary>
/// 在吉客云开放平台上申请的AppeSecret
/// </summary>
private const string APPSECRET = "d6ea919cb75a44879fcdbea211066b9c";
private const string APPSECRET = "0fbe36cc4308405cacadf516338be4c8";// "d6ea919cb75a44879fcdbea211066b9c";
/// <summary>
///
/// </summary>
private const string Token = "";
private const string Token = "c5cd87bb574483e8dd6acbf72f577fe0";
/// <summary>
/// 吉客云开放平台网关
/// </summary>

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

@@ -97,7 +97,15 @@ namespace MyCode.Project.Infrastructure.JackYun
/// Default:
/// Nullable:True
/// </summary>
public string Unit { get; set; }
public string unit { get; set; }
/// <summary>
/// Desc:分摊后金额
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "shareFavourableAfterFee")]
public decimal? ShareFavourableAfterFee { get; set; }
}
@@ -110,11 +118,11 @@ namespace MyCode.Project.Infrastructure.JackYun
/// <summary>
///
/// </summary>
public int couponFee { get; set; }
public decimal couponFee { get; set; }
/// <summary>
///
/// </summary>
public int realFee { get; set; }
public decimal realFee { get; set; }
/// <summary>
/// 店铺编码
/// </summary>
@@ -185,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>
@@ -212,6 +226,14 @@ namespace MyCode.Project.Infrastructure.JackYun
/// </summary>
public DateTime? consignTime { get; set; }
/// <summary>
/// Desc:分摊后金额
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "shareFavourableAfterFee")]
public decimal? ShareFavourableAfterFee { get; set; }
}
public class TradeFullinfogetData
@@ -231,7 +253,7 @@ namespace MyCode.Project.Infrastructure.JackYun
public string scrollId { get; set; }
}
public class TradeFullinfogetResp
public class TradeFullinfogetResp<T>
{
/// <summary>
///
@@ -240,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

@@ -11,7 +11,7 @@ namespace MyCode.Project.OutSideService
/// <param name="formId"></param>
/// <param name="billSave"></param>
/// <returns></returns>
ResponseStatus Save(string formId, BillSave billSave);
K3CloudResponseStatus Save(string formId, BillSave billSave);
}

View File

@@ -91,19 +91,19 @@ namespace MyCode.Project.OutSideService.Implementation
/// <param name="formId"></param>
/// <param name="billSave"></param>
/// <returns></returns>
public ResponseStatus Save(string formId, BillSave billSave)
public K3CloudResponseStatus Save(string formId, BillSave billSave)
{
var id = Guid.NewGuid();
staClient = GetK3CloudClient();
var datastr = JsonHelper.ToJson(billSave, false, false, true);
LogHelper.Info(datastr);
LogHelper.Info("调度Id:" + id + ",金蝶云接口请求:" + datastr);
var resultString = staClient.Save(formId, datastr);
LogHelper.Info("调度Id:" + id + "金蝶云接口响应:" + resultString);
var result = JsonHelper.ToObject<K3ApiResult>(resultString);
if (!result.Result.ResponseStatus.IsSuccess)
{
LogHelper.Error("金蝶云接口调用失败,请检查");
LogHelper.Error(resultString);
string Message = string.Join(",", result.Result.ResponseStatus.Errors.Select(t => t.Message).ToList());
throw new Exception("云星空接口调用失败,请联系管理员,错误信息:" + Message);
string Message = string.Join("\r\n", result.Result.ResponseStatus.Errors.Select(t => t.Message).ToList());
throw new Exception("调度Id:" + id + "云星空接口调用失败,错误信息:" + Message);
}
var data = result.Result.ResponseStatus;
return data;

View File

@@ -30,12 +30,12 @@ namespace MyCode.Project.Repositories
SELECT [shopCode], [shopName], [shopId], [warehouseName], [warehouseCode],
[status], CONVERT(NVARCHAR(30),[consignTime],23) [consignTime],
[goodsNo], [goodsId],SUM([sellTotal]) [sellTotal],
SUM([sellCount]) [sellCount], SUM([divideSellTotal]) AS [divideSellTotal],
SUM([sellCount]) [sellCount], SUM([shareFavourableAfterFee]) AS [divideSellTotal],
[barcode], [TradeType] ,[warehouseId],Unit
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

@@ -25,7 +25,7 @@ namespace MyCode.Project.Repositories.ZHMD
public List<WMStoJackyunInventoryMovementView1> GetList(DateTime now)
{
now = now.Date;
string sql = $@"select TOP 100 * from [WMStoJackyun_InventoryMovement_View]
string sql = $@"select 0 Status , * from [WMStoJackyun_InventoryMovement_View]
where [过账日期]>='{now}'
ORDER BY [单据号],[单据行号]";
var list = this.SelectList<WMStoJackyunInventoryMovementView1>(sql);

View File

@@ -14,8 +14,12 @@
<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=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" />
</connectionStrings>
<appSettings>

View File

@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<Jobs>
<job name="EveryTimeJob" desc="定时执行的调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryJob,MyCode.Project.ScheduleTask" CronExpression="*/10 * * * * ?" runonce="false"/>
<job name="AddOrderJob" desc="添加抓单的调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AddOrderJob,MyCode.Project.ScheduleTask" CronExpression="*/10 * * * * ?" runonce="false"/>
<job name="AddOrderJob" desc="添加抓单的调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AddOrderJob,MyCode.Project.ScheduleTask" CronExpression="0 0 3 * * ?" runonce="false"/>
<job name="AddWMSOrderJob" desc="添加抓单的调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AddWMSOrderJob,MyCode.Project.ScheduleTask" CronExpression="0 */15 * * * ?" runonce="false"/>
</Jobs>
<!--
<job name="CalOrderMoreThan500Job" desc="计算消费超过500" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.CalOrderMoreThan500Job,MyCode.Project.ScheduleTask" CronExpression="*/10 * * * * ?" runonce="false" />
<job name="AnsyLxmBaseDataJob" desc="同步流行美基础资料任务" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AnsyLxmBaseDataJob,MyCode.Project.ScheduleTask" CronExpression="0 0 1 * * ?" runonce="false" />
<job name="AnsyLxmDataJob" desc="自动同步MSSQL到MYSQL" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AnsyLxmDataJob,MyCode.Project.ScheduleTask" CronExpression="*/20 * * * * ?" runonce="false" />
<job name="QueueJob" desc="定时执行的调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.QueueJob,MyCode.Project.ScheduleTask" CronExpression="*/1 * * * * ?" runonce="false" />
<job name="AnsyLxmHasGiftJob" desc="补充赠品到LxmSheetMore" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AnsyLxmHasGiftJob,MyCode.Project.ScheduleTask" CronExpression="*/50 * * * * ?" runonce="false" />
<job name="AnsyLxmServiceOrderJob" desc="同步服务次数" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AnsyLxmServiceOrderJob,MyCode.Project.ScheduleTask" CronExpression="*/5 * * * * ?" runonce="false" />
<job name="AnsyLxmUseDaysJob" desc="自动同步使用天数MSSQL到MYSQL" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AnsyLxmUseDaysJob,MyCode.Project.ScheduleTask" CronExpression="*/30 * * * * ?" runonce="false" />
<job name="WebSocketJob" desc="WebSocket任务" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.WebSocketJob,MyCode.Project.ScheduleTask" CronExpression="*/1 * * * * ?" runonce="true" />
@@ -19,9 +18,7 @@
<job name="QueueJob" desc="定时执行的调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.QueueJob,MyCode.Project.ScheduleTask" CronExpression="*/1 * * * * ?" runonce="false" />
<job name="WebSocketJob" desc="WebSocket任务" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.WebSocketJob,MyCode.Project.ScheduleTask" CronExpression="*/1 * * * * ?" runonce="true" />
<job name="AnsyLxmBaseDataJob" desc="同步流行美基础资料任务" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AnsyLxmBaseDataJob,MyCode.Project.ScheduleTask" CronExpression="0 0 1 * * ?" runonce="true" />
<job name="AutoHandleExpireIntegralJob" desc="自动处理过期积分" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AutoHandleExpireIntegralJob,MyCode.Project.ScheduleTask" CronExpression="0 0 1 * * ?" runonce="false" />
SyncLogisticsAnsyJob
<job name="AutoOperateRefundOrderJob" desc="自动操作售后订单接口" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.AutoOperateRefundOrderJob,MyCode.Project.ScheduleTask" CronExpression="0 */59 * * * ?" runonce="false" />

View File

@@ -0,0 +1,27 @@
using MyCode.Project.Services;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCode.Project.ScheduleTask.Jobs
{
[DisallowConcurrentExecution]
public class AddWMSOrderJob : IJob
{
private IWMSService _wMSService;
public AddWMSOrderJob(IWMSService wMSService)
{
_wMSService = wMSService;
}
public void Execute(IJobExecutionContext context)
{
_wMSService.AddWMSTask();
}
}
}

View File

@@ -92,6 +92,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="JobsHelp.cs" />
<Compile Include="Jobs\AddWMSOrderJob.cs" />
<Compile Include="Jobs\AddOrderJob.cs" />
<Compile Include="Jobs\EveryJob.cs" />
<Compile Include="Jobs\QueueJob.cs" />

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

@@ -20,12 +20,12 @@ namespace MyCode.Project.Services
/// 推送入库申请
/// </summary>
/// <param name="now"></param>
void SendInStock(string sheet);
string SendInStock(string sheet);
/// <summary>
/// 推送出库申请
/// </summary>
/// <param name="now"></param>
void SendOutStock(string sheet);
string SendOutStock(string sheet);
}
}

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

@@ -9,6 +9,6 @@ namespace MyCode.Project.Services.IServices
{
public interface IOrderPushService
{
void PushOrderToKingDee(string id);
string PushOrderToKingDee(string id);
}
}

View File

@@ -26,5 +26,10 @@ namespace MyCode.Project.Services
/// 添加“合并吉客云订单到新表”的任务
/// </summary>
void AddMergeJackYunOrder();
/// <summary>
/// 添加WMS抓单的调度
/// </summary>
void AddWMSTask();
}
}

View File

@@ -11,7 +11,7 @@ using System.Threading;
namespace MyCode.Project.Services.Implementation
{
public class JackYunService : ServiceBase , IJackYunService
public class JackYunService : ServiceBase, IJackYunService
{
private IYTKJTShopParameterRepository _yTKJTShopParameterRepository;
public JackYunService(IYTKJTShopParameterRepository yTKJTShopParameterRepository)
@@ -19,7 +19,7 @@ namespace MyCode.Project.Services.Implementation
_yTKJTShopParameterRepository = yTKJTShopParameterRepository;
}
DateTime startTime = DateTime.Parse("2025-06-01");
DateTime startTime = DateTime.Parse("2025-08-01");
/// <summary>
/// 请求开放平台服务
/// </summary>
@@ -46,7 +46,7 @@ namespace MyCode.Project.Services.Implementation
}
return JsonHelper.ToObject<JackyunResponse>(strResponse);
}
}
#region
/// <summary>
@@ -55,18 +55,22 @@ namespace MyCode.Project.Services.Implementation
/// <param name="now">截止日期</param>
/// <returns></returns>
/// <exception cref="BaseException"></exception>
public List<TradesItem> testTradeFullInfoGet(DateTime now )
public List<TradesItem> testTradeFullInfoGet(DateTime now)
{
if (now < startTime)
now = startTime;
int total = 1;
var shopConfigs = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
OrderTradeFullInfoGetRequestBizData requestBizData = new OrderTradeFullInfoGetRequestBizData();
//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(-1).ToString("yyyy-MM-dd");
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.EndModified = ""; //DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
@@ -74,8 +78,8 @@ namespace MyCode.Project.Services.Implementation
requestBizData.HasTotal = total;
requestBizData.PageSize = 200;
requestBizData.PageIndex = 0;
requestBizData.Fields = "TradeType,tradeStatus,consignTime,payTime,goodsDetail.barcode,tradeNo,orderNo,shopName,companyName,warehouseName,logisticName,mainPostid,goodsDetail.goodsNo,flagNames,columnExt,sourceAfterNo,goodsDetail.outerId,pickUpCode,expense.expenseFee,expense.expenseItemName,billDate,goodsPlatDiscountFee,goodsDetail.shareOrderDiscountFee,goodsDetail.shareOrderPlatDiscountFee,customizeGoodsColumn9,goodsDetail.goodsId,goodsDetail.sellCount,goodsDetail.needProcessCount,goodsDetail.baseUnitSellCount,goodsDetail.assessmentCost,goodsDetail.compassSourceContentTypem,sourceTradeNo,shopId,warehouseId,scrollId";
requestBizData.StartCreated ="";// DateTime.ParseExact(value, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.Fields = "TradeType,tradeStatus,consignTime,payTime,goodsDetail.barcode,tradeNo,orderNo,shopName,companyName,warehouseName,logisticName,mainPostid,goodsDetail.goodsNo,flagNames,columnExt,sourceAfterNo,goodsDetail.outerId,pickUpCode,expense.expenseFee,expense.expenseItemName,billDate,goodsPlatDiscountFee,goodsDetail.shareOrderDiscountFee,goodsDetail.shareFavourableAfterFee,goodsDetail.shareOrderPlatDiscountFee,customizeGoodsColumn9,goodsDetail.goodsId,goodsDetail.sellCount,goodsDetail.needProcessCount,goodsDetail.baseUnitSellCount,goodsDetail.assessmentCost,goodsDetail.compassSourceContentTypem,sourceTradeNo,shopId,warehouseId,scrollId,goodsDetail.unit";
requestBizData.StartCreated = "";// DateTime.ParseExact(value, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.EndCreated = "";// DateTime.ParseExact(value1, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.StartAuditTime = "";// DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
requestBizData.EndAuditTime = "";// DateTime.ParseExact(value1, "yyyy -MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
@@ -84,7 +88,7 @@ namespace MyCode.Project.Services.Implementation
//requestBizData.TradeStatus = 1010;
requestBizData.TradeType = 1;
requestBizData.SourceTradeNos = "";
requestBizData.ShopIds = null;// shopConfigs.Select(t => t.FSHOPCODE).ToList(); // new long[] { 378761130654261100, 378761130654261100 };
requestBizData.ShopIds = null; // new long[] { 378761130654261100, 378761130654261100 };
List<int> TradeTypeList = new List<int>();
TradeTypeList.Add(1);
TradeTypeList.Add(7);
@@ -98,11 +102,13 @@ namespace MyCode.Project.Services.Implementation
JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.TRADEFULLINFOGET).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>(orderjson);
var list1 = JsonHelper.ToObject<TradeFullinfogetResp<TradeFullinfogetData>>(orderjson);
int pageIndex = 1;
while (list1.data.trades != null && list1.data.trades.Count > 0)
{
@@ -116,7 +122,8 @@ 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);
}
}
}
@@ -126,12 +133,138 @@ namespace MyCode.Project.Services.Implementation
throw new BaseException(msg);
}
});
var shocodes = shopConfigs.Select(t => t.FSHOPCODE).ToList();
trades = trades.Where(t => shocodes.Contains(t.shopCode)).ToList();
return trades;
}
#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

@@ -54,11 +54,12 @@ namespace MyCode.Project.Services.Implementation
/// <summary>
/// 上传入库数据
/// </summary>
public void SendInStock(string sheet)
public string SendInStock(string sheet)
{
var list = _wMStoJackyunInventoryMovementView1Repository.GetInventoryMovement();
//过滤入库数据
var InStockHead = list.Where(t => t.type == "+" && t.relDataId == sheet).Select(p => p.relDataId).Distinct().ToList();
string result = "";
InStockHead.ForEach(relDataId =>
{
CreateAndStockinGetRequestBizData requestBizData = new CreateAndStockinGetRequestBizData();
@@ -89,6 +90,7 @@ namespace MyCode.Project.Services.Implementation
Thread.Sleep(500);
JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.CREATEANDSTOCKIN).Value, "1.0", requestBizData);
string ll = JsonHelper.ToJson(response);
result = ll;
LogHelper.Info("上传入库数据结果:" + ll);
//判断返回结果是否成功
if (response.code == "200")
@@ -97,23 +99,26 @@ namespace MyCode.Project.Services.Implementation
}
else
{
//_wMStoJackyunInventoryMovementView1Repository.UpdateStatus(3, relDataId);
_wMStoJackyunInventoryMovementView1Repository.UpdateStatus(3, relDataId);
string msg = response.msg;
throw new BaseException(msg);
}
});
return result;
}
/// <summary>
/// 上传出库数据
/// </summary>
public void SendOutStock(string sheet)
public string SendOutStock(string sheet)
{
var list = _wMStoJackyunInventoryMovementView1Repository.GetInventoryMovement();
//过滤出库数据
var OutStockHead = list.Where(t => t.type != "+" && t.relDataId==sheet).Select(p => p.relDataId).Distinct().ToList();
var OutStockHead = list.Where(t => t.type != "+" && t.relDataId==sheet).Select(p => p.relDataId).Distinct().ToList();
string result = "";
OutStockHead.ForEach(relDataId =>
{
@@ -145,6 +150,7 @@ namespace MyCode.Project.Services.Implementation
Thread.Sleep(500);
JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.CREATEANDSTOCKOUT).Value, "1.0", requestBizData);
string ll = JsonHelper.ToJson(response);
result = ll;
LogHelper.Info(ll);
//判断返回结果是否成功
if (response.code == "200")
@@ -153,12 +159,14 @@ namespace MyCode.Project.Services.Implementation
}
else
{
_wMStoJackyunInventoryMovementView1Repository.UpdateStatus(3, relDataId);
string msg = response.msg;
throw new BaseException(msg);
//_wMStoJackyunInventoryMovementView1Repository.UpdateStatus(3, relDataId);
}
});
return result;
}

View File

@@ -1,20 +1,18 @@
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.Tasks;
using System.Threading;
namespace MyCode.Project.Services.Implementation
{
public class JackYunTaskService : ServiceBase , IJackYunTaskService
public class JackYunTaskService : ServiceBase, IJackYunTaskService
{
private IJackYunService _jackYunService;
private IJackOrdersRepository _jackOrdersRepository;
@@ -22,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
@@ -29,14 +29,16 @@ namespace MyCode.Project.Services.Implementation
, IPushKingDeeOrderRepository pushKingDeeOrderRepository
, IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository
, IYTKJTShopParameterRepository yTKJTShopParameterRepository
, IReturnChangeGoodsDetailRepository returnChangeGoodsDetailRepository
, IJackYunService jackYunService,
IWorkProcessService workProcessService )
IWorkProcessService workProcessService)
{
_yTKJTShopParameterRepository = yTKJTShopParameterRepository;
_pushKingDeeOrderRepository = pushKingDeeOrderRepository;
_pushKingDeeOrderItemRepository = pushKingDeeOrderItemRepository;
_jackOrdersRepository = jackOrdersRepository;
_jackOrdersItemRepository = jackOrdersItemRepository;
_ReturnChangeGoodsDetailRepository = returnChangeGoodsDetailRepository;
_jackYunService = jackYunService;
_workProcessService = workProcessService;
}
@@ -50,7 +52,7 @@ namespace MyCode.Project.Services.Implementation
{
DateTime runTime = DateTime.Parse(now);
var list = _jackYunService.testTradeFullInfoGet(runTime);
SetOrder(list);
SetOrder(list);
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackYunOrder", "合并吉客云订单到新表", now, 1);
}
#endregion
@@ -69,23 +71,30 @@ namespace MyCode.Project.Services.Implementation
trades = trades.Where(t => !ids.Contains(t.tradeId)).ToList();
List<JackOrders> jackOrdersList = new List<JackOrders>();
List<JackOrdersItem> ordersItemList = new List<JackOrdersItem>();
var shopConfig = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList();
var shopCodeList = shopConfig.Select(t => t.FSHOPCODE).ToList();
trades.ForEach(t =>
{
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.goodsDetail != null)
if (shopCodeList.Contains(t.shopCode))
{
var items = AutoMapperHelper.AutoMappToList<JackOrdersItem, GoodsDetailItem>(t.goodsDetail);
items.ForEach(k =>
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.goodsDetail != null)
{
k.JackOrdersId = jackOrders.Id;
});
jackOrdersList.Add(jackOrders);
ordersItemList.AddRange(items);
var items = AutoMapperHelper.AutoMappToList<JackOrdersItem, GoodsDetailItem>(t.goodsDetail);
items.ForEach(k =>
{
k.JackOrdersId = jackOrders.Id;
});
jackOrdersList.Add(jackOrders);
ordersItemList.AddRange(items);
}
}
});
@@ -95,6 +104,7 @@ namespace MyCode.Project.Services.Implementation
_jackOrdersRepository.Add(jackOrdersList);
_jackOrdersItemRepository.Add(ordersItemList);
}
}
#endregion
@@ -108,22 +118,25 @@ namespace MyCode.Project.Services.Implementation
{
var list = _jackOrdersItemRepository.GetPushOrder();
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<PushKingDeeOrder> pushKingDeeOrders = new List<PushKingDeeOrder>();
list.ForEach(sheet =>
{
if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId).Count() > 0)
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).ToList();
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();
@@ -150,17 +163,161 @@ namespace MyCode.Project.Services.Implementation
{
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
#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

@@ -3,6 +3,7 @@ using MyCode.Project.Domain.Message.Request.KingDee.SaveModel;
using MyCode.Project.Domain.Message.Request.WMS;
using MyCode.Project.Domain.Message.Response.JackYun;
using MyCode.Project.Domain.Message.Response.KingDee.K3Result;
using MyCode.Project.Domain.Message.Response.KingDee.K3Result.Model;
using MyCode.Project.Domain.Message.Response.WMS;
using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
@@ -16,13 +17,15 @@ using MyCode.Project.Services.IServices;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MyCode.Project.Services.Implementation
{
public class OrderPushService : IOrderPushService
public class OrderPushService : ServiceBase, IOrderPushService
{
private IJackYunService _jackYunService;
private IJackOrdersRepository _jackOrdersRepository;
@@ -31,14 +34,15 @@ namespace MyCode.Project.Services.Implementation
private IPushKingDeeOrderItemRepository _pushKingDeeOrderItemRepository;
private IYTKJTShopParameterRepository _yTKJTShopParameterRepository;
private IKingDeeService _kingDeeService;
private IWorkProcessService _workProcessService;
public OrderPushService(IJackOrdersRepository jackOrdersRepository
, IJackOrdersItemRepository jackOrdersItemRepository
, IPushKingDeeOrderRepository pushKingDeeOrderRepository
, IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository
, IYTKJTShopParameterRepository yTKJTShopParameterRepository
, IJackYunService jackYunService
, IKingDeeService kingDeeService)
, IKingDeeService kingDeeService,
IWorkProcessService workProcessService)
{
_yTKJTShopParameterRepository = yTKJTShopParameterRepository;
_pushKingDeeOrderRepository = pushKingDeeOrderRepository;
@@ -47,118 +51,13 @@ namespace MyCode.Project.Services.Implementation
_jackOrdersItemRepository = jackOrdersItemRepository;
_jackYunService = jackYunService;
_kingDeeService = kingDeeService;
_workProcessService = workProcessService;
}
#region SetOrder()
/// <summary>
/// 把吉客云订单存进本地数据库
/// </summary>
/// <param name="trades"></param>
[TransactionCallHandler]
public void SetOrder(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<JackOrdersItem> ordersItemList = new List<JackOrdersItem>();
trades.ForEach(t =>
{
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.goodsDetail != null)
{
var items = AutoMapperHelper.AutoMappToList<JackOrdersItem, GoodsDetailItem>(t.goodsDetail);
items.ForEach(k =>
{
k.JackOrdersId = jackOrders.Id;
});
jackOrdersList.Add(jackOrders);
ordersItemList.AddRange(items);
}
});
if (jackOrdersList.Count > 0)
{
_jackOrdersRepository.Add(jackOrdersList);
_jackOrdersItemRepository.Add(ordersItemList);
}
}
#endregion
#region GetAndMergeJackYunOrder()
/// <summary>
/// 合并吉客云订单到新表
/// </summary>
/// <returns></returns>
[TransactionCallHandler]
public string GetAndMergeJackYunOrder(string now)
{
var list = _jackOrdersItemRepository.GetPushOrder();
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).Count() > 0)
{
return;
}
PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder();
pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle<PushKingDeeOrder, PushOrderListResp>(sheet);
pushKingDeeOrder.Id = Guid.NewGuid();
pushKingDeeOrders.Add(pushKingDeeOrder);
var tempList = list.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId).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);
}
return JsonHelper.ToJson(list);
}
#endregion
public void PushOrderToKingDee(string id)
public string PushOrderToKingDee(string id)
{
string result2 = "";
var orderHead = _pushKingDeeOrderRepository.Queryable().Where(t => id == t.Id.ToString()).First();
if (orderHead.Status != 0)
{
@@ -168,6 +67,7 @@ namespace MyCode.Project.Services.Implementation
var param = _yTKJTShopParameterRepository
.Queryable()
.Where(t => t.FSHOPCODE == orderHead.ShopCode)
.Where(t => t.FDOCUMENTSTATUS == "C") // 已审核
.First();
if (param is null)
{
@@ -183,6 +83,7 @@ namespace MyCode.Project.Services.Implementation
if (param.FSYNCHRONIZEKINGDEE == "1")
{
var response = PushKingdeeSaleOrder(orderHead, param);
result2 = JsonHelper.ToJson(response);
// 如果保存成功,需要更新源单数据
if (response.IsSuccess)
{
@@ -195,12 +96,14 @@ namespace MyCode.Project.Services.Implementation
{
//wms
var result = PushWMSSaleOrder(orderHead, param);
result2 = JsonHelper.ToJson(result);
if (result.Code == 200)
{
orderHead.Status = 2;
_pushKingDeeOrderRepository.Update(orderHead);
}
}
return result2;
}
@@ -213,16 +116,18 @@ namespace MyCode.Project.Services.Implementation
// 新建销售订单实例
var order = new SaleOrder();
// 赋值
var orderNo = pushKingdeeOrder.Sheet.ToString();
//var orderNo = DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
order.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
order.OrderTime = pushKingdeeOrder.CreateTime?.ToString("yyyy-MM-dd HH:mm:ss");
order.OrderNo = pushKingdeeOrder.Id.ToString();
//order.CompanyId = param.FCOMPANYID; // 公司Id
order.CompanyId = "TZ"; // 公司Id
order.OrderType = pushKingdeeOrder.TradeType == 8 ? "7" : "4"; // 订单类型
order.OrderNo = orderNo;
order.CompanyId = param.FCOMPANYID; // 公司Id
order.OrderType = pushKingdeeOrder.TradeType == 8 ? "PFTH" : "PFDD"; // 订单类型
order.CustomerId = param.FCANGKUHUOZHU; // 货主ID
order.WarehouseId = pushKingdeeOrder?.WarehouseId;
order.WarehouseId = param.FDACANG;
order.OrderTime = pushKingdeeOrder.ConsignTime?.ToString("yyyy-MM-dd HH:mm:ss");
order.Channel = "K3Cloud"; // 下发系统
order.Channel = "JeckYun"; // 下发系统
order.ItemType = pushKingdeeOrder.TradeType == 8 ? "退货订单" : "标准销售订单"; // 单据类型
order.TotalQty = itemList.Sum(n => n.SellCount);
order.TotalMount = itemList.Sum(n => n.SellTotal);
@@ -230,38 +135,40 @@ namespace MyCode.Project.Services.Implementation
order.CustAccount = param.FSALESCUSTOMERS.ToString();
order.Lines = itemList.Select(n => new Line()
{
OrderNo = pushKingdeeOrder.Id.ToString(),
OrderNo = orderNo,
//CompanyId = param.FCOMPANYID, // 公司Id
CompanyId = "TZ", // 公司Id
OrderType = pushKingdeeOrder.TradeType == 8 ? "7" : "4", // 订单类型
CompanyId = param.FCOMPANYID, // 公司Id
OrderType = pushKingdeeOrder.TradeType == 8 ? "PFTH" : "PFDD", // 订单类型
LineNo = itemList.IndexOf(n) + 1,
CustomerId = param.FCANGKUHUOZHU, // 货主ID
Sku = n.Barcode,
Barcode = n.Barcode,
OrderQty = n.SellCount,
OrderPrice = Math.Round(n.DivideSellTotal / n.SellCount, 10),
ItemId = n.GoodsId, // 商品
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"),
OrderUnit = "pcs"
OrderUnit = n.Unit,
}).ToArray();
var uri = "http://172.16.42.45:9000";
var uri = ConfigurationManager.AppSettings.Get("WMSUri");
var requestString = JsonHelper.ToJson(order, false, true, true);
var client = new RestClient($"{uri}/sale/order/out");
var client = new RestClient(pushKingdeeOrder.TradeType == 8 ? $"{uri}/sale/order/return" : $"{uri}/sale/order/out");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", requestString, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var resultContent = response.Content;
LogHelper.Info("WMS请求" + requestString);
LogHelper.Info("WMS响应" + resultContent);
var result = JsonHelper.ToObject<WMSResponse>(resultContent);
if (result.Code != 200)
{
throw new Exception("推送WMS发生错误" + resultContent);
throw new Exception(result.Message);
}
LogHelper.Info(resultContent);
return result;
}
@@ -271,14 +178,13 @@ namespace MyCode.Project.Services.Implementation
/// <param name="pushKingdeeOrder">源单信息</param>
/// <param name="param">门店配置</param>
/// <returns></returns>
private Domain.Message.Response.KingDee.K3Result.Model.ResponseStatus PushKingdeeSaleOrder(PushKingDeeOrder pushKingdeeOrder, YTKJTShopParameter param)
private K3CloudResponseStatus PushKingdeeSaleOrder(PushKingDeeOrder pushKingdeeOrder, YTKJTShopParameter param)
{
var itemList = _pushKingDeeOrderItemRepository.Queryable().Where(t => pushKingdeeOrder.Id == t.PushKingDeeOrderId).ToList();
// 遍历单体,构造单据体实体
var entryList = itemList.Select(n => new FSaleOrderEntryItem()
{
Fcode = n.Barcode, // 条码带出物料 、物料带出税额
//Fcode = "2120101128415", // 条码带出物料 、物料带出税额
FEntryTaxRate = param.FTAXRATE,
FQty = n.SellCount, // 销售数量
FTaxPrice = Math.Round(n.DivideSellTotal / n.SellCount, 10), // 含税单价等于 金额/总数
@@ -298,7 +204,7 @@ namespace MyCode.Project.Services.Implementation
// 1零售业务7售后发货8售后退货
FNUMBER = pushKingdeeOrder.TradeType == 8 ? "XSDD05_SYS" : "XSDD01_SYS"
},
FOrdertype = pushKingdeeOrder.TradeType == 8 ? "7" : "4",
FOrdertype = pushKingdeeOrder.TradeType == 8 ? "10" : "9",
FDate = pushKingdeeOrder.ConsignTime?.ToString("yyyy/MM/dd"),
FSaleOrgId = new FSaleOrgId()
{
@@ -319,13 +225,14 @@ namespace MyCode.Project.Services.Implementation
},
FWarehouse = new FWarehouse()
{
FNUMBER = pushKingdeeOrder.WarehouseCode, // 仓库编码
FNUMBER = param.FWAREHOUSECODE, // 仓库编码
},
FSaleOrderEntry = entryList
};
BillSave billSave = new BillSave()
{
Model = model
Model = model,
IsAutoSubmitAndAudit = true,
};
SaleOrderModel fSaleOrderEntry = new SaleOrderModel();

View File

@@ -22,7 +22,7 @@ namespace MyCode.Project.Services.Implementation
{
DateTime startTime = DateTime.Parse("2025-06-01");
DateTime startTime = DateTime.Parse("2025-08-01");
private IWMStoJackyunInventoryMovementView2Repository _wMStoJackyunInventoryMovementView3Repository;
private IRepository _repository;
@@ -42,10 +42,26 @@ namespace MyCode.Project.Services.Implementation
public void AddTask()
{
DateTime now = DateTime.Now.Date;
_workProcessService.Add<IWMSService>(this.MerchantId, "GetList", "抓取WMS订单到本地数据库", now.ToString("yyyy-MM-dd"), 1);
_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
#region AddWMSTask(WMS抓单的调度)
/// <summary>
/// 添加WMS抓单的调度
/// </summary>
public void AddWMSTask()
{
DateTime now = DateTime.Now.Date;
_workProcessService.Add<IWMSService>(this.MerchantId, "GetList", "抓取WMS订单到本地数据库", now.Date.ToString("yyyy-MM-dd"), 1);
}
#endregion
public List<WMStoJackyunInventoryMovementView1> GetList(object now2)
{
DateTime now = DateTime.Parse(now2.ToString());

View File

@@ -165,19 +165,23 @@ namespace MyCode.Project.Services.Implementation
var type = UnityHelper.GetUnityContainer().Resolve(Type.GetType(process.FuncClass));
MethodInfo method = type.GetType().GetMethod(process.FuncMethod);
object result = new object();
if (!string.IsNullOrEmpty(process.ParamInfo))
{
method.Invoke(type, new object[] { process.ParamInfo });
result= method.Invoke(type, new object[] { process.ParamInfo });
}
else
{
method.Invoke(type, new object[] { });
result= method.Invoke(type, new object[] { });
}
if (result == null)
result = "";
process.FuncStatus = (int)WorkProcessStatus.Complete;
process.ExecuteTime = DateTime.Now;
process.ExceptionInfo = string.Empty;
process.EditTime = DateTime.Now;
process.Result=JsonHelper.ToJson(result);
_SysWorkProcessRepository.Update(process);
}

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
@@ -34,9 +35,9 @@ namespace MyCode.Project.WebApi.Controllers
/// </summary>
[HttpGet]
[AllowAnonymous]
public void TaskSendKingdeeSaleOrderById(string id)
public string TaskSendKingdeeSaleOrderById(string id)
{
_orderPushService.PushOrderToKingDee(id);
return _orderPushService.PushOrderToKingDee(id);
}
@@ -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

@@ -7,12 +7,12 @@
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<publishUrl>E:\Git\MyCodeMySql\Publish</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<DeleteExistingFiles>true</DeleteExistingFiles>
</PropertyGroup>
</Project>

View File

@@ -22,36 +22,38 @@
</system.webServer>
<connectionStrings>
<!-- 数据库测试-->
<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="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" />
<!--测试MYSQL内网-->
<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>
<!-- 当前使用的 账套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出错问题-->
<!-- WMSUri地址 -->
<add key="WMSUri" value="http://172.16.40.15:9000" />
<!-- 当前使用的 账套ID(即数据中心id) -->
<!-- 第三方系统登录授权的账套ID即open.kingdee.com网站的第三方系统登录授权中的数据中心标识-->
<!-- 第三方系统登录授权页面点击“生成测试链接”按钮后即可查看 -->
<add key="X-KDApi-AcctID" value="654dcb96b00765" />
<!-- 第三方系统登录授权的 集成用户名称 -->
<!-- 补丁版本为PT-146894 [7.7.0.202111]及后续的版本,则为指定用户登录列表中任一用户 -->
<!-- 第三方系统登录授权已勾选“允许全部用户登录”,则无以上限制 -->
<add key="X-KDApi-UserName" value="API" />
<!-- 第三方系统登录授权的 应用ID -->
<add key="X-KDApi-AppID" value="401100_Te8pSzHvRuHfQ/TuWfXsSY8GQKR/QoMo" />
<!-- 第三方系统登录授权的 应用密钥 -->
<add key="X-KDApi-AppSec" value="74b800916ed64ff081734856c9301d13" />
<!-- 账套语系默认2052 -->
<add key="X-KDApi-LCID" value="2052" />
<!-- 组织编码,启用多组织时配置对应的组织编码才有效 -->
<!--<add key="X-KDApi-OrgNum" value="*****"/>-->
<!-- 服务Url地址(私有云和公有云都须配置金蝶云星空产品地址K3Cloud/结尾)-->
<add key="X-KDApi-ServerUrl" value="http://127.0.0.1/k3Cloud/" />
<!--解决swagger出错问题-->
<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
<!--当前环境,1:生产环境 0开发环境-->
<add key="Env" value="0" />
<add key="Env" value="1" />
<!--因公司IP时常变化先用13跳转-->
<add key="RedisAddress" value="" />
<!--缓存前缀-->
@@ -252,4 +254,5 @@
<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>
</configuration>
<!--ProjectGuid: 145F5737-38B9-4A8F-BC02-6A292D991581-->

View File

@@ -697,7 +697,7 @@ order_clerk_mobile:店员手机
7) lxm_shop增加字段status 1启用 0禁用
流行美单据:
单据:
-预售单 BusPreSalesSheet
-销售单

View File

@@ -0,0 +1,40 @@
import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.Business.DynamicForm')
clr.AddReference("Kingdee.BOS.ServiceHelper")
import sys
from System import *
from System import Type
from System import Array
from System.Text import *
from System.Collections.Generic import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Core.Util import *
def BarItemClick(e):
if (e.BarItemKey == "YTKJ_chongzhi"):
SelectRows = this.View.SelectedDataRows
Rowidlist = []
if(SelectRows==None):
this.View.ShowMessage("请先选择数据行")
return
for item in SelectRows:
Rowid = "'"+item["主键"].ToString()+"'"
Rowidlist.append(Rowid)
sql ="""/*dialect*/ UPDATE SysWorkProcess SET FuncStatus = 0 WHERE ID IN ({0}) """.format(",".join(Rowidlist))
#raise Exception(sql)
res=DBUtils.Execute(this.Context, sql)
if res>0:
this.View.InvokeFormOperation("Refresh")
this.View.ShowMessage("重置了"+res.ToString()+"条数据")

View File

@@ -0,0 +1,17 @@
SELECT top 200 [ID] 主键
,[FuncMethod] [方法名]
,[ParamInfo] [参数]
,[ExecuteTime] [执行时间]
,[RetryCount] [重试次数]
,[ExceptionInfo] [报错内容]
,[FuncStatus] [任务状态]
,[Creater] [创建人]
,[CreateTime] [创建时间]
,[Editor] [修改人]
,[EditTime] [修改时间]
,[Remark] [备注]
FROM [dbo].[SysWorkProcess]
where '#FEndDate#'>[CreateTime]
and '#FStartDate#'<=[CreateTime]
ORDER BY [EditTime] desc