using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; using Common; using djy.Model.Ams; using djy.Model.AmsDto; using Common.Extensions; using Common.DJYModel; using System.Transactions; using Dapper.Contrib.Extensions; using Common.Utilities; using Newtonsoft.Json; using System.Security.Cryptography; using System.Text.Encodings.Web; using Common.Tools; using System.Web; using Newtonsoft.Json.Linq; using iTextSharp.text; using System.IO; using iTextSharp.text.pdf; using System.Reflection; using djy.IService.Ams; using djy.Service.DjyService; namespace djy.Service.Ams { /// /// AMS /// public class AmsService : ServBase, IAmsService { #region 查询列表 public TableData Load(AMSQuery req, User user, UserAuthorityDto aut) { var result = new TableData(); int count = 0; string[] ReportStates = null; if (req.ReportState != null) { ReportStates = req.ReportState.Split(','); } List hou = null; if (!req.HBLNo.IsNullOrEmpty()) { hou = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true) .WhereIf(req.HBLNo != null, x => x.HBLNo.Contains(req.HBLNo)).ToList().Select(x => x.PID).ToList(); } var dto = DbBus.Get(DbList.AMSCenter).Select() .Where(x => x.IsDel != true) .WhereIf(!string.IsNullOrEmpty(req.Mid), x => x.GID == req.Mid) .WhereIf(aut.CompayId != null, x => x.CompID == aut.CompayId.ToString()) .WhereIf(aut.UserId != null, x => x.UserID == aut.UserId.ToString()) .WhereIf(req.MBLNO != null, x => x.MBLNO.Contains(req.MBLNO.Trim())) .WhereIf(req.PORTDISCHARGECode != null, x => x.PORTDISCHARGECode == req.PORTDISCHARGECode) .WhereIf(req.LoadingPortCode != null, x => x.LoadingPortCode == req.LoadingPortCode) .WhereIf(req.UserName != null, x => x.UserName.Contains(req.UserName.Trim())) .WhereIf(req.CARRIERID != null, x => req.CARRIERID == x.CARRIERID) .WhereIf(hou != null, x => hou.Contains(x.GID)) .WhereIf(req.BDate != null, x => x.CreateTime >= req.BDate) .WhereIf(req.EDate != null, x => x.CreateTime <= req.EDate).OrderByDescending(x => x.CreateTime); if (req.ReportState == "0") { result.count = dto.ToList().Count(); var SASCCODEList = DbBus.Get(DbList.djydb).Select().Where(x => x.ParaCode == "AMSSASCCODE").ToList(); var list = dto.Page(req.Page, req.Limit).ToList(); if (list != null) { foreach (var item in list) { var SASCCODE = SASCCODEList.Where(x => x.CompId == item.CompID).FirstOrDefault(); if (SASCCODE != null) { item.SASCCODE = SASCCODE.ItemCode; } else { item.SASCCODE = "NIAV"; } var hodto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == item.GID) .WhereIf(!string.IsNullOrEmpty(req.Hid), x => x.GID == req.Hid) .WhereIf(req.HBLNo != null, x => x.HBLNo.Contains(req.HBLNo.Trim())) .WhereIf(req.ReportState == "0", x => x.ReportState == "未申报") .WhereIf(req.ReportState == "1", x => x.ReportState != "未申报") .WhereIf(req.ReportState != null && req.ReportState != "0" && req.ReportState != "1", x => ReportStates.Contains(x.ReportState)) .ToList(); item.HouseDto = hodto; if (hodto != null) { foreach (var it in hodto) { var cnt = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.HID == it.GID).ToList(); it.CntrnoDto = cnt; var historyDto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.AM_ID == it.GID).OrderByDescending(x => x.SendTime).ToList(); it.HistoryDto = historyDto; } } count += hodto.Count(); } } result.data = list.Where(x => x.HouseDto != null && x.HouseDto.Count() > 0).ToList(); } else { var g = dto.ToList().Select(x => x.GID).ToList(); result.count = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && g.Contains(x.PID)) .WhereIf(!string.IsNullOrEmpty(req.Hid), x => x.GID == req.Hid) .WhereIf(req.HBLNo != null, x => x.HBLNo.Contains(req.HBLNo.Trim())) .WhereIf(req.ReportState == "0", x => x.ReportState == "未申报") .WhereIf(req.ReportState == "1", x => x.ReportState != "未申报") .WhereIf(req.ReportState != null && req.ReportState != "0" && req.ReportState != "1", x => ReportStates.Contains(x.ReportState)).ToList() .Count(); var SASCCODEList = DbBus.Get(DbList.djydb).Select().Where(x => x.ParaCode == "AMSSASCCODE").ToList(); var list = dto.ToList(); if (list != null) { foreach (var item in list) { var SASCCODE = SASCCODEList.Where(x => x.CompId == item.CompID).FirstOrDefault(); if (SASCCODE != null) { item.SASCCODE = SASCCODE.ItemCode; } else { item.SASCCODE = "NIAV"; } var hodto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == item.GID) .WhereIf(!string.IsNullOrEmpty(req.Hid), x => x.GID == req.Hid) .WhereIf(req.HBLNo != null, x => x.HBLNo.Contains(req.HBLNo.Trim())) .WhereIf(req.ReportState == "0", x => x.ReportState == "未申报") .WhereIf(req.ReportState == "1", x => x.ReportState != "未申报") .WhereIf(req.ReportState != null && req.ReportState != "0" && req.ReportState != "1", x => ReportStates.Contains(x.ReportState)) .ToList(); item.HouseDto = hodto.ToList(); if (hodto != null) { foreach (var it in hodto) { var cnt = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.HID == it.GID).ToList(); it.CntrnoDto = cnt; var historyDto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.AM_ID == it.GID).OrderByDescending(x => x.SendTime).ToList(); it.HistoryDto = historyDto; } } } } result.data = list.Where(x => x.HouseDto != null && x.HouseDto.Count() > 0).Skip((req.Page-1) * req.Limit).Take(req.Limit).ToList(); } return result; } #endregion #region 删除 public void Delete(string ids, User user) { string[] id = ids.Split(','); DbBus.Get(DbList.AMSCenter).Transaction(() => { foreach (string oid in id) { if (oid != "") { DbBus.Get(DbList.AMSCenter).Transaction(() => { AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = oid; history.SendTime = DateTime.Now;///此处为删除时间 history.State = "删除"; history.Type = "0"; history.Operator = user.SHOWNAME; history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "删除了单据"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); DbBus.Get(DbList.AMSCenter).Update().Set(w => w.IsDel, true).Where(w => w.GID == oid).ExecuteAffrows(); DbBus.Get(DbList.AMSCenter).Update().Set(w => w.IsDel, true).Where(w => w.PID == oid).ExecuteAffrows(); DbBus.Get(DbList.AMSCenter).Update().Set(w => w.IsDel, true).Where(w => w.PID == oid).ExecuteAffrows(); }); } } }); } #endregion #region 新增/编辑 public string SaveInfo(AMSDto dto, User user) { string guid = ""; List hblist = null; hblist = dto.HouseDto.Select(x => x.HBLNo.Trim()).ToList(); var mlist = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.MBLNO == dto.MBLNO.Trim() && x.GID != dto.GID && x.MBLNO != "").ToOne(); var hlist = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && hblist.Contains(x.HBLNo) && x.PID != dto.GID && x.HBLNo != "").ToOne(); if (mlist != null || hlist != null) { return "-1"; } if (dto.GID.IsNull()) { DbBus.Get(DbList.AMSCenter).Transaction(() => { AMS_Master master = dto.MapTo(); master.GID = Guid.NewGuid().ToString("N"); master.UserID = user.GID; master.UserName = user.SHOWNAME; master.CompID = user.CompId; master.CompName = user.COMNAME; master.IsDel = false; master.PORTDISCHARGE = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.PORTDISCHARGECode).ToList().Select(x => x.EnName).FirstOrDefault(); master.CARRIER = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.CARRIERID).ToList().Select(x => x.EnName).FirstOrDefault(); master.LoadingPort = DbBus.Get(DbList.Common).Select().Where(x => x.EdiCode == master.LoadingPortCode).ToList().Select(x => x.EnName).FirstOrDefault(); master.LastNoUsPort = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.LastNoUsPortCode).ToList().Select(x => x.EnName).FirstOrDefault(); master.CreateTime = DateTime.Now; master.LastUpdate = DateTime.Now; DbBus.Get(DbList.AMSCenter).Insert(master).ExecuteAffrows(); if (dto.HouseDto != null && dto.HouseDto.Count() > 0) { foreach (var item in dto.HouseDto) { AMS_House house = item.MapTo(); house.GID = Guid.NewGuid().ToString("N"); house.PID = master.GID; house.IsDel = false; house.State = "0"; house.ReportState = "未申报"; DbBus.Get(DbList.AMSCenter).Insert(house).ExecuteAffrows(); if (item.CntrnoDto != null && item.CntrnoDto.Count() > 0) { foreach (var it in item.CntrnoDto) { AMS_Cntrno cntrno = it.MapTo(); cntrno.GID = Guid.NewGuid().ToString("N"); cntrno.PID = master.GID; cntrno.HID = house.GID; cntrno.IsDel = false; DbBus.Get(DbList.AMSCenter).Insert(cntrno).ExecuteAffrows(); } } AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = house.GID; history.SendTime = DateTime.Now; history.State = "新增"; history.Type = "0"; history.Operator = user.SHOWNAME; history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "创建了单据"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); } } guid = master.GID; }); return guid; } else { if (DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == dto.GID).ToList().Where(x => x.ReportState.Contains("未申报")).Count() > 0) { DbBus.Get(DbList.AMSCenter).Transaction(() => { var master = DbBus.Get(DbList.AMSCenter).Select().Where(w => w.GID == dto.GID).ToOne(); master.CARRIERID = dto.CARRIERID; master.MBLNO = dto.MBLNO; master.VESSEL = dto.VESSEL; master.VOYNO = dto.VOYNO; master.ShippingType = dto.ShippingType; master.SHIPPERADDR = dto.SHIPPERADDR; master.ETA = dto.ETA; master.ETD = dto.ETD; master.LastUpdate = DateTime.Now; master.ShippingNo = dto.ShippingNo; master.ConsignmentType = dto.ConsignmentType; master.LoadingPortCode = dto.LoadingPortCode; master.PORTDISCHARGECode = dto.PORTDISCHARGECode; master.LastNoUsPortCode = dto.LastNoUsPortCode; master.PORTDISCHARGE = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.PORTDISCHARGECode).ToList().Select(x => x.EnName).FirstOrDefault(); master.CARRIER = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.CARRIERID).ToList().Select(x => x.EnName).FirstOrDefault(); master.LoadingPort = DbBus.Get(DbList.Common).Select().Where(x => x.EdiCode == master.LoadingPortCode).ToList().Select(x => x.EnName).FirstOrDefault(); master.LastNoUsPort = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.LastNoUsPortCode).ToList().Select(x => x.EnName).FirstOrDefault(); DbBus.Get(DbList.AMSCenter).Update().SetSource(master).ExecuteAffrows(); DbBus.Get(DbList.AMSCenter).Delete().Where(w => w.PID == master.GID).ExecuteAffrows(); DbBus.Get(DbList.AMSCenter).Delete().Where(w => w.PID == master.GID).ExecuteAffrows(); foreach (var item in dto.HouseDto) { var house = DbBus.Get(DbList.AMSCenter).Select().Where(w => w.GID == item.GID).ToOne(); house = item.MapTo(); house.GID = Guid.NewGuid().ToString("N"); house.PID = master.GID; house.IsDel = false; house.State = "0"; house.ReportState = "未申报"; DbBus.Get(DbList.AMSCenter).Insert(house).ExecuteAffrows(); if (item.CntrnoDto != null && item.CntrnoDto.Count() > 0) { foreach (var it in item.CntrnoDto) { AMS_Cntrno cntrno = it.MapTo(); cntrno.GID = Guid.NewGuid().ToString("N"); cntrno.PID = master.GID; cntrno.HID = house.GID; cntrno.IsDel = false; DbBus.Get(DbList.AMSCenter).Insert(cntrno).ExecuteAffrows(); } } AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = house.GID; history.SendTime = DateTime.Now; history.State = "新增"; history.Type = "0"; history.Operator = user.SHOWNAME; history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "创建了单据"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); } guid = master.GID; }); } else { DbBus.Get(DbList.AMSCenter).Transaction(() => { var master = DbBus.Get(DbList.AMSCenter).Select().Where(w => w.GID == dto.GID).ToOne(); master.CARRIERID = dto.CARRIERID; master.MBLNO = dto.MBLNO; master.VESSEL = dto.VESSEL; master.VOYNO = dto.VOYNO; master.ShippingType = dto.ShippingType; master.SHIPPERADDR = dto.SHIPPERADDR; master.ETA = dto.ETA; master.ETD = dto.ETD; master.LastUpdate = DateTime.Now; master.ShippingNo = dto.ShippingNo; master.ConsignmentType = dto.ConsignmentType; master.LoadingPortCode = dto.LoadingPortCode; master.PORTDISCHARGECode = dto.PORTDISCHARGECode; master.LastNoUsPortCode = dto.LastNoUsPortCode; master.PORTDISCHARGE = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.PORTDISCHARGECode).ToList().Select(x => x.EnName).FirstOrDefault(); master.CARRIER = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.CARRIERID).ToList().Select(x => x.EnName).FirstOrDefault(); master.LoadingPort = DbBus.Get(DbList.Common).Select().Where(x => x.EdiCode == master.LoadingPortCode).ToList().Select(x => x.EnName).FirstOrDefault(); master.LastNoUsPort = DbBus.Get(DbList.Common).Select().Where(x => x.Code == master.LastNoUsPortCode).ToList().Select(x => x.EnName).FirstOrDefault(); DbBus.Get(DbList.AMSCenter).Update().SetSource(master).ExecuteAffrows(); DbBus.Get(DbList.AMSCenter).Delete().Where(w => w.PID == master.GID).ExecuteAffrows(); List houseid = dto.HouseDto.Select(x => x.GID).ToList(); foreach (var item in dto.HouseDto) { var house = DbBus.Get(DbList.AMSCenter).Select().Where(w => w.GID == item.GID).ToOne(); if (house != null) { house.HBLNo = item.HBLNo; house.SHIPPERNAME = item.SHIPPERNAME; house.SHIPPERADDR = item.SHIPPERADDR; house.SHIPPERTEL = item.SHIPPERTEL; house.CONSIGNEEName = item.CONSIGNEEName; house.CONSIGNEEDADDR = item.CONSIGNEEDADDR; house.CONSIGNEETEL = item.CONSIGNEETEL; house.NOTIFYPARTYNAME = item.NOTIFYPARTYNAME; house.NOTIFYPARTYADDR = item.NOTIFYPARTYADDR; house.NOTIFYPARTYTEL = item.NOTIFYPARTYTEL; house.SHIPPERCountry = item.SHIPPERCountry; house.SHIPPERCountryCode = item.SHIPPERCountryCode; house.SHIPPERCity = item.SHIPPERCity; house.CONSIGNEECountry = item.CONSIGNEECountry; house.CONSIGNEECountryCode = item.CONSIGNEECountryCode; house.CONSIGNEECity = item.CONSIGNEECity; house.NOTIFYPARTYCountry = item.NOTIFYPARTYCountry; house.NOTIFYPARTYCountryCode = item.NOTIFYPARTYCountryCode; house.NOTIFYPARTYCity = item.NOTIFYPARTYCity; DbBus.Get(DbList.AMSCenter).Update().SetSource(house).ExecuteAffrows(); if (item.CntrnoDto != null && item.CntrnoDto.Count() > 0) { foreach (var it in item.CntrnoDto) { var cntrno = new AMS_Cntrno(); cntrno = it.MapTo(); cntrno.GID = Guid.NewGuid().ToString("N"); cntrno.PID = master.GID; cntrno.HID = house.GID; cntrno.IsDel = false; DbBus.Get(DbList.AMSCenter).Insert(cntrno).ExecuteAffrows(); } } //AMS_MasterHistory history = new AMS_MasterHistory(); //history.GID = Guid.NewGuid().ToString("N"); //history.AM_ID = item.GID; //history.SendTime = DateTime.Now; //history.State = "修改"; //history.Type = "0"; //history.Operator = user.SHOWNAME; //history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "修改了单据"; //DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); } else { house = item.MapTo(); house.GID = Guid.NewGuid().ToString("N"); house.PID = master.GID; house.IsDel = false; house.State = "0"; house.ReportState = "未申报"; DbBus.Get(DbList.AMSCenter).Insert(house).ExecuteAffrows(); if (item.CntrnoDto != null && item.CntrnoDto.Count() > 0) { foreach (var it in item.CntrnoDto) { AMS_Cntrno cntrno = it.MapTo(); cntrno.GID = Guid.NewGuid().ToString("N"); cntrno.PID = master.GID; cntrno.HID = house.GID; cntrno.IsDel = false; DbBus.Get(DbList.AMSCenter).Insert(cntrno).ExecuteAffrows(); } } AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = house.GID; history.SendTime = DateTime.Now; history.State = "新增"; history.Type = "0"; history.Operator = user.SHOWNAME; history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "创建了单据"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); } } guid = master.GID; }); } return guid; } } #endregion #region 第三方接口 /// /// 发送接口 /// /// /// /// public async Task SendDE(string Gid, User user, string docType, string hid = null) { Response req = new Response(); try { string[] id = Gid.Split(','); string[] House = null; if (hid != null) { House = hid.Split(','); } var AMSAccount = DbBus.Get(DbList.djydb).Select().Where(x => x.PARAMNAME == "AMSAccount").ToOne(); var key = DbBus.Get(DbList.djydb).Select().Where(x => x.PARAMNAME == "AMSKEY").ToOne(); var url = DbBus.Get(DbList.djydb).Select().Where(x => x.PARAMNAME == "AMSURL").ToOne(); var method = DbBus.Get(DbList.djydb).Select().Where(x => x.PARAMNAME == "AMSMethod").ToOne(); var timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var AMSRequestDEA = DbBus.Get(DbList.djydb).Select().Where(x => x.CompId == user.CompId && x.ParaCode == "AMSRequestDEA").First(); foreach (string oid in id) { if (oid != "") { var docContent = ""; var fin = new FinanceService(); var master = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.CompID == user.CompId && x.GID == oid).ToOne(); var hodto = new List(); if (docType == "AMSDOC") { hodto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == oid && x.State == "0").ToList(); #region docContent 新增 var cARRIERIDList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); var portList = DbBus.Get(DbList.Common).Select().ToList(); var containerTypeList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); var packageList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); MasterBillInfoDto dto = new MasterBillInfoDto(); masterBillInfo masterBillInfo = new masterBillInfo(); if (string.IsNullOrEmpty(master.CARRIERID)) { req.Code = 201; req.Message = "船公司id为空"; return req; } masterBillInfo.masterBillNo = cARRIERIDList.Where(x => x.Code == master.CARRIERID).Select(x => x.MapCode).FirstOrDefault() + master.MBLNO; masterBillInfo.shippingNo = null; masterBillInfo.shipCompany = cARRIERIDList.Where(x => x.Code == master.CARRIERID).Select(x => x.MapCode).FirstOrDefault(); masterBillInfo.vessel = master.VESSEL; if (master.VOYNO.TrimAll().Length > 4) { masterBillInfo.voyage = master.VOYNO.TrimAll().Substring(0, 5); } else { masterBillInfo.voyage = master.VOYNO; } if (AMSRequestDEA != null) { masterBillInfo.requesterDea = AMSRequestDEA.ItemCode; } else { masterBillInfo.requesterDea = sysOptionConfig.Webconfig.requesterDea; } masterBillInfo.consignmentType = master.ConsignmentType; masterBillInfo.loadHarbour = master.LoadingPort; masterBillInfo.loadHarbourCode = master.LoadingPortCode; masterBillInfo.dischargeHarbour = master.PORTDISCHARGE; masterBillInfo.dischargeHarbourCode = portList.Where(x => x.Code == master.PORTDISCHARGECode).Select(x => x.EdiCode).FirstOrDefault(); masterBillInfo.lastForeignHarbour = master.LastNoUsPort; masterBillInfo.lastForeignHarbourCode = portList.Where(x => x.Code == master.LastNoUsPortCode).Select(x => x.EdiCode).FirstOrDefault(); masterBillInfo.loadDate = Convert.ToDateTime(master.ETA).ToString("yyyy-MM-dd hh:mm:ss"); masterBillInfo.estimatedArrivalTime = Convert.ToDateTime(master.ETD).ToString("yyyy-MM-dd hh:mm:ss"); masterBillInfo.filingType = master.ShippingType; dto.masterBillInfo = masterBillInfo; List houseBillInfoListItems = new List(); foreach (var item in hodto) { var getfinrs = fin.Expend(new CustFee { ETD = master.ETD, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 0, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), } , 0); if (!getfinrs.Status) { req.Code = 201; req.Message = getfinrs.Message; return req; } HouseBillInfoListItem houseinfo = new HouseBillInfoListItem(); houseinfo.businessId = item.GID; houseinfo.shippingNo = null; houseinfo.houseBillNo = item.HBLNo; houseinfo.sendAddress = item.SHIPPERADDR; houseinfo.sendName = item.SHIPPERNAME; houseinfo.sendCity = item.SHIPPERCity; houseinfo.sendCountry = item.SHIPPERCountry; houseinfo.sendCountryCode = item.SHIPPERCountryCode; houseinfo.receiveAddress = item.CONSIGNEEDADDR; houseinfo.receiveName = item.CONSIGNEEName; houseinfo.receiveCity = item.CONSIGNEECity; houseinfo.receiveCountry = item.CONSIGNEECountry; houseinfo.receiveCountryCode = item.CONSIGNEECountryCode; houseinfo.notifyAddress = item.NOTIFYPARTYADDR; houseinfo.notifyName = item.NOTIFYPARTYNAME; houseinfo.notifyCity = item.NOTIFYPARTYCity; houseinfo.notifyCountry = item.NOTIFYPARTYCountry; houseinfo.notifyCountryCode = item.NOTIFYPARTYCountryCode; var cnt = DbBus.Get(DbList.AMSCenter).Select().Where(x => (x.IsDel == false || x.IsDel == null) && x.HID == item.GID).ToList(); CtnInfo CtnInfo = new CtnInfo(); List list = new List(); foreach (var it in cnt) { InsertListItem insertList = new InsertListItem(); insertList.containerMark = null; insertList.containerType = containerTypeList.Where(x => x.Code == it.CTNALL).Select(x => x.MapCode).FirstOrDefault(); insertList.enProductName = it.ProductName; insertList.containerNo = it.CNTRNO; insertList.sealNo = it.SEALNO; insertList.digit = it.PKGS.ToString(); insertList.grossWeight = it.KGS.ToString(); insertList.volume = it.CBM.ToString(); insertList.packing = packageList.Where(x => x.Code == it.KINDPKGSCode).Select(x => x.MapName).FirstOrDefault(); insertList.packingCode = packageList.Where(x => x.Code == it.KINDPKGSCode).Select(x => x.MapCode).FirstOrDefault(); insertList.shippingMark = it.MARKS; insertList.secondSealNo = null; insertList.originCountry = "CHINA"; insertList.originCountryCode = "CN"; insertList.unCode = it.DUNNO; insertList.dangerGrade = it.DangerGrade; insertList.dangerContact = ""; insertList.dangerContactTel = ""; insertList.dangerMemo = ""; insertList.ignite = ""; list.Add(insertList); CtnInfo.insertList = list; } houseinfo.ctnInfo = CtnInfo; houseBillInfoListItems.Add(houseinfo); } dto.houseBillInfoList = houseBillInfoListItems; var data = JsonConvert.SerializeObject(dto); AMSDocContent aMSDoc = new AMSDocContent(); aMSDoc.fromdea = "n"; aMSDoc.todea = "n"; aMSDoc.editype = "AMSDOC"; aMSDoc.port = "Ningbo"; aMSDoc.masterBillInfo = dto; docContent = JsonConvert.SerializeObject(aMSDoc); docContent = JsonConvert.SerializeObject(aMSDoc).ToBase64(); #endregion } else if (docType == "AMSAR" || docType == "AMSM") { hodto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == oid). WhereIf(hid != null, x => House.Contains(x.GID)). ToList(); #region docContent 修改 重发 if (string.IsNullOrEmpty(hid)) { req.Code = 201; req.Message = "没有相关货代提单号id"; return req; } var cARRIERIDList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); var portList = DbBus.Get(DbList.Common).Select().ToList(); var containerTypeList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); var packageList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); MasterBillInfoDto dto = new MasterBillInfoDto(); masterBillInfo masterBillInfo = new masterBillInfo(); masterBillInfo.masterBillNo = cARRIERIDList.Where(x => x.Code == master.CARRIERID).Select(x => x.MapCode).FirstOrDefault() + master.MBLNO; masterBillInfo.shippingNo = null; masterBillInfo.shipCompany = cARRIERIDList.Where(x => x.Code == master.CARRIERID).Select(x => x.MapCode).FirstOrDefault(); masterBillInfo.vessel = master.VESSEL; if (master.VOYNO.TrimAll().Length > 4) { masterBillInfo.voyage = master.VOYNO.TrimAll().Substring(0, 5); } else { masterBillInfo.voyage = master.VOYNO; } if (AMSRequestDEA != null) { masterBillInfo.requesterDea = AMSRequestDEA.ItemCode; } else { masterBillInfo.requesterDea = sysOptionConfig.Webconfig.requesterDea; } masterBillInfo.consignmentType = master.ConsignmentType; masterBillInfo.loadHarbour = master.LoadingPort; masterBillInfo.loadHarbourCode = master.LoadingPortCode; masterBillInfo.dischargeHarbour = master.PORTDISCHARGE; masterBillInfo.dischargeHarbourCode = portList.Where(x => x.Code == master.PORTDISCHARGECode).Select(x => x.EdiCode).FirstOrDefault(); masterBillInfo.lastForeignHarbour = master.LastNoUsPort; masterBillInfo.lastForeignHarbourCode = portList.Where(x => x.Code == master.LastNoUsPortCode).Select(x => x.EdiCode).FirstOrDefault(); masterBillInfo.loadDate = Convert.ToDateTime(master.ETA).ToString("yyyy-MM-dd hh:mm:ss"); masterBillInfo.estimatedArrivalTime = Convert.ToDateTime(master.ETD).ToString("yyyy-MM-dd hh:mm:ss"); masterBillInfo.filingType = master.ShippingType; dto.masterBillInfo = masterBillInfo; List houseBillInfoListItems = new List(); foreach (var item in hodto) { if (docType == "AMSAR" && (item.NewNotice == "删除发送成功" || item.MateState == "匹配失败")) { req.Code = 201; req.Message = "当前状态不能重发!如有疑问,请联系相关客服!"; return req; } if (docType == "AMSDOC" && (item.NewNotice == "新增发送成功")) { req.Code = 201; req.Message = "当前单据已经发送,不能再次发送!如有疑问,请联系相关客服!"; return req; } if (docType == "AMSAR") { var getfinrs = fin.Expend(new CustFee { ETD = master.ETD, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 0, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), } , 0); if (!getfinrs.Status) { req.Code = 201; req.Message = getfinrs.Message; return req; } } if (docType == "AMSM") { var getfinrs = fin.Expend(new CustFee { ETD = master.ETD, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 1, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), } , 0); if (!getfinrs.Status) { req.Code = 201; req.Message = getfinrs.Message; return req; } } HouseBillInfoListItem houseinfo = new HouseBillInfoListItem(); houseinfo.businessId = item.GID; houseinfo.shippingNo = null; houseinfo.houseBillNo = item.HBLNo; houseinfo.sendAddress = item.SHIPPERADDR; houseinfo.sendName = item.SHIPPERNAME; houseinfo.sendCity = item.SHIPPERCity; houseinfo.sendCountry = item.SHIPPERCountry; houseinfo.sendCountryCode = item.SHIPPERCountryCode; houseinfo.receiveAddress = item.CONSIGNEEDADDR; houseinfo.receiveName = item.CONSIGNEEName; houseinfo.receiveCity = item.CONSIGNEECity; houseinfo.receiveCountry = item.CONSIGNEECountry; houseinfo.receiveCountryCode = item.CONSIGNEECountryCode; houseinfo.notifyAddress = item.NOTIFYPARTYADDR; houseinfo.notifyName = item.NOTIFYPARTYNAME; houseinfo.notifyCity = item.NOTIFYPARTYCity; houseinfo.notifyCountry = item.NOTIFYPARTYCountry; houseinfo.notifyCountryCode = item.NOTIFYPARTYCountryCode; var cnt = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.HID == item.GID).ToList(); CtnInfo CtnInfo = new CtnInfo(); List list = new List(); foreach (var it in cnt) { InsertListItem insertList = new InsertListItem(); insertList.containerMark = null; insertList.containerType = containerTypeList.Where(x => x.Code == it.CTNALL).Select(x => x.MapCode).FirstOrDefault(); insertList.enProductName = it.ProductName; insertList.containerNo = it.CNTRNO; insertList.sealNo = it.SEALNO; insertList.digit = it.PKGS.ToString(); insertList.grossWeight = it.KGS.ToString(); insertList.volume = it.CBM.ToString(); insertList.packing = packageList.Where(x => x.Code == it.KINDPKGSCode).Select(x => x.MapName).FirstOrDefault(); insertList.packingCode = packageList.Where(x => x.Code == it.KINDPKGSCode).Select(x => x.MapCode).FirstOrDefault(); insertList.shippingMark = it.MARKS; insertList.secondSealNo = null; insertList.originCountry = "CHINA"; insertList.originCountryCode = "CN"; insertList.unCode = it.DUNNO; insertList.dangerGrade = it.DangerGrade; insertList.dangerContact = ""; insertList.dangerContactTel = ""; insertList.dangerMemo = ""; insertList.ignite = ""; list.Add(insertList); CtnInfo.insertList = list; } houseinfo.ctnInfo = CtnInfo; houseBillInfoListItems.Add(houseinfo); } dto.houseBillInfoList = houseBillInfoListItems; var data = JsonConvert.SerializeObject(dto); AMSDocContent aMSDoc = new AMSDocContent(); aMSDoc.fromdea = "n"; aMSDoc.todea = "n"; aMSDoc.editype = "AMSDOC"; aMSDoc.port = "Ningbo"; aMSDoc.masterBillInfo = dto; docContent = JsonConvert.SerializeObject(aMSDoc); docContent = JsonConvert.SerializeObject(aMSDoc).ToBase64(); #endregion } else { hodto = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == oid). WhereIf(hid != null, x => House.Contains(x.GID)). ToList(); foreach (var item in hodto) { var getfinrs = fin.Expend(new CustFee { ETD = master.ETD, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 5, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), } , 0); if (!getfinrs.Status) { req.Code = 201; req.Message = getfinrs.Message; return req; } if (item.NewNotice == "删除发送成功") { req.Code = 201; req.Message = "已删除单据不可以再次删除"; return req; } } if (string.IsNullOrEmpty(hid)) { req.Code = 201; req.Message = "没有相关货代提单号id"; return req; } AMSDDto aMSDDto = new AMSDDto(); aMSDDto.fromdea = AMSAccount.PARAMVALUE; aMSDDto.ids = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.PID == oid && House.Contains(x.GID)).ToList().Select(x => x.GID).ToList(); docContent = JsonConvert.SerializeObject(aMSDDto).ToBase64(); } /////MD5加密 string stringSign = string.Format("{0}{1}{2}", AMSAccount.PARAMVALUE, key.PARAMVALUE, timestamp); string sign = stringSign.ToMd5(); ///post参数 Dictionary dic = new Dictionary(); dic.Add("port", "Ningbo"); dic.Add("docContent", docContent); dic.Add("method", method.PARAMVALUE); dic.Add("channel", "WSTOM"); dic.Add("docName", GenerateRandomNo()); dic.Add("user_id", AMSAccount.PARAMVALUE); dic.Add("userId", AMSAccount.PARAMVALUE); dic.Add("docType", docType); dic.Add("timestamp", timestamp); dic.Add("format", "json"); dic.Add("destDeaId", "n"); dic.Add("deaId", "n"); dic.Add("sign", sign); dic.Add("docLength", docContent.ToString().Length.ToString()); #region 接口调用 _LogsAdd("SendDE", "post", $"timestamp:{timestamp}"); _LogsAdd("SendDE", "post", $"AMS接口调用发送{oid}:{ JsonConvert.SerializeObject(dic)}"); _LogsAdd("SendDE", "post", $"AMS接口调用地址{oid}:{url.PARAMVALUE}"); string gethtml = await HttpHelp.Post(dic, url.PARAMVALUE, PsotType.Urlencoded); _LogsAdd("SendDE", "post", $"AMS接口调用返回{oid}:{gethtml}"); if (gethtml != null) { JObject rlt = JObject.Parse(gethtml); var code = rlt.GetValue("code").ToString(); var msg = rlt.GetValue("msg").ToString(); if (msg == "验签失败") { req.Code = 200; req.Message = "验签失败"; return req; } var data = rlt.GetValue("data").ToString(); JObject drlt = JObject.Parse(data); var result = drlt.GetValue("result").ToString(); if (code == "F" || result == "false") { var errorInfo = drlt.GetValue("errorInfo").ToString(); foreach (var item in hodto) { AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = item.GID; history.SendTime = DateTime.Now; if (docType == "AMSDOC") { history.State = "新增发送失败"; history.Type = "0"; } else if (docType == "AMSAR") { history.State = "重发失败"; history.Type = "0"; } else if (docType == "AMSM") { history.State = "修改发送失败"; history.Type = "0"; } else { history.State = "删除发送失败"; history.Type = "0"; } history.Operator = user.SHOWNAME; history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "发送单据失败,失败原因:" + msg + errorInfo; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); } req.Code = 201; req.Message = "操作失败," + msg + errorInfo; return req; } if (code == "T" && result == "true") { AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = oid; history.SendTime = DateTime.Now; history.Type = "0"; if (docType == "AMSDOC") { history.State = "新增发送成功"; } else if (docType == "AMSAR") { history.State = "重发成功"; } else if (docType == "AMSM") { history.State = "修改发送成功"; } else { history.State = "删除发送成功"; } history.Operator = user.SHOWNAME; history.Remark = user.SHOWNAME + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "发送了单据"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); if (docType == "AMSDOC") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = "", ReportState = "已提交", NewNotice = "新增发送成功" }).Where(w => w.PID == oid).ExecuteAffrows(); foreach (var item in hodto) { var getfinrs = fin.Expend(new CustFee { CARRIER = master.CARRIER, ETD = master.ETA, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.HID == item.GID).ToList().Count(), CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 0, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), }, 1); } } else if (docType == "AMSAR") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = "", ReportState = "已提交", NewNotice = "重发发送成功" }).Where(w => House.Contains(w.GID)).ExecuteAffrows(); foreach (var item in hodto) { var getfinrs = fin.Expend(new CustFee { CARRIER = master.CARRIER, ETD = master.ETA, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.HID == item.GID).ToList().Count(), CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 0, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), }, 1); } } else if (docType == "AMSM") { foreach (var item in hodto) { var getfinrs = fin.Expend(new CustFee { CARRIER = master.CARRIER, ETD = master.ETA, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.HID == item.GID).ToList().Count(), CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 1, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), }, 1); } DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = "", ReportState = "已提交", NewNotice = "修改发送成功" }).Where(w => House.Contains(w.GID)).ExecuteAffrows(); } else { foreach (var item in hodto) { var getfinrs = fin.Expend(new CustFee { CARRIER = master.CARRIER, ETD = master.ETA, VOYNO = master.VOYNO, VESSEL = master.VESSEL, HBLNO = item.HBLNo, SENDUSERID = user.GID, LURURENID = user.GID, CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 15, SENDTYPE = 5, BSNO = oid.ToString(), MBLNO = master.MBLNO.ToString(), }, 1); } DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = "", ReportState = "已提交", NewNotice = "删除发送成功" }).Where(w => House.Contains(w.GID)).ExecuteAffrows(); } } } #endregion } } req.Code = 200; req.Message = "操作成功"; return req; } catch (Exception ex) { req.Code = 500; req.Message = ex.InnerException?.Message ?? ex.Message; _LogsAdd("SendDE", "post", $"AMS_SendDE接口:{req.Message }"); return req; } } public Response SaveReceipt(string msg) { Response req = new Response(); try { AMSReturnDto retdto = Json.JsonToObject(msg); _LogsAdd("SaveReceipt", "post", $"AMS接口推送:{msg}"); if (retdto != null) { DbBus.Get(DbList.AMSCenter).Transaction(() => { var masterid = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.IsDel != true && x.GID == retdto.businessId).ToList().Select(x => x.PID).FirstOrDefault(); if (retdto.status == "W2") { var house = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.GID == retdto.businessId).ToOne(); DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { State = "1" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); if (house != null) { AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = retdto.businessId; history.SendTime = DateTime.Now; history.State = "海关接收成功"; history.Type = "1"; history.Operator = "系统管理员"; history.Remark = "您的单据" + house.HBLNo + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "海关接收成功"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); var matestate = $"{house.MateState},{ retdto.status}"; if (house.NewNotice == "删除发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "海关接收成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else if (house.NewNotice == "修改发送成功") { if (house.MateState.Contains("3Z")) { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = "3Z," + retdto.status, NewNotice = "海关接收成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = matestate, NewNotice = "海关接收成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } else { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = matestate, NewNotice = "海关接收成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } } else if (retdto.status == "1Y") { var house = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.GID == retdto.businessId).ToOne(); DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { State = "1" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); if (house != null) { AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = retdto.businessId; history.SendTime = DateTime.Now; history.State = "船司匹配成功"; history.Type = "1"; history.Operator = "系统管理员"; history.Remark = "您的单据" + house.HBLNo + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "船司匹配成功"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); var matestate = $"{house.MateState},{ retdto.status}"; if (house.NewNotice == "删除发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "船司匹配成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else if (house.NewNotice == "修改发送成功") { if (house.MateState.Contains("3Z")) { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = "3Z," + retdto.status, NewNotice = "船司匹配成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = matestate, NewNotice = "船司匹配成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } else { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = matestate, NewNotice = "船司匹配成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } } else if (retdto.status == "3Z") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { State = "1" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); var house = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.GID == retdto.businessId).ToOne(); if (house != null) { AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = retdto.businessId; history.SendTime = DateTime.Now; history.State = "ISF匹配成功"; history.Type = "1"; history.Operator = "系统管理员"; history.Remark = "您的单据" + house.HBLNo + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "ISF匹配成功"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); if (house.NewNotice == "删除发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "ISF匹配成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else { var matestate = $"{house.MateState},{ retdto.status}"; DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = matestate, NewNotice = "ISF匹配成功" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } } else if (retdto.status == "W1") { var house = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.GID == retdto.businessId).ToOne(); AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = retdto.businessId; history.SendTime = DateTime.Now; history.State = "海关拒绝"; history.Type = "1"; history.Operator = "系统管理员"; history.Remark = "您的单据" + house.HBLNo + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "海关拒绝"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); var matestate = $"{house.MateState},{ retdto.status}"; if (house.NewNotice == "删除发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "海关拒绝" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else if (house.NewNotice == "修改发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "海关拒绝" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else if (house.NewNotice == "重发发送成功" || house.NewNotice == "新增发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "海关拒绝" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "海关拒绝" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } else if (retdto.status == "2Z") { var house = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.GID == retdto.businessId).ToOne(); AMS_MasterHistory history = new AMS_MasterHistory(); history.GID = Guid.NewGuid().ToString("N"); history.AM_ID = retdto.businessId; history.SendTime = DateTime.Now; history.State = "箱货信息不匹配"; history.Type = "1"; history.Operator = "系统管理员"; history.Remark = "您的单据" + house.HBLNo + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "箱货信息不匹配"; DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); if (house.NewNotice == "删除发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "箱货信息不匹配" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else if (house.NewNotice == "修改发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "箱货信息不匹配" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else if (house.NewNotice == "重发发送成功" || house.NewNotice == "新增发送成功") { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "箱货信息不匹配" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } else { DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "箱货信息不匹配" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); } } //else //{ // AMS_MasterHistory history = new AMS_MasterHistory(); // history.GID = Guid.NewGuid().ToString("N"); // history.AM_ID = retdto.businessId; // history.SendTime = DateTime.Now; // history.State = "匹配失败"; // history.Type = "1"; // history.Operator = "系统管理员"; // history.Remark = "您的单据" + house.HBLNo + "于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "匹配失败"; // DbBus.Get(DbList.AMSCenter).Insert(history).ExecuteAffrows(); // if (house.NewNotice == "删除发送成功") // { // DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "匹配失败" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); // } // else // if (house.NewNotice == "修改发送成功") // { // DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "匹配失败" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); // } // else // if (house.NewNotice == "重发发送成功" || house.NewNotice == "新增发送成功") // { // DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "匹配失败" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); // } // else // { // DbBus.Get(DbList.AMSCenter).Update().Set(w => new AMS_House { MateState = retdto.status, NewNotice = "匹配失败" }).Where(w => w.GID == retdto.businessId).ExecuteAffrows(); // } //} }); } else { req.Code = 201; req.Message = "未收到参数"; return req; } return req; } catch (Exception ex) { req.Code = 500; req.Message = ex.InnerException?.Message ?? ex.Message; _LogsAdd("SendDE", "post", $"AMS_SaveReceipt接口:{req.Message }"); return req; } } /// /// 根据日期生成14位随机数 /// /// public string GenerateRandomNo() { int _min = 000000; int _max = 999999; Random _rdm = new Random(); return DateTime.Now.ToString("yyyyMMdd") + _rdm.Next(_min, _max).ToString(); } #endregion #region 下拉接口 public List GetCountry(string strlink, int page, int limit) { try { if (page == 0 && limit == 0) { var List = DbBus.Get(DbList.Common).Select().ToList().Select(x => new CommonCNEN { Code = x.Code, ENName = x.EnName, CNName = x.CnName, }).Distinct().ToList(); return List; } else { var List = DbBus.Get(DbList.Common).Select().WhereIf(strlink != "", x => x.Code.Contains(strlink.Trim()) || x.EnName.Contains(strlink.Trim()) || x.CnName.Contains(strlink.Trim())).Page(page, limit).ToList().Select(x => new CommonCNEN { Code = x.Code, ENName = x.EnName, CNName = x.CnName, }).Distinct().ToList(); return List; } } catch (Exception e) { throw; } } public List GetCARRIER() { try { var List = DbBus.Get(DbList.Common).Select().InnerJoin((cc, map) => cc.Code == map.Code && map.Module == "AMS").ToList((cc, map) => new CommonMappiCode { Code = cc.Code, Value = cc.EnName, MapCode = map.MapCode }).Distinct().ToList(); return List; } catch (Exception e) { throw; } } public List GetCTNALL() { try { var List = DbBus.Get(DbList.Common).Select().InnerJoin((cc, map) => cc.Code == map.Code && map.Module == "AMS").ToList((cc, map) => new CommonCodeValue { Code = cc.Code, Value = cc.Name, }).Distinct().ToList(); return List; } catch (Exception e) { throw; } } public List GetPackage() { try { var List = DbBus.Get(DbList.Common).Select().InnerJoin((cc, map) => cc.Code == map.Code && map.Module == "AMS").ToList((cc, map) => new CommonCodeValue { Code = cc.Code, Value = cc.Name, }).Distinct().ToList(); return List; } catch (Exception e) { throw; } } public List GetDangerousGoods(string strlink) { try { var List = DbBus.Get(DbList.Common).Select().WhereIf(strlink != "", x => x.Code.Contains(strlink.Trim()) || x.Grade.Contains(strlink.Trim())).ToList().Select(x => new CodeDangerGradeDto { Code = x.Code, Grade = x.Grade, }).Distinct().ToList(); return List; } catch (Exception e) { throw; } } public List GetPort(string strlink, int page, int limit) { try { if (page == 0 && limit == 0) { var List = DbBus.Get(DbList.Common).Select().WhereIf(strlink != "", x => x.Code.Contains(strlink.Trim()) || x.EnName.Contains(strlink.Trim())).ToList().Select(x => new CommonCodeValue { Code = x.Code, Value = x.EnName, }).Distinct().ToList(); return List; } else { var List = DbBus.Get(DbList.Common).Select().WhereIf(strlink != "", x => x.Code.Contains(strlink.Trim()) || x.EnName.Contains(strlink.Trim())).Page(page, limit).ToList().Select(x => new CommonCodeValue { Code = x.Code, Value = x.EnName, }).Distinct().ToList(); return List; } } catch (Exception e) { throw; } } public List GetCodePortLoad() { try { var List = DbBus.Get(DbList.Common).Select().ToList().Select(x => new CommonCodeValue { Code = x.EdiCode, Value = x.EnName, }).Distinct().ToList(); return List; } catch (Exception e) { throw; } } public List GetVessel(string strlink, int page, int limit) { try { if (page == 0 && limit == 0) { var List = DbBus.Get(DbList.Common).Select().WhereIf(strlink != "", x => x.Name.Contains(strlink.Trim())).ToList().Select(x => new CommonCodeValue { Code = x.Name, Value = x.Name, }).Distinct().ToList(); return List; } else { var List = DbBus.Get(DbList.Common).Select().WhereIf(strlink != "", x => x.Name.Contains(strlink.Trim())).Page(page, limit).ToList().Select(x => new CommonCodeValue { Code = x.Name, Value = x.Name, }).Distinct().ToList(); return List; } } catch (Exception e) { throw; } } public List GetCodeProvince(string code) { try { if (!string.IsNullOrEmpty(code)) { var List = DbBus.Get(DbList.Common).Select().ToList().Where(x => x.Country == code).Select(x => new CommonCodeValue { Code = x.Code, Value = x.ENName, }).Distinct().ToList(); return List; } else { var List = DbBus.Get(DbList.Common).Select().ToList().Select(x => new CommonCodeValue { Code = x.Code, Value = x.ENName, }).Distinct().ToList(); return List; } } catch (Exception e) { throw; } } public List GetCodeCity(string provinceCode) { try { var List = DbBus.Get(DbList.Common).Select().WhereIf(provinceCode != "", x => x.ProvinceCode == provinceCode).ToList().Select(x => new CodeCityDto { Code = x.EnName, PostCode = x.PostCode, ProvinceCode = x.ProvinceCode, }).Distinct().ToList(); return List; } catch (Exception e) { throw; } } #endregion #region pdf导出 /// /// pdf导出 /// /// /// public byte[] PDF(string ids) { string[] id = ids.Split(','); Document document = new Document(PageSize.A4); //指定字体文件,IDENTITY_H:支持中文 var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "msyh.ttc,0"); _LogsAdd("PDF", "Get", $"PDF字体路径:{path }"); BaseFont customfont = BaseFont.CreateFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); var Fonttable = new Font(customfont, 12); Font font = new Font(customfont, 14); Font datefont = new Font(customfont, 9); MemoryStream baos = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(document, baos); document.Open(); ///获取数据源 var houselist = DbBus.Get(DbList.AMSCenter).Select().Where(x => id.Contains(x.GID)).ToList(); var cARRIERIDList = DbBus.Get(DbList.Common).Select().Where(map => map.Module == "AMS").ToList(); if (houselist != null) { for (int i = 0; i < houselist.Count(); i++) { var masterlist = DbBus.Get(DbList.AMSCenter).Select().Where(x => x.GID == houselist[i].PID).ToOne(); string heardText = "NIAV" + houselist[i].HBLNo + " ISF INFORMATION"; Paragraph heardTexts = new Paragraph(heardText, font); heardTexts.IndentationLeft = 150; heardTexts.IndentationRight = 130; document.Add(heardTexts); document.Add(new Paragraph("\r"));//换行 PdfPTable table = new PdfPTable(2); //生成只有2列的行数据 table.DefaultCell.Border = Rectangle.NO_BORDER; //无边框 table.DefaultCell.MinimumHeight = 50f; //高度 float[] widths = new float[] { 100f, 200f }; //宽度 table.SetWidths(widths); var Row_1 = new PdfPCell(new Paragraph("AMS B/L NO.", Fonttable)); Row_1.HorizontalAlignment = Element.ALIGN_RIGHT;//靠右 table.AddCell(Row_1); var Row_2 = new PdfPCell(new Paragraph("NIAV" + houselist[i].HBLNo, Fonttable)); Row_2.HorizontalAlignment = Element.ALIGN_LEFT;//靠左 table.AddCell(Row_2); var Row_3 = new PdfPCell(new Paragraph("HNL.NO.", Fonttable)); Row_3.HorizontalAlignment = Element.ALIGN_RIGHT;//靠右 table.AddCell(Row_3); var Row_4 = new PdfPCell(new Paragraph(houselist[i].HBLNo, Fonttable)); Row_4.HorizontalAlignment = Element.ALIGN_LEFT;//靠左 table.AddCell(Row_4); var Row_5 = new PdfPCell(new Paragraph("HNL SCAC CODE.", Fonttable)); Row_5.HorizontalAlignment = Element.ALIGN_RIGHT;//靠右 table.AddCell(Row_5); var Row_6 = new PdfPCell(new Paragraph("NIAV", Fonttable)); Row_6.HorizontalAlignment = Element.ALIGN_LEFT;//靠左 table.AddCell(Row_6); var Row_7 = new PdfPCell(new Paragraph("MBL NO.", Fonttable)); Row_7.HorizontalAlignment = Element.ALIGN_RIGHT;//靠右 table.AddCell(Row_7); var Row_8 = new PdfPCell(new Paragraph(cARRIERIDList.Where(x => x.Code == masterlist.CARRIERID).Select(x => x.MapCode).FirstOrDefault() + masterlist.MBLNO, Fonttable)); Row_8.HorizontalAlignment = Element.ALIGN_LEFT;//靠左 table.AddCell(Row_8); var Row_9 = new PdfPCell(new Paragraph("MBL SCAC CODE.", Fonttable)); Row_9.HorizontalAlignment = Element.ALIGN_RIGHT;//靠右 table.AddCell(Row_9); var Row_0 = new PdfPCell(new Paragraph(cARRIERIDList.Where(x => x.Code == masterlist.CARRIERID).Select(x => x.MapCode).FirstOrDefault(), Fonttable)); Row_0.HorizontalAlignment = Element.ALIGN_LEFT;//靠左 table.AddCell(Row_0); document.Add(table); string dateText = "DATE PRINTED:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm"); Paragraph dateTexts = new Paragraph(dateText, datefont); dateTexts.IndentationLeft = 380f; document.Add(dateTexts); document.Add(new Paragraph("\r"));//换行 var imgpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logo.png"); Image image = Image.GetInstance(imgpath); image.ScalePercent(10f); //设置图片的宽高 image.ScaleAbsolute(180f, 66f); image.Alignment = Element.ALIGN_CENTER; //设置图片具体位置 PDF左下角为原点 image.SetAbsolutePosition(400f, 20f);//出现在屏幕左下角 图片左下角做为锚点 document.Add(image); if ((i + 1) % 4 == 0) { document.NewPage(); } } } document.Close(); writer.Close(); return baos.GetBuffer(); } #endregion #region 保存模板 public string SaveTemplate(AMS_AddrTemplate dto, User user) { string guid = ""; var list = DbBus.Get(DbList.AMSCenter).Select().Where(w => w.UserID == user.GID && w.TemPlateName == dto.TemPlateName && w.Type == dto.Type && w.GID != dto.GID).ToOne(); if (list != null) { return "-1"; } if (dto.GID.IsNull()) { AMS_AddrTemplate template = dto.MapTo(); template.CreateTime = DateTime.Now; template.LastUpdate = DateTime.Now; template.GID = Guid.NewGuid().ToString("N"); template.UserID = user.GID; template.UserName = user.SHOWNAME; template.CompID = user.CompId; template.CompName = user.COMNAME; template.IsDel = false; DbBus.Get(DbList.AMSCenter).Insert(template).ExecuteAffrows(); guid = template.GID; } else { AMS_AddrTemplate template = dto.MapTo(); DbBus.Get(DbList.AMSCenter).Update().SetSource(template).ExecuteAffrows(); } return guid; } #endregion #region 获取模板 public List GetTemplate(User user, string type, string TemPlateName) { try { var List = DbBus.Get(DbList.AMSCenter).Select(). Where(x => x.IsDel == false || x.IsDel == null). Where(x => x.UserID == user.GID). WhereIf(type != null, x => x.Type == type). WhereIf(TemPlateName != null, x => TemPlateName.Contains(x.TemPlateName)). ToList(); return List; } catch (Exception e) { throw; } } #endregion #region 删除模板 public void DeleteTemplate(string ids) { string[] id = ids.Split(','); DbBus.Get(DbList.AMSCenter).Transaction(() => { foreach (string oid in id) { if (oid != "") { DbBus.Get(DbList.AMSCenter).Transaction(() => { DbBus.Get(DbList.AMSCenter).Delete().Where(w => w.GID == oid).ExecuteAffrows(); }); } } }); } #endregion public async Task GetSASCCODE(User user) { try { var List = await DbBus.Get(DbList.djydb).Select().Where(x => x.CompId == user.CompId && x.ParaCode == "AMSSASCCODE").FirstAsync(); return List; } catch (Exception e) { throw; } } } }