131 lines
5.3 KiB
C#
Raw Normal View History

2025-07-12 16:58:00 +08:00
using MyCode.Project.Domain.Message.Request.JackYun;
using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
using MyCode.Project.Domain.Repositories.ZHMDRepositories;
using MyCode.Project.Domain.ZHMDModel;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.Enumeration;
using MyCode.Project.Infrastructure.Exceptions;
using MyCode.Project.Infrastructure.JackYun;
using MyCode.Project.Repositories;
using MyCode.Project.Repositories.Common;
using MyCode.Project.Repositories.ZHMD;
using System;
using System.Collections.Generic;
2025-07-14 20:39:36 +08:00
using System.Diagnostics;
2025-07-12 16:58:00 +08:00
using System.Linq;
using System.Threading;
namespace MyCode.Project.Services.Implementation
{
public class WMSService : ServiceBase , IWMSService
{
2025-07-12 18:52:08 +08:00
2025-07-12 16:58:00 +08:00
DateTime startTime = DateTime.Parse("2025-06-01");
2025-07-16 14:41:39 +08:00
private IWMStoJackyunInventoryMovementView2Repository _wMStoJackyunInventoryMovementView3Repository;
2025-07-12 18:52:08 +08:00
private IRepository _repository;
private IWorkProcessService _workProcessService;
2025-07-16 14:41:39 +08:00
public WMSService(IWMStoJackyunInventoryMovementView2Repository wMStoJackyunInventoryMovementView3Repository, IRepository repository
2025-07-12 18:52:08 +08:00
, IWorkProcessService workProcessService)
2025-07-12 16:58:00 +08:00
{
2025-07-12 18:52:08 +08:00
_workProcessService = workProcessService;
2025-07-12 16:58:00 +08:00
_wMStoJackyunInventoryMovementView3Repository = wMStoJackyunInventoryMovementView3Repository;
_repository = repository;
}
2025-07-12 18:52:08 +08:00
#region AddTask()
/// <summary>
/// 添加抓单的调度
/// </summary>
public void AddTask()
{
DateTime now = DateTime.Now.Date;
_workProcessService.Add<IWMSService>(this.MerchantId, "GetList", "抓取WMS订单到本地数据库", now.ToString("yyyy-MM-dd"), 1);
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "TaskGetJackYunOrder", "调度运行抓吉客云销售订单", now.ToString("yyyy-MM-dd"), 1);
}
#endregion
public List<WMStoJackyunInventoryMovementView1> GetList(object now2)
2025-07-12 16:58:00 +08:00
{
2025-07-12 18:52:08 +08:00
DateTime now = DateTime.Parse(now2.ToString());
2025-07-12 16:58:00 +08:00
if (now < startTime)
now = startTime;
var list= _wMStoJackyunInventoryMovementView3Repository.GetList(now);
2025-07-14 20:39:36 +08:00
LogHelper.Info("WMS订单行数:" + list.Count);
if (list.Count>0)
SetWMSOrder(list);
2025-07-12 16:58:00 +08:00
return list;
}
#region SetWMSOrder(WMS订单存进本地数据库)
/// <summary>
/// 把WMS订单存进本地数据库
/// </summary>
/// <param name="trades"></param>
[TransactionCallHandler]
public void SetWMSOrder(List<WMStoJackyunInventoryMovementView1> trades)
{
2025-07-14 20:39:36 +08:00
2025-07-12 16:58:00 +08:00
var ids = trades.Select(t => t.).ToList();
var oldids = _repository.Queryable<WMStoJackyunInventoryMovementView1>().Where(t => ids.Contains(t.))
.Select(t => new { t., t. }).ToList();
if (oldids.Count > 0)
{
//trades = (from p in trades
// join k in oldids on new { p.WMS单号, p.单据行号 } equals new { k.WMS单号, k.单据行号 }
// where k.单据行号 == null
// select p).ToList();
// 方法1使用左外连接推荐 - 高效且符合SQL思维
trades = (
from p in trades
join k in oldids
on new { p., p. }
equals new { k., k. }
into temp
from k in temp.DefaultIfEmpty()
where k == null // 只保留未匹配的记录
select p
).ToList();
//// 方法2使用Any()进行条件过滤(更简洁)
//var excludedTrades = trades
// .Where(p => !oldids.Any(k =>
// k.WMS单号 == p.WMS单号 &&
// k.单据行号 == p.单据行号))
// .ToList();
//trades = trades.Where(t => !oldids.Contains(new { t.WMS单号, t.单据行号 })).ToList();
}
2025-07-18 17:27:27 +08:00
if (trades.Count > 0)
{
_repository.Add<WMStoJackyunInventoryMovementView1>(trades);
}
string now = DateTime.Now.ToString();
_workProcessService.Add<IJackYunStockinService>(this.MerchantId, "SendInStock", "上传WMS的入库数据到吉客云", now, 1);
2025-07-21 13:59:04 +08:00
Thread.Sleep(500);
2025-07-18 17:27:27 +08:00
_workProcessService.Add<IJackYunStockinService>(this.MerchantId, "SendOutStock", "上传WMS的出库数据到吉客云", now, 1);
2025-07-12 16:58:00 +08:00
}
#endregion
2025-07-18 17:09:55 +08:00
#region AddMergeJackYunOrder()
/// <summary>
/// 添加“合并吉客云订单到新表”的任务
/// </summary>
public void AddMergeJackYunOrder()
{
string now = DateTime.Now.ToString();
_workProcessService.Add<IJackYunTaskService>(this.MerchantId, "GetAndMergeJackYunOrder", "合并吉客云订单到新表", now, 1);
}
#endregion
2025-07-12 16:58:00 +08:00
}
}