You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
BookingHeChuan/Myshipping.Application/Service/BookingOrderSeaeEdi/BookingOrderSeaeEdiService.cs

682 lines
31 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Myshipping.Core;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using System.Linq;
using System.Threading.Tasks;
using Myshipping.Application.Entity;
using Microsoft.AspNetCore.Authorization;
using Furion;
using Microsoft.AspNetCore.Http;
using Furion.DataEncryption;
using System.Collections.Generic;
using System.Security.Claims;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Identity;
using Furion.FriendlyException;
using Furion.Logging;
using System;
using Microsoft.Extensions.Logging;
using System.Reflection;
using System.ComponentModel;
using Myshipping.Application.ConfigOption;
using System.IO;
using Yitter.IdGenerator;
using Myshipping.Core.Entity;
using Furion.RemoteRequest.Extensions;
using System.Net.Http;
using Myshipping.Core.Service;
using System.Reflection.Emit;
using Myshipping.Application.Service.BookingOrderSeaeEdi.Dto;
using Myshipping.Application.Enum;
using Myshipping.Application.Service.BookingOrder.Dto;
using Newtonsoft.Json.Linq;
using System.Text;
using System.Web;
using Furion.UnifyResult;
namespace Myshipping.Application
{
/// <summary>
/// 舱单服务
/// </summary>
[ApiDescriptionSettings("Application", Name = "BookingOrderSeaeEdi", Order = 1)]
public class BookingOrderSeaeEdiService : IBookingOrderSeaeEdiService, IDynamicApiController, ITransient
{
private readonly ILogger<BookingOrderSeaeEdiService> _logger;
private readonly SqlSugarRepository<BookingOrderSeaeEdi> _seaeedi;
private readonly SqlSugarRepository<BookingOrderSeaeEdiCtn> _seaeedictn;
private readonly ISysCacheService _cache;
private readonly IBookingOrderService _rep;
private readonly SqlSugarRepository<BookingStatusLog> _repStatuslog;
private readonly SqlSugarRepository<BookingOrderSeaeEdiTemplate> _repTemplate;
private readonly IDjyWebsiteAccountConfigService _webAccountConfig;
private readonly SqlSugarRepository<BookingOrder> _repBookingOrder;
private readonly SqlSugarRepository<BookingCtn> _repBookingCtn;
public BookingOrderSeaeEdiService(ILogger<BookingOrderSeaeEdiService> logger, SqlSugarRepository<BookingOrderSeaeEdi> seaeedi,
SqlSugarRepository<BookingOrderSeaeEdiCtn> seaeedictn, ISysCacheService cache, SqlSugarRepository<BookingStatusLog> repStatuslog,
SqlSugarRepository<BookingOrderSeaeEdiTemplate> repTemplate, IBookingOrderService rep,
IDjyWebsiteAccountConfigService webAccountConfig, SqlSugarRepository<BookingOrder> repBookingORder, SqlSugarRepository<BookingCtn> repBookingCtn)
{
this._logger = logger;
this._seaeedi = seaeedi;
this._seaeedictn = seaeedictn;
this._cache = cache;
this._repStatuslog = repStatuslog;
this._webAccountConfig = webAccountConfig;
this._repTemplate = repTemplate;
this._rep = rep;
this._repBookingOrder = repBookingORder;
this._repBookingCtn = repBookingCtn;
}
/// <summary>
/// 获取数据
/// </summary>
/// <param name="bookingId"></param>
/// <returns></returns>
[HttpGet("/BookingOrderSeaeEdi/PageESeaeEdi")]
public async Task<List<BookingOrderSeaeEdiServiceDto>> PageESeaeEdi(long bookingId)
{
var entities = await _seaeedi.AsQueryable().Filter(null, true).Where(x => x.BookingId == bookingId && x.IsDeleted == false).ToListAsync();
var list = entities.Adapt<List<BookingOrderSeaeEdiServiceDto>>();
foreach (var item in list)
{
var ctn = await _seaeedictn.AsQueryable().Filter(null, true).Where(x => x.PId == item.Id && x.IsDeleted == false).ToListAsync();
item.EdiCtn = ctn.Adapt<List<BookingOrderSeaeEdiCtnDto>>();
}
return list;
}
/// <summary>
/// 立即返回保存信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/BookingOrderSeaeEdi/Save")]
public async Task<dynamic> Save(BookingOrderSeaeEdiServiceDto input)
{
if (input == null)
{
throw Oops.Bah("请传入正常数据!");
}
if (!string.IsNullOrWhiteSpace(input.MBLNO))
{
var et = await _seaeedi.Where(x => x.MBLNO == input.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == input.HBLNO && x.Id != input.Id).FirstAsync();
if (et != null)
{
throw Oops.Bah("当前提单号已存在,请勿重复录入!");
}
}
BookingOrderSeaeEdi entity = null;
if (input.Id == 0)
{
entity = input.Adapt<BookingOrderSeaeEdi>();
entity.State = "已录入";
if (!string.IsNullOrEmpty(entity.CARRIERID))
{
entity.CARRIER = _cache.GetAllCodeCarrier().Result.Where(x => x.Code == entity.CARRIERID).Select(x => x.EdiCode).FirstOrDefault();
}
if (entity.CARGOID != "D")
{
entity.DCLASS = string.Empty;
entity.DUNNO = string.Empty;
}
await _seaeedi.InsertAsync(entity);
if (input.EdiCtn != null)
{
foreach (var item in input.EdiCtn)
{
var ctn = item.Adapt<BookingOrderSeaeEdiCtn>();
ctn.PId = entity.Id;
if (ctn.CTNALL.Length == 4)
{
ctn.SIZE = ctn.CTNALL != null ? ctn.CTNALL.Substring(0, 2) : "";
ctn.CTN = ctn.CTNALL != null ? ctn.CTNALL.Substring(2, 2) : "";
}
if (ctn.CTNALL.Contains("'"))
{
ctn.SIZE = ctn.CTNALL.Split("'")[0].ToString();
ctn.CTN = ctn.CTNALL.Split("'")[1].ToString();
}
await _seaeedictn.InsertAsync(ctn);
}
}
}
else
{
entity = _seaeedi.AsQueryable().First(x => x.Id == input.Id);
if (entity == null)
{
throw Oops.Bah("未找到业务数据");
}
if (entity.State != "已录入")
{
if (input.State != entity.State)
{
input.State = entity.State; //防止前端数据覆盖状态
}
if (input.HBLNO != entity.HBLNO)
{
throw Oops.Bah("已直发状态不能修改分单号");
}
}
//校验数据可修改后,赋值前端数据
input.Adapt(entity);
if (!string.IsNullOrEmpty(entity.CARRIERID))
{
entity.CARRIER = _cache.GetAllCodeCarrier().Result.Where(x => x.Code == entity.CARRIERID).Select(x => x.EdiCode).FirstOrDefault();
}
if (entity.CARGOID != "D")
{
entity.DCLASS = string.Empty;
entity.DUNNO = string.Empty;
}
await _seaeedi.AsUpdateable(entity).IgnoreColumns(it => new
{
it.MBLNO,
//it.HBLNO, //2023年9月4日原有直接忽略的逻辑有问题应该是直发之后不能改而不是录入状态就不能改分单号
it.BookingId,
it.TenantId,
it.CreatedTime,
it.CreatedUserId,
it.CreatedUserName,
it.IsDeleted
}).ExecuteCommandAsync();
await _seaeedictn.DeleteAsync(x => x.PId == input.Id);
if (input.EdiCtn != null)
{
foreach (var item in input.EdiCtn)
{
var ctn = item.Adapt<BookingOrderSeaeEdiCtn>();
ctn.PId = entity.Id;
if (ctn.CTNALL.Length == 4)
{
ctn.SIZE = ctn.CTNALL != null ? ctn.CTNALL.Substring(0, 2) : "";
ctn.CTN = ctn.CTNALL != null ? ctn.CTNALL.Substring(2, 2) : "";
}
if (ctn.CTNALL.Contains("'"))
{
ctn.SIZE = ctn.CTNALL.Split("'")[0].ToString();
ctn.CTN = ctn.CTNALL.Split("'")[1].ToString();
}
await _seaeedictn.InsertAsync(ctn);
}
}
}
var entities = await _seaeedi.AsQueryable().Filter(null, true).Where(x => x.Id == entity.Id).ToListAsync();
var list = entities.Adapt<List<BookingOrderSeaeEdiServiceDto>>();
foreach (var item in list)
{
var ctn = await _seaeedictn.AsQueryable().Filter(null, true).Where(x => x.PId == item.Id).ToListAsync();
item.EdiCtn = ctn.Adapt<List<BookingOrderSeaeEdiCtnDto>>();
}
return list;
}
/// <summary>
/// 删除舱单
/// </summary>
/// <param name="Ids"></param>
/// <returns></returns>
[SqlSugarUnitOfWork]
[HttpPost("/BookingOrderSeaeEdi/Delete")]
public async Task Delete(string Ids)
{
var arr = Ids.Split(",");
if (arr.Count() > 0)
{
foreach (var ar in arr)
{
long Id = Convert.ToInt64(ar);
await _seaeedi.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdi { IsDeleted = true });
await _seaeedictn.UpdateAsync(x => x.PId == Id, x => new BookingOrderSeaeEdiCtn { IsDeleted = true });
_logger.LogInformation(Id + "删除成功!");
}
}
}
#region 舱单
/// <summary>
/// 舱单
/// </summary>
/// <returns></returns>
[HttpPost("/BookingOrderSeaeEdi/CustEDI")]
public async Task CustEDI(string Ids, string type, string SENDREMARK, bool? isCheck)
{
var arr = Ids.Split(",");
if (arr.Count() > 0)
{
List<CustEDIDto> custEDIDtos = new List<CustEDIDto>();
var key = _webAccountConfig.GetAccountConfig("DjyCangDan", UserManager.UserId).Result;
if (key == null)
{
throw Oops.Bah("当前用户未配置key,请联系管理员");
}
var dicUrl = _cache.GetAllDictData().Result.First(x => x.TypeCode == "url_set" && x.Code == "request_emf");
long bookingId = 0;
foreach (var ar in arr)
{
long Id = Convert.ToInt64(ar);
var order = await _seaeedi.AsQueryable().Filter(null, true).Where(x => x.Id == Id).FirstAsync();
var ctns = await _seaeedictn.AsQueryable().Filter(null, true).Where(x => x.PId == order.Id).ToListAsync();
bookingId = order.BookingId;
//船公司
if (string.IsNullOrEmpty(order.CARRIER))
{
throw Oops.Bah(BookingErrorCode.BOOK118);
}
//提单号不能为空
if (string.IsNullOrEmpty(order.MBLNO))
{
throw Oops.Bah(BookingErrorCode.BOOK127);
}
MDATA mDATA = new MDATA();
List<CTNDATAItem> CTNDATA = new List<CTNDATAItem>();
mDATA = order.Adapt<MDATA>();
if (string.IsNullOrEmpty(mDATA.FORWARDER))
{
throw Oops.Bah("船代不能为空");
}
if (string.IsNullOrEmpty(mDATA.YARDID))
{
throw Oops.Bah("场站不能为空");
}
mDATA.SENDREMARK = SENDREMARK;
var FORWARDER = mDATA.FORWARDER;
var YardCode = mDATA.YARDID;
if (_cache.GetAllMappingForwarder().Result.Where(x => x.Code == FORWARDER && x.Module == "cangdan").Select(x => x.MapCode).FirstOrDefault() == null)
{
throw Oops.Bah("暂不支持此船代");
}
mDATA.FORWARDER =
_cache.GetAllMappingForwarder().Result.Where(x => x.Code == FORWARDER && x.Module == "cangdan").Select(x => x.MapCode).FirstOrDefault();
mDATA.YARDID = _cache.GetAllMappingYard().Result.Where(x => x.Code == YardCode && x.Module == "cangdan").Select(x => x.MapCode).FirstOrDefault();
CTNDATA = ctns.Adapt<List<CTNDATAItem>>();
foreach (var item in CTNDATA)
{
item.KINDPKGS = _cache.GetAllCodePackage().Result.Where(x => x.Name == item.KINDPKGS).Select(x => x.EdiCode).FirstOrDefault();
}
custEDIDtos.Add(new CustEDIDto
{
MDATA = mDATA,
CTNDATA = CTNDATA
});
}
#region 舱单发送前,校验
if (isCheck == true && (type is "1" or "0") && custEDIDtos.Count > 0)
{
// 需要在舱单发送前增加以下字段的比对,由舱单字段与订舱数据字段做比对,比对存在异常提醒客户是否确认发送,对比字段如下:
// 主单提单号:主单主单提单号与订舱主提单号不一致时提醒
// 船名航次,唛头,货描 ,起运港,卸货港:主单与订舱 或 分单与主单不一致时提醒
// 件数,重量,尺码(按箱子判断):分单之和>主单 或 主单 != 订舱 时提醒
// 箱封号、箱型:主单的箱封号+箱型与订舱不一致时提醒、分单中出现主单中不存在的箱封号+箱型时提醒
var seaeList = await _seaeedi.AsQueryable()
.Filter(null, true)
.Where(x => x.BookingId == bookingId && x.IsDeleted == false)
.ToListAsync();
var seaeCtnList = await _seaeedictn.AsQueryable()
.Filter(null, true)
.Where(x => seaeList.Select(x => x.Id).Contains(x.PId) && x.IsDeleted == false)
.ToListAsync();
var bkOrder = await _repBookingOrder.AsQueryable()
.Filter(null, true)
.Where(x => x.Id == bookingId && x.IsDeleted == false)
.FirstAsync();
var bkOrderCtnList = await _repBookingCtn.AsQueryable()
.Filter(null, true)
.Where(x => x.BILLID == bookingId && x.IsDeleted == false)
.ToListAsync();
if (bkOrder == null)
{
throw Oops.Bah("未找到订舱数据");
}
var checkResult = new List<string>();
// 舱单主单
var mainSeaOrder = seaeList.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.HBLNO));
// 舱单分单
var subSeaOrderList = seaeList.Where(x => !string.IsNullOrWhiteSpace(x.HBLNO)).ToList();
// 校验规则1船名航次唛头货描 ,起运港,卸货港,主单提单号
if (bkOrder.MBLNO != mainSeaOrder.MBLNO) checkResult.Add("舱单主单与订舱【提单号】不一致");
if (bkOrder.VESSEL != mainSeaOrder.VESSEL) checkResult.Add("舱单主单与订舱【船名】不一致");
if (bkOrder.VOYNO != mainSeaOrder.VOYNO) checkResult.Add("舱单主单与订舱【航次】不一致");
if (bkOrder.MARKS?.Trim() != mainSeaOrder.MARKS?.Trim()) checkResult.Add("舱单主单与订舱【唛头】不一致");
if (bkOrder.DESCRIPTION?.Trim() != mainSeaOrder.DESCRIPTION?.Trim()) checkResult.Add("舱单主单与订舱【货描】不一致");
if (bkOrder.PORTLOADID != mainSeaOrder.PORTLOADID || bkOrder.PORTLOAD != mainSeaOrder.PORTLOAD) checkResult.Add("舱单主单与订舱【起运港】不一致");
if (bkOrder.PORTDISCHARGEID != mainSeaOrder.PORTDISCHARGEID || bkOrder.PORTDISCHARGE != mainSeaOrder.PORTDISCHARGE) checkResult.Add("舱单主单与订舱【卸货港】不一致");
subSeaOrderList.ForEach(x =>
{
if (bkOrder.VESSEL != x.VESSEL) checkResult.Add($"舱单分单【{x.HBLNO}】与订舱【船名】不一致");
if (bkOrder.VOYNO != x.VOYNO) checkResult.Add($"舱单分单【{x.HBLNO}】与订舱【航次】不一致");
if (bkOrder.MARKS?.Trim() != x.MARKS?.Trim()) checkResult.Add($"舱单分单【{x.HBLNO}】与订舱【唛头】不一致");
if (bkOrder.DESCRIPTION?.Trim() != x.DESCRIPTION?.Trim()) checkResult.Add($"舱单分单【{x.HBLNO}】与订舱【货描】不一致");
if (bkOrder.PORTLOADID != x.PORTLOADID || bkOrder.PORTLOAD != x.PORTLOAD) checkResult.Add($"舱单分单【{x.HBLNO}】与订舱【起运港】不一致");
if (bkOrder.PORTDISCHARGEID != x.PORTDISCHARGEID || bkOrder.PORTDISCHARGE != x.PORTDISCHARGE) checkResult.Add($"舱单分单【{x.HBLNO}】与订舱【卸货港】不一致");
});
// 校验规则2件重尺
// 先进行件重尺总数的比较
var = seaeCtnList.Where(x => x.PId == mainSeaOrder.Id).ToList();
var = seaeCtnList.Where(x => x.PId != mainSeaOrder.Id).ToList();
if (.Sum(x => x.PKGS) != bkOrderCtnList.Sum(x => x.PKGS))
{
checkResult.Add($"舱单主单中箱子的【总件数】与订舱中箱子的【总件数】不一致");
}
if (.Sum(x => x.KGS) != bkOrderCtnList.Sum(x => x.KGS))
{
checkResult.Add($"舱单主单中箱子的【总重量】与订舱中箱子的【总重量】不一致");
}
if (.Sum(x => x.CBM) != bkOrderCtnList.Sum(x => x.CBM))
{
checkResult.Add($"舱单主单中箱子的【总尺码】与订舱中箱子的【总尺码】不一致");
}
if (.Count > 0)
{
if (.Sum(x => x.PKGS) != bkOrderCtnList.Sum(x => x.PKGS))
{
checkResult.Add($"舱单分单中箱子的【总件数】与订舱中箱子的【总件数】不一致");
}
if (.Sum(x => x.KGS) != bkOrderCtnList.Sum(x => x.KGS))
{
checkResult.Add($"舱单分单中箱子的【总重量】与订舱中箱子的【总重量】不一致");
}
if (.Sum(x => x.CBM) != bkOrderCtnList.Sum(x => x.CBM))
{
checkResult.Add($"舱单分单中箱子的【总尺码】与订舱中箱子的【总尺码】不一致");
}
}
// 再按箱号比较
foreach (var item in .GroupBy(x => x.CNTRNO))
{
if (item.Sum(x => x.PKGS) != bkOrderCtnList.Where(x => x.CNTRNO == item.Key).Sum(x => x.PKGS))
{
checkResult.Add($"箱号为【{item.Key}】的箱子,在舱单主单中的【件数】与订舱中同箱号箱子的【件数】不一致");
}
if (item.Sum(x => x.KGS) != bkOrderCtnList.Where(x => x.CNTRNO == item.Key).Sum(x => x.KGS))
{
checkResult.Add($"箱号为【{item.Key}】的箱子,在舱单主单中的【重量】与订舱中同箱号箱子的【重量】不一致");
}
if (item.Sum(x => x.CBM) != bkOrderCtnList.Where(x => x.CNTRNO == item.Key).Sum(x => x.CBM))
{
checkResult.Add($"箱号为【{item.Key}】的箱子,在舱单主单中的【尺码】与订舱中同箱号箱子的【尺码】不一致");
}
}
foreach (var item in .GroupBy(x => x.CNTRNO))
{
if (item.Sum(x => x.PKGS) != bkOrderCtnList.Where(x => x.CNTRNO == item.Key).Sum(x => x.PKGS))
{
checkResult.Add($"箱号为【{item.Key}】的箱子,在舱单各分单中的【总件数】与订舱中同箱号箱子的【件数】不一致");
}
if (item.Sum(x => x.KGS) != bkOrderCtnList.Where(x => x.CNTRNO == item.Key).Sum(x => x.KGS))
{
checkResult.Add($"箱号为【{item.Key}】的箱子,在舱单各分单中的【总重量】与订舱中同箱号箱子的【重量】不一致");
}
if (item.Sum(x => x.CBM) != bkOrderCtnList.Where(x => x.CNTRNO == item.Key).Sum(x => x.CBM))
{
checkResult.Add($"箱号为【{item.Key}】的箱子,在舱单各分单中的【总尺码】与订舱中同箱号箱子的【尺码】不一致");
}
}
// 校验规则3箱号+封号+箱型
var = bkOrderCtnList.Select(x => $"箱号[{x.CNTRNO}] 封号[{x.SEALNO}] 箱型[{x.CTNALL.Replace("'", "")}]").ToList();
var = .Select(x => $"箱号[{x.CNTRNO}] 封号[{x.SEALNO}] 箱型[{x.CTNALL.Replace("'", "")}]").ToList();
var = .Select(x => $"箱号[{x.CNTRNO}] 封号[{x.SEALNO}] 箱型[{x.CTNALL.Replace("'", "")}]").Distinct().ToList();
var list1 = .Except();
if (list1.Any())
{
checkResult.Add($"订舱中的下列箱信息在舱单主单中不存在:{string.Join("", list1)}");
}
else
{
var list2 = .Except();
if (list2.Any())
{
checkResult.Add($"舱单主单中的下列箱信息在订舱中不存在:{string.Join("", list2)}");
}
}
var list3 = .Except();
if (list3.Any())
{
checkResult.Add($"舱单分单中存在未知的箱信息:{string.Join("", list3)}");
}
if (checkResult.Count > 0)
{
UnifyContext.Fill(new { checkResult });
throw new Exception("校验不通过");
}
}
#endregion
string strPostObj = custEDIDtos.ToJsonString();
var sendObj = new
{
ac = "emf",
uid = UserManager.DjyUserId,
skey = key.Password,
optype = type,
data = strPostObj
};
_logger.LogInformation($"调用舱单接口 {dicUrl.Value} 传递数据:{strPostObj}");
var strResp = await dicUrl.Value.SetContentType("multipart/form-data").SetBody(sendObj).PostAsStringAsync();
_logger.LogInformation($"调用舱单接口返回:{strResp}");
var jobjResp = JObject.Parse(strResp);
bool respCode = jobjResp.GetBooleanValue("Success");
if (respCode == false)
{
throw Oops.Bah(jobjResp.GetStringValue("Message").Replace("<br />", "\r\n").Replace("<br/>", ""));
}
foreach (var ar in arr)
{
long Id = Convert.ToInt64(ar);
var order = await _seaeedi.AsQueryable().Filter(null, true).Where(x => x.Id == Id).FirstAsync();
//货运动态
var bsl = new BookingStatusLog();
bsl.BookingId = order.BookingId;
if (type == "3")
{
bsl.Status = $"保存舱单";
}
if (type == "0")
{
bsl.Status = $"直发舱单";
}
if (type == "1")
{
bsl.Status = $"修改舱单";
}
if (type == "2")
{
bsl.Status = $"删除舱单";
}
if (type == "4")
{
bsl.Status = $"作废舱单";
}
bsl.OpTime = DateTime.Now;
bsl.Category = "ship";
bsl.MBLNO = order.MBLNO;
await _repStatuslog.InsertAsync(bsl);
if (type == "3")
{
await _seaeedi.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdi { State = "已发送", SENDREMARK = SENDREMARK });
}
if (type == "0" || type == "1")
{
await _seaeedi.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdi { State = "已直发", SENDREMARK = SENDREMARK });
if (string.IsNullOrEmpty(order.HBLNO))
{
await _rep.SetGoodsStatus("YFCD", order.BookingId);
await _rep.SendBookingOrder(new long[] { order.BookingId });
}
}
if (type == "2")
{
await _seaeedi.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdi { State = "已删除", SENDREMARK = SENDREMARK });
}
if (type == "4")
{
await _seaeedi.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdi { State = "已作废", SENDREMARK = SENDREMARK });
}
}
}
}
#endregion
#region 模板
/// <summary>
/// 获取模板数据
/// </summary>
/// <returns></returns>
[HttpGet("/BookingOrderSeaeEdi/GetBookingOrderSeaeEdiTemplateList")]
public async Task<List<BookingOrderSeaeEdiTemplateDto>> GetBookingOrderSeaeEdiTemplateList(string type, string templatename = null)
{
var entities = await _repTemplate.AsQueryable().Where(x => x.Type == type).
WhereIF(!string.IsNullOrEmpty(templatename), x => x.TemplateName.Contains(templatename)).
ToListAsync();
var list = entities.Adapt<List<BookingOrderSeaeEdiTemplateDto>>();
return list;
}
/// <summary>
/// 保存信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/BookingOrderSeaeEdi/SaveBookingOrderSeaeEdiTemplate")]
public async Task SaveBookingOrderSeaeEdiTemplate(BookingOrderSeaeEdiTemplateDto input)
{
if (input == null)
{
throw Oops.Bah("请传入正常数据!");
}
if (!string.IsNullOrWhiteSpace(input.TemplateNAME))
{
var et = await _repTemplate.Where(x => x.TemplateName == input.TemplateNAME && x.Id != input.Id).FirstAsync();
if (et != null)
{
throw Oops.Bah("当前模板名称已存在,请勿重复录入!");
}
}
var entity = input.Adapt<BookingOrderSeaeEdiTemplate>();
if (input.Id == 0)
{
await _repTemplate.InsertAsync(entity);
}
else
{
await _repTemplate.AsUpdateable(entity).IgnoreColumns(it => new
{
it.TenantId,
it.CreatedTime,
it.CreatedUserId,
it.CreatedUserName,
it.IsDeleted
}).ExecuteCommandAsync();
}
}
/// <summary>
/// 删除舱单
/// </summary>
/// <param name="Ids"></param>
/// <returns></returns>
[SqlSugarUnitOfWork]
[HttpPost("/BookingOrderSeaeEdi/DeleteBookingOrderSeaeEdiTemplate")]
public async Task DeleteBookingOrderSeaeEdiTemplate(string Ids)
{
var arr = Ids.Split(",");
if (arr.Count() > 0)
{
foreach (var ar in arr)
{
long Id = Convert.ToInt64(ar);
await _repTemplate.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdiTemplate { IsDeleted = true });
}
}
}
#endregion
}
}