|
|
|
|
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.Core.Entity;
|
|
|
|
|
using Myshipping.Application.Entity;
|
|
|
|
|
using Furion.FriendlyException;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace Myshipping.Core.Service
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 船期手工维护模块
|
|
|
|
|
/// </summary>
|
|
|
|
|
[ApiDescriptionSettings(Name = "DjyVesselInfo", Order = 1)]
|
|
|
|
|
public class DjyVesselInfoService : IDjyVesselInfoService, IDynamicApiController, ITransient
|
|
|
|
|
{
|
|
|
|
|
private readonly SqlSugarRepository<DjyVesselInfo> _rep;
|
|
|
|
|
private readonly ISysCacheService _sysCacheService;
|
|
|
|
|
public DjyVesselInfoService(SqlSugarRepository<DjyVesselInfo> rep, ISysCacheService sysCacheService)
|
|
|
|
|
{
|
|
|
|
|
_sysCacheService = sysCacheService;
|
|
|
|
|
_rep = rep;
|
|
|
|
|
}
|
|
|
|
|
/// <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("/DjyVesselInfoService/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();
|
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|