using Amazon.Runtime.Internal.Util; using DS.Module.Core; using DS.Module.Core.Data; using DS.Module.Core.Helpers; using DS.Module.DjyRulesEngine; using DS.WMS.Core.Info.Dtos; using DS.WMS.Core.Info.Interface; using DS.WMS.Core.Op.Dtos; using DS.WMS.Core.Op.Dtos.Cargoo; using DS.WMS.Core.Op.Dtos.VGM; using DS.WMS.Core.Op.EDI; using DS.WMS.Core.Op.Interface; using DS.WMS.Core.Sys.Dtos; using DS.WMS.Core.Sys.Interface; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using NPOI.XWPF.UserModel; using Org.BouncyCastle.Ocsp; using SharpCompress.Common; using System.IO; using System.Net; namespace DS.WMS.OpApi.Controllers; /// /// 海运出口信息-模块 /// public class SeaExportController : ApiController { private readonly ISeaExportService _invokeService; private readonly ISeaExportCommonService _commonService; private readonly ICargooService _cargooService; /// /// 构造函数 /// /// public SeaExportController(ISeaExportService invokeService, ISeaExportCommonService commonService, ICargooService cargooService) { _invokeService = invokeService; _commonService = commonService; _cargooService = cargooService; } /// /// 列表 /// /// /// [HttpPost] [Route("GetSeaExportList")] public async Task> GetSeaExportList([FromBody] PageRequest request) { var res = await _invokeService.GetListByPage(request); return res; } /// /// 海运出口分单列表 /// /// 传参ParentId等于主单id /// [HttpPost] [Route("GetSeaExportPartList")] public async Task>> GetSeaExportPartList([FromBody] PageRequest request) { var res = await _invokeService.GetSeaExportPartList(request); return res; } /// /// 海运出口日志列表 /// /// 主单id /// [HttpGet] [Route("GetSeaExportLogList")] public async Task>> GetSeaExportLogList([FromQuery] string id) { var res = await _invokeService.GetSeaExportLogList(id); return res; } /// /// 编辑 /// /// /// [HttpPost] [Route("EditSeaExport")] public async Task EditSeaExport([FromBody] SeaExportReq req) { var res = await _invokeService.EditSeaExport(req); return res; } /// /// 业务单据复制-返回前端 /// /// /// [HttpPost] [Route("GetSeaExportCopyInfo")] public async Task> GetSeaExportCopyInfo([FromBody] SeaExportCopyReq req) { var res = await _invokeService.GetSeaExportCopyInfo(req); return res; } /// /// 详情 /// /// /// [HttpGet] [Route("GetSeaExportInfo")] public async Task> GetSeaExportInfo([FromQuery] string id) { var res = await _invokeService.GetSeaExportInfo(id); return res; } /// /// 批量编辑 /// /// /// [HttpPost] [Route("SeaExportBatchEdit")] public async Task SeaExportBatchEdit([FromBody] SeaExportBatchEditReq req) { var res = await _invokeService.SeaExportBatchEdit(req); return res; } /// /// 业务单据删除 /// /// /// [HttpGet] [Route("SeaExportDel")] public async Task SeaExportDel([FromQuery] string id) { var res = await _invokeService.SeaExportDel(id); return res; } /// /// 业务单据批量删除 /// /// /// [HttpPost] [Route("SeaExportBatchDel")] public async Task SeaExportBatchDel([FromBody] IdModel req) { var res = await _invokeService.SeaExportBatchDel(req); return res; } /// /// 业务单据复制-单票 /// /// /// [HttpGet] [Route("SeaExportCopy")] public DataResult SeaExportCopy([FromQuery] string id) { var res = _invokeService.SeaExportCopy(id); return res; } /// /// 获取场站数据 /// /// 业务Id /// 是否网站数据 默认false /// [HttpGet] [Route("GetYardData")] public async Task> GetYardData([FromQuery] string id, bool isWeb = false) { return await _invokeService.GetYardData(id, isWeb); } /// /// 获取订舱记录在指定网站的HTML数据 /// /// 业务Id /// 网站编码;值为YARD或HLW_CD或YGT;YARD:获取订舱记录所属场站的网页数据;HLW_CD:获取互联网+的网页数据;YGT:获取云港通的网页数据 /// [HttpGet] [Route("GetWebData")] public async Task> GetWebData([FromQuery] string id, string webCode) { return await _invokeService.GetWebData(id, webCode); } /// /// 发起运踪订阅或者更新提单号 /// /// /// [HttpPost] [Route("SendOrUpdateTrace")] public async Task> SendOrUpdateTrace([FromBody] List req) { return await _invokeService.SendOrUpdateTrace(req); } /// /// 运踪退订 /// /// /// [HttpPost] [Route("UnsubscribeBillTrace")] public async Task> UnsubscribeBillTrace([FromBody] List req) { return await _invokeService.UnsubscribeBillTrace(req); } /// /// 获取VGM、VGM SI链接 /// /// 业务Id /// [HttpGet] [Route("VgmLink")] public async Task> VgmLink([FromQuery] string id) { return await _invokeService.VgmLink(id); } /// /// 发送VGM /// /// 业务Id /// [HttpGet] [Route("VgmSend")] public async Task> VgmSend([FromQuery] string id) { return await _invokeService.VgmSend(id); } /// /// 批量获取vgm /// /// 业务id 逗号拼接 /// [HttpGet] [Route("GetVmgDataList")] public async Task>> GetVmgDataList([FromQuery] string ids) { return await _invokeService.GetVmgDataList(ids); } /// /// 批量保存vgm /// /// /// [HttpPost] [Route("SaveBatchVgm")] public async Task> SaveBatchVgm([FromBody] List req) { return await _invokeService.SaveBatchVgm(req); } /// /// 获取提箱小票链接 /// /// 业务Id /// [HttpGet] [Route("TxxpLink")] public async Task> TxxpLink([FromQuery] string id) { return await _invokeService.TxxpLink(id); } /// /// 检查是否VOLTA并返回初始数据 /// /// /// [HttpPost] [Route("CheckAndInitVOLTAEdi")] public DataResult CheckAndInitVOLTAEdi([FromBody] BookingOrClosingEDIOrderReq req) { return _invokeService.CheckAndInitVOLTAEdi(req); } /// /// 发送订舱、截单EDI /// /// 订舱、截单EDI请求 /// 返回回执 [HttpPost] [Route("SendBookingOrClosingEDI")] public async Task> SendBookingOrClosingEDI([FromBody] BookingOrClosingEDIOrderReq req) { return await _invokeService.SendBookingOrClosingEDI(req); } /// /// 下载订舱、截单EDI /// /// 订舱、截单EDI请求 /// 返回回执 [HttpPost] [Route("DownloadBookingOrClosingEDI")] [ProducesResponseType(typeof(FileResult), StatusCodes.Status200OK)] public async Task DownloadBookingOrClosingEDI([FromBody] BookingOrClosingEDIOrderReq req) { var res = await _invokeService.DownloadBookingOrClosingEDI(req); if (!res.Succeeded) { //return (IActionResult)await Task.FromResult(DataResult.Failed(res.Message)); throw new Exception(res.Message); } var path = res.Data.FilePath; var fileName = res.Data.FileName; //byte[] byteArr = System.IO.File.ReadAllBytes(res.Data.FilePath); //string mimeType = "application/octet-stream"; //return new FileContentResult(byteArr, mimeType) //{ // FileDownloadName = fileName //}; return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; } /// /// 发送下货纸 /// /// 业务id /// [HttpGet] [Route("SendXHZ")] public async Task SendXHZ([FromQuery] string id) { return await _invokeService.SendXHZ(id); } /// /// 船司电放提交 /// /// 订舱主键数组 /// 每单的处理提交结果 [HttpPost] [Route("SubmitTelex")] public async Task>> SubmitTelex([FromBody] IdModel req) { var res = await _invokeService.SubmitTelex(req); return res; } /// /// 上传OCR附件 /// /// 文件信息 /// 业务附件请求实体 TypeCode = "other",TypeName = "其他" /// [HttpPost] [Route("UploadOcrFile")] public async Task> UploadOcrFile(IFormFile file, [FromForm] OpFileReq req) { var res = _invokeService.UploadOcrFile(file, req); return await res; } /// /// 获取文字 /// /// 文件名称 /// 缩放比例 /// x坐标 /// y坐标 /// 宽度 /// 高度 /// [HttpGet("GetOcrText")] public async Task> GetOcrText([FromQuery] string fileName, float scale, int x, int y, int w, int h) { var config = await _commonService.GetConfigData("ocr_api_url"); if (!config.Succeeded) { return await Task.FromResult(DataResult.Failed("OCR接口地址未配置!")); } var url = config.Data; if (!url.EndsWith("/")) { url += "/"; } var postUrl = $"{url}pdf/getRegionText?fileName={fileName}&scale={scale}&x={x}&y={y}&w={w}&h={h}"; //var str = await $"{url}pdf/getRegionText?fileName={fileName}&scale={scale}&x={x}&y={y}&w={w}&h={h}" //.PostAsStringAsync(); var str = RequestHelper.Post("", postUrl); return await Task.FromResult(DataResult.Success(str)); ; } /// /// 获取图片 /// /// 文件名称 /// 缩放比例,默认为1.5 /// [HttpGet] [Route("GetOcrImg")] [ProducesResponseType(typeof(FileResult), StatusCodes.Status200OK)] public async Task GetOcrImg([FromQuery] string fileName, float scale = 1.5f) { var config = await _commonService.GetConfigData("ocr_api_url"); //if (!config.Succeeded) //{ // return await Task.FromResult(DataResult.Failed("OCR接口地址未配置!")); //} var url = config.Data; if (!url.EndsWith("/")) { url += "/"; } var postUrl = $"{url}pdf/getCanvasImage?fileName={fileName}&scale={scale}"; WebClient mywebclient = new WebClient(); byte[] byteArr = mywebclient.DownloadData(postUrl); //byte[] byteArr = System.IO.File.ReadAllBytes(postUrl); string mimeType = "application/octet-stream"; return new FileContentResult(byteArr, mimeType) { FileDownloadName = fileName }; } /// /// 海运出口规则引擎校验 /// /// 业务id /// [HttpGet] [Route("ExcuteRuleEngine")] public async Task> ExcuteRuleEngine([FromQuery] string id) { return await _invokeService.ExcuteRuleEngine(id); } /// /// 订单及货运动态 /// /// /// [HttpPost] [Route("GetBookingStatusLogList")] public async Task>> GetBookingStatusLogList([FromBody] PageRequest request) { var res = await _invokeService.GetBookingStatusLogList(request); return res; } /// /// 发送托书 /// /// /// [HttpPost] [Route("SendShippingOrderEmail")] public async Task> SendShippingOrderEmail([FromBody] SendShippingOrderReq req) { var res = await _invokeService.SendShippingOrderEmail(req); return res; } /// /// 打印托书 /// /// 业务Id /// [HttpGet] [Route("PrintShippingOrderPDF")] [Obsolete] public async Task PrintShippingOrderPDF([FromQuery] string id) { var res = await _invokeService.PrintShippingOrderPDF(id); return res; } /// /// 刷新运踪(互联网和云港通) /// /// /// [HttpPost] [Route("RefreshYGT")] public async Task> RefreshYGT([FromBody] IdModel req) { return await _invokeService.RefreshYGT(req.Ids); } /// /// 打印保函 /// /// 业务Id /// [HttpGet] [Route("PrintShippingOrderLetterPDF")] public async Task PrintShippingOrderLetterPDF([FromQuery] string id) { var res = await _invokeService.PrintShippingOrderLetterPDF(id); return res; } #region 获取VGM发送通道选项 /// /// 获取VGM发送通道选项 /// /// 订单主键 /// 返回回执 [HttpGet] [Route("GetVgmSendChannel")] public async Task> GetVgmSendChannel(string id) { return await _invokeService.GetVgmSendChannel(id); } #endregion /// /// 发送Cargoo /// /// 业务Id /// [HttpGet] [Route("SendCargoo")] public async Task> SendCargoo([FromQuery] long id) { var res = await _cargooService.SendCargoo(new Core.Op.Dtos.Cargoo.CargooShipmentReqDto { bookingId = id, cargooStatusEnum = CargooStatusEnum.Confirmed, }); return res; } }