|
|
|
@ -127,7 +127,7 @@ namespace Myshipping.Application
|
|
|
|
|
public async Task<dynamic> Page([FromQuery] BookingOrderInput input)
|
|
|
|
|
{
|
|
|
|
|
List<long> userlist = await DataFilterExtensions.GetDataScopeIdList();
|
|
|
|
|
var entities = await _rep.AsQueryable()
|
|
|
|
|
var entities = await _rep.AsQueryable().Where(x => x.ParentId == 0)
|
|
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.BSSTATUS), u => u.BSSTATUS == input.BSSTATUS)
|
|
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.MBLNO), u => input.MBLNO.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Contains(u.MBLNO))
|
|
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(input.HBLNO), u => input.HBLNO.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Contains(u.HBLNO))
|
|
|
|
@ -262,7 +262,23 @@ namespace Myshipping.Application
|
|
|
|
|
[HttpPost("/BookingOrder/Add")]
|
|
|
|
|
public async Task Add(AddBookingOrderInput input)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (input.ParentId == 0)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.HBLNO))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Bah("主单不需要填写分单号");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.MBLNO))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Bah("请填写主提单号");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JsonUtil.PropToUpper(input, "ORDNO", "BSSTATUS", "YardContract", "YardContractTel", "YardContractEmail");
|
|
|
|
|
JsonUtil.TrimFields(input);
|
|
|
|
|
if (input.ctnInputs != null)
|
|
|
|
@ -334,6 +350,20 @@ namespace Myshipping.Application
|
|
|
|
|
[HttpPost("/BookingOrder/Update")]
|
|
|
|
|
public async Task Update(UpdateBookingOrderInput input)
|
|
|
|
|
{
|
|
|
|
|
if (input.ParentId == 0)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.HBLNO))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Bah("主单不需要填写分单号");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.MBLNO))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Bah("请填写主提单号");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
JsonUtil.PropToUpper(input, "ORDNO", "BSSTATUS", "YardContract", "YardContractTel", "YardContractEmail");
|
|
|
|
|
JsonUtil.TrimFields(input);
|
|
|
|
|
if (input.ctnInputs != null)
|
|
|
|
@ -451,6 +481,27 @@ namespace Myshipping.Application
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
List<BookingOrderDto> HbList = new List<BookingOrderDto>();
|
|
|
|
|
var _hblist = await _rep.AsQueryable().Where(x => x.ParentId == Id).ToListAsync();
|
|
|
|
|
if (_hblist != null)
|
|
|
|
|
{
|
|
|
|
|
HbList = _hblist.Adapt<List<BookingOrderDto>>();
|
|
|
|
|
foreach (var item in HbList)
|
|
|
|
|
{
|
|
|
|
|
var ctnlist = await _repCtn.AsQueryable().Where(x => x.BILLID == item.Id).ToListAsync();
|
|
|
|
|
var ctninput = ctnlist.Adapt<List<BookingCtnDto>>();
|
|
|
|
|
foreach (var it in ctninput)
|
|
|
|
|
{
|
|
|
|
|
var ctndetaillist = await _ctndetailrep.AsQueryable().Where(x => x.CTNID == it.Id).ToListAsync();
|
|
|
|
|
it.ctnDetailInputs = ctndetaillist.Adapt<List<BookingCtnDetailDto>>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
item.ctnInputs = ctninput;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ordOut.HbList = HbList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ordOut;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
@ -552,7 +603,7 @@ namespace Myshipping.Application
|
|
|
|
|
FilePath = fileRelaPath,
|
|
|
|
|
TypeCode = dto.TypeCode,
|
|
|
|
|
TypeName = dto.TypeName,
|
|
|
|
|
BookingId= dto.BookingId
|
|
|
|
|
BookingId = dto.BookingId
|
|
|
|
|
};
|
|
|
|
|
await _bookingfile.InsertAsync(newFile);
|
|
|
|
|
using (var stream = File.Create(fileAbsPath))
|
|
|
|
@ -604,10 +655,26 @@ namespace Myshipping.Application
|
|
|
|
|
[HttpGet("/BookingOrder/download")]
|
|
|
|
|
public async Task<IActionResult> Download(long id)
|
|
|
|
|
{
|
|
|
|
|
var file = await _bookingfile.FirstOrDefaultAsync(x => x.Id == id);
|
|
|
|
|
var filePath = Path.Combine(App.WebHostEnvironment.WebRootPath, file.FilePath);
|
|
|
|
|
var fileName = HttpUtility.UrlEncode(file.FileName, Encoding.GetEncoding("UTF-8"));
|
|
|
|
|
var result = new FileStreamResult(new FileStream(filePath, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
|
|
|
|
|
var printFile = await _bookingfile.FirstOrDefaultAsync(u => u.Id == id);
|
|
|
|
|
if (printFile == null)
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh(BookingErrorCode.BOOK200);
|
|
|
|
|
}
|
|
|
|
|
var opt = App.GetOptions<BookingAttachOptions>();
|
|
|
|
|
var dirAbs = opt.basePath;
|
|
|
|
|
if (string.IsNullOrEmpty(dirAbs))
|
|
|
|
|
{
|
|
|
|
|
dirAbs = App.WebHostEnvironment.WebRootPath;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var fileFullPath = Path.Combine(dirAbs, printFile.FilePath);
|
|
|
|
|
if (!File.Exists(fileFullPath))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh(BookingErrorCode.BOOK115);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var fileName = HttpUtility.UrlEncode(printFile.FileName, Encoding.GetEncoding("UTF-8"));
|
|
|
|
|
var result = new FileStreamResult(new FileStream(fileFullPath, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
@ -1708,12 +1775,12 @@ namespace Myshipping.Application
|
|
|
|
|
throw Oops.Oh($"货明细的包装{cargo.KINDPKGS}的EDI代码未找到");
|
|
|
|
|
|
|
|
|
|
cargoModel.KINDPKGS_EDI_CODE = ediDetailPkgs.MapCode;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
primaryModel.CTNGOODSLIST.Add(cargoModel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//这里临时赋值,等明确对应的扩展表字段后赋值
|
|
|
|
|
#if DEBUG
|
|
|
|
|
#if DEBUG
|
|
|
|
|
primaryModel.MasterBOLIndicator = "A1";
|
|
|
|
|
primaryModel.ConsigneeEdiCode = "CEE1";
|
|
|
|
|
primaryModel.ShipperEdiCode = "SHIP1";
|
|
|
|
@ -1732,9 +1799,9 @@ namespace Myshipping.Application
|
|
|
|
|
throw Oops.Bah(result.msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return result.extra.ToString();
|
|
|
|
|
}
|
|
|
|
|