diff --git a/ds-wms-service/DS.Module.Core/Extensions/DateTimeExtension.cs b/ds-wms-service/DS.Module.Core/Extensions/DateTimeExtension.cs
index edf9bea8..df80b9ae 100644
--- a/ds-wms-service/DS.Module.Core/Extensions/DateTimeExtension.cs
+++ b/ds-wms-service/DS.Module.Core/Extensions/DateTimeExtension.cs
@@ -1,4 +1,6 @@
-namespace DS.Module.Core.Extensions;
+using Newtonsoft.Json.Linq;
+
+namespace DS.Module.Core.Extensions;
public static class DateTimeExtension
{
@@ -30,4 +32,28 @@ public static class DateTimeExtension
var week = new string[] { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };
return week[day];
}
+
+ ///
+ /// 获取datetime值
+ ///
+ ///
+ ///
+ ///
+ public static DateTime? GetDateTimeValue(this JObject jobj, string prop)
+ {
+ var jt = jobj[prop];
+ if (jt == null)
+ {
+ return null;
+ }
+
+ var strVal = jt.ToString();
+ DateTime rtnVal = DateTime.MinValue;
+ if (DateTime.TryParse(strVal, out rtnVal))
+ {
+ return rtnVal;
+ }
+
+ return null;
+ }
}
\ No newline at end of file
diff --git a/ds-wms-service/DS.WMS.Core/Op/EDI/YGTDataDto.cs b/ds-wms-service/DS.WMS.Core/Op/EDI/YGTDataDto.cs
new file mode 100644
index 00000000..b861abf6
--- /dev/null
+++ b/ds-wms-service/DS.WMS.Core/Op/EDI/YGTDataDto.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DS.WMS.Core.Op.EDI
+{
+ public class YGTDataDto
+ {
+ public string CNTRNO { get; set; }
+ public DateTime? YunDiShiJian { get; set; }
+ public DateTime? WaiLiShiJian { get; set; }
+ public string MTFX { get; set; }
+
+ public DateTime? ZhuangzhaiShiJian { get; set; }
+ public DateTime? ZhuangChuanShiJian { get; set; }
+ public DateTime? RuGangShiJian { get; set; }
+ }
+}
diff --git a/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportService.cs b/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportService.cs
index a09ae250..a9d070b0 100644
--- a/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportService.cs
+++ b/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportService.cs
@@ -203,4 +203,12 @@ public interface ISeaExportService
/// 提单号
///
Task> SearchOrderInfo(string mblNo);
+
+
+ ///
+ /// 刷新运踪(互联网和云港通)
+ ///
+ ///
+ ///
+ public Task> RefreshYGT(long[] Ids);
}
\ No newline at end of file
diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs
index dc18cd00..be1fadf0 100644
--- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs
+++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs
@@ -1,11 +1,19 @@
-using DS.Module.Core;
+using Amazon.Runtime.Internal.Util;
+using DS.Module.Core;
using DS.Module.Core.Extensions;
using DS.Module.Core.Helpers;
+using DS.WMS.Core.Invoice.Dtos;
using DS.WMS.Core.Map.Entity;
using DS.WMS.Core.Op.Dtos;
+using DS.WMS.Core.Op.EDI;
using DS.WMS.Core.Op.Entity;
using DS.WMS.Core.Sys.Entity;
+using Mapster;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Org.BouncyCastle.Ocsp;
namespace DS.WMS.Core.Op.Method
{
@@ -39,7 +47,7 @@ namespace DS.WMS.Core.Op.Method
{
return await Task.FromResult(DataResult.Failed("未配置运踪订阅第三方账号信息!"));
}
- if (account.AppSecret.IsNull()|| account.AppKey.IsNull()|| account.RegistContractName.IsNull())
+ if (account.AppSecret.IsNull() || account.AppKey.IsNull() || account.RegistContractName.IsNull())
{
return await Task.FromResult(DataResult.Failed("请检查运踪订阅第三方账号关键参数!"));
}
@@ -86,7 +94,7 @@ namespace DS.WMS.Core.Op.Method
//{
// return await Task.FromResult(DataResult.Failed($"船公司代号配置未找到:{yardCode}"));
//}
- var carrierName =string.Empty;
+ var carrierName = string.Empty;
if (string.IsNullOrEmpty(carrierCode))
{
carrierName = "";
@@ -142,7 +150,7 @@ namespace DS.WMS.Core.Op.Method
billdto.PushBackKey = user.TenantId;//根据回传的租户Id回调
var json = billdto.ToJsonString();
- var postData =new { msg = json };
+ var postData = new { msg = json };
if (!reqUrl.EndsWith("/"))
{
@@ -199,7 +207,7 @@ namespace DS.WMS.Core.Op.Method
Key = account.AppKey,
PWD = account.AppSecret,
Gid = account.RegistContractName,
- PushBackKey= user.TenantId,
+ PushBackKey = user.TenantId,
};
foreach (var item in req)
{
@@ -237,6 +245,642 @@ namespace DS.WMS.Core.Op.Method
return await Task.FromResult(DataResult.Success(res.Data));
}
}
+
+
+
+ ///
+ /// 刷新运踪(互联网和云港通)
+ ///
+ ///
+ ///
+ public async Task> RefreshYGT(long[] Ids)
+ {
+ var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
+ var order = await tenantDb.Queryable().Where(x => Ids.Contains(x.Id) && x.ParentId == 0 && x.IsBookingYZ != "0").ToListAsync();
+ if (order == null || order.Count == 0)
+ {
+ return await Task.FromResult(DataResult.Failed("存在未订阅单据"));
+
+ }
+ var key = db.Queryable().Filter(null, true).Where(x => x.Code == "billTraceNewUserKey" && x.TenantId == 1288018625843826688).Select(x => x.Value).First();
+
+ if (string.IsNullOrEmpty(key))
+ {
+ return await Task.FromResult(DataResult.Failed("未获取到运踪相关KEY,请联系管理员!"));
+ }
+
+ var secret = db.Queryable().Filter(null, true).Where(x => x.Code == "billTraceNewUserSecret" && x.TenantId == 1288018625843826688).Select(x => x.Value).First();
+ if (string.IsNullOrEmpty(secret))
+ {
+ return await Task.FromResult(DataResult.Failed("未获取到运踪相关SECRET,请联系管理员!"));
+ }
+
+
+ var url = db.Queryable().Filter(null, true).Where(x => x.Code == "billTraceYgtUrl" && x.TenantId == 1288018625843826688).Select(x => x.Value).First();
+ if (string.IsNullOrEmpty(secret))
+ {
+ return await Task.FromResult(DataResult.Failed("未获取到运港通船期即时查询接口,请联系管理员!"));
+ }
+ //var url = _cache.GetAllDictData().Result.Where(x => x.Code == "billTraceYgtUrl").Select(x => x.Value).FirstOrDefault();
+
+
+ JArray jarrHLWTemos = new JArray();
+ JArray jarrYGTTemos = new JArray();
+ foreach (var item in order)
+ {
+ JObject jobjhlwTemp = new JObject();
+ jobjhlwTemp.Add("web_code", "HLW_CD");
+ jobjhlwTemp.Add("bno", new JValue(item.MBLNO.Trim()));
+ jarrHLWTemos.Add(jobjhlwTemp);
+
+ JObject jobjygtTemp = new JObject();
+ jobjygtTemp.Add("web_code", "YGT_YZ");
+ jobjygtTemp.Add("bno", new JValue(item.MBLNO.Trim()));
+ jarrYGTTemos.Add(jobjygtTemp);
+ }
+
+ if (jarrHLWTemos.Count > 0)
+ {
+ JObject HLWjobjSend = new JObject();
+ HLWjobjSend.Add("user_key", new JValue(key));
+ HLWjobjSend.Add("user_secret", new JValue(secret));
+ HLWjobjSend.Add("customer_id", new JValue(user.TenantId));
+ HLWjobjSend.Add("customer_name", new JValue(user.TenantName));
+ HLWjobjSend.Add("data_list", jarrHLWTemos);
+ var json = HLWjobjSend.ToJsonString();
+ _logger.Info("运踪查询HLW+参数:" + json);
+ //var rtn = await url.SetHttpMethod(HttpMethod.Post).SetBody(HLWjobjSend.ToJsonString()).PostAsStringAsync();
+ var rtn = await RequestHelper.PostJosnAsyncNoHeaders(url, json);
+ _logger.Info("运踪查询HLW+查询结果:" + rtn);
+ await ExecuteHLW(rtn);
+ }
+ if (jarrYGTTemos.Count > 0)
+ {
+ JObject YGTjobjSend = new JObject();
+ YGTjobjSend.Add("user_key", new JValue(key));
+ YGTjobjSend.Add("user_secret", new JValue(secret));
+ YGTjobjSend.Add("customer_id", new JValue(user.TenantId));
+ YGTjobjSend.Add("customer_name", new JValue(user.TenantName));
+ YGTjobjSend.Add("data_list", jarrYGTTemos);
+ var json = YGTjobjSend.ToJsonString();
+ _logger.Info("运踪查询YGT参数:" + json);
+ //var rtn = await url.SetHttpMethod(HttpMethod.Post).SetBody(YGTjobjSend.ToJsonString()).PostAsStringAsync();
+ var rtn = await RequestHelper.PostJosnAsyncNoHeaders(url, YGTjobjSend.ToJsonString());
+ _logger.Info("运踪查询YGT查询结果:" + rtn);
+ await ExecuteYGT(rtn);
+ }
+ return await Task.FromResult(DataResult.Success("刷新运踪成功!"));
+ }
+
+ [NonAction]
+ //[SqlSugarUnitOfWork]
+ public async Task ExecuteHLW(string rtn)
+ {
+ var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
+ JObject jobjRtn = JObject.Parse(rtn);
+ var code = jobjRtn.GetValue("code").ToString();
+ var msg = jobjRtn.GetValue("msg").ToString();
+ if (code != "200")
+ {
+ _logger.Info($"请求爬虫获取【HLW+数据】出错:{msg}");
+ throw new Exception(msg);
+ }
+ //订舱状态
+ var dicList = db.Queryable().Where(x => x.TypeId == 1788810332945387520).ToList();
+ JArray jarrData = jobjRtn.GetValue("data") as JArray;
+
+ foreach (JObject item in jarrData)
+ {
+ //每票 货物
+
+ var mblno = item.GetValue("bno").ToString();
+
+ var bookingId = await tenantDb.Queryable().Where(x => x.MBLNO == mblno && x.ParentId == 0).Select(x => x.Id).FirstAsync();
+ var list = await tenantDb.Queryable().Filter(null, true)
+ .InnerJoin((d, t) => d.StatusCode == t.Value && t.TypeId == 1788810332945387520 && d.StatusGroup == "booking_status_group_billtrace"
+ && d.BusinessId == bookingId, "shippingweb8_dev.sys_dict_data")
+ .Select((d, t) => new
+ {
+ BusinessId = d.BusinessId,
+ StatusCode = d.StatusCode,
+ StatusName = d.StatusName,
+ StatusTime = d.StatusTime,
+ Name = t.Name,
+ Value = t.Value
+ }).ToListAsync();
+ var jarrInnerData = item.GetValue("data") as JArray;
+
+ if (jarrInnerData.Count == 0)
+ {
+ throw new Exception(item.GetStringValue("msg"));
+ }
+
+ DateTime? TimeCangDan = null;
+ DateTime? FangXingShiJian = null;
+
+ foreach (JObject dataItem in jarrInnerData)
+ {
+ TimeCangDan = dataItem.GetDateTimeValue("YuPeiShiJian"); //舱单时间
+ FangXingShiJian = dataItem.GetDateTimeValue("FangXingShiJian"); //放行时间
+ }
+ //await _repStatuslog.DeleteAsync(x => x.BookingId == bookingId && x.Category == "yunzong" && (x.Status == "舱单" || x.Status == "报关"));
+ var oldLog = await tenantDb.Queryable().Where(x => x.BusinessId == bookingId && x.Group == "yunzong" && (x.Status == "舱单" || x.Status == "报关")).ToListAsync();
+ if (oldLog.Count > 0)
+ {
+ //var oldid = oldLog.Select(x => x.Id).ToList();
+ ////删除日志详情和日志
+ //var oldLogDetails = await tenantDb.Queryable().Where(x => oldid.Contains(x.PId)).ToListAsync();
+ //if (oldLogDetails.Count > 0)
+ //{
+ // await tenantDb.Deleteable(oldLogDetails).ExecuteCommandAsync();
+ //}
+ await tenantDb.Deleteable(oldLog).ExecuteCommandAsync();
+ }
+
+ if (TimeCangDan != null)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"舱单",
+ Group = "yunzong",
+ OpTime = TimeCangDan,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+
+ if (list.Where(x => x.StatusCode == "status_cangdan").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_cangdan",
+ StatusName = dicList.Where(x => x.Value == "status_cangdan").Select(x => x.Name).First(),
+ StatusTime = TimeCangDan,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ }
+
+ }
+
+ if (FangXingShiJian != null)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"报关",
+ Group = "yunzong",
+ OpTime = FangXingShiJian,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+ if (list.Where(x => x.StatusCode == "status_haifang").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_haifang",
+ StatusName = dicList.Where(x => x.Value == "status_haifang").Select(x => x.Name).First(),
+ StatusTime = TimeCangDan,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ await seaComService.SetGoodsStatus("BG", bookingId, tenantDb);
+ }
+ }
+
+ }
+ }
+
+
+ [NonAction]
+ //[SqlSugarUnitOfWork]
+ public async Task ExecuteYGT(string rtn)
+ {
+ var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
+ JObject jobjRtn = JObject.Parse(rtn);
+ var code = jobjRtn.GetValue("code").ToString();
+ var msg = jobjRtn.GetValue("msg").ToString();
+ if (code != "200")
+ {
+ _logger.Info($"请求爬虫获取【YGT数据】出错:{msg}");
+ throw new Exception(msg);
+ }
+ var dicList = db.Queryable().Where(x => x.TypeId == 1788810332945387520).ToList();
+ JArray jarrData = jobjRtn.GetValue("data") as JArray;
+
+ foreach (JObject item in jarrData)
+ {
+ //每票 货物
+ var mblno = item.GetValue("bno").ToString();
+
+ var bookingId = await tenantDb.Queryable().Where(x => x.MBLNO == mblno && x.ParentId == 0).Select(x => x.Id).FirstAsync();
+
+ var list = await tenantDb.Queryable().Filter(null, true)
+ .InnerJoin((d, t) => d.StatusCode == t.Value && t.TypeId == 1788810332945387520 && d.StatusGroup == "booking_status_group_billtrace"
+ && d.BusinessId == bookingId, "shippingweb8_dev.sys_dict_data")
+ .Select((d, t) => new
+ {
+ BusinessId = d.BusinessId,
+ StatusCode = d.StatusCode,
+ StatusName = d.StatusName,
+ StatusTime = d.StatusTime,
+ Name = t.Name,
+ Value = t.Value
+ }).ToListAsync();
+ var jarrInnerData = item.GetValue("data") as JArray;
+ List ygtdto = new List();
+ DateTime? SJLGShiJian = null;//ATD
+ DateTime? YJDGShiJian = null;//ETA
+ DateTime? SJDGShiJian = null;//ATA
+ DateTime? YJLGShiJian = null;//ETD
+ int xl = 0;
+ foreach (JObject dataItem in jarrInnerData)
+ {
+ SJLGShiJian = dataItem.GetDateTimeValue("sjlg_time"); //实际离港时间
+ YJDGShiJian = dataItem.GetDateTimeValue("yjdk_time"); //预计到港时间
+ SJDGShiJian = dataItem.GetDateTimeValue("sjdk_time"); //实际到港时间
+ YJLGShiJian = dataItem.GetDateTimeValue("yjlk_time"); //预计离港时间
+ var xh_info = dataItem.GetValue("xh_info") as JArray;
+ xl = xh_info.Count();
+ foreach (JObject it in xh_info)
+ {
+ var CNTRNO = it.GetStringValue("ctn_no"); //箱号
+ var yd_time = it.GetDateTimeValue("yd_time"); //运抵时间
+ var wl_time = it.GetDateTimeValue("wl_time"); //外理时间
+ var mtfx = it.GetStringValue("mtfx"); //码头放行
+ var zz_time = it.GetDateTimeValue("zz_time"); //装载时间
+ var ck_time = it.GetDateTimeValue("ck_time"); //装船时间
+ var rg_time = it.GetDateTimeValue("rg_lr_time"); //入港时间
+
+ ygtdto.Add(new YGTDataDto
+ {
+ CNTRNO = CNTRNO,
+ YunDiShiJian = yd_time,
+ WaiLiShiJian = wl_time,
+ MTFX = mtfx,
+ ZhuangzhaiShiJian = zz_time,
+ ZhuangChuanShiJian = ck_time,
+ RuGangShiJian = rg_time
+ });
+ }
+ }
+ var rgnum = ygtdto.Where(x => x.RuGangShiJian != null).Count();
+ var ydnum = ygtdto.Where(x => x.YunDiShiJian != null).Count();
+ var zznum = ygtdto.Where(x => x.ZhuangzhaiShiJian != null).Count();
+ var wlnum = ygtdto.Where(x => x.WaiLiShiJian != null).Count();
+ var mfnum = ygtdto.Where(x => x.MTFX == "Y").Count();
+ var zcnum = ygtdto.Where(x => x.ZhuangChuanShiJian != null).Count();
+
+ var oldLog = await tenantDb.Queryable().Where(x => x.BusinessId == bookingId && x.Group == "yunzong" && (x.Status == "运抵" || x.Status == "装载" || x.Status == "外理" || x.Status == "码放" || x.Status == "装船" || x.Status == "入港" || x.Status == "ATD")).ToListAsync();
+ if (oldLog.Count > 0)
+ {
+ var oldid = oldLog.Select(x => x.Id).ToList();
+ //删除日志详情和日志
+ var oldLogDetails = await tenantDb.Queryable().Where(x => oldid.Contains(x.PId)).ToListAsync();
+ if (oldLogDetails.Count > 0)
+ {
+ await tenantDb.Deleteable(oldLogDetails).ExecuteCommandAsync();
+ }
+ await tenantDb.Deleteable(oldLog).ExecuteCommandAsync();
+ }
+
+ if (xl > 0 && rgnum > 0)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"入港",
+ Group = "yunzong",
+ OpTime = xl == ydnum ? ygtdto.Select(x => x.RuGangShiJian).Max() : null,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+
+ foreach (var dt in ygtdto)
+ {
+ var BookingStatusLogDetail = new BookingStatusLogDetail()
+ {
+ PId = bookingStatusLog.Id,
+ Status = "入港",
+ CNTRNO = dt.CNTRNO,
+ OpTime = dt.RuGangShiJian
+ };
+ await tenantDb.Insertable(BookingStatusLogDetail).ExecuteCommandAsync();
+ }
+ if (list.Where(x => x.Value == "status_rugang").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_rugang",
+ StatusName = dicList.Where(x => x.Value == "status_rugang").Select(x => x.Name).First(),
+ StatusTime = xl == ydnum ? ygtdto.Select(x => x.RuGangShiJian).Max() : null,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ await seaComService.SetGoodsStatus("YRG", bookingId, tenantDb);
+ }
+ }
+ if (xl > 0 && ydnum > 0)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"运抵",
+ Group = "yunzong",
+ OpTime = xl == ydnum ? ygtdto.Select(x => x.YunDiShiJian).Max() : null,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+
+ foreach (var dt in ygtdto)
+ {
+ var BookingStatusLogDetail = new BookingStatusLogDetail()
+ {
+ PId = bookingStatusLog.Id,
+ Status = "运抵",
+ CNTRNO = dt.CNTRNO,
+ OpTime = dt.YunDiShiJian
+ };
+ await tenantDb.Insertable(BookingStatusLogDetail).ExecuteCommandAsync();
+ }
+ }
+
+ if (xl > 0 && zznum > 0 && zznum == xl)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"装载",
+ Group = "yunzong",
+ OpTime = xl == zznum ? ygtdto.Select(x => x.ZhuangzhaiShiJian).Max() : null,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+ if (list.Where(x => x.Value == "status_zhuangzai").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_zhuangzai",
+ StatusName = dicList.Where(x => x.Value == "status_zhuangzai").Select(x => x.Name).First(),
+ StatusTime = xl == zznum ? ygtdto.Select(x => x.ZhuangzhaiShiJian).Max() : null,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ await seaComService.SetGoodsStatus("ZZFX", bookingId, tenantDb);
+ }
+ }
+ if (xl > 0 && wlnum > 0 && wlnum == xl)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"外理",
+ Group = "yunzong",
+ OpTime = null,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+ }
+
+ if (xl > 0 && mfnum > 0 && mfnum == xl)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"码放",
+ Group = "yunzong",
+ OpTime = null,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+ if (list.Where(x => x.Value == "status_mafang").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_mafang",
+ StatusName = dicList.Where(x => x.Value == "status_mafang").Select(x => x.Name).First(),
+ StatusTime = xl == zznum ? ygtdto.Select(x => x.ZhuangzhaiShiJian).Max() : null,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ await seaComService.SetGoodsStatus("MTFX", bookingId, tenantDb);
+ };
+ }
+ if (xl > 0 && zcnum > 0)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"装船",
+ Group = "yunzong",
+ OpTime = xl == ydnum ? ygtdto.Select(x => x.ZhuangChuanShiJian).Max() : null,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+ foreach (var dt in ygtdto)
+ {
+ var BookingStatusLogDetail = new BookingStatusLogDetail()
+ {
+ PId = bookingStatusLog.Id,
+ Status = "装船",
+ CNTRNO = dt.CNTRNO,
+ OpTime = dt.ZhuangChuanShiJian
+ };
+ await tenantDb.Insertable(BookingStatusLogDetail).ExecuteCommandAsync();
+ }
+ if (list.Where(x => x.Value == "status_zhuangchuan").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_zhuangchuan",
+ StatusName = dicList.Where(x => x.Value == "status_zhuangchuan").Select(x => x.Name).First(),
+ StatusTime = xl == ydnum ? ygtdto.Select(x => x.ZhuangChuanShiJian).Max() : null,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ };
+ }
+
+ if (SJLGShiJian != null)
+ {
+ //新增数据
+ var bookingStatusLog = new BookingStatusLog()
+ {
+ BusinessId = bookingId,
+ Status = $"ATD",
+ Group = "yunzong",
+ OpTime = SJLGShiJian,
+ MBLNO = mblno
+ };
+ await tenantDb.Insertable(bookingStatusLog).ExecuteCommandAsync();
+ if (list.Where(x => x.Value == "status_atd").FirstOrDefault() == null)
+ {
+ BookingStatus bookingStatus = new BookingStatus()
+ {
+ BusinessId = bookingId,
+ StatusCode = "status_atd",
+ StatusName = dicList.Where(x => x.Value == "status_atd").Select(x => x.Name).First(),
+ StatusTime = SJLGShiJian,
+ StatusGroup = "booking_status_group_billtrace"
+ };
+ await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync();
+ };
+ }
+
+
+ var bookingOrder = await tenantDb.Queryable().FirstAsync(x => x.Id == bookingId);
+
+ //ATD
+ if (SJLGShiJian != null && bookingOrder.ATD != SJLGShiJian)
+ {
+ //var oldorder = bookingOrder;
+ bookingOrder.ATD = SJLGShiJian;
+ bookingOrder.Note = "刷新运踪";
+ await tenantDb.Updateable(bookingOrder).UpdateColumns(x => new
+ {
+ x.ATD,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+
+ if (!string.IsNullOrEmpty(bookingOrder.Vessel) && !string.IsNullOrEmpty(bookingOrder.Voyno) && !string.IsNullOrEmpty(bookingOrder.Carrier))
+ {
+ var neworder = await tenantDb.Queryable().Where(x => x.Voyno == bookingOrder.Voyno && x.Vessel == bookingOrder.Vessel && x.CarrierId == bookingOrder.CarrierId && x.Id != bookingOrder.Id).ToListAsync();
+
+ foreach (var it in neworder)
+ {
+ var _oldorder = it.Adapt();
+ if (it.ATD != SJLGShiJian)
+ {
+ _oldorder.ATD = SJLGShiJian;
+ _oldorder.Note = "刷新运踪";
+ await tenantDb.Updateable(_oldorder).UpdateColumns(x => new
+ {
+ x.ATD,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+ }
+ }
+ }
+ }
+
+ //ETA
+ if (YJDGShiJian != null && bookingOrder.StartETA != YJDGShiJian)
+ {
+ var oldorder = bookingOrder;
+ bookingOrder.StartETA = YJDGShiJian;
+ bookingOrder.Note = "刷新运踪";
+ await tenantDb.Updateable(bookingOrder).UpdateColumns(x => new
+ {
+ x.StartETA,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+
+ if (!string.IsNullOrEmpty(bookingOrder.Vessel) && !string.IsNullOrEmpty(bookingOrder.Voyno) && !string.IsNullOrEmpty(bookingOrder.Carrier))
+ {
+ var neworder = await tenantDb.Queryable().Where(x => x.Voyno == bookingOrder.Voyno && x.Vessel == bookingOrder.Vessel && x.CarrierId == bookingOrder.CarrierId && x.Id != bookingOrder.Id).ToListAsync();
+
+ foreach (var it in neworder)
+ {
+ var _oldorder = it.Adapt();
+ if (it.StartETA != YJDGShiJian)
+ {
+ _oldorder.StartETA = YJDGShiJian;
+ _oldorder.Note = "刷新运踪";
+ await tenantDb.Updateable(_oldorder).UpdateColumns(x => new
+ {
+ x.ATD,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+ }
+ }
+ }
+ }
+
+ //ATA
+ if (SJDGShiJian != null && bookingOrder.StartATA != SJDGShiJian)
+ {
+ var oldorder = bookingOrder;
+ bookingOrder.StartATA = SJDGShiJian;
+ bookingOrder.Note = "刷新运踪";
+ await tenantDb.Updateable(bookingOrder).UpdateColumns(x => new
+ {
+ x.StartATA,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+
+ if (!string.IsNullOrEmpty(bookingOrder.Vessel) && !string.IsNullOrEmpty(bookingOrder.Voyno) && !string.IsNullOrEmpty(bookingOrder.Carrier))
+ {
+ var neworder = await tenantDb.Queryable().Where(x => x.Voyno == bookingOrder.Voyno && x.Vessel == bookingOrder.Vessel && x.CarrierId == bookingOrder.CarrierId && x.Id != bookingOrder.Id).ToListAsync();
+
+ foreach (var it in neworder)
+ {
+ var _oldorder = it.Adapt();
+ if (it.StartATA != SJDGShiJian)
+ {
+ _oldorder.StartATA = SJDGShiJian;
+ _oldorder.Note = "刷新运踪";
+ await tenantDb.Updateable(_oldorder).UpdateColumns(x => new
+ {
+ x.StartATA,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+ }
+ }
+ }
+
+ }
+
+
+ //ETD
+ if (YJLGShiJian != null && bookingOrder.YgtETD != YJLGShiJian)
+ {
+ var oldorder = bookingOrder;
+ bookingOrder.YgtETD = YJLGShiJian;
+ bookingOrder.Note = "刷新运踪";
+ await tenantDb.Updateable(bookingOrder).UpdateColumns(x => new
+ {
+ x.YgtETD,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+
+ if (!string.IsNullOrEmpty(bookingOrder.Vessel) && !string.IsNullOrEmpty(bookingOrder.Voyno) && !string.IsNullOrEmpty(bookingOrder.Carrier))
+ {
+ var neworder = await tenantDb.Queryable().Where(x => x.Voyno == bookingOrder.Voyno && x.Vessel == bookingOrder.Vessel && x.CarrierId == bookingOrder.CarrierId && x.Id != bookingOrder.Id).ToListAsync();
+
+ foreach (var it in neworder)
+ {
+ var _oldorder = it.Adapt();
+ if (it.YgtETD != YJLGShiJian)
+ {
+ _oldorder.YgtETD = YJLGShiJian;
+ _oldorder.Note = "刷新运踪";
+ await tenantDb.Updateable(_oldorder).UpdateColumns(x => new
+ {
+ x.YgtETD,
+ x.Note
+ }).EnableDiffLogEvent().ExecuteCommandAsync();
+ }
+ }
+ }
+ }
+ }
+ }
+
+
#endregion
}
}
diff --git a/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportController.cs b/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportController.cs
index ccc739b6..9312a9ae 100644
--- a/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportController.cs
+++ b/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportController.cs
@@ -443,4 +443,16 @@ public class SeaExportController : ApiController
var res = await _invokeService.PrintShippingOrderPDF(id);
return res;
}
+
+ ///
+ /// 刷新运踪(互联网和云港通)
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("RefreshYGT")]
+ public async Task> RefreshYGT([FromQuery] IdModel req)
+ {
+ return await _invokeService.RefreshYGT(req.Ids);
+ }
}
\ No newline at end of file