|
|
|
|
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.Extensions.Logging;
|
|
|
|
|
using Furion.FriendlyException;
|
|
|
|
|
using Myshipping.Application.Enum;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using MiniExcelLibs;
|
|
|
|
|
using NPOI.HSSF.UserModel;
|
|
|
|
|
using Myshipping.Core.Helper;
|
|
|
|
|
using NPOI.SS.UserModel;
|
|
|
|
|
using Furion;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using Myshipping.Application.ConfigOption;
|
|
|
|
|
using Myshipping.Core.Service;
|
|
|
|
|
|
|
|
|
|
namespace Myshipping.Application
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 订舱货物状态服务
|
|
|
|
|
/// </summary>
|
|
|
|
|
[ApiDescriptionSettings("Application", Name = "BookingGoodsStatusConfig", Order = 1)]
|
|
|
|
|
public class BookingGoodsStatusConfigService : IBookingGoodsStatusConfigService, IDynamicApiController, ITransient
|
|
|
|
|
{
|
|
|
|
|
private readonly SqlSugarRepository<BookingGoodsStatusConfig> _rep;
|
|
|
|
|
private readonly ILogger<BookingGoodsStatusConfig> _logger;
|
|
|
|
|
private readonly ISysCacheService _cache;
|
|
|
|
|
|
|
|
|
|
public BookingGoodsStatusConfigService(SqlSugarRepository<BookingGoodsStatusConfig> rep, ILogger<BookingGoodsStatusConfig> logger, ISysCacheService cache)
|
|
|
|
|
{
|
|
|
|
|
_rep = rep;
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_cache = cache;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 分页查询订舱货物状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="input"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet("/BookingGoodsStatusConfig/page")]
|
|
|
|
|
public async Task<dynamic> Page([FromQuery] QueryBookingGoodsStatusConfigInput input)
|
|
|
|
|
{
|
|
|
|
|
//初次使用没有数据,进行初始化
|
|
|
|
|
InitGoodsStatusConfig(UserManager.UserId, UserManager.Name);
|
|
|
|
|
|
|
|
|
|
var entities = await _rep.AsQueryable()
|
|
|
|
|
.Where(m => m.CreatedUserId == UserManager.UserId)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(input.StatusName), u => u.StatusName.Contains(input.StatusName))
|
|
|
|
|
.OrderBy(m => m.Sort)
|
|
|
|
|
.ToPagedListAsync(input.PageNo, input.PageSize);
|
|
|
|
|
return entities.XnPagedResult();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存订舱货物状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="input"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost("/BookingGoodsStatusConfig/save")]
|
|
|
|
|
public async Task<long> Save(SaveBookingGoodsStatusConfigInput input)
|
|
|
|
|
{
|
|
|
|
|
BookingGoodsStatusConfig model = null;
|
|
|
|
|
if (input.Id > 0)
|
|
|
|
|
{
|
|
|
|
|
if (_rep.Count(x => x.StatusName == input.StatusName && x.Id != input.Id) > 0)
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Bah($"已存在相同名称的状态:{input.StatusName}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model = _rep.FirstOrDefault(x => x.Id == input.Id);
|
|
|
|
|
|
|
|
|
|
input.Adapt(model);
|
|
|
|
|
|
|
|
|
|
await _rep.UpdateAsync(model);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_rep.Count(x => x.StatusName == input.StatusName) > 0)
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Bah($"已存在相同名称的状态:{input.StatusName}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model = input.Adapt<BookingGoodsStatusConfig>();
|
|
|
|
|
await _rep.InsertAsync(model);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model.Id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 删除订舱货物状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost("/BookingGoodsStatusConfig/delete")]
|
|
|
|
|
public async Task Delete(long id)
|
|
|
|
|
{
|
|
|
|
|
var entity = await _rep.FirstOrDefaultAsync(u => u.Id == id);
|
|
|
|
|
entity.IsDeleted = true;
|
|
|
|
|
await _rep.UpdateAsync(entity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取订舱货物状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet("/BookingGoodsStatusConfig/detail")]
|
|
|
|
|
public async Task<BookingGoodsStatusConfig> Get(long id)
|
|
|
|
|
{
|
|
|
|
|
return await _rep.FirstOrDefaultAsync(u => u.Id == id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化当前用户的货物状态配置
|
|
|
|
|
/// </summary>
|
|
|
|
|
[NonAction]
|
|
|
|
|
public async void InitGoodsStatusConfig(long userid, string username)
|
|
|
|
|
{
|
|
|
|
|
var list = _rep.AsQueryable().Where(x => x.CreatedUserId == userid).ToList();
|
|
|
|
|
|
|
|
|
|
//2023年6月1日,修改为:非一次性初始化,每次都检查是否有新的统一配置的货物状态,如果有,给当前人增加上
|
|
|
|
|
//if (_rep.AsQueryable().Count(x => x.CreatedUserId == userid) == 0)
|
|
|
|
|
//{
|
|
|
|
|
var dicData = await _cache.GetAllDictData();
|
|
|
|
|
var listGoodsStatus = dicData.Where(x => x.TypeCode == "booking_goods_status").ToList();
|
|
|
|
|
listGoodsStatus.ForEach(async itm =>
|
|
|
|
|
{
|
|
|
|
|
if (list.Count(x => x.SystemCode == itm.Code) == 0) //找不到系统编码的,插入
|
|
|
|
|
{
|
|
|
|
|
await _rep.InsertAsync(new BookingGoodsStatusConfig()
|
|
|
|
|
{
|
|
|
|
|
StatusName = itm.Value,
|
|
|
|
|
Sort = itm.Sort,
|
|
|
|
|
SystemCode = itm.Code,
|
|
|
|
|
CreatedUserId = userid,
|
|
|
|
|
TenantId = UserManager.TENANT_ID,
|
|
|
|
|
CreatedUserName = username,
|
|
|
|
|
CreatedTime = DateTime.Now
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|