From 690aa31b9dc1aeea2f7eca989d65c620132a5319 Mon Sep 17 00:00:00 2001 From: jianghaiqing Date: Mon, 9 Sep 2024 11:46:42 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=B8=9C=E8=83=9C7=E5=8A=9F=E8=83=BD=202=E3=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9BC=E6=8B=86=E5=8D=95=E8=BD=AC=E5=8F=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SyncBookingOrder/SyncBookingOrderDto.cs | 2151 +++++++++++++++++ .../DS.WMS.Core/Op/Entity/SeaExport.cs | 12 + .../SeaExportBookingOrClosingEDIService.cs | 320 +++ .../DS.WMS.Core/Op/Method/SeaExportService.cs | 5 + .../TaskPlat/Dtos/BC/DrawModifyBCConfig.cs | 78 + .../DS.WMS.Core/TaskPlat/Entity/TaskBcInfo.cs | 30 + .../TaskPlat/Method/TaskManageBCService.cs | 157 +- ds-wms-service/DS.WMS.OpApi/appsettings.json | 5 + .../DS.WMS.TaskApi/appsettings.json | 3 + 9 files changed, 2752 insertions(+), 9 deletions(-) create mode 100644 ds-wms-service/DS.WMS.Core/Op/Dtos/SyncBookingOrder/SyncBookingOrderDto.cs create mode 100644 ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/BC/DrawModifyBCConfig.cs diff --git a/ds-wms-service/DS.WMS.Core/Op/Dtos/SyncBookingOrder/SyncBookingOrderDto.cs b/ds-wms-service/DS.WMS.Core/Op/Dtos/SyncBookingOrder/SyncBookingOrderDto.cs new file mode 100644 index 00000000..b969b187 --- /dev/null +++ b/ds-wms-service/DS.WMS.Core/Op/Dtos/SyncBookingOrder/SyncBookingOrderDto.cs @@ -0,0 +1,2151 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DS.WMS.Core.Op.Dtos +{ + /// + /// 同步东胜7 + /// + public class SyncBookingOrderDto + { + /// + /// 字段同步类型(用于客户订舱,彩虹+东胜7独立版本)空:所有字段都不同步 BC:只同步BC+文件相关字段 FILE:只同步文件相关字段) + /// + public string SyncType { get; set; } + + ///// + ///// 主键 + ///// + public long Id { get; set; } + + /// + /// 业务编号 + /// + public string BSNO { get; set; } + /// + /// 业务状态 + /// + public string BSSTATUS { get; set; } + /// + /// 业务状态名称 + /// + public string BSSTATUSNAME { get; set; } + /// + /// 业务日期 + /// + public DateTime? BSDATE { get; set; } + /// + /// 主提单号 + /// + public string MBLNO { get; set; } + /// + /// 分提单号 + /// + public string HBLNO { get; set; } + /// + /// 订舱编号 + /// + public string BOOKINGNO { get; set; } + /// + /// 合约号 + /// + public string CONTRACTNO { get; set; } + /// + /// 客户合同号 + /// + public string SERVICECONTRACTNO { get; set; } + /// + /// 发货人代码 + /// + public string SHIPPERID { get; set; } + /// + /// 收货人代码 + /// + public string CONSIGNEEID { get; set; } + /// + /// 通知人代码 + /// + public string NOTIFYPARTYID { get; set; } + /// + /// 发货人 + /// + public string SHIPPER { get; set; } + /// + /// 收货人 + /// + public string CONSIGNEE { get; set; } + /// + /// 通知人 + /// + public string NOTIFYPARTY { get; set; } + /// + /// 第二通知人 + /// + public string NOTIFYPARTY2 { get; set; } + /// + /// 场站代码 + /// + public string YARDID { get; set; } + /// + /// 场站 + /// + public string YARD { get; set; } + /// + /// 船舶呼号 + /// + public string VESSELID { get; set; } + /// + /// 船名 + /// + public string VESSEL { get; set; } + /// + /// 海关航次 + /// + public string VOYNO { get; set; } + /// + /// 内部航次 + /// + public string VOYNOINNER { get; set; } + /// + /// 开船日期 + /// + public DateTime? ETD { get; set; } + /// + /// 实际开船日期 + /// + public DateTime? ATD { get; set; } + /// + /// 截港日期 + /// + public DateTime? CLOSINGDATE { get; set; } + /// + /// 截单日期 + /// + public DateTime? CLOSEDOCDATE { get; set; } + /// + /// 截VGM时间 + /// + public DateTime? CLOSEVGMDATE { get; set; } + /// + /// 预计到港日期 + /// + public DateTime? ETA { get; set; } + /// + /// 收货地代码 + /// + public string PLACERECEIPTID { get; set; } + /// + /// 收货地 + /// + public string PLACERECEIPT { get; set; } + /// + /// 起运港代码 + /// + public string PORTLOADID { get; set; } + /// + /// 起运港 + /// + public string PORTLOAD { get; set; } + /// + /// 卸货港代码 + /// + public string PORTDISCHARGEID { get; set; } + /// + /// 卸货港 + /// + public string PORTDISCHARGE { get; set; } + /// + /// 交货地代码 + /// + public string PLACEDELIVERYID { get; set; } + /// + /// 交货地 + /// + public string PLACEDELIVERY { get; set; } + /// + /// 目的地代码 + /// + public string DESTINATIONID { get; set; } + /// + /// 目的地 + /// + public string DESTINATION { get; set; } + /// + /// 提单份数 + /// + public string NOBILL { get; set; } + /// + /// 副本提单份数 + /// + public string COPYNOBILL { get; set; } + /// + /// 签单方式 + /// + public string ISSUETYPE { get; set; } + /// + /// 签单日期 + /// + public DateTime? ISSUEDATE { get; set; } + /// + /// 签单地点代码 + /// + public string ISSUEPLACEID { get; set; } + /// + /// 签单地点 + /// + public string ISSUEPLACE { get; set; } + /// + /// 付费方式 + /// + public string BLFRT { get; set; } + /// + /// 预付地点 + /// + public string PREPARDAT { get; set; } + /// + /// 到付地点 + /// + public string PAYABLEAT { get; set; } + /// + /// 运输条款 + /// + public string SERVICE { get; set; } + /// + /// 唛头 + /// + public string MARKS { get; set; } + /// + /// HS代码 + /// + public string HSCODE { get; set; } + /// + /// 货描 + /// + public string DESCRIPTION { get; set; } + /// + /// 件数 + /// + public int? PKGS { get; set; } + /// + /// 包装 + /// + public string KINDPKGS { get; set; } + /// + /// 毛重 + /// + public decimal? KGS { get; set; } + /// + /// 尺码 + /// + public decimal? CBM { get; set; } + /// + /// 件数大写 + /// + public string TOTALNO { get; set; } + /// + /// 集装箱 + /// + public string CNTRTOTAL { get; set; } + /// + /// 船公司代号 + /// + public string CARRIERID { get; set; } + /// + /// 船公司 + /// + public string CARRIER { get; set; } + /// + /// 货物标识 + /// + public string CARGOID { get; set; } + /// + /// 危险品类别 + /// + public string DCLASS { get; set; } + /// + /// 危险品编号 + /// + public string DUNNO { get; set; } + /// + /// 危险品页号 + /// + public string DPAGE { get; set; } + /// + /// 危险品标签 + /// + public string DLABEL { get; set; } + /// + /// 危险品联系人 + /// + public string LINKMAN { get; set; } + /// + /// 温度单位 + /// + public string TEMPID { get; set; } + /// + /// 设置温度 + /// + public string TEMPSET { get; set; } + /// + /// 通风度 + /// + public string REEFERF { get; set; } + /// + /// 湿度 + /// + public string HUMIDITY { get; set; } + /// + /// 最低温度 + /// + public string TEMPMIN { get; set; } + /// + /// 最高温度 + /// + public string TEMPMAX { get; set; } + /// + /// 是否SOC箱 + /// + public bool? ISCONTAINERSOC { get; set; } + /// + /// 订舱备注 + /// + public string SOREMARK { get; set; } + /// + /// 截单备注 + /// + public string SIREMARK { get; set; } + /// + /// 场站备注 + /// + public string YARDREMARK { get; set; } + /// + /// 公司ID + /// + public string COMPID { get; set; } + /// + /// 公司名称 + /// + public string COMPNAME { get; set; } + /// + /// 发货人名称 + /// + public string SHIPPERNAME { get; set; } + /// + /// 发货人地址1 + /// + public string SHIPPERADDR1 { get; set; } + /// + /// 发货人地址2 + /// + public string SHIPPERADDR2 { get; set; } + /// + /// 发货人地址3 + /// + public string SHIPPERADDR3 { get; set; } + /// + /// 发货人城市 + /// + public string SHIPPERCITY { get; set; } + /// + /// 发货人省份代码 + /// + public string SHIPPERPROVINCE { get; set; } + /// + /// 发货人邮编 + /// + public string SHIPPERPOSTCODE { get; set; } + /// + /// 发货人国家代码 + /// + public string SHIPPERCOUNTRY { get; set; } + /// + /// 发货人联系人 + /// + public string SHIPPERATTN { get; set; } + /// + /// 发货人电话 + /// + public string SHIPPERTEL { get; set; } + /// + /// 发货人名称 + /// + public string CONSIGNEENAME { get; set; } + /// + /// 发货人地址1 + /// + public string CONSIGNEEADDR1 { get; set; } + /// + /// 发货人地址2 + /// + public string CONSIGNEEADDR2 { get; set; } + /// + /// 发货人地址3 + /// + public string CONSIGNEEADDR3 { get; set; } + /// + /// 发货人城市 + /// + public string CONSIGNEECITY { get; set; } + /// + /// 发货人省份代码 + /// + public string CONSIGNEEPROVINCE { get; set; } + /// + /// 发货人邮编 + /// + public string CONSIGNEEPOSTCODE { get; set; } + /// + /// 发货人国家代码 + /// + public string CONSIGNEERCOUNTRY { get; set; } + /// + /// 发货人联系人 + /// + public string CONSIGNEEATTN { get; set; } + /// + /// 发货人电话 + /// + public string CONSIGNEETEL { get; set; } + /// + /// 通知人名称 + /// + public string NOTIFYPARTYNAME { get; set; } + /// + /// 通知人地址1 + /// + public string NOTIFYPARTYADDR1 { get; set; } + /// + /// 通知人地址2 + /// + public string NOTIFYPARTYADDR2 { get; set; } + /// + /// 通知人地址3 + /// + public string NOTIFYPARTYADDR3 { get; set; } + /// + /// 通知人城市 + /// + public string NOTIFYPARTYCITY { get; set; } + /// + /// 通知人省份代码 + /// + public string NOTIFYPARTYPROVINCE { get; set; } + /// + /// 通知人邮编 + /// + public string NOTIFYPARTYPOSTCODE { get; set; } + /// + /// 通知人国家代码 + /// + public string NOTIFYPARTYCOUNTRY { get; set; } + /// + /// 通知人联系人 + /// + public string NOTIFYPARTYATTN { get; set; } + /// + /// 通知人电话 + /// + public string NOTIFYPARTYTEL { get; set; } + /// + /// PO号 + /// + public string PONO { get; set; } + /// + /// 操作id + /// + public string OPID { get; set; } + /// + /// 单证id + /// + public string DOCID { get; set; } + /// + /// 操作 + /// + public string OP { get; set; } + /// + /// 单证 + /// + public string DOC { get; set; } + /// + /// 销售ID + /// + public string SALEID { get; set; } + /// + /// 销售 + /// + public string SALE { get; set; } + /// + /// 客服ID + /// + public string CUSTSERVICEID { get; set; } + /// + /// 客服 + /// + public string CUSTSERVICE { get; set; } + /// + /// 客户 + /// + public string CUSTOMERNAME { get; set; } + /// + /// 订舱代理 + /// + public string FORWARDER { get; set; } + /// + /// 船代 + /// + public string SHIPAGENCY { get; set; } + /// + /// 报关行 + /// + public string CUSTOMSER { get; set; } + /// + /// 车队 + /// + public string TRUCKER { get; set; } + /// + /// 国外代理 + /// + public string AGENTID { get; set; } + /// + /// 客户ID + /// + public long? CUSTOMERID { get; set; } + /// + /// 订舱代理ID + /// + public string FORWARDERID { get; set; } + /// + /// 船代ID + /// + public string SHIPAGENCYID { get; set; } + /// + /// 报关行ID + /// + public string CUSTOMSERID { get; set; } + /// + /// 车队ID + /// + public string TRUCKERID { get; set; } + /// + /// 国外代理名称 + /// + public string AGENTNAME { get; set; } + /// + /// 委托方 + /// + public string WEITUO { get; set; } + /// + /// 收货人DOOR地址 + /// + public string CONSIGNEEDOORADDR { get; set; } + /// + /// 发货人DOOR地址 + /// + public string SHIPPERDOORADDR { get; set; } + /// + /// SCAC代码 + /// + public string SCACCODE { get; set; } + /// + /// ITN编号 + /// + public string ITNCODE { get; set; } + /// + /// 预付地点ID + /// + public string PREPARDATID { get; set; } + /// + /// 到付地点ID + /// + public string PAYABLEATID { get; set; } + /// + /// 客户系统编号 + /// + public string CUSTNO { get; set; } + /// + /// 中转港代码 + /// + public string TRANSPORTID { get; set; } + /// + /// 中转港 + /// + public string TRANSPORT { get; set; } + /// + /// 第三付款地 + /// + public string THIRDPAYADDR { get; set; } + /// + /// 场站联系人 + /// + public string YARDCONTRACT { get; set; } + /// + /// 场站联系人电话 + /// + public string YARDCONTRACTTEL { get; set; } + /// + /// 场站联系人邮箱 + /// + public string YARDCONTRACTEMAIL { get; set; } + /// + /// 费用自结 + /// + public bool? FEESELF { get; set; } + /// + /// 航线代码 + /// + public string LANECODE { get; set; } + /// + /// 航线名称 + /// + public string LANENAME { get; set; } + /// + /// 付款方 + /// + public string FREIGHTPAYER { get; set; } + + + + + /// + /// 品名代码 + /// + public string GOODSCODE { get; set; } + + /// + /// 品名 + /// + public string GOODSNAME { get; set; } + + + + /// + /// 件数合计 + /// + + public string PKGSTOTAL { get; set; } + + + /// + /// 毛重合计 + /// + + public string KGSTOTAL { get; set; } + + + /// + /// 尺寸合计 + /// + + public string CBMTOTAL { get; set; } + + + /// + /// 航线操作ID + /// + + public string ROUTEID { get; set; } + + + + /// + /// 航线操作 + /// + public string ROUTE { get; set; } + + + /// + /// 仓库 + /// + public string Warehouse { get; set; } + + + + /// + /// 仓库id + /// + public string WarehouseID { get; set; } + + /// + /// ep号 + /// + + public string EPCode { get; set; } + + /// + /// 航线 + /// + public string LineName { get; set; } + /// + /// 单证备注 + /// + public string DZRemark { get; set; } + /// + /// 操作备注 + /// + public string CZRemark { get; set; } + /// + /// 真提单号 + /// + public string TMBLNO { get; set; } + + /// + /// 装运方式 整箱/拼箱 + /// + public string ShippingMethod { get; set; } + + + + /// + /// 箱使堆存 + /// + public string CtnDayNum { get; set; } + /// + /// 创建者名称 + /// + public virtual string CreatedUserName { get; set; } + + + /// + /// 是否占舱 + /// + public string ZhanCangFlag { get; set; } + + /// + /// 业务来源代码 + /// + public string SourceCode { get; set; } + + /// + /// 业务来源名称 + /// + public string SourceName { get; set; } + + + #region 船舶日期相关 + + /// + /// 运港通ETD(爬取的ETD) + /// + public DateTime? YgtETD { get; set; } + + + + + /// + /// 起始港预抵日期 + /// + public DateTime? StartETA { get; set; } + + /// + /// 起始港实际抵港 + /// + + public DateTime? StartATA { get; set; } + + /// + /// 中转预抵 + /// + + public DateTime? MiddleETA { get; set; } + + /// + /// 中转预计离港 + /// + + public DateTime? MiddleETD { get; set; } + + + /// + /// 中转实际到港 + /// + + public DateTime? MiddleATA { get; set; } + /// + /// 中转实际离港 + /// + + public DateTime? MiddleATD { get; set; } + + + /// + /// 实际到港(目的港) + /// + + public DateTime? ATA { get; set; } + + #endregion + + /// + /// 申请箱使 + /// + public string ShenQingXiangShi { get; set; } + + /// + /// 境外代理 + /// + public string ForeignAgent { get; set; } + + + + /// + /// 版本号 + /// + public string VERSION { get; set; } + /// + /// 三方付费 + /// + public string ThirdPay { get; set; } + + /// + /// 三方付费Code + /// + public string ThirdPayCode { get; set; } + + public List ctnInputs { get; set; } + + /// + /// EDI扩展信息 + /// + public BookingEDIExtDto BookingEDIExt { get; set; } + + /// + /// 航线管理 + /// + [Description("航线管理")] + public string LineManage { get; set; } + + /// + /// 航线管理ID + /// + public string LineManageID { get; set; } + + + public List childrens { get; set; } + + /// + ///货物状态 + /// + public List GoodsStatus { get; set; } + + + /// + /// 附件列表 + /// + public List Files { get; set; } + + /// + /// 拓展数据 + /// + public BookingExtendStateDto ExtendState { get; set; } + + + /// + /// 运踪详情 + /// + public List StatusLogs { get; set; } + + /// + /// 分单操作ID + /// + public long? SubOpId { get; set; } + + /// + /// 分单操作 + /// + public string SubOp { get; set; } + + /// + /// 场站备注 + /// + public string OPERATOREMAIL { get; set; } + } + + + + public class Children + { + ///// + ///// 主键 + ///// + public long Id { get; set; } + + /// + /// 业务编号 + /// + public string BSNO { get; set; } + /// + /// 业务状态 + /// + public string BSSTATUS { get; set; } + /// + /// 业务状态名称 + /// + public string BSSTATUSNAME { get; set; } + /// + /// 业务日期 + /// + public DateTime? BSDATE { get; set; } + /// + /// 主提单号 + /// + public string MBLNO { get; set; } + /// + /// 分提单号 + /// + public string HBLNO { get; set; } + /// + /// 订舱编号 + /// + public string BOOKINGNO { get; set; } + /// + /// 合约号 + /// + public string CONTRACTNO { get; set; } + /// + /// 客户合同号 + /// + public string SERVICECONTRACTNO { get; set; } + /// + /// 发货人代码 + /// + public string SHIPPERID { get; set; } + /// + /// 收货人代码 + /// + public string CONSIGNEEID { get; set; } + /// + /// 通知人代码 + /// + public string NOTIFYPARTYID { get; set; } + /// + /// 发货人 + /// + public string SHIPPER { get; set; } + /// + /// 收货人 + /// + public string CONSIGNEE { get; set; } + /// + /// 通知人 + /// + public string NOTIFYPARTY { get; set; } + /// + /// 第二通知人 + /// + public string NOTIFYPARTY2 { get; set; } + /// + /// 场站代码 + /// + public string YARDID { get; set; } + /// + /// 场站 + /// + public string YARD { get; set; } + /// + /// 船舶呼号 + /// + public string VESSELID { get; set; } + /// + /// 船名 + /// + public string VESSEL { get; set; } + /// + /// 海关航次 + /// + public string VOYNO { get; set; } + /// + /// 内部航次 + /// + public string VOYNOINNER { get; set; } + /// + /// 开船日期 + /// + public DateTime? ETD { get; set; } + /// + /// 实际开船日期 + /// + public DateTime? ATD { get; set; } + /// + /// 截港日期 + /// + public DateTime? CLOSINGDATE { get; set; } + /// + /// 截单日期 + /// + public DateTime? CLOSEDOCDATE { get; set; } + /// + /// 截VGM时间 + /// + public DateTime? CLOSEVGMDATE { get; set; } + /// + /// 预计到港日期 + /// + public DateTime? ETA { get; set; } + /// + /// 收货地代码 + /// + public string PLACERECEIPTID { get; set; } + /// + /// 收货地 + /// + public string PLACERECEIPT { get; set; } + /// + /// 起运港代码 + /// + public string PORTLOADID { get; set; } + /// + /// 起运港 + /// + public string PORTLOAD { get; set; } + /// + /// 卸货港代码 + /// + public string PORTDISCHARGEID { get; set; } + /// + /// 卸货港 + /// + public string PORTDISCHARGE { get; set; } + /// + /// 交货地代码 + /// + public string PLACEDELIVERYID { get; set; } + /// + /// 交货地 + /// + public string PLACEDELIVERY { get; set; } + /// + /// 目的地代码 + /// + public string DESTINATIONID { get; set; } + /// + /// 目的地 + /// + public string DESTINATION { get; set; } + /// + /// 提单份数 + /// + public string NOBILL { get; set; } + /// + /// 副本提单份数 + /// + public string COPYNOBILL { get; set; } + /// + /// 签单方式 + /// + public string ISSUETYPE { get; set; } + /// + /// 签单日期 + /// + public DateTime? ISSUEDATE { get; set; } + /// + /// 签单地点代码 + /// + public string ISSUEPLACEID { get; set; } + /// + /// 签单地点 + /// + public string ISSUEPLACE { get; set; } + /// + /// 付费方式 + /// + public string BLFRT { get; set; } + /// + /// 预付地点 + /// + public string PREPARDAT { get; set; } + /// + /// 到付地点 + /// + public string PAYABLEAT { get; set; } + /// + /// 运输条款 + /// + public string SERVICE { get; set; } + /// + /// 唛头 + /// + public string MARKS { get; set; } + /// + /// HS代码 + /// + public string HSCODE { get; set; } + /// + /// 货描 + /// + public string DESCRIPTION { get; set; } + /// + /// 件数 + /// + public int? PKGS { get; set; } + /// + /// 包装 + /// + public string KINDPKGS { get; set; } + /// + /// 毛重 + /// + public decimal? KGS { get; set; } + /// + /// 尺码 + /// + public decimal? CBM { get; set; } + /// + /// 件数大写 + /// + public string TOTALNO { get; set; } + /// + /// 集装箱 + /// + public string CNTRTOTAL { get; set; } + /// + /// 船公司代号 + /// + public string CARRIERID { get; set; } + /// + /// 船公司 + /// + public string CARRIER { get; set; } + /// + /// 货物标识 + /// + public string CARGOID { get; set; } + /// + /// 危险品类别 + /// + public string DCLASS { get; set; } + /// + /// 危险品编号 + /// + public string DUNNO { get; set; } + /// + /// 危险品页号 + /// + public string DPAGE { get; set; } + /// + /// 危险品标签 + /// + public string DLABEL { get; set; } + /// + /// 危险品联系人 + /// + public string LINKMAN { get; set; } + /// + /// 温度单位 + /// + public string TEMPID { get; set; } + /// + /// 设置温度 + /// + public string TEMPSET { get; set; } + /// + /// 通风度 + /// + public string REEFERF { get; set; } + /// + /// 湿度 + /// + public string HUMIDITY { get; set; } + /// + /// 最低温度 + /// + public string TEMPMIN { get; set; } + /// + /// 最高温度 + /// + public string TEMPMAX { get; set; } + /// + /// 是否SOC箱 + /// + public bool? ISCONTAINERSOC { get; set; } + /// + /// SO备注 + /// + public string SOREMARK { get; set; } + /// + /// SI备注 + /// + public string SIREMARK { get; set; } + /// + /// 场站备注 + /// + public string YARDREMARK { get; set; } + /// + /// 公司ID + /// + public string COMPID { get; set; } + /// + /// 公司名称 + /// + public string COMPNAME { get; set; } + /// + /// 发货人名称 + /// + public string SHIPPERNAME { get; set; } + /// + /// 发货人地址1 + /// + public string SHIPPERADDR1 { get; set; } + /// + /// 发货人地址2 + /// + public string SHIPPERADDR2 { get; set; } + /// + /// 发货人地址3 + /// + public string SHIPPERADDR3 { get; set; } + /// + /// 发货人城市 + /// + public string SHIPPERCITY { get; set; } + /// + /// 发货人省份代码 + /// + public string SHIPPERPROVINCE { get; set; } + /// + /// 发货人邮编 + /// + public string SHIPPERPOSTCODE { get; set; } + /// + /// 发货人国家代码 + /// + public string SHIPPERCOUNTRY { get; set; } + /// + /// 发货人联系人 + /// + public string SHIPPERATTN { get; set; } + /// + /// 发货人电话 + /// + public string SHIPPERTEL { get; set; } + /// + /// 发货人名称 + /// + public string CONSIGNEENAME { get; set; } + /// + /// 发货人地址1 + /// + public string CONSIGNEEADDR1 { get; set; } + /// + /// 发货人地址2 + /// + public string CONSIGNEEADDR2 { get; set; } + /// + /// 发货人地址3 + /// + public string CONSIGNEEADDR3 { get; set; } + /// + /// 发货人城市 + /// + public string CONSIGNEECITY { get; set; } + /// + /// 发货人省份代码 + /// + public string CONSIGNEEPROVINCE { get; set; } + /// + /// 发货人邮编 + /// + public string CONSIGNEEPOSTCODE { get; set; } + /// + /// 发货人国家代码 + /// + public string CONSIGNEERCOUNTRY { get; set; } + /// + /// 发货人联系人 + /// + public string CONSIGNEEATTN { get; set; } + /// + /// 发货人电话 + /// + public string CONSIGNEETEL { get; set; } + /// + /// 通知人名称 + /// + public string NOTIFYPARTYNAME { get; set; } + /// + /// 通知人地址1 + /// + public string NOTIFYPARTYADDR1 { get; set; } + /// + /// 通知人地址2 + /// + public string NOTIFYPARTYADDR2 { get; set; } + /// + /// 通知人地址3 + /// + public string NOTIFYPARTYADDR3 { get; set; } + /// + /// 通知人城市 + /// + public string NOTIFYPARTYCITY { get; set; } + /// + /// 通知人省份代码 + /// + public string NOTIFYPARTYPROVINCE { get; set; } + /// + /// 通知人邮编 + /// + public string NOTIFYPARTYPOSTCODE { get; set; } + /// + /// 通知人国家代码 + /// + public string NOTIFYPARTYCOUNTRY { get; set; } + /// + /// 通知人联系人 + /// + public string NOTIFYPARTYATTN { get; set; } + /// + /// 通知人电话 + /// + public string NOTIFYPARTYTEL { get; set; } + /// + /// PO号 + /// + public string PONO { get; set; } + /// + /// 操作id + /// + public string OPID { get; set; } + /// + /// 单证id + /// + public string DOCID { get; set; } + /// + /// 操作 + /// + public string OP { get; set; } + /// + /// 单证 + /// + public string DOC { get; set; } + /// + /// 销售ID + /// + public string SALEID { get; set; } + /// + /// 销售 + /// + public string SALE { get; set; } + /// + /// 客服ID + /// + public string CUSTSERVICEID { get; set; } + /// + /// 客服 + /// + public string CUSTSERVICE { get; set; } + /// + /// 客户 + /// + public string CUSTOMERNAME { get; set; } + /// + /// 订舱代理 + /// + public string FORWARDER { get; set; } + /// + /// 船代 + /// + public string SHIPAGENCY { get; set; } + /// + /// 报关行 + /// + public string CUSTOMSER { get; set; } + /// + /// 车队 + /// + public string TRUCKER { get; set; } + /// + /// 国外代理 + /// + public string AGENTID { get; set; } + /// + /// 客户ID + /// + public long? CUSTOMERID { get; set; } + /// + /// 订舱代理ID + /// + public string FORWARDERID { get; set; } + /// + /// 船代ID + /// + public string SHIPAGENCYID { get; set; } + /// + /// 报关行ID + /// + public string CUSTOMSERID { get; set; } + /// + /// 车队ID + /// + public string TRUCKERID { get; set; } + /// + /// 国外代理名称 + /// + public string AGENTNAME { get; set; } + /// + /// 委托方 + /// + public string WEITUO { get; set; } + /// + /// 收货人DOOR地址 + /// + public string CONSIGNEEDOORADDR { get; set; } + /// + /// 发货人DOOR地址 + /// + public string SHIPPERDOORADDR { get; set; } + /// + /// SCAC代码 + /// + public string SCACCODE { get; set; } + /// + /// ITN编号 + /// + public string ITNCODE { get; set; } + /// + /// 预付地点ID + /// + public string PREPARDATID { get; set; } + /// + /// 到付地点ID + /// + public string PAYABLEATID { get; set; } + /// + /// 客户系统编号 + /// + public string CUSTNO { get; set; } + /// + /// 中转港代码 + /// + public string TRANSPORTID { get; set; } + /// + /// 中转港 + /// + public string TRANSPORT { get; set; } + /// + /// 第三付款地 + /// + public string THIRDPAYADDR { get; set; } + /// + /// 场站联系人 + /// + public string YARDCONTRACT { get; set; } + /// + /// 场站联系人电话 + /// + public string YARDCONTRACTTEL { get; set; } + /// + /// 场站联系人邮箱 + /// + public string YARDCONTRACTEMAIL { get; set; } + /// + /// 费用自结 + /// + public bool? FEESELF { get; set; } + /// + /// 航线代码 + /// + public string LANECODE { get; set; } + /// + /// 航线名称 + /// + public string LANENAME { get; set; } + /// + /// 付款方 + /// + public string FREIGHTPAYER { get; set; } + + + + + /// + /// 品名代码 + /// + public string GOODSCODE { get; set; } + + /// + /// 品名 + /// + public string GOODSNAME { get; set; } + + + /// + /// 件数合计 + /// + public string PKGSTOTAL { get; set; } + + + + /// + /// 毛重合计 + /// + public string KGSTOTAL { get; set; } + + + /// + /// 尺寸合计 + /// + + public string CBMTOTAL { get; set; } + /// + /// 航线操作ID + /// + public string ROUTEID { get; set; } + + + + /// + /// 航线操作 + /// + public string ROUTE { get; set; } + + /// + /// 仓库 + /// + public string Warehouse { get; set; } + + + + /// + /// 仓库ID + /// + public string WarehouseID { get; set; } + + /// + /// 航线 + /// + public string LineName { get; set; } + + /// + /// ep号 + /// + public string EPCode { get; set; } + + public List ctnInputs { get; set; } + + /// + /// EDI扩展信息 + /// + public BookingEDIExtDto BookingEDIExt { get; set; } + /// + /// 单证备注 + /// + public string DZRemark { get; set; } + /// + /// 操作备注 + /// + public string CZRemark { get; set; } + + + /// + /// 真提单号 + /// + public string TMBLNO { get; set; } + /// + /// 装运方式 整箱/拼箱 + /// + public string ShippingMethod { get; set; } + + + + + /// + /// 是否占舱 + /// + public string ZhanCangFlag { get; set; } + + /// + /// 业务来源代码 + /// + public string SourceCode { get; set; } + + /// + /// 业务来源名称 + /// + public string SourceName { get; set; } + + + #region 船舶日期相关 + + /// + /// 运港通ETD(爬取的ETD) + /// + public DateTime? YgtETD { get; set; } + + + + + /// + /// 起始港预抵日期 + /// + public DateTime? StartETA { get; set; } + + /// + /// 起始港实际抵港 + /// + + public DateTime? StartATA { get; set; } + + /// + /// 中转预抵 + /// + + public DateTime? MiddleETA { get; set; } + + /// + /// 中转预计离港 + /// + + public DateTime? MiddleETD { get; set; } + + + /// + /// 中转实际到港 + /// + + public DateTime? MiddleATA { get; set; } + /// + /// 中转实际离港 + /// + + public DateTime? MiddleATD { get; set; } + + + /// + /// 实际到港(目的港) + /// + + public DateTime? ATA { get; set; } + + #endregion + + /// + /// 申请箱使 + /// + public string ShenQingXiangShi { get; set; } + + /// + /// 三方付费 + /// + public string ThirdPay { get; set; } + + /// + /// 三方付费Code + /// + public string ThirdPayCode { get; set; } + /// + /// 航线管理 + /// + [Description("航线管理")] + public string LineManage { get; set; } + + /// + /// 航线管理ID + /// + public string LineManageID { get; set; } + + /// + /// 分单操作ID + /// + public long? SubOpId { get; set; } + + /// + /// 分单操作 + /// + public string SubOp { get; set; } + } + + /// + /// 货物状态 + /// + public class BookingGoodsStatusDto + { + + /// + /// 状态名称 + /// + public string StatusName { get; set; } + + /// + /// 完成时间 + /// + public DateTime? FinishTime { get; set; } + + // + /// 备注 + /// + public string Remark { get; set; } + + // + /// 附加数据 + /// + public string ExtData { get; set; } + + } + + /// + /// 拓展数据 + /// + public class BookingExtendStateDto + { + + /// + /// 提箱小票未申请 + /// + public int noApply { get; set; } + + /// + /// 提箱小票已申请未打印 + /// + public int applyNoPrint { get; set; } + + /// + /// 提箱小票已打印 + /// + public int print { get; set; } + + /// + /// 提箱小票有效期起始时间 + /// + public DateTime? TxxpBeginTime { get; set; } + + /// + /// 提箱小票有效期终止时间 + /// + public DateTime? TxxpEndTime { get; set; } + + /// + /// 提箱小票pdf地址 + /// + public string TxxpPdfUrl { get; set; } + } + + /// + /// 货运跟踪 + /// + public class BookingStatusLogSyncDto + { + /// + /// id + /// + public long Id { get; set; } + + /// + /// 业务id + /// + public long? BookingId { get; set; } + + /// + /// 状态 + /// + public string Status { get; set; } + /// + /// 状态时间 + /// + public DateTime? OpTime { get; set; } + /// + /// 类别 + /// + public string Category { get; set; } + /// + /// 状态分类 + /// + public string Type { get; set; } + /// + /// 提单号 + /// + public string MBLNO { get; set; } + + /// + /// 明细详情 + /// + public List Details { get; set; } + } + + /// + /// 货运跟踪详情 + /// + public class BookingStatusLogDetailSyncDto + { + /// + /// 状态 + /// + public string Status { get; set; } + /// + /// 箱号 + /// + public string CNTRNO { get; set; } + + /// + /// 状态时间 + /// + public DateTime? OPTime { get; set; } + } + + /// + /// 箱信息输出参数 + /// + public class BookingCtnDto + { + /// + /// 主键 + /// + public long? Id { get; set; } + + /// + /// 单据ID + /// + public long? BILLID { get; set; } + /// + /// 箱型代码 + /// + public string CTNCODE { get; set; } + /// + /// 箱型 + /// + public string CTNALL { get; set; } + + /// + /// 箱量 + /// + public int CTNNUM { get; set; } + + /// + /// TEU + /// + public int TEU { get; set; } + + /// + /// 箱号 + /// + public string CNTRNO { get; set; } + + /// + /// 封号 + /// + public string SEALNO { get; set; } + + /// + /// 件数 + /// + public int PKGS { get; set; } + + /// + /// 包装 + /// + public string KINDPKGS { get; set; } + + /// + /// 毛重 + /// + public decimal KGS { get; set; } + + /// + /// 尺码 + /// + public decimal CBM { get; set; } + + /// + /// 皮重 + /// + public decimal TAREWEIGHT { get; set; } + + /// + /// 箱状态 + /// + public string CTNSTATUS { get; set; } + + /// + /// 称重方式 + /// + public string WEIGHTYPE { get; set; } + + /// + /// 称重重量 + /// + public decimal WEIGHKGS { get; set; } + + /// + /// 称重联系人 + /// + public string WEIGHATTN { get; set; } + + /// + /// VGM联系公司 + /// + public string VGMCONNCOM { get; set; } + + /// + /// VGM联系电话 + /// + public string WEIGHTEL { get; set; } + + /// + /// 称重日期 + /// + public string WEIGHDATE { get; set; } + + /// + /// VGM地址 + /// + public string VGMADDR { get; set; } + + /// + /// VGM邮箱 + /// + public string VGMEMAIL { get; set; } + + /// + /// 备注 + /// + public string REMARK { get; set; } + + public List ctnDetailInputs { get; set; } + } + + /// + /// EDI扩展 + /// + public class BookingEDIExtDto + { + /// + /// 委托方 + /// + public string WeiTuoFang { get; set; } + + /// + /// 发送方EDI代码 + /// + public string SendCode { get; set; } + + /// + /// 接收方EDI代码 + /// + public string ReceiveCode { get; set; } + + /// + /// 通知放EDI代码 + /// + public string NotifyCdoe { get; set; } + + /// + /// 销售EDI代码 + /// + public string SalerCode { get; set; } + + /// + /// Master Bol Indicator + /// + public string MasterBolIndicator { get; set; } + + /// + /// EMANIFEST HBL + /// + public string EmanifestHbl { get; set; } + + /// + /// 收货人EDI代码 + /// + public string ConsigneeEdiCode { get; set; } + + /// + /// 发货人EDI代码 + /// + public string ShipperEdiCode { get; set; } + + /// + /// EDI联系人名称 + /// + public string EDIAttn { get; set; } + + /// + /// EDI联系人电话 + /// + public string EDIAttnTel { get; set; } + + /// + /// EDI联系人邮箱 + /// + public string EDIAttnMail { get; set; } + + /// + /// AMS收货人 + /// + public string AMSConsignee { get; set; } + + /// + /// AMS通知人 + /// + public string AMSNotifyParty { get; set; } + + /// + /// 操作英文名称 + /// + public string OpEName { get; set; } + + /// + /// 操作电话 + /// + public string OpTel { get; set; } + + /// + /// 操作邮箱 + /// + public string OpEmail { get; set; } + + /// + /// ACI HBL + /// + public string ACIHBL { get; set; } + /// + /// S0C C0C + /// + public string S0CC0C { get; set; } + + /// + /// 商品名称 + /// + public string GoodsName { get; set; } + + /// + /// Master Bol Indicator名称 + /// + public string MasterBolIndicatorName { get; set; } + + /// + /// 销售EDI名称 + /// + public string SalerCodeName { get; set; } + + /// + /// 欧盟港口、伊朗港口、KHI + /// + public string CKHI { get; set; } + + /// + /// 南美东 + /// + public string CNCM { get; set; } + + /// + /// 巴西线的木质包装情况 + /// + public string WNCM { get; set; } + + /// + /// 订舱人说明 + /// + public string OrderRemark { get; set; } + + + /// + /// 辅助字段1 + /// + public string ExRemark1 { get; set; } + + /// + /// 辅助字段2 + /// + public string ExRemark2 { get; set; } + + /// + /// 辅助字段3 + /// + public string ExRemark3 { get; set; } + + /// + /// 辅助字段4 + /// + public string ExRemark4 { get; set; } + + /// + /// 第一层包装皮重 + /// + public decimal? KingTareweight { get; set; } + + /// + /// CNPTNo + /// + public string CNPTNo { get; set; } + + /// + /// 箱满仓业务员 + /// + [Description("箱满仓业务员")] + public string XMCYWY { get; set; } + + /// + /// EMC Name accout + /// + [Description("EMC Name accout")] + public string EmcNameAccount { get; set; } + } + + /// + /// 多品名输出参数 + /// + public class BookingCtnDetailDto + { + /// + /// 主键 + /// + public long? Id { get; set; } + + /// + /// 集装箱ID + /// + public long? CTNID { get; set; } + + /// + /// 件数 + /// + public int? PKGS { get; set; } + + /// + /// 包装 + /// + public string KINDPKGS { get; set; } + + /// + /// 毛重 + /// + public decimal? KGS { get; set; } + + /// + /// 尺码 + /// + public decimal? CBM { get; set; } + + /// + /// HS编码 + /// + public string HSCODE { get; set; } + + /// + /// 唛头 + /// + public string MARKS { get; set; } + + /// + /// 货描 + /// + public string DESCRIPTION { get; set; } + + /// + /// 备注 + /// + public string REMARK { get; set; } + + } + + public class DownloadFile + { + public long Id { get; set; } + public string FileName { get; set; } + public string FileType { get; set; } + public string FilePath { get; set; } + } +} diff --git a/ds-wms-service/DS.WMS.Core/Op/Entity/SeaExport.cs b/ds-wms-service/DS.WMS.Core/Op/Entity/SeaExport.cs index 441057e5..6fa7790f 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Entity/SeaExport.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Entity/SeaExport.cs @@ -1626,4 +1626,16 @@ public class SeaExport : BaseOrgModel /// [SugarColumn(ColumnDescription = "服务项目", ColumnDataType = "text", IsNullable = true)] public string? ServiceItem { get; set; } + + /// + /// 订舱方式 + /// + [SugarColumn(ColumnDescription = "订舱方式 CONTRACT_ORDER-合约订舱;SPOT_ORDER-SPOT订舱", IsNullable = true, Length = 20)] + public string BookingSlotType { get; set; } + + /// + /// 订舱方式名称 + /// + [SugarColumn(ColumnDescription = "订舱方式名称 CONTRACT_ORDER-合约订舱;SPOT_ORDER-SPOT订舱", IsNullable = true, Length = 40)] + public string BookingSlotTypeName { get; set; } } \ No newline at end of file diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs index ce8f0dca..4c75e190 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs @@ -3,6 +3,7 @@ using Autofac.Core; using DS.Module.Core; using DS.Module.Core.Extensions; using DS.Module.Core.Helpers; +using DS.Module.DjyServiceStatus; using DS.WMS.Core.Code.Entity; using DS.WMS.Core.Info.Entity; using DS.WMS.Core.Invoice.Dtos; @@ -14,7 +15,11 @@ using DS.WMS.Core.Sys.Entity; using LanguageExt; using LanguageExt.Common; using Mapster; +using Microsoft.AspNet.SignalR; +using Microsoft.AspNetCore.Connections; +using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore.Metadata; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; @@ -23,6 +28,7 @@ using NPOI.SS.UserModel; using Org.BouncyCastle.Ocsp; using System.Collections.Specialized; using System.Runtime.InteropServices; +using System.Text; using System.Text.RegularExpressions; namespace DS.WMS.Core.Op.Method @@ -32,6 +38,7 @@ namespace DS.WMS.Core.Op.Method /// public partial class SeaExportService { + const string CONST_AUTO_SYNC_DONGSHENG_BY_MQ = "AutoSyncBookingOrderToDongshengMQ"; /// /// 打印保函 @@ -2649,5 +2656,318 @@ namespace DS.WMS.Core.Op.Method } } #endregion + + #region 推送东胜(MQ) + /// + /// 推送东胜(MQ) + /// + /// 海运订单主键数组 + /// + public async Task SendBookingOrder(long[] ids) + { + var logTitle = $"同步订舱数据,ids:{string.Join(',', ids.ToList())},"; + + _logger.Info($"开始{logTitle}"); + + var BookingOrderMQUri = AppSetting.app(new string[] { "SyncDongSheng7", "MQConfig" }); + + var paramConfig = _configService.GetConfig(CONST_AUTO_SYNC_DONGSHENG_BY_MQ, long.Parse(user.TenantId), false).GetAwaiter().GetResult()?.Data?.Value; + + _logger.Info($"{logTitle}订舱数据回推地址:{BookingOrderMQUri},{CONST_AUTO_SYNC_DONGSHENG_BY_MQ}:{paramConfig}"); + + var tenantDb = saasService.GetBizDbScopeById(user.TenantId); + + if (!string.IsNullOrEmpty(paramConfig) && paramConfig.Equals("ENABLE",StringComparison.OrdinalIgnoreCase)) + { + if (ids.Count() == 0) + { + _logger.Info($"{logTitle}请求参数错误,未提供上传订单的主键,结束"); + + throw new Exception("请求参数错误,未提供上传订单的主键"); + } + + var order = await tenantDb.Queryable().Filter(null, true).Where(x => ids.Contains(x.Id) && x.Deleted == false).ToListAsync(); + + foreach (var item in order) + { + //2023-9-8,增加校验,分单不能单独推送东胜,只能随主单推送 + if (item.ParentId > 0) + { + _logger.Info($"Id:{item.Id},分单不能单独推送东胜,只能随主单推送,continue跳过"); + continue; + } + + /* + //2023-9-26,添加校验:推送前通过Cache判断一下待推送的数据是否正在走删除逻辑 + if (await _cache.ExistsAsync($"DeletingBookingOrderId_{item.Id}")) + { + _logger.Info($"Id:{item.Id},正在走删除逻辑,continue跳过"); + continue; + } + + var dto = item.Adapt(); + + //if (syncTypeEnum != null) + //{ + // dto.SyncType = syncTypeEnum.ToString(); + //} + + if (!string.IsNullOrWhiteSpace(dto.YARDREMARK)) + { + dto.YARDREMARK += "\\n" + item.BookingSlotTypeName; + } + else + { + dto.YARDREMARK = item.BookingSlotTypeName; + } + + List statusList = new List(); + + QueryServiceProjectWithStatus queryInfo = new QueryServiceProjectWithStatus + { + BookingId = item.Id, + QueryType = TrackingQueryTypeEnum.QUERY_SERVICE_PROJECT, + TenantId = item.TenantId.Value + }; + + var queryRlt = await _serviceWorkFlowManageService.GetEnableStatusListByBusiness(queryInfo); + + if (queryRlt.succ) + { + statusList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(queryRlt.ext)); + } + + if (statusList != null && statusList.Any(x => x.StatusSKUCode == "SQXS" && x.IsYield)) + { + dto.CtnDayNum = statusList.FirstOrDefault(x => x.StatusSKUCode == "SQXS" && x.IsYield)?.ActVal; + } + + var ctn = await tenantDb.Queryable.AsQueryable().Filter(null, true).Where(x => x.BILLID == item.Id && x.IsDeleted == false).ToListAsync(); + + dto.ctnInputs = ctn.Adapt>(); + foreach (var it in dto.ctnInputs) + { + var ctnDetailInputs = await _ctndetailrep.AsQueryable().Filter(null, true).Where(x => x.CTNID == it.Id && x.IsDeleted == false).ToListAsync(); + it.ctnDetailInputs = ctnDetailInputs.Adapt>(); + } + + //2024-06-20 这里如果遇到拆票情况需要重新组织提单号 + if (item.SplitOrMergeFlag.HasValue && (item.SplitOrMergeFlag.Value == 1 || item.SplitOrMergeFlag.Value == 2)) + { + dto.MBLNO = $"{item.MBLNO}-{item.HBLNO}"; + + //如果当前是合票时,需要所有子票的箱型箱量合并到主票同步到东胜,子票的箱型箱量不同步东胜 + if (item.SplitOrMergeFlag.Value == 2) + { + //如果当前是主票 + if (dto.CUSTNO.Equals(dto.HBLNO, StringComparison.OrdinalIgnoreCase)) + { + var allOrderList = await _rep.AsQueryable().Filter(null, true).Where(x => dto.HBLNO == x.HBLNO && (x.SPLIT_OR_MERGE_FLAG != null && x.SPLIT_OR_MERGE_FLAG == 2) + && x.TenantId == UserManager.TENANT_ID && x.IsDeleted == false).ToListAsync(); + + if (allOrderList.Count > 0) + { + var allOrderIds = allOrderList.Select(x => x.Id).ToList(); + var currCtn = await _repCtn.AsQueryable().Filter(null, true).Where(x => x.BILLID != null && allOrderIds.Contains(x.BILLID.Value) + && x.IsDeleted == false).ToListAsync(); + + dto.ctnInputs = currCtn.Adapt>(); + foreach (var it in dto.ctnInputs) + { + var ctnDetailInputs = await _ctndetailrep.AsQueryable().Filter(null, true).Where(x => x.CTNID == it.Id && x.IsDeleted == false).ToListAsync(); + it.ctnDetailInputs = ctnDetailInputs.Adapt>(); + } + + dto.CNTRTOTAL = string.Join(",", dto.ctnInputs.GroupBy(x => x.CTNALL).Select(x => $"{x.Key}*{x.Sum(b => b.CTNNUM)}").ToArray()); + } + } + else + { + dto.ctnInputs = new List(); + dto.CNTRTOTAL = string.Empty; + } + } + } + + //EDI + var BookingEDIExt = await _bookingEDIExt.AsQueryable().Filter(null, true).Where(x => x.BookingId == item.Id && x.IsDeleted == false).FirstAsync(); + if (BookingEDIExt != null) + { + dto.BookingEDIExt = BookingEDIExt.Adapt(); + } + + if (App.Configuration["ServiceStatusOpenAuto"] == "1") + { + if (statusList != null && statusList.Any(x => x.IsYield)) + { + dto.GoodsStatus = statusList.Where(x => x.IsYield).OrderBy(x => x.SortNo).Select(x => new BookingGoodsStatusDto + { + StatusName = x.ShowName, + FinishTime = x.ActDate, + Remark = x.ActRemark, + ExtData = x.ActVal + }).ToList(); + } + else + { + dto.GoodsStatus = new List(); + } + } + else + { + //货物状态 + dto.GoodsStatus = await _goodsStatus.AsQueryable().Filter(null, true).Where(x => x.bookingId == item.Id).InnerJoin((t, d) => t.ConfigId == d.Id).Select((t, d) => new BookingGoodsStatusDto + { + StatusName = d.StatusName, + FinishTime = t.FinishTime, + Remark = t.Remark, + ExtData = t.ExtData + }).Distinct().ToListAsync(); + } + + //等拓展数据 + var extData = await _repextendstate.AsQueryable().Filter(null, true).FirstAsync(x => x.bookingId == item.Id); + if (extData != null) + { + dto.ExtendState = extData.Adapt(); + } + + //提箱返场 + var statusloglist = _repStatuslog.AsQueryable().Filter(null, true).Where(x => x.BookingId == item.Id && x.IsDeleted == false && x.Category == "yunzong").ToList(); + var statuslogId = statusloglist.Select(x => x.Id).ToList(); + //运踪状态详情 + var statuslogdetaillist = _statuslogdetail.AsQueryable().Where(x => statuslogId.Contains(x.PId)).ToList(); + var staLogListDto = statusloglist.Adapt>(); + dto.StatusLogs = staLogListDto; + foreach (var sl in dto.StatusLogs) + { + var detailList = statuslogdetaillist.Where(x => x.PId == sl.Id).ToList(); + sl.Details = detailList.Adapt>(); + } + + var childrens = await _rep.AsQueryable().Filter(null, true).Where(x => x.ParentId == item.Id && x.TenantId == UserManager.TENANT_ID && x.IsDeleted == false).ToListAsync(); + dto.childrens = childrens.Adapt>(); + + + var files = await _bookingfile.AsQueryable().Filter(null, true).Where(x => x.BookingId == item.Id).ToListAsync(); + dto.Files = files.Select(x => new ReceiveBcInfoDto.DownloadFile() + { + Id = x.Id, + FileName = x.FileName, + FileType = x.TypeCode, + FilePath = x.FilePath + }).ToList(); + + foreach (var childitem in dto.childrens) + { + var ctnInputs = await _repCtn.AsQueryable().Filter(null, true).Where(x => x.BILLID == childitem.Id && x.IsDeleted == false).ToListAsync(); + childitem.ctnInputs = ctnInputs.Adapt>(); + + foreach (var it in childitem.ctnInputs) + { + var ctnDetailInputs = await _ctndetailrep.AsQueryable().Filter(null, true).Where(x => x.CTNID == it.Id && x.IsDeleted == false).ToListAsync(); + it.ctnDetailInputs = ctnDetailInputs.Adapt>(); + } + var childBookingEDIExt = await _bookingEDIExt.AsQueryable().Filter(null, true).Where(x => x.BookingId == childitem.Id && x.IsDeleted == false).FirstAsync(); + if (childBookingEDIExt != null) + { + childitem.BookingEDIExt = childBookingEDIExt.Adapt(); + } + } + + var json = dto.ToJsonString(); + json = $"[{json}]"; + _logger.Info($"Id:{item.Id},订舱数据回推,消息内容:{json}"); + + try + { + string MqActionExchangeName = AppSetting.app(new string[] { "SyncDongSheng7", "MQConfig" }); //djy.output.dingcang.ds6 + string MqActionQueueName = AppSetting.app(new string[] { "SyncDongSheng7", "MQConfig" }); //djy.output.dingcang.ds6 + + //ConnectionFactory factory = new ConnectionFactory(); + //factory.Uri = new Uri(BookingOrderMQUri); + + //using (IConnection conn = factory.CreateConnection()) + //{ + // IModel mqModel = conn.CreateModel(); + // mqModel.ExchangeDeclare(MqActionExchangeName, ExchangeType.Direct); + // var queueName = $"{MqActionQueueName}.{(item.SubTenantId.HasValue && item.SubTenantId > 0 ? item.SubTenantId.Value : item.TenantId)}"; + // mqModel.QueueDeclare(queueName, false, false, false, null); + // mqModel.QueueBind(queueName, MqActionExchangeName, queueName, null); + // byte[] messageBodyBytes = Encoding.UTF8.GetBytes(SharpZipLib.Compress(json)); + // IBasicProperties props = mqModel.CreateBasicProperties(); + // props.DeliveryMode = 2; + // mqModel.BasicPublish(MqActionExchangeName, queueName, props, messageBodyBytes); + // conn.Close(); + // _logger.LogInformation($"Id:{item.Id},订舱数据回推,已发送数据到消息队列【{BookingOrderMQUri}】,队列名称:【{queueName}】"); + //} + } + catch (Exception ex) + { + _logger.Error(ex.Message, $"Id:{item.Id},订舱数据回推推送过程中出现异常"); + _logger.Error($"Id:{item.Id},订舱数据回推推送过程中出现异常,ex.StackTrace:{ex.StackTrace}"); + + } + + await SendLetterYard(item.Id); + */ + } + if (order.Count == 0) + { + _logger.Info($"{logTitle}未查到订舱数据,结束"); + } + return order; + } + return null; + } + #endregion + + #region 放舱推送东胜 + /// + /// 放舱推送东胜 + /// + /// + public async Task SendLetterYard(long bookingId) + { + /* + var entity = _repLetterYard.AsQueryable().Filter(null, true).First(x => x.BookingId == bookingId && x.IsDeleted == false); + if (entity != null) + { + var json = entity.ToJsonString(); + try + { + const string MqActionExchangeName = "djy.output.dingcang.ds6"; + const string MqActionQueueName = "djy.output.dingcang.ds6_fangcang"; + ConnectionFactory factory = new ConnectionFactory(); + factory.Uri = new Uri(_cache.GetAllDictData().Result.Where(x => x.Code == "BookingOrderMQUri").Select(x => x.Value).FirstOrDefault()); + + using (IConnection conn = factory.CreateConnection()) + { + IModel mqModel = conn.CreateModel(); + mqModel.ExchangeDeclare(MqActionExchangeName, ExchangeType.Direct); + var queueName = $"{MqActionQueueName}.{UserManager.TENANT_ID}"; + mqModel.QueueDeclare(queueName, false, false, false, null); + mqModel.QueueBind(queueName, MqActionExchangeName, queueName, null); + byte[] messageBodyBytes = Encoding.UTF8.GetBytes(json); + IBasicProperties props = mqModel.CreateBasicProperties(); + props.DeliveryMode = 2; + mqModel.BasicPublish(MqActionExchangeName, + queueName, props, + messageBodyBytes); + conn.Close(); + _logger.LogInformation($"放舱数据回推,已发送数据到消息队列【{_cache.GetAllDictData().Result.Where(x => x.Code == "BookingOrderMQUri").Select(x => x.Value).FirstOrDefault()}】,数据内容:【{json}】"); + } + } + catch (Exception ex) + { + _logger.LogError(ex.Message); + _logger.LogError(ex.StackTrace); + + } + } + */ + return null; + } + #endregion } } diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs index 5124b0d5..a41cd3d1 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs @@ -41,6 +41,8 @@ public partial class SeaExportService : ISeaExportService private readonly IDjyServiceStatusService _djyServiceStatusService; private readonly IRuleEngineService _ruleEngineService; private readonly IOpJobService opJobService; + private readonly IConfigService _configService; + private readonly ISysCacheService _sysCacheService; const string CONST_MAPPING_MODULE = "BOOK_OR_CLOSING"; const string CONST_MAPPING_MODULE_ROUTE = "BOOK_OR_CLOSING_RT"; @@ -53,6 +55,8 @@ public partial class SeaExportService : ISeaExportService const string CONST_TSL_TYPE_CODE = "TslWeb"; const string CONST_ONE_SOFILE_CATE_CODE = "one_so_file_template"; const string PRINT_DATASOURCE_KEY = "booking_order"; + + /// /// /// @@ -71,6 +75,7 @@ public partial class SeaExportService : ISeaExportService _djyServiceStatusService = _serviceProvider.GetRequiredService(); _ruleEngineService = _serviceProvider.GetRequiredService(); opJobService = _serviceProvider.GetRequiredService(); + _configService = _serviceProvider.GetRequiredService(); } /// diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/BC/DrawModifyBCConfig.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/BC/DrawModifyBCConfig.cs new file mode 100644 index 00000000..ff6668e4 --- /dev/null +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/BC/DrawModifyBCConfig.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DS.WMS.Core.TaskPlat.Dtos.BC +{ + /// + /// + /// + public class DrawModifyBCConfig + { + /// + /// 擦除枚举 + /// + public DrawModifyBCConfigTypeEnum[] drawTypeArg { get; set; } + + /// + /// 原箱数量 + /// + public Nullable origCtnNum { get; set; } + + /// + /// 修改箱数量 + /// + public Nullable newCtnNum { get; set; } + + /// + /// 箱类型 + /// + public string ctnAll { get; set; } + + /// + /// 原提单号 + /// + public string origBillNo { get; set; } + + /// + /// 新提单号 + /// + public string newBillNo { get; set; } + } + + /// + /// + /// + public enum DrawModifyBCConfigTypeEnum + { + /// + /// 标准 + /// + [Description("标准")] + Standard, + /// + /// 擦除更多(展鸿要求) + /// + [Description("擦除更多")] + EraseMore, + /// + /// 手工指定截单时间 + /// + [Description("手工指定截单时间")] + DrawManualSIDate, + /// + /// 分票修改(康乾,主要考虑拆票时箱数量按照拆票显示) + /// + [Description("分票修改")] + SplitBC, + /// + /// 改提单号为分票号 + /// + [Description("改提单号为分票号")] + ChangeToSplitBillNo, + + } +} diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBcInfo.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBcInfo.cs index a977bdd4..64650c56 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBcInfo.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBcInfo.cs @@ -552,5 +552,35 @@ namespace DS.WMS.Core.TaskPlat.Entity /// [SugarColumn(ColumnDescription = "冷藏通风量", IsNullable = true, Length = 10)] public string? REEFER_QUANTITY { get; set; } + + /// + /// 是否已转发客户 1-是 0-否 + /// + [SugarColumn(ColumnDescription = "是否已转发客户 1-是 0-否", IsNullable = true, Length = 1)] + public Nullable IS_TRANSFER_USER { get; set; } + + /// + /// 最后转发客户邮件时间 + /// + [SugarColumn(ColumnDescription = "最后转发客户邮件时间", IsNullable = true)] + public DateTime? LST_TRANSFER_USER_DATE { get; set; } + + /// + /// 最后转发客户邮件结果 + /// + [SugarColumn(ColumnDescription = "最后转发客户邮件结果", IsNullable = true, Length = 500)] + public string? LST_TRANSFER_NOTES { get; set; } + + /// + /// 最后转发客户邮件状态 TEMP-暂存 SUCC-发送成功 FAILURE-发送失败 + /// + [SugarColumn(ColumnDescription = "最后转发客户邮件状态 TEMP-暂存 SUCC-发送成功 FAILURE-发送失败", IsNullable = true, Length = 20)] + public string? LST_STATUS { get; set; } + + /// + /// 最后转发客户邮件状态名称 + /// + [SugarColumn(ColumnDescription = "最后转发客户邮件状态名称", IsNullable = true, Length = 50)] + public string? LST_STATUS_NAME { get; set; } } } \ No newline at end of file diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs index 9dd22ac1..6b5f16f3 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs @@ -30,11 +30,14 @@ using HtmlAgilityPack; using Mapster; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using NLog; +using NPOI.SS.Formula.Functions; using SqlSugar; +using System.Collections.Specialized; using System.Net.Http.Headers; using System.Text; using System.Text.RegularExpressions; @@ -75,6 +78,7 @@ namespace DS.WMS.Core.TaskPlat.Method private Lazy codeVesselService; private Lazy _taskMailService; private Lazy _logService; + private Lazy _sysFileService; private static readonly NLog.Logger Logger = LogManager.GetCurrentClassLogger(); @@ -87,6 +91,9 @@ namespace DS.WMS.Core.TaskPlat.Method const string CONST_AUTO_TRANS_EMAIL_OP_CCTO = "AUTO_TRANS_EMAIL_OP_CCTO"; + + + public TaskManageBCService(IUser user, ILogger logger, @@ -126,6 +133,7 @@ namespace DS.WMS.Core.TaskPlat.Method codeVesselService = new Lazy(serviceProvider.GetRequiredService); _taskMailService = new Lazy(serviceProvider.GetRequiredService); _logService = new Lazy(serviceProvider.GetRequiredService); + _sysFileService = new Lazy(serviceProvider.GetRequiredService); tenantDb = saasDbService.GetBizDbScopeById(user.TenantId); tenantDb.QueryFilter.Clear(); @@ -3126,7 +3134,7 @@ namespace DS.WMS.Core.TaskPlat.Method var tenantDb = saasDbService.GetBizDbScopeById(user.TenantId); - var entity = tenantDb.Queryable().Filter(null, true).First(a => a.TASK_ID == taskPKId); + var entity = tenantDb.Queryable().Filter(null, true).First(a => a.TASK_ID == taskPKId); var baseInfo = tenantDb.Queryable().Filter(null, true).First(a => a.Id == taskPKId); @@ -3149,7 +3157,7 @@ namespace DS.WMS.Core.TaskPlat.Method BusinessId = taskPKId, BusinessType = BusinessType.OceanShippingExport, AutoCreateNext = true, - TaskTypeName = TaskBaseTypeEnum.POL_CTN_NOT_PICKUP.ToString(), + TaskTypeName = TaskBaseTypeEnum.BC_MODIFY.ToString(), }, $"未能根据任务配置值获取邮件模板设置"); @@ -3175,7 +3183,7 @@ namespace DS.WMS.Core.TaskPlat.Method { var taskAllocList = tenantDb.Queryable().Where(a => a.TaskId == taskPKId).ToList(); - var searchAllotUserRlt = taskAllocationService.Value.GetAllotUserBySeaExportId(TaskBaseTypeEnum.POL_CTN_NOT_PICKUP, id, new TaskFlowDataContext()).GetAwaiter().GetResult(); + var searchAllotUserRlt = taskAllocationService.Value.GetAllotUserBySeaExportId(TaskBaseTypeEnum.BC_MODIFY, id, new TaskFlowDataContext()).GetAwaiter().GetResult(); if (searchAllotUserRlt.Succeeded && searchAllotUserRlt.Data?.Count > 0) { @@ -3224,7 +3232,7 @@ namespace DS.WMS.Core.TaskPlat.Method if (taskAllocList.Count == 0) { - var searchAllotUserRlt = taskAllocationService.Value.GetAllotUserBySeaExportId(TaskBaseTypeEnum.POL_CTN_NOT_PICKUP, orderInfo.currOrder.Id, new TaskFlowDataContext()).GetAwaiter().GetResult(); + var searchAllotUserRlt = taskAllocationService.Value.GetAllotUserBySeaExportId(TaskBaseTypeEnum.BC_MODIFY, orderInfo.currOrder.Id, new TaskFlowDataContext()).GetAwaiter().GetResult(); if (searchAllotUserRlt.Succeeded && searchAllotUserRlt.Data?.Count > 0) { @@ -3263,6 +3271,8 @@ namespace DS.WMS.Core.TaskPlat.Method Detail = new List() }; + TaskBCTransferDto taskBCTransferDto = new TaskBCTransferDto(); + Dictionary> dict = new Dictionary>(); foreach (var id in orderIdList) @@ -3272,13 +3282,15 @@ namespace DS.WMS.Core.TaskPlat.Method BusinessId = id, }; - var model = new MailTemplateModel(taskInfo) + var model = new MailTemplateModel(taskBCTransferDto) { BusinessId = id, BusinessType = BusinessType.OceanShippingExport, }; MailService mailService = new MailService(serviceProvider); + + //如果是拆票,需要每票调用生成拆票的BC文件 var result = await mailService.SendAsync(mailConfig, model); if (!result.Succeeded) @@ -3288,7 +3300,7 @@ namespace DS.WMS.Core.TaskPlat.Method BusinessId = taskPKId, BusinessType = BusinessType.OceanShippingExport, AutoCreateNext = true, - TaskTypeName = TaskBaseTypeEnum.POL_CTN_NOT_PICKUP.ToString(), + TaskTypeName = TaskBaseTypeEnum.BC_MODIFY.ToString(), }, result.Message); @@ -3312,7 +3324,7 @@ namespace DS.WMS.Core.TaskPlat.Method entity.LST_STATUS = "SUCC"; entity.LST_STATUS_NAME = "发送成功"; - await tenantDb.Updateable(entity).UpdateColumns(x => new + await tenantDb.Updateable(entity).UpdateColumns(x => new { x.IS_TRANSFER_USER, x.LST_TRANSFER_USER_DATE, @@ -3321,7 +3333,7 @@ namespace DS.WMS.Core.TaskPlat.Method }).ExecuteCommandAsync(); //发送完邮件,自动标记任务状态为完成 - await SetTaskStatus(taskPKId, TaskBaseTypeEnum.POL_CTN_NOT_PICKUP, TaskStatusEnum.Complete, DateTime.Now, null); + await SetTaskStatus(taskPKId, TaskBaseTypeEnum.BC_MODIFY, TaskStatusEnum.Complete, DateTime.Now, null); } return DataResult.Success(resultDto); @@ -3351,7 +3363,7 @@ namespace DS.WMS.Core.TaskPlat.Method BusinessId = taskPKId, BusinessType = BusinessType.OceanShippingExport, AutoCreateNext = true, - TaskTypeName = TaskBaseTypeEnum.POL_CTN_NOT_PICKUP.ToString(), + TaskTypeName = TaskBaseTypeEnum.BC_MODIFY.ToString(), }, $"缺少参数:{nameof(BusinessTaskMail)}.{nameof(BusinessTaskMail.Id)}"); @@ -3386,5 +3398,132 @@ namespace DS.WMS.Core.TaskPlat.Method return await InnerSendEmailToCustomer(taskPKId, businessTaskMailId); } #endregion + + #region 重新获取生成BookingAmendment文件 + /// + /// 重新获取生成BookingAmendment文件 + /// + /// + /// + /// + /// + private async Task> ReGenerateBAFile(SeaExport bookingOrder, List ctnList, string origFilePath) + { + DrawModifyBCConfig mConfig = new DrawModifyBCConfig + { + drawTypeArg = new DrawModifyBCConfigTypeEnum[] { DrawModifyBCConfigTypeEnum.ChangeToSplitBillNo, DrawModifyBCConfigTypeEnum.SplitBC }, + origBillNo = bookingOrder.OrderNo, + newBillNo = bookingOrder.MBLNO, + newCtnNum = ctnList.Sum(a => a.CtnNum), + ctnAll = ctnList.FirstOrDefault().CtnAll + }; + + NameValueCollection modifyPar = new NameValueCollection(); + modifyPar.Add("jsonMessage", JsonConvert.SerializeObject(mConfig)); + + DynameFileInfo dynameFile = null; + + var fileName = Path.GetFileName(origFilePath); + + var fileBytes = File.ReadAllBytes(origFilePath); + + if (fileBytes.Length > 0) + { + dynameFile = new DynameFileInfo + { + FileName = fileName, + FileBytes = fileBytes + }; + } + + string batchNo = SnowFlakeSingle.Instance.NextId().ToString(); + + byte[] modifyBytes = ModifyFile(modifyPar, dynameFile).GetAwaiter().GetResult(); + + var noExtensionFileName = Path.GetFileNameWithoutExtension(fileName); + + var fileRlt = await _sysFileService.Value.SaveFileDirect(bookingOrder.Id.ToString(), modifyBytes, batchNo, noExtensionFileName,"bcsplitnoticefiles"); + + if(fileRlt != null && fileRlt.Data != null && !string.IsNullOrWhiteSpace(fileRlt.Data.Item1)) + { + return DataResult.Success(fileRlt.Data.Item1); + } + + return DataResult.FailedData(string.Empty); + } + #endregion + + #region 请求变更BookingAmendment后的文件 + /// + /// 请求变更BookingAmendment后的文件 + /// + /// 请求参数 + /// 文件 + /// 请求类型 + /// 返回回执 + private async Task ModifyFile(NameValueCollection nameValueCollection, dynamic fileInfo, + string contentType = "application/json") + { + //Stream ms = null; + + byte[] bytes; + var result = string.Empty; + + using (var httpClient = new HttpClient()) + { + try + { + using (var reduceAttach = new MultipartFormDataContent()) + { + string[] allKeys = nameValueCollection.AllKeys; + foreach (string key in allKeys) + { + var dataContent = new ByteArrayContent(Encoding.UTF8.GetBytes(nameValueCollection[key])); + + dataContent.Headers.ContentDisposition = new ContentDispositionHeaderValue($"form-data") + { + Name = key + }; + + reduceAttach.Add(dataContent); + } + + #region 文件参数 + if (fileInfo != null) + { + var Content = new ByteArrayContent(fileInfo.FileBytes); + + //Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") + //{ + // Name = fileInfo.file.ToString(), + // FileName = fileInfo.fileName.ToString(), + + //}; + + Content.Headers.Add("Content-Type", contentType); + + reduceAttach.Add(Content, "file", HttpUtility.UrlEncode(fileInfo.FileName.ToString())); + } + #endregion + + //httpClient.DefaultRequestHeaders.Add("USER_KEY", App.Configuration["ApiUserKey"]); + //httpClient.DefaultRequestHeaders.Add("USER_SECRET", App.Configuration["ApiUserSecret"]); + //请求 + var response = httpClient.PostAsync(AppSetting.app(new string[] { "BookingAmend", "ModifyFileUrl" }), reduceAttach).Result; + bytes = response.Content.ReadAsByteArrayAsync().GetAwaiter().GetResult(); + } + } + catch (Exception ex) + { + logger.LogInformation("请求自动变更BookingAmendment文件内容异常,原因:{error}", ex.Message); + + throw new Exception($"请求自动变更BookingAmendment文件内容异常,原因:{ex.Message}"); + + } + + } + return bytes; + } + #endregion } } diff --git a/ds-wms-service/DS.WMS.OpApi/appsettings.json b/ds-wms-service/DS.WMS.OpApi/appsettings.json index 439e58f7..b1fa2828 100644 --- a/ds-wms-service/DS.WMS.OpApi/appsettings.json +++ b/ds-wms-service/DS.WMS.OpApi/appsettings.json @@ -122,5 +122,10 @@ "WorkerCount": 10, "ServerName": "OpApi", "Queues": "op" + }, + "SyncDongSheng7": { + "MQConfig": "amqp://djy_booking_new:123qwe@60.209.125.238:40101/djy_booking_new", + "MQExchangeName": "djy.output.dingcang.ds6", + "MQQueueName": "djy.output.dingcang.ds6" } } diff --git a/ds-wms-service/DS.WMS.TaskApi/appsettings.json b/ds-wms-service/DS.WMS.TaskApi/appsettings.json index 963b3c82..dc7bdecb 100644 --- a/ds-wms-service/DS.WMS.TaskApi/appsettings.json +++ b/ds-wms-service/DS.WMS.TaskApi/appsettings.json @@ -102,5 +102,8 @@ "JsonPrintByCode": "/printApi/OpenPrint/GetOpenJsonPrintInfoByTemplateCode", "SQLPrint": "/printApi/OpenPrint/GetOpenSqlPrintInfo", "MailApiUrl": "http://47.104.73.97:8801/mail/send" + }, + "BookingAmend": { + "ModifyFileUrl": "http://localhost:5110/api/TaskBookingAmendmentParser/ModifyBookingAmendmentFile" } }