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 { /// /// 船期手工维护模块 /// [ApiDescriptionSettings(Name = "DjyVesselInfo", Order = 1)] public class DjyVesselInfoService : IDjyVesselInfoService, IDynamicApiController, ITransient { private readonly SqlSugarRepository _rep; private readonly ISysCacheService _sysCacheService; public DjyVesselInfoService(SqlSugarRepository rep, ISysCacheService sysCacheService) { _sysCacheService = sysCacheService; _rep = rep; } /// /// 获取列表 /// /// [HttpGet("/DjyVesselInfoService/GetListPage")] public async Task 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(); } /// /// 获取列表分页 /// /// /// [HttpGet("/DjyVesselInfoService/page")] public async Task 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); } /// /// 删除 /// /// /// [HttpGet("/DjyVesselInfoService/Delete")] public async Task Delete([FromQuery] long[] Ids) { var entity = await _rep.FirstOrDefaultAsync(u => Ids.Contains(u.Id)); await _rep.DeleteAsync(entity); } /// /// 新增编辑 /// /// /// [HttpPost("/DjyVesselInfoService/AddOrUpdate")] public async Task AddOrUpdate(DjyVesselInfoDto dto) { if (dto == null) { throw Oops.Bah("请传入数据!"); } if (dto.Id == 0) { var entity = dto.Adapt(); await _rep.InsertAsync(entity); } else { var entity = dto.Adapt(); await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } return dto.Id; } /// /// 下拉列表 /// /// [HttpGet("/DjyVesselInfoService/GetList")] public async Task GetList([FromQuery] string CarrierID, DateTime? ETD = null, string PortDischargeId = null,string KeyWord = "") { //获取船名 List 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(all); } } }