提交 9620194b authored 作者: 艾庆国's avatar 艾庆国

承运与无车承运对接

上级 feb08add
package com.clx.performance.feign;
import com.clx.performance.vo.pc.broker.TransportParam;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(name = "broker-service",configuration = PerformanceClientConfiguration.class,url = "${settlement.brokerHost}")
public interface BrokerFeign {
/**
* 运单同步
*/
@RequestMapping(method = RequestMethod.POST, value = "/broker-service/open/transport/saveTransport")
Result<String> saveTransport(@RequestBody TransportParam param);
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OpenOrderChildDTO {
private String sourceChildNo;
@ApiModelProperty(value = "源货单编号", example = "1234", required = true, dataType = "String")
private String sourceGoodsNo;
@ApiModelProperty(value = "源订单编号", example = "1234", required = true, dataType = "String")
private String sourceOrderNo;
@ApiModelProperty(value = "源结算单编号", example = "1234", required = true, dataType = "String")
private String sourceSettlementNo;
@ApiModelProperty(value = "运费单价(分/吨)", example = "162", required = true, dataType = "Integer")
private Integer freightPrice;
@ApiModelProperty(value = "运费(分)", example = "162", required = true, dataType = "Integer")
private Integer freight;
@ApiModelProperty(value = "司机运费(分)", example = "123", dataType = "Integer")
private Integer driverFreight;
@ApiModelProperty(value = "司机运费单价(分/吨)", example = "123", dataType = "Integer")
private Integer driverFreightPrice;
@ApiModelProperty(value = "开票金额(分)", example = "162", required = true, dataType = "Integer")
private Integer invoiceFreight;
@ApiModelProperty(value = "亏吨扣款(分)", example = "123", dataType = "Integer")
private Integer lossFee;
@ApiModelProperty(value = "货损单价(分/吨)", example = "123", dataType = "Integer")
private Integer lossFeePrice;
@ApiModelProperty(value = "发货皮重(吨)")
private BigDecimal sendTare;
@ApiModelProperty(value = "发货毛重(吨)")
private BigDecimal sendRough;
@ApiModelProperty(value = "发货净重(吨)")
private BigDecimal sendNet;
@ApiModelProperty(value = "接单时间")
private String payTime;
@ApiModelProperty(value = "装车时间")
private String loadTime;
@ApiModelProperty(value = "卸车时间")
private String unloadTime;
@ApiModelProperty(value = "运单完成时间", example = "2020-02-02 10:10:10", required = true, dataType = "String")
private String payFinishedTime;
@ApiModelProperty(value = "收货皮重(吨)")
private BigDecimal receiveTare;
@ApiModelProperty(value = "收货毛重(吨)")
private BigDecimal receiveRough;
@ApiModelProperty(value = "收货净重(吨)")
private BigDecimal receiveNet;
@ApiModelProperty(value = "备注", example = "", required = true, dataType = "String")
private String remark;
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OpenOrderChildDriverDTO {
@ApiModelProperty(value = "手机号", dataType="String")
private String mobile;
@ApiModelProperty(value = "姓名", dataType="String")
private String name;
@ApiModelProperty(value = "性别1男2女", dataType="Integer")
private Integer sex;
@ApiModelProperty(value = "头像相对地址", dataType="String")
private String headImg;
@ApiModelProperty(value = "身份证号", dataType="String")
private String cardNo;
@ApiModelProperty(value = "身份证住址")
private String idCardAddress;
@ApiModelProperty(value = "身份证有效期起始时间", dataType="String")
private String cardStartTime;
@ApiModelProperty(value = "身份证有效期终止时间", dataType="String")
private String cardEndTime;
@ApiModelProperty(value = "是否是长期 0-非长期 1-长期", dataType="Integer")
private Integer cardLongTerm;
@ApiModelProperty(value = "身份证正面图片地址", dataType="String")
private String cardFrontImg;
@ApiModelProperty(value = "身份证背面图片地址", dataType="String")
private String cardBackImg;
@ApiModelProperty(value = "手持身份证照片地址", dataType="String")
private String faceCardImg;
@ApiModelProperty(value = "驾驶证号码", dataType="String")
private String licenceNo;
@ApiModelProperty(value = "驾驶证发证机关")
private String licenceIssueOrganization;
@ApiModelProperty(value = "初次领证日期", dataType="String")
private String licenseTime;
@ApiModelProperty(value = "驾照类型", dataType="String")
private String licenceClass;
@ApiModelProperty(value = "驾驶证正面图片", dataType="String")
private String licenceImg;
@ApiModelProperty(value = "驾驶证背面图片", dataType="String")
private String licenceBackImg;
@ApiModelProperty(value = "驾驶证有效期起始时间", dataType="String")
private String licenceStartTime;
@ApiModelProperty(value = "驾驶证有效期终止时间", dataType="String")
private String licenceEndTime;
@ApiModelProperty(value = "道路运输许可证图片地址", dataType="String")
private String transportLicenceImg;
@ApiModelProperty(value = "道路运输从业资格证号", dataType="String")
private String occupationalLicenceNo;
@ApiModelProperty(value = "道路运输从业资格证图片地址", dataType="String")
private String occupationalLicenceImg;
@ApiModelProperty(value = "从业资格证有效期起始时间", dataType="String")
private String occupationalStartTime;
@ApiModelProperty(value = "从业资格证有效期终止时间", dataType="String")
private String occupationalEndTime;
@ApiModelProperty(value = "银行卡卡号", example = "", required = true, dataType = "String")
private String bankCardNo;
@ApiModelProperty(value = "银行预留手机号", example = "", required = true, dataType = "String")
private String bankMobile;
@ApiModelProperty(value = "银行名称", example = "", required = true, dataType = "String")
private String bankName;
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OpenOrderChildImageDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "图片类型", example = "2: 装车磅单照片 21:收货过磅单", required = true, dataType = "Integer")
private Integer type;
@ApiModelProperty(value = "图片相对地址", example = "", required = true, dataType = "String")
private String image;
public OpenOrderChildImageDTO(Integer type, String image) {
this.type = type;
this.image = image;
}
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OpenOrderChildTruckDTO {
@ApiModelProperty(value = "车牌号", dataType="String")
private String truckNo;
@ApiModelProperty(value = "车头车牌颜色代码", dataType="Integer")
private Integer truckNoColorCode;
@ApiModelProperty(value = "车头车牌颜色", dataType="String")
private String truckNoColor;
@ApiModelProperty(value = "型号", dataType="String")
private String model;
@ApiModelProperty(value = "载重单位吨", dataType="Integer")
private Integer load;
@ApiModelProperty(value = "吨位 单位吨", dataType="Integer")
private Integer grossMass;
@ApiModelProperty(value = "车辆识别代码")
private String identifyCode;
@ApiModelProperty(value = "使用性质")
private String useNature;
@ApiModelProperty(value = "注册日期")
private String registerDate;
@ApiModelProperty(value = "行驶证发证机关")
private String licenceIssueOrganization;
@ApiModelProperty(value = "行驶证发证日期")
private String licenceIssueDate;
@ApiModelProperty(value = "业户名称")
private String businessName;
@ApiModelProperty(value = "道路运输经营许可证号")
private String roadTransportPermitNumber;
@ApiModelProperty(value = "挂车第二个车牌号")
private String truckNo2;
@ApiModelProperty(value = "车头道路运输许可证编号", dataType="String")
private String roadTransportCertificateNo;
@ApiModelProperty(value = "行驶证主页照片", dataType="String")
private String licenceImgMain;
@ApiModelProperty(value = "行驶证副业正面照片", dataType="String")
private String licenceImgSecond;
@ApiModelProperty(value = "行驶证副业背面照片", dataType="String")
private String licenceImgSecondBack;
@ApiModelProperty(value = "道路运输许可证图片地址", dataType="String")
private String transportLicenceImg;
@ApiModelProperty(value = "车辆燃料类型 1:柴油 2 天然气 3其他 4新能源/电", dataType="Integer")
private Integer powerType;
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OpenOrderChildTruckOwnerDTO {
@ApiModelProperty(value = "手机号", dataType="String")
private String mobile;
@ApiModelProperty(value = "姓名", dataType="String")
private String name;
@ApiModelProperty(value = "性别1男2女", dataType="Integer")
private Integer sex;
@ApiModelProperty(value = "头像相对地址", dataType="String")
private String headImg;
@ApiModelProperty(value = "身份证号", dataType="String")
private String cardNo;
@ApiModelProperty(value = "身份证住址")
private String idCardAddress;
@ApiModelProperty(value = "身份证有效期起始时间", dataType="String")
private String cardStartTime;
@ApiModelProperty(value = "身份证有效期终止时间", dataType="String")
private String cardEndTime;
@ApiModelProperty(value = "是否是长期 0-非长期 1-长期", dataType="Integer")
private Integer cardLongTerm;
@ApiModelProperty(value = "身份证正面图片地址", dataType="String")
private String cardFrontImg;
@ApiModelProperty(value = "身份证背面图片地址", dataType="String")
private String cardBackImg;
@ApiModelProperty(value = "手持身份证照片地址", dataType="String")
private String faceCardImg;
@ApiModelProperty(value = "银行卡卡号", example = "", required = true, dataType = "String")
private String bankCardNo;
@ApiModelProperty(value = "银行预留手机号", example = "", required = true, dataType = "String")
private String bankMobile;
@ApiModelProperty(value = "银行名称", example = "", required = true, dataType = "String")
private String bankName;
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OpenOrderDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "货单编号", example = "12020083116861267", required = true, dataType = "String")
private String sourceOrderNo;
@ApiModelProperty(value = "发布货源时间", example = "2023-01-01 00:00:00", required = true, dataType = "String")
private String publishTime;
@ApiModelProperty(value = "最晚装货时间", example = "2023-01-01 00:00:00", required = true, dataType = "String")
private String extractTime;
@ApiModelProperty(value = "司机最晚到达时间", example = "2023-01-01 00:00:00", required = true, dataType = "String")
private String arriveTime;
@ApiModelProperty(value = "总货物数量", example = "32.12", required = true, dataType = "String")
private BigDecimal goodsAmount;
@ApiModelProperty(value = "货物名称", example = "原煤", required = true, dataType = "String")
private String goodsName;
@ApiModelProperty(value = "货物运费单价(分)", example = "3212", required = true, dataType = "Integer")
private Integer transPrice;
@ApiModelProperty(value = "货物价值(分)", example = "3212", required = true, dataType = "Integer")
private Integer goodsPrice;
@ApiModelProperty(value = "发货单位", example = "发货单位", required = true, dataType = "String")
private String sendCompany;
@ApiModelProperty(value = "货源所在详细地址", example = "货源所在详细地址", required = true, dataType = "String")
private String sendAddress;
@ApiModelProperty(value = "发货人姓名", example = "张三", required = true, dataType = "String")
private String sendName;
@ApiModelProperty(value = "收货人所在详细地址", example = "收货人所在详细地址", required = true, dataType = "String")
private String receiveAddress;
@ApiModelProperty(value = "收货单位", example = "收货单位", required = true, dataType = "String")
private String receiveCompany;
@ApiModelProperty(value = "收货人姓名", example = "张三", required = true, dataType = "String")
private String receiveName;
@ApiModelProperty(value = "发货所在省份", required = true)
private String sendProvince;
@ApiModelProperty(value = "发货所在城市", required = true)
private String sendCity;
@ApiModelProperty(value = "发货所在区县", required = true)
private String sendCounty;
@ApiModelProperty(value = "发货所在乡镇", required = true)
private String sendTown;
@ApiModelProperty(value = "发货联系人手机号", required = true)
private String sendMobile;
@ApiModelProperty(value = "发货地址经度", required = true)
private String loadLongitude;
@ApiModelProperty(value = "发货地址纬度", required = true)
private String loadLatitude;
@ApiModelProperty(value = "收货人所在省", required = true)
private String receiveProvince;
@ApiModelProperty(value = "收货人所在城市", required = true)
private String receiveCity;
@ApiModelProperty(value = "收货人所在区县", required = true)
private String receiveCounty;
@ApiModelProperty(value = "收货人所在乡镇", required = true)
private String receiveTown;
@ApiModelProperty(value = "收货联系人手机号", required = true)
private String receiveMobile;
@ApiModelProperty(value = "收货地址经度", required = true)
private String unloadLongitude;
@ApiModelProperty(value = "收货地址纬度", required = true)
private String unloadLatitude;
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class TransportParam {
@ApiModelProperty(value = "用户编号", required = true)
@NotNull(message = "用户编号不能为空")
private String userCode;
@ApiModelProperty(value = "网络货运平台编码", example = "123", required = true, dataType = "String")
@NotBlank(message = "网络货运平台编码不能为空")
private String transportPlatformCode;
@ApiModelProperty(value = "货主手机号(货主账号)", example = "", required = true, dataType = "String")
@NotBlank(message = "货主手机号(货主账号)不能为空")
private String ownerMobile;
@ApiModelProperty(value = "运单编号", required = true)
@NotBlank(message = "运单编号不能为空")
private String orderCode;
@ApiModelProperty(value = "货单", required = true)
@NotNull(message = "货单不能为空")
private OpenOrderDTO orderInfo;
@ApiModelProperty(value = "图片", required = true)
@NotEmpty(message = "运单图片不能为空")
private List<OpenOrderChildImageDTO> imageList;
@ApiModelProperty(value = "司机", required = true)
@NotNull(message = "司机不能为空")
private OpenOrderChildDriverDTO driverInfo;
@ApiModelProperty(value = "车主", required = true)
@NotNull(message = "车主不能为空")
private OpenOrderChildTruckOwnerDTO ownerInfo;
@ApiModelProperty(value = "车辆", required = true)
@NotNull(message = "车辆不能为空")
private OpenOrderChildTruckDTO truckInfo;
@ApiModelProperty(value = "运单", required = true)
@NotNull(message = "运单不能为空")
private OpenOrderChildDTO orderChildInfo;
}
package com.clx.performance.vo.pc.broker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class TransportVO {
@ApiModelProperty(value = "源运单编号", example = "1234", required = true, dataType = "String")
private String sourceChildNo;
@ApiModelProperty(value = "运单编号", example = "1234", required = true, dataType = "String")
private String childNo;
@ApiModelProperty(value = "风控状态 0-正常,1-单项异常,2-多项异常", example = "1", dataType = "Integer")
private Integer riskStatus;
@ApiModelProperty(value = "风控异常原因", example = "1", dataType = "String")
private String riskReason;
@ApiModelProperty(value = "同步状态 0-未同步,1-已同步,2-同步失败", example = "1", dataType = "Integer")
private Integer syncStatus;
@ApiModelProperty(value = "同步失败原因", example = "1", dataType = "String")
private String syncMsg;
@ApiModelProperty(value = "结算状态 0 未结算 1 已结算 2结算中 ", example = "1234124", dataType = "String")
private Integer settleStatus;
@ApiModelProperty(value = "结算方", example = "1", dataType = "String")
private Integer settleOrg;
@ApiModelProperty(value = "结算失败原因", example = "1", dataType = "String")
private String settleMsg;
@ApiModelProperty(value = "开票状态 0 未开票 1 已开票 ", example = "1234124", dataType = "String")
private Integer invoiceStatus;
}
...@@ -9,11 +9,12 @@ import org.springframework.stereotype.Component; ...@@ -9,11 +9,12 @@ import org.springframework.stereotype.Component;
@Component @Component
public class SettlementConfig { public class SettlementConfig {
// 普通单开票公司 // broker host
private InvoiceCompany invoiceCompanyDefault; private String brokerHost;
// broker用户编号
private String brokerUserCode;
// 普通单开票公司编号
private String ordinaryInvoiceCompanyGroupCode;
@Data
public class InvoiceCompany {
String companyGroupCode;
}
} }
package com.clx.performance.extranal.broker;
import com.clx.performance.vo.pc.broker.TransportParam;
public interface BrokerService {
void orderChildSync(TransportParam param);
}
package com.clx.performance.extranal.broker.impl;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.feign.BrokerFeign;
import com.clx.performance.vo.pc.broker.TransportParam;
import com.msl.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class BrokerServiceImpl implements BrokerService {
@Autowired
public BrokerFeign brokerFeign;
@Override
public void orderChildSync(TransportParam param) {
Result<String> result = brokerFeign.saveTransport(param);
if (result.getCode() != 0) {
log.info("运单同步网络货运失败, msg:{}", result.getMsg());
}
}
}
...@@ -27,6 +27,7 @@ import com.clx.performance.model.settle.SettlementDriverDetail; ...@@ -27,6 +27,7 @@ import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam; import com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam;
import com.clx.performance.service.TransportSyncService; import com.clx.performance.service.TransportSyncService;
import com.clx.performance.service.broker.OrderChildSyncBrokerService;
import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService; import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService;
import com.msl.common.dto.HttpDTO; import com.msl.common.dto.HttpDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -72,6 +73,7 @@ public class OrderChildSyncTransportListener { ...@@ -72,6 +73,7 @@ public class OrderChildSyncTransportListener {
private final ApplicationEventPublisher applicationEventPublisher; private final ApplicationEventPublisher applicationEventPublisher;
private final InvoicingCompanyService invoicingCompanyService; private final InvoicingCompanyService invoicingCompanyService;
private final SettlementConfig settlementConfig; private final SettlementConfig settlementConfig;
private final OrderChildSyncBrokerService orderChildSyncBrokerService;
/** /**
* 承运同步网络货运运单 * 承运同步网络货运运单
...@@ -102,14 +104,17 @@ public class OrderChildSyncTransportListener { ...@@ -102,14 +104,17 @@ public class OrderChildSyncTransportListener {
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail)); settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); // // 同步网络货运
// ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// HttpDTO httpDTOResult = transportFeignService.orderChildSync(param);
// String decrypt = ThirdComponent.decrypt(httpDTOResult.getData());
// OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class);
// extracted(orderChild, bean, JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail);
// 同步网络货运 // 同步broker
HttpDTO httpDTOResult = transportFeignService.orderChildSync(param); orderChildSyncBrokerService.orderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
String decrypt = ThirdComponent.decrypt(httpDTOResult.getData());
OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class);
extracted(orderChild, bean, JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail); // extracted(orderChild, bean, JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail);
} }
public void extracted(OrderChild orderChild, OrderChildSyncDTO bean, String remark, public void extracted(OrderChild orderChild, OrderChildSyncDTO bean, String remark,
...@@ -190,7 +195,7 @@ public class OrderChildSyncTransportListener { ...@@ -190,7 +195,7 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO); settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompanyByGroupCode( InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompanyByGroupCode(
settlementConfig.getInvoiceCompanyDefault().getCompanyGroupCode()); settlementConfig.getOrdinaryInvoiceCompanyGroupCode());
//设置开票公司信息 //设置开票公司信息
settlementOwnerDetail.setInvoicingCompanyId(invoiceCompany.getId()); settlementOwnerDetail.setInvoicingCompanyId(invoiceCompany.getId());
settlementOwnerDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName()); settlementOwnerDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName());
......
package com.clx.performance.service.broker;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
public interface OrderChildSyncBrokerService {
void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail);
}
package com.clx.performance.service.impl.broker;
import com.clx.order.feign.AddressFeign;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.config.SettlementConfig;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildSyncBrokerService;
import com.clx.performance.vo.pc.broker.*;
import com.clx.user.feign.DocumentFeign;
import com.clx.user.feign.DriverFeign;
import com.clx.user.feign.OwnerFeign;
import com.clx.user.feign.TruckFeign;
import com.clx.user.vo.feign.*;
import com.msl.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
public class OrderChildSyncBroker implements OrderChildSyncBrokerService {
@Autowired
private BrokerService brokerService;
@Autowired
private OwnerFeign ownerFeign;
@Autowired
private OrderFeign orderFeign;
@Autowired
private AddressFeign addressFeign;
@Autowired
private DriverFeign driverFeign;
@Autowired
private DocumentFeign documentFeign;
@Autowired
private TruckFeign truckFeign;
@Autowired
private OrderChildImageDao orderChildImageDao;
@Autowired
private InvoicingCompanyService invoicingCompanyService;
@Autowired
private SettlementConfig settlementConfig;
@Override
public void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail) {
String host = documentFeign.getHost().getData();
FeignAddressVO data = addressFeign.getSendAndReceiveAddress(orderChild.getSendAddressId(), orderChild.getReceiveAddressId()).getData();
FeignAddressVO.Address receiveAddress = data.getReceiveAddress();
FeignAddressVO.Address sendAddress = data.getSendAddress();
SyncOrderChildVO syncOrderChildVO = driverFeign.getSyncOrderChild(orderChild.getDriverUserNo(), orderChild.getTruckOwnUserNo()).getData();
DriverInfoFeignVo truckOwnerInfo = syncOrderChildVO.getTruckOwnerInfo();
DriverInfoFeignVo diverInfo = syncOrderChildVO.getDiverInfo();
BankCardVO driverBankCard = syncOrderChildVO.getDriverBankCard();
UserIdCardVO driverUserIdCardVO = syncOrderChildVO.getDriverUserIdCardVO();
BankCardVO truckOwnerBankCard = syncOrderChildVO.getTruckOwnerBankCard();
UserIdCardVO truckOwnerUserIdCardVO = syncOrderChildVO.getTruckOwnerUserIdCardVO();
DriverLicenceFeignVO driverLicenceFeignVO = syncOrderChildVO.getDriverLicenceFeignVO();
TruckInfoFeignVo truckInfoFeignVo = truckFeign.getTruckInfoWithTransport(orderChild.getTruckId()).getData();
InvoicingCompanyVO invoicingCompanyByGroupCode = invoicingCompanyService.getInvoicingCompanyByGroupCode(orderChild.getInvoicingCompanyGroupCode());
// 参数组装
TransportParam transportParam = new TransportParam();
transportParam.setUserCode(settlementConfig.getBrokerUserCode());
transportParam.setTransportPlatformCode(invoicingCompanyByGroupCode.getNetworkCargoCompanyCode());
transportParam.setOrderCode(orderChild.getChildNo());
transportParam.setOwnerMobile(truckOwnerInfo.getMobile());
// 货单
OpenOrderDTO orderInfo = new OpenOrderDTO();
orderInfo.setSourceOrderNo(orderChild.getOrderGoodsNo());
orderInfo.setPublishTime(DateUtils.formatDateTime(orderGoods.getPendingOrderTime()).get());
orderInfo.setExtractTime(DateUtils.formatDateTime(orderGoods.getLastLoadTime()).get());
orderInfo.setArriveTime(DateUtils.formatDateTime(orderGoods.getLastArriveSendTime()).get());
orderInfo.setGoodsAmount(orderGoods.getExtractWeight());
orderInfo.setGoodsName(orderGoods.getGoodsName());
orderInfo.setTransPrice(Integer.valueOf(orderChild.getFreightPrice().toString()));
orderInfo.setGoodsPrice(Integer.valueOf(orderChild.getOrderFreightPrice().toString()));
// orderInfo.setSendCompany();
orderInfo.setSendAddress(sendAddress.getAddress());
orderInfo.setSendName(sendAddress.getContact());
// orderInfo.setReceiveCompany();
orderInfo.setReceiveAddress(receiveAddress.getAddress());
orderInfo.setReceiveName(receiveAddress.getContact());
orderInfo.setSendProvince(sendAddress.getProvince());
orderInfo.setSendCity(sendAddress.getCity());
orderInfo.setSendCounty(sendAddress.getCounty());
orderInfo.setSendTown(sendAddress.getTown());
orderInfo.setSendMobile(sendAddress.getContactPhone());
orderInfo.setLoadLongitude(sendAddress.getLongitude().toString());
orderInfo.setLoadLatitude(sendAddress.getLatitude().toString());
orderInfo.setReceiveProvince(receiveAddress.getProvince());
orderInfo.setReceiveCity(receiveAddress.getCity());
orderInfo.setReceiveCounty(receiveAddress.getCounty());
orderInfo.setReceiveTown(receiveAddress.getTown());
orderInfo.setReceiveMobile(receiveAddress.getContactPhone());
orderInfo.setUnloadLongitude(receiveAddress.getLongitude().toString());
orderInfo.setUnloadLatitude(receiveAddress.getLatitude().toString());
// 图片
List<OpenOrderChildImageDTO> imageList = new ArrayList<>();
List<OrderChildImage> orderChildImages = orderChildImageDao.listLoadAndUnload(orderChild.getChildNo()).get();
for (OrderChildImage image : orderChildImages) {
if (image.getType().equals(OrderChildImage.Type.LOAD.getCode())) {
imageList.add(new OpenOrderChildImageDTO(2, host + image.getImage()));
} else if (image.getType().equals(OrderChildImage.Type.UNLOAD.getCode())) {
imageList.add(new OpenOrderChildImageDTO(21, host + image.getImage()));
}
}
// 司机
OpenOrderChildDriverDTO driverInfo = new OpenOrderChildDriverDTO();
driverInfo.setMobile(diverInfo.getMobile());
driverInfo.setName(diverInfo.getName());
driverInfo.setSex(driverUserIdCardVO.getSex());
driverInfo.setCardNo(driverUserIdCardVO.getCardNo());
driverInfo.setIdCardAddress(driverUserIdCardVO.getAddress());
driverInfo.setCardStartTime(driverUserIdCardVO.getCardStartTime());
driverInfo.setCardEndTime(driverUserIdCardVO.getCardEndTime());
driverInfo.setCardLongTerm(driverUserIdCardVO.getCardLongTerm());
driverInfo.setCardFrontImg(host + driverUserIdCardVO.getCardFaceImg());
driverInfo.setCardBackImg(host + driverUserIdCardVO.getCardBackImg());
driverInfo.setFaceCardImg(host + driverUserIdCardVO.getCardInHandImg());
driverInfo.setLicenceNo(driverLicenceFeignVO.getLicenceNo());
driverInfo.setLicenceIssueOrganization(driverLicenceFeignVO.getLicenceIssueOrganization());
driverInfo.setLicenseTime(DateUtils.formatDateTime(driverLicenceFeignVO.getLicenceTime()).get());
driverInfo.setLicenceClass(driverLicenceFeignVO.getLicenceClass());
driverInfo.setLicenceImg(host + driverLicenceFeignVO.getLicenceImg());
driverInfo.setLicenceBackImg(host + driverLicenceFeignVO.getLicenceBackImg());
driverInfo.setLicenceStartTime(DateUtils.formatDateTime(driverLicenceFeignVO.getLicenceStartTime()).get());
driverInfo.setLicenceEndTime(DateUtils.formatDateTime(driverLicenceFeignVO.getLicenceEndTime()).get());
// driverInfo.setTransportLicenceImg(truckInfoFeignVo.getTransportLicenceImg());
driverInfo.setOccupationalLicenceNo(driverLicenceFeignVO.getOccupationalLicenceNo());
driverInfo.setOccupationalLicenceImg(host + driverLicenceFeignVO.getOccupationalLicenceImg());
driverInfo.setOccupationalEndTime(DateUtils.formatDateTime(driverLicenceFeignVO.getOccupationalLicenceStartTime()).get());
driverInfo.setOccupationalEndTime(DateUtils.formatDateTime(driverLicenceFeignVO.getOccupationalLicenceEndTime()).get());
driverInfo.setBankCardNo(driverBankCard.getCardNo());
driverInfo.setBankMobile(driverBankCard.getMobile());
driverInfo.setBankName(driverBankCard.getBank());
// 车主
OpenOrderChildTruckOwnerDTO ownerInfo = new OpenOrderChildTruckOwnerDTO();
ownerInfo.setMobile(truckOwnerInfo.getMobile());
ownerInfo.setName(truckOwnerInfo.getName());
ownerInfo.setSex(truckOwnerUserIdCardVO.getSex());
ownerInfo.setCardNo(truckOwnerUserIdCardVO.getCardNo());
ownerInfo.setIdCardAddress(truckOwnerUserIdCardVO.getAddress());
ownerInfo.setCardStartTime(truckOwnerUserIdCardVO.getCardStartTime());
ownerInfo.setCardEndTime(truckOwnerUserIdCardVO.getCardEndTime());
ownerInfo.setCardLongTerm(truckOwnerUserIdCardVO.getCardLongTerm());
ownerInfo.setCardFrontImg(host + truckOwnerUserIdCardVO.getCardFaceImg());
ownerInfo.setCardBackImg(host + truckOwnerUserIdCardVO.getCardBackImg());
ownerInfo.setFaceCardImg(host + truckOwnerUserIdCardVO.getCardInHandImg());
ownerInfo.setBankCardNo(truckOwnerBankCard.getCardNo());
ownerInfo.setBankMobile(truckOwnerBankCard.getMobile());
ownerInfo.setBankName(truckOwnerBankCard.getBank());
// 车辆
OpenOrderChildTruckDTO truckInfo = new OpenOrderChildTruckDTO();
truckInfo.setTruckNo(orderChild.getTruckNo());
truckInfo.setTruckNoColor(truckInfoFeignVo.getTruckNoColor());
// truckInfo.setTruckNoColorCode();
truckInfo.setModel(truckInfoFeignVo.getModel());
truckInfo.setLoad(truckInfoFeignVo.getLoad());
truckInfo.setGrossMass(truckInfoFeignVo.getGrossMass().intValue());
truckInfo.setIdentifyCode(truckInfoFeignVo.getIdentifyCode());
truckInfo.setUseNature(truckInfoFeignVo.getUseNature());
truckInfo.setRegisterDate(DateUtils.formatDateTime(truckInfoFeignVo.getRegisterDate()).get());
truckInfo.setLicenceIssueOrganization(truckInfoFeignVo.getLicenceIssueOrganization());
truckInfo.setLicenceIssueDate(DateUtils.formatDateTime(truckInfoFeignVo.getLicenceIssueDate()).get());
truckInfo.setBusinessName(truckInfoFeignVo.getBusinessName());
truckInfo.setRoadTransportPermitNumber(truckInfoFeignVo.getRoadTransportPermitNumber());
truckInfo.setTruckNo2(truckInfoFeignVo.getTruckNo2());
truckInfo.setRoadTransportCertificateNo(truckInfoFeignVo.getRoadTransportCertificateNo());
truckInfo.setLicenceImgMain(host + truckInfoFeignVo.getLicenceImgMain());
truckInfo.setLicenceImgSecond(host + truckInfoFeignVo.getLicenceImgSecond());
truckInfo.setLicenceImgSecondBack(host + truckInfoFeignVo.getLicenceImgSecondBack());
truckInfo.setTransportLicenceImg(host + truckInfoFeignVo.getTransportLicenceImg());
truckInfo.setPowerType(StringUtils.isBlank(truckInfoFeignVo.getPowerType())
? PowerTypeEnum.Type.OTHER.getCode()
: PowerTypeEnum.Type.getCodeByName(truckInfoFeignVo.getPowerType()));
// 运单
OpenOrderChildDTO orderChildInfo = new OpenOrderChildDTO();
orderChildInfo.setSourceChildNo(orderChild.getChildNo());
orderChildInfo.setSourceGoodsNo(orderChild.getOrderGoodsNo());
orderChildInfo.setSourceOrderNo(orderChild.getOrderNo());
orderChildInfo.setSourceSettlementNo(settlementOwnerDetail.getSettlementNo());
orderChildInfo.setFreightPrice(orderChild.getFreightPrice().intValue());
orderChildInfo.setFreight(orderChild.getFreight().intValue());
orderChildInfo.setDriverFreight(orderChild.getFreight().intValue());
orderChildInfo.setDriverFreightPrice(settlementOwnerDetail.getFreightPrice().intValue());
orderChildInfo.setInvoiceFreight(settlementOwnerDetail.getInvoiceFreight().intValue());
orderChildInfo.setLossFee(settlementOwnerDetail.getLossFreight().intValue());
orderChildInfo.setLossFeePrice(settlementOwnerDetail.getLossPrice().intValue());
orderChildInfo.setSendTare(orderChild.getLoadTare());
orderChildInfo.setSendRough(orderChild.getLoadRough());
orderChildInfo.setSendNet(orderChild.getLoadNet());
orderChildInfo.setPayFinishedTime(DateUtils.formatDateTime(orderChild.getPayTime()).get());
orderChildInfo.setLoadTime(DateUtils.formatDateTime(orderChild.getLoadTime()).get());
orderChildInfo.setUnloadTime(DateUtils.formatDateTime(orderChild.getUnloadTime()).get());
orderChildInfo.setPayFinishedTime(DateUtils.formatDateTime(orderChild.getFinishTime()).get());
orderChildInfo.setReceiveTare(orderChild.getUnloadTare());
orderChildInfo.setReceiveRough(orderChild.getUnloadRough());
orderChildInfo.setReceiveNet(orderChild.getUnloadNet());
transportParam.setOrderInfo(orderInfo);
transportParam.setImageList(imageList);
transportParam.setDriverInfo(driverInfo);
transportParam.setOwnerInfo(ownerInfo);
transportParam.setTruckInfo(truckInfo);
transportParam.setOrderChildInfo(orderChildInfo);
brokerService.orderChildSync(transportParam);
}
}
...@@ -81,9 +81,6 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -81,9 +81,6 @@ public class SettlementServiceImpl implements SettlementService {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) { if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) {
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode()); settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
...@@ -105,7 +102,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -105,7 +102,7 @@ public class SettlementServiceImpl implements SettlementService {
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO); settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompanyByGroupCode( InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompanyByGroupCode(
settlementConfig.getInvoiceCompanyDefault().getCompanyGroupCode()); settlementConfig.getOrdinaryInvoiceCompanyGroupCode());
//设置开票公司信息 //设置开票公司信息
settlementOwnerDetail.setInvoicingCompanyId(invoiceCompany.getId()); settlementOwnerDetail.setInvoicingCompanyId(invoiceCompany.getId());
settlementOwnerDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName()); settlementOwnerDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName());
...@@ -131,6 +128,9 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -131,6 +128,9 @@ public class SettlementServiceImpl implements SettlementService {
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),
orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail)); orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
log.info("当前货主结算信息{},车主结算信息:{}", JSONUtil.parse(settlementOwnerDetail), JSONUtil.parse(settlementDriverDetail)); log.info("当前货主结算信息{},车主结算信息:{}", JSONUtil.parse(settlementOwnerDetail), JSONUtil.parse(settlementDriverDetail));
settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail); settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论