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/BookingVesselInfo/BookingVesselInfoService.cs

235 lines
9.5 KiB
C#

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 Furion.FriendlyException;
using System.Collections.Generic;
using System;
using Myshipping.Core.Service;
using Myshipping.Core.Entity;
using Microsoft.Extensions.Logging;
namespace Myshipping.Application
{
/// <summary>
/// 船期手工维护模块
/// </summary>
[ApiDescriptionSettings("Application", Name = "BookingVesselInfo", Order = 1)]
public class BookingVesselInfoService : IBookingVesselInfoService, IDynamicApiController, ITransient
{
private readonly SqlSugarRepository<DjyVesselInfo> _rep;
private readonly ISysCacheService _sysCacheService;
private readonly IBookingOrderService _bookingorderservice;
private readonly SqlSugarRepository<BookingOrder> _order;
private readonly ILogger<DataSyncService> _logger;
public BookingVesselInfoService(SqlSugarRepository<DjyVesselInfo> rep, ILogger<DataSyncService> logger, SqlSugarRepository<BookingOrder> order,ISysCacheService sysCacheService,IBookingOrderService bookingorderservice)
{
_sysCacheService = sysCacheService;
_rep = rep;
_order = order;
_bookingorderservice = bookingorderservice;
this._logger = logger;
}
///// <summary>
///// 获取列表
///// </summary>
///// <returns></returns>
//[HttpGet("/DjyVesselInfoService/GetListPage")]
//public async Task<dynamic> GetListPage([FromQuery] string CARRIER, string Vessel, string VoynoInside, string Voyno, DateTime? StartETD, DateTime? EndETD)
//{
// return await _rep.AsQueryable().Filter(null, true).Where(x => x.TenantId == UserManager.TENANT_ID)
// .WhereIF(!string.IsNullOrWhiteSpace(CARRIER), x => x.CARRIER.Contains(CARRIER))
// .WhereIF(!string.IsNullOrWhiteSpace(Vessel), x => x.Vessel.Contains(Vessel))
// .WhereIF(!string.IsNullOrWhiteSpace(VoynoInside), x => x.VoynoInside.Contains(VoynoInside))
// .WhereIF(!string.IsNullOrWhiteSpace(Voyno), x => x.Voyno.Contains(Voyno))
// .WhereIF(StartETD != null, x => x.ETD >= StartETD)
// .WhereIF(EndETD != null, x => x.ETD <= EndETD)
// .ToListAsync();
//}
///// <summary>
///// 获取列表分页
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[HttpGet("/DjyVesselInfoService/page")]
//public async Task<dynamic> GetListPage([FromQuery] QueryDjyVesselInfoInput input)
//{
// return await _rep.AsQueryable().Filter(null, true).Where(x => x.TenantId == UserManager.TENANT_ID)
// .WhereIF(!string.IsNullOrWhiteSpace(input.CARRIER), x => x.CARRIER.Contains(input.CARRIER))
// .WhereIF(!string.IsNullOrWhiteSpace(input.Vessel), x => x.Vessel.Contains(input.Vessel))
// .WhereIF(!string.IsNullOrWhiteSpace(input.VoynoInside), x => x.VoynoInside.Contains(input.VoynoInside))
// .WhereIF(!string.IsNullOrWhiteSpace(input.Voyno), x => x.Voyno.Contains(input.Voyno))
// .WhereIF(input.StartETD != null, x => x.ETD >= input.StartETD)
// .WhereIF(input.EndETD != null, x => x.ETD <= input.EndETD)
// .ToPagedListAsync(input.PageNo, input.PageSize);
//}
///// <summary>
///// 删除
///// </summary>
///// <param name="Ids"></param>
///// <returns></returns>
//[HttpGet("/DjyVesselInfoService/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);
// var entity = await _rep.FirstOrDefaultAsync(u => u.Id == Id);
// await _rep.DeleteAsync(entity);
// }
// }
//}
/// <summary>
/// 新增编辑
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("/BookingVesselInfo/AddOrUpdate")]
public async Task<long> AddOrUpdate(DjyVesselInfoDto dto)
{
if (dto == null)
{
throw Oops.Bah("请传入数据!");
}
if (dto.Id == 0)
{
var entity = dto.Adapt<DjyVesselInfo>();
await _rep.InsertAsync(entity);
}
else
{
var entity = dto.Adapt<DjyVesselInfo>();
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
}
if ((dto.ETA != null || dto.ETD != null || dto.ATD != null) && !string.IsNullOrEmpty(dto.Vessel) && !string.IsNullOrEmpty(dto.Voyno)&&!string.IsNullOrEmpty(dto.CARRIERID))
{
var order=await _order.AsQueryable().Filter(null, true).Where(x => x.TenantId == UserManager.TENANT_ID && x.IsDeleted == false && x.VESSEL == dto.Vessel && x.VOYNO == dto.Voyno
&&x.CARRIERID==dto.CARRIERID).ToListAsync();
bool issend = false;
if (order != null)
{
_logger.LogInformation("手动更新船期:" + order.ToJsonString());
foreach (var it in order)
{
bool flag = false;
if (it.StartETA != dto.ETA)
{
flag = true;
it.StartETA = dto.ETA;
}
if (it.YgtETD != dto.YgtETD)
{
flag = true;
it.YgtETD = dto.YgtETD;
}
if (it.ATD != dto.ATD&&dto.ATD!=null)
{
flag = true;
it.ATD = dto.ATD;
}
if (flag)
{
issend = true;
await _order.AsUpdateable(it).IgnoreColumns().ExecuteCommandAsync();
}
}
if (issend)
{
await _bookingorderservice.SendBookingOrder(order.Where(x => x.ParentId == 0).Select(x => x.Id).ToArray());
}
}
}
return dto.Id;
}
///// <summary>
///// 下拉列表
///// </summary>
///// <returns></returns>
//[HttpGet("/DjyVesselInfoService/GetList")]
//public async Task<dynamic> GetList([FromQuery] string CarrierID, DateTime? ETD = null, string PortDischargeId = null, string KeyWord = "")
//{
// //获取船名
// List<CodeVessel> list = await _sysCacheService.GetAllCodeVessel();
// var tlist = await _rep.AsQueryable().Filter(null, true).WhereIF(!string.IsNullOrWhiteSpace(KeyWord), x => x.Vessel.StartsWith(KeyWord.ToUpper())).
// WhereIF(!string.IsNullOrEmpty(PortDischargeId), x => x.PortDischargeId == PortDischargeId).
// WhereIF(ETD != null, x => Convert.ToDateTime(x.ETD).ToString("yyyy-MM-dd") == Convert.ToDateTime(ETD).ToString("yyyy-MM-dd")).//船期关联船名
// WhereIF(ETD == null, x => x.ETD > DateTime.Now.AddDays(-7)).//领导需求当前日期7天之前
// WhereIF(!string.IsNullOrEmpty(CarrierID), x => x.CARRIERID == CarrierID || x.CARRIERID == null || x.CARRIERID == "").
// Where(x => x.TenantId == UserManager.TENANT_ID && x.CARRIERID != null && x.CARRIERID != "").
// Select(x => new
// {
// Voyno = x.Voyno,
// VoynoInside = x.VoynoInside,
// Vessel = x.Vessel,
// ETD = x.ETD == null ? "" : Convert.ToDateTime(x.ETD).ToString("yyyy-MM-dd"),
// ATD = x.ATD == null ? "" : Convert.ToDateTime(x.ATD).ToString("yyyy-MM-dd"),
// PortDischargeId = x.PortDischargeId,
// PortDischarge = x.PortDischarge
// }).Take(20).
// ToListAsync();
// if (_sysCacheService.GetAllTenantParam().Result.Where(x => x.TenantId == UserManager.TENANT_ID && x.ParaCode == "VESSEL_FROM_CONFIG_ONLY").Select(x => x.ItemCode).FirstOrDefault() == "YES"
// )
// {
// return tlist;
// }
// var ves = tlist.Select(x => x.Vessel).ToList();
// var all = list.WhereIF(!string.IsNullOrWhiteSpace(KeyWord), x => x.Name.StartsWith(KeyWord.ToUpper())).
// Select(x => new
// {
// Voyno = "",
// VoynoInside = "",
// Vessel = x.Name,
// ETD = "",
// ATD = "",
// PortDischargeId = "",
// PortDischarge = ""
// }).Take(20).ToList();
// foreach (var item in ves)
// {
// all.RemoveAll(x => x.Vessel.StartsWith(item));
// }
// return tlist.Union<dynamic>(all);
//}
}
}