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.AspNetCore.Authorization; using Furion; using Microsoft.AspNetCore.Http; using Furion.DataEncryption; using System.Collections.Generic; using System.Security.Claims; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Identity; using Furion.FriendlyException; using Furion.Logging; using System; using Microsoft.Extensions.Logging; using System.Reflection; using System.ComponentModel; using Myshipping.Application.ConfigOption; using System.IO; using Yitter.IdGenerator; using Myshipping.Core.Entity; using Furion.RemoteRequest.Extensions; using System.Net.Http; using Myshipping.Core.Service; using System.Reflection.Emit; using Myshipping.Application.Service.BookingOrderSeaeEdi.Dto; namespace Myshipping.Application { /// /// 舱单服务 /// [ApiDescriptionSettings("Application", Name = "BookingOrderSeaeEdi", Order = 1)] public class BookingOrderSeaeEdiService : IBookingOrderSeaeEdiService, IDynamicApiController, ITransient { private readonly ILogger _logger; private readonly SqlSugarRepository _seaeedi; private readonly SqlSugarRepository _seaeedictn; public BookingOrderSeaeEdiService(ILogger logger, SqlSugarRepository seaeedi, SqlSugarRepository seaeedictn) { this._logger = logger; this._seaeedi = seaeedi; this._seaeedictn = seaeedictn; } /// /// 获取数据 /// /// /// [HttpGet("/BookingOrderSeaeEdi/PageESeaeEdi")] public async Task> PageESeaeEdi(long bookingId) { var entities = await _seaeedi.AsQueryable().Filter(null, true).Where(x => x.BookingId == bookingId).ToListAsync(); var list = entities.Adapt>(); foreach (var item in list) { var ctn = await _seaeedictn.AsQueryable().Filter(null, true).Where(x => x.PId == item.Id).ToListAsync(); item.EdiCtn = ctn.Adapt>(); } return list; } /// /// 立即返回保存信息 /// /// /// [HttpPost("/BookingOrderSeaeEdi/Save")] public async Task Save(BookingOrderSeaeEdiServiceDto input) { if (input == null) { throw Oops.Bah("请传入正常数据!"); } if (!string.IsNullOrWhiteSpace(input.MBLNO)) { var et = await _seaeedi.Where(x => x.MBLNO == input.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == input.HBLNO && x.Id != input.Id).FirstAsync(); if (et != null) { throw Oops.Bah("当前提单号已存在,请勿重复录入!"); } } var entity = input.Adapt(); if (input.Id == 0) { await _seaeedi.InsertAsync(entity); if (input.EdiCtn != null) { foreach (var item in input.EdiCtn) { var ctn = item.Adapt(); ctn.PId = entity.Id; await _seaeedictn.InsertAsync(ctn); } } } else { await _seaeedi.AsUpdateable(entity).IgnoreColumns(it => new { it.MBLNO, it.HBLNO, it.BookingId, it.TenantId, it.CreatedTime, it.CreatedUserId, it.CreatedUserName, it.IsDeleted }).ExecuteCommandAsync(); await _seaeedictn.DeleteAsync(x => x.PId == input.Id); if (input.EdiCtn != null) { foreach (var item in input.EdiCtn) { var ctn = item.Adapt(); ctn.PId = entity.Id; await _seaeedictn.InsertAsync(ctn); } } } var entities = await _seaeedi.AsQueryable().Filter(null, true).Where(x => x.BookingId == entity.Id).ToListAsync(); var list = entities.Adapt>(); foreach (var item in list) { var ctn = await _seaeedictn.AsQueryable().Filter(null, true).Where(x => x.PId == item.Id).ToListAsync(); item.EdiCtn = ctn.Adapt>(); } return list; } /// /// 删除舱单 /// /// /// [SqlSugarUnitOfWork] [HttpPost("/BookingOrderSeaeEdi/Delete")] public async Task Delete(long Id) { await _seaeedi.UpdateAsync(x => x.Id == Id, x => new BookingOrderSeaeEdi { IsDeleted = true }); await _seaeedictn.UpdateAsync(x => x.PId == Id, x => new BookingOrderSeaeEdiCtn { IsDeleted = true }); _logger.LogInformation(Id + "删除成功!"); } #region 舱单 ///// ///// 舱单 ///// ///// ///// //[HttpPost("/BookingOrderSeaeEdi/CustEDI")] //public async Task CustEDI(long bookingId) //{ // var order = _seaeedi.FirstOrDefault(x => x.BookingId == bookingId); // var ctns = _seaeedictn.Where(x => x.BILLID == bookingId).ToList(); // //船公司 // if (string.IsNullOrEmpty(order.CARRIERID)) // { // throw Oops.Bah(BookingErrorCode.BOOK118); // } // //提单号不能为空 // if (string.IsNullOrEmpty(order.MBLNO)) // { // throw Oops.Bah(BookingErrorCode.BOOK127); // } // if (string.IsNullOrEmpty(order.YARDID)) // { // throw Oops.Bah("场站未正确选择"); // } // List custEDIDtos = new List(); // MDATA mDATA = new MDATA(); // mDATA.MBLNO = order.MBLNO; // mDATA.HBLNO = order.HBLNO; // mDATA.ETD = order.ETD == null ? "" : Convert.ToDateTime(order.ETD).ToString("yyyy-MM-dd"); // mDATA.FORWARDER = order.SHIPAGENCY; // mDATA.VESSEL = order.VESSEL; // mDATA.VOYNO = order.VOYNO; // mDATA.CARRIER = order.CARRIERID; // mDATA.SHIPPERNAME = order.SHIPPER; // mDATA.SHIPPERADDR1 = order.SHIPPERADDR1; // mDATA.SHIPPERCOUNTRY = order.SHIPPERCOUNTRY; // mDATA.SHIPPERTEL = order.SHIPPERTEL; // mDATA.CONSIGNEENAME = order.CONSIGNEE; // mDATA.CONSIGNEEADDR1 = order.CONSIGNEEADDR1; // mDATA.CONSIGNEECOUNTRY = order.CONSIGNEERCOUNTRY; // mDATA.CONSIGNEETEL = order.CONSIGNEETEL; // mDATA.NOTIFYPARTYNAME = order.NOTIFYPARTY; // mDATA.NOTIFYPARTYADDR1 = order.NOTIFYPARTYADDR1; // mDATA.NOTIFYPARTYCOUNTRY = order.NOTIFYPARTYCOUNTRY; // mDATA.NOTIFYPARTYTEL = order.NOTIFYPARTYTEL; // //var user = await _repUser.FirstOrDefaultAsync(x => x.Id == UserManager.UserId); // // int idx = 1; // // //调用接口 // // var dicUrl = _cache.GetAllDictData().Result.First(x => x.TypeCode == "url_set" && x.Code == "request_emf"); // // var sendObj = new // // { // // SystemCode = "djy_hechuan", // // billOrderId = order.Id.ToString(), // // sendOrderCode = order.MBLNO, // // customerName = $"{UserManager.TENANT_NAME}+{UserManager.Name}", //公司名称+用户姓名 // // customerId = order.CUSTOMERID.ToString(), // // agentName = string.IsNullOrEmpty(order.FORWARDER) ? UserManager.TENANT_NAME : order.FORWARDER, // // carrierCode = order.CARRIERID, // // userName = webacc.Account, // // userPassword = webacc.Password, // // depotCode = order.YARDID, // // depotName = order.YARD, // // linkName = UserManager.Name, // // linkMobile = user.Phone, // // linkEmail = user.Email, // // userId = user.DjyUserId, // // returnUrl = "", // // shipName = order.VESSEL, // // voyNo = order.VOYNO, // // etdstr = order.ETD.HasValue ? order.ETD.Value.ToString("yyyy-MM-dd") : string.Empty, // // potrSend = order.PORTLOAD, // // potrGoal = order.PORTDISCHARGE, // // boxinfoStr = order.CNTRTOTAL, // // vgmEndTimeStr = order.CLOSEVGMDATE.HasValue ? order.CLOSEVGMDATE.Value.ToString("yyyy-MM-dd") : string.Empty, // // BoxInfo = ctns.Select(c => new // // { // // index = idx++, // // boxType = c.CTNALL, // // boxcount = c.CTNNUM.HasValue ? c.CTNNUM.Value : 0, // // code = c.CNTRNO, // // sealCode = c.SEALNO, // // weigth = c.KGS, // // weigthTare = c.TAREWEIGHT, // // weigthTotal = c.WEIGHKGS, // // weigthType = c.WEIGHTYPE == "累加" ? "SM2" : "SM1" // // }).ToList(), // // returnOkUrl = "" // // }; // // string strPostObj = sendObj.ToJsonString(); // // _logger.LogInformation($"调用VGM直发接口 {dicUrl.Value} 传递数据:{strPostObj}"); // // var strResp = await dicUrl.Value.SetBody(sendObj).PostAsStringAsync(); // // _logger.LogInformation($"调用VGM直发接口返回:{strResp}"); // // var jobjResp = JObject.Parse(strResp); // // int respCode = jobjResp.GetIntValue("code"); // // if (respCode != 200) // // { // // throw Oops.Bah(BookingErrorCode.BOOK128, jobjResp.GetStringValue("message")); // // } // // //货运动态 // // var bsl = new BookingStatusLog(); // // bsl.BookingId = bookingId; // // bsl.Status = $"直发VGM"; // // bsl.OpTime = DateTime.Now; // // bsl.Category = "ship"; // // bsl.MBLNO = order.MBLNO; // // await _repStatuslog.InsertAsync(bsl); //} #endregion } }