提交 b1bb0b7a authored 作者: 刘海泉's avatar 刘海泉

Merge remote-tracking branch 'origin/test' into test

Former-commit-id: b65b940e
......@@ -183,6 +183,15 @@ public enum PerformanceResultEnum implements ResultEnum {
UNLOAD_TIME_BEFORE_ARRIVE_RECEIVE_TIME(2106, "交货时间不可早于到达目的地时间"),
UNLOAD_TIME_AFTER_NOW(2107, "交货时间不可晚于当前时间"),
UNLOAD_TIME_AFTER_FIRST_UNLOAD_TIME(2108, "交货时间不可晚于首次提交时间"),
SETTLEMENT_NO_NULL_ERROR(2109, "请选择需要下载的数据"),
ORDER_CHILD_RISK_PROCESS_ERROR(2111, "风控已处理"),
SETTLEMENT_OWNER_DETAIL_COMPANY_ADD_ERROR(2112, "所选数据存在状态”已处理“的数据,请核实后重新提交"),
SETTLEMENT_OWNER_CONFIRM_SETTLEMENT_ERROR(2113, "运单需重新分配开票公司,请联系结算人员处理"),
;
private final int code;
private final String msg;
......
......@@ -23,7 +23,8 @@ public enum SettlementLogEnum {
OWNER_CONFIRMED_PLATFORM_PAYMENT(7, "货主确认付款"),
INVOICE_TO_BE_MAILED(8, "邮寄发票"),
COMPLETED(9, "已完结"),
PLATFORM_CONFIRM_ACCOUNT (10, "平台确认对账"),
PLATFORM_TO_BE_CONFIRMED(11, "平台确认结算单"),
;
private final Integer code;
......
package com.clx.performance.enums.settle;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
public enum SettlementOrderChildRiskEnum {
;
@Getter
@AllArgsConstructor
public enum RiskType {
SYNC_FAIL(1, "同步失败"),
SETTLE_FAIL(2, "结算打回");
private final Integer code;
private final String msg;
public static Optional<RiskType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(RiskType::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum ProcessMethod {
SYNC_RETRY(1, "重新同步"),
CONVERT_ORDINARY(2, "转普通单"),
;
private final Integer code;
private final String msg;
public static Optional<ProcessMethod> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(ProcessMethod::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum Status {
INIT(0, "待处理"),
PROCESSED(1, "已处理");
private final Integer code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Status::getMsg).orElse(null);
}
}
}
......@@ -11,6 +11,26 @@ import java.util.Optional;
public enum SettlementOwnerDetailEnum {
;
@Getter
@AllArgsConstructor
public enum InvoiceTypeStatus {
INIT(0, "初始化"),
PROCESSING(1, "获取中"),
SUCCESS(2,"获取成功"),
FAIL(3,"获取失败"),
;
private final Integer code;
private final String msg;
public static Optional<InvoiceTypeStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(InvoiceTypeStatus::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum InvoiceStatus {
......@@ -30,7 +50,6 @@ public enum SettlementOwnerDetailEnum {
}
}
@Getter
@AllArgsConstructor
public enum FinalPaymentStatus {
......@@ -84,4 +103,21 @@ public enum SettlementOwnerDetailEnum {
}
}
@Getter
@AllArgsConstructor
public enum HandleStatus {
NO(0, "待处理"),
YES(1, "已处理"),
;
private final Integer code;
private final String msg;
public static Optional<HandleStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(HandleStatus::getMsg).orElse(null);
}
}
}
......@@ -54,12 +54,16 @@ public enum SettlementOwnerEnum {
public enum Status {
TO_BE_LOCKED(10, "待锁定"),
TO_BE_ACCOUNT(20, "待对账"),
PLATFORM_TO_BE_CONFIRMED(21, "待平台确认"),
OWNER_TO_BE_CONFIRMED(30, "待货主确认"),
SHIPPER_TO_PAYMENT (40, "待货主付款"),
PLATFORM_CONFIRMED_OWNER_PAYMENT(50, "待平台确认付款"),
PLATFORM_TO_PAYMENT(60, "待平台付款"),
OWNER_CONFIRMED_PLATFORM_PAYMENT(70, "待货主确认付款"),
@Deprecated
INVOICE_TO_BE_MAILED(80, "待邮寄发票"),
COMPLETED(90, "已完结"),
;
......
......@@ -53,6 +53,7 @@ public class PageCarrierOrderChildParam extends PageParam {
@ApiModelProperty(value = "运单状态集合")
private List<Integer> statusList;
@ApiModelProperty(value = "时间筛选类型,1:接单时间,2:磅单审核通过时间,3:完成时间")
private Integer timeType;
}
package com.clx.performance.param.pc.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class CarrierSettlementOwnerConfirmAccountParam {
@NotNull(message = "id不能为空")
@ApiModelProperty(value="列表id",example = "10")
private Integer id;
}
package com.clx.performance.param.pc.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class CarrierSettlementOwnerConfirmSettlementParam {
@NotNull(message = "id不能为空")
@ApiModelProperty(value="列表id",example = "10")
private Integer id;
}
package com.clx.performance.param.pc.carrier;
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.NotNull;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class CarrierSettlementOwnerDetailCompanyUpdateParam {
@NotNull(message = "id列表不能为空")
@ApiModelProperty(value="id列表")
private List<Integer> idList;
@NotNull(message = "开票公司id不能为空")
@ApiModelProperty(value="开票公司id")
private Integer companyId;
@NotBlank(message = "开票公司简称不能为空")
@ApiModelProperty(value="开票公司简称")
private String companyShorterName;
@NotBlank(message = "开票公司统一社会信用代码不能为空")
@ApiModelProperty(value="开票公司统一社会信用代码")
private String companyGroupCode;
}
package com.clx.performance.param.pc.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.util.List;
@Getter
@Setter
public class ExportBatchOwnerSettlementDetailParam {
@ApiModelProperty(value = "结算单编号集合")
@NotNull(message = "结算单号不能为空")
private List<String> settlementNos;
}
package com.clx.performance.param.pc.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class PageSettlementOrderChildRiskParam extends PageParam {
@ApiModelProperty(value = "运单编号")
private String childNo;
@ApiModelProperty(value="车牌号")
private String truckNo;
@ApiModelProperty(value = "处理状态:1待处理 2已处理")
private Integer status;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
......@@ -23,5 +23,9 @@ public class PageCarrierSettlementDriverDetailParam extends PageParam {
@ApiModelProperty(value="订单编号",example = "201457878")
private String orderNo;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
......@@ -28,9 +28,9 @@ public class PageCarrierSettlementDriverParam extends PageParam {
@ApiModelProperty(value="状态 1:待结算 2:已结算",example = "10")
private String status;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
......@@ -25,5 +25,9 @@ public class PageCarrierSettlementOwnerDetailParam extends PageParam {
@ApiModelProperty(value="订单编号",example = "201457878")
private String orderNo;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
package com.clx.performance.param.pc.owner;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageInvoiceOwnerSettlementOwnerDetailParam extends PageParam {
@NotNull(message = "是否已开票不能为空")
@ApiModelProperty(value = "是否已开票,0:否,1:是")
private Integer invoiceStatus;
@ApiModelProperty(value = "货主用户编号")
private Long ownerUserNo;
@ApiModelProperty(value = "货主名称")
private String ownerName;
@ApiModelProperty(value = "结算单编号")
private String settlementNo;
@ApiModelProperty(value="运单编号")
private String childNo;
@ApiModelProperty(value="开票公司")
private String invoicingCompanyShorterName;
@ApiModelProperty(value="开票标识:1网运单 2普通单")
private Integer invoiceType;
@ApiModelProperty(value = "开始时间")
private String beginTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
}
package com.clx.performance.param.pc.owner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PagePendingCarrierSettlementOwnerDetailParam extends PageCarrierSettlementOwnerDetailParam {
@ApiModelProperty(value = "处理状态,0:待处理,1:已处理")
private Integer handleStatus;
}
package com.clx.performance.param.pc.owner.settle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class OwnerSettlementOrderChildRiskProcessUpdateParam {
@NotNull(message = "id不能为空")
@ApiModelProperty(value="id",example = "10")
private Integer id;
@NotNull(message = "处理方式不能为空")
@ApiModelProperty(value = "处理方式:1重新同步 2转普通单")
private Integer processMethod;
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.*;
import java.util.Arrays;
import java.util.Optional;
/**
* @Author: aiqingguo
......@@ -18,6 +18,24 @@ import lombok.ToString;
public class SettlementStatisticsMqParam {
private String childNo; //运单编号
private Integer InvoiceType; //司机计费明细id
private Integer type; //类型: 1统计 2拆单
@Getter
@AllArgsConstructor
public enum Type {
STATISTICS(1, "统计"),
SEPARATE(2, "拆单"),
;
private final Integer code;
private final String msg;
public static Optional<Type> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Type::getMsg).orElse(null);
}
}
}
package com.clx.performance.vo.mq.broker;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class BrokerOrderChildSyncMqParam {
private String childNo; //运单编号
private Integer invoiceType; //开票标识:1网运单 2普通单
}
package com.clx.performance.vo.mq.broker;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class BrokerOrderChildUpdateMqParam {
private String childNo; //运单编号
private Integer invoiceType; //开票标识:1网运单 2普通单
}
package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementOrderChildRiskProcessMqParam {
private Integer id; //id
}
package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementOwnerDetialInvoiceCompanyUpdateMqParam {
private Integer id; //id
}
package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementPlatformAutoConfirmMqParam {
private String settlementNo;
}
......@@ -61,6 +61,9 @@ public class PageCarrierOrderChildVO {
@ApiModelProperty(value="完成时间",example = "2020-01-01 10:10:10")
private String finishTime;
@ApiModelProperty(value="磅单审核通过时间",example = "2020-01-01 10:10:10")
private String poundAuditTime;
@ApiModelProperty(value="发货地址",example = "吉林")
private String sendAddress;
......
......@@ -52,6 +52,8 @@ public class OpenOrderChildDTO {
private String unloadTime;
@ApiModelProperty(value = "运单完成时间", example = "2020-02-02 10:10:10", required = true, dataType = "String")
private String payFinishedTime;
@ApiModelProperty(value = "磅单审核时间", example = "2020-02-02 10:10:10", required = true, dataType = "String")
private String poundTime;
@ApiModelProperty(value = "收货皮重(吨)")
private BigDecimal receiveTare;
......@@ -63,4 +65,12 @@ public class OpenOrderChildDTO {
@ApiModelProperty(value = "备注", example = "", required = true, dataType = "String")
private String remark;
@ApiModelProperty(value = "1 普通单 2 网运单", example = "1", required = true, dataType = "Integer")
private Integer invoiceFlag;
@ApiModelProperty(value = "线下平台", example = "华祥", required = true, dataType = "String")
private String invoicePlatform;
@ApiModelProperty(value = "开票状态 0 未开票 1 已开票 ", example = "1")
private Integer invoiceStatus;
}
package com.clx.performance.vo.pc.carrier.settle;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
public class CarrierPagePendingSettlementOwnerDetailVO extends CarrierPageSettlementOwnerDetailVO{
@ApiModelProperty(value = "处理状态,0:待处理,1:已处理")
private Integer handleStatus;
@ApiModelProperty(value = "磅单审核通过时间")
private String poundAuditTime;
@ApiModelProperty(value = "操作人")
private String invoicingCompanyModifiedBy;
@ApiModelProperty(value = "操作时间")
private String invoicingCompanyModifiedTime;
}
......@@ -83,6 +83,10 @@ public class CarrierPageSettlementOwnerDetailVO {
private Integer invoicingCompanyId;
@ApiModelProperty("开票公司简称")
private String invoicingCompanyShorterName;
@ApiModelProperty("拆单备注")
private String separateRemark;
@ApiModelProperty(value = "创建时间")
private String createTime;
......
......@@ -32,7 +32,7 @@ public class CarrierPageSettlementOwnerVO {
@ApiModelProperty(value = "实际净重(吨)")
private BigDecimal weight;
@MoneyOutConvert
@ApiModelProperty(value = "实际运费金额")
@ApiModelProperty(value = "应付运费")
private BigDecimal freight;
@MoneyOutConvert
@ApiModelProperty(value = "预付运费金额")
......@@ -68,4 +68,12 @@ public class CarrierPageSettlementOwnerVO {
@ApiModelProperty("是否上报 0-否;1-是")
private Integer reportFlag;
@ApiModelProperty("装车净重(单位吨)")
private BigDecimal loadNet;
@ApiModelProperty("卸车净重(单位吨)")
private BigDecimal unloadNet;
@ApiModelProperty("司机实收(分)")
private BigDecimal driverFreight;
}
......@@ -45,6 +45,10 @@ public class CarrierSettlementOwnerDetailVO {
@ApiModelProperty(value = "实际净重(吨)", example = "1.23")
private BigDecimal weight;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "实际运费(元)", example = "1.23")
@MoneyOutConvert
......
package com.clx.performance.vo.pc.carrier.settle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class SettlementOrderChildRiskVO {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "运单编号")
private String childNo;
@ApiModelProperty(value = "车牌号")
private String truckNo;
@ApiModelProperty(value = "司机名称")
private String driverName;
@ApiModelProperty(value = "司机联系电话")
private String driverMobile;
@ApiModelProperty(value = "货物名称")
private String goodsName;
@ApiModelProperty(value = "开票标识:1网运单 2普通单")
private Integer invoiceType;
@ApiModelProperty(value = "磅单审核通过时间")
private String poundAuditTime;
@ApiModelProperty(value = "风控标识:1同步失败 2结算打回")
private Integer riskType;
@ApiModelProperty(value = "风控失败原因")
private String riskRemark;
@ApiModelProperty(value = "处理方式:1重新同步 2转普通单")
private Integer processMethod;
@ApiModelProperty(value = "处理人")
private String processBy;
@ApiModelProperty(value = "处理时间")
private String processTime;
@ApiModelProperty(value = "处理状态:1待处理 2已处理")
private Integer status;
@ApiModelProperty(value = "创建时间")
private String createTime;
@ApiModelProperty(value = "修改时间")
private String modifiedTime;
}
\ No newline at end of file
package com.clx.performance.vo.pc.owner.settle;
import com.msl.common.convertor.type.MoneyOutConvert;
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 CountOwnerSettlementOwnerDetailVO {
@ApiModelProperty(value="运单数")
private Long orderChildSum;
@ApiModelProperty(value = "装车净重")
private BigDecimal loadNetSum;
@MoneyOutConvert
@ApiModelProperty(value="开票金额")
private BigDecimal invoiceFreightSum;
}
\ No newline at end of file
package com.clx.performance.vo.pc.owner.settle;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
......@@ -23,6 +25,11 @@ public class OwnerPageSettlementOwnerVO {
private String settlementNo;
@ApiModelProperty(value = "开票标识:1网运单 2普通单")
private Integer invoiceType;
private String invoiceTypeMsg;
public String getInvoiceTypeMsg() {
return SettlementOwnerEnum.InvoiceType.getMsgByCode(invoiceType);
}
@ApiModelProperty(value = "货主编码")
private Long ownerUserNo;
@ApiModelProperty(value = "货主姓名")
......@@ -58,8 +65,18 @@ public class OwnerPageSettlementOwnerVO {
private String createTime;
@ApiModelProperty(value = "状态 10:待锁定 20:待对账 30:待货主确认 40:待货主付款 50:待平台确认付款 60:待平台付款 70:待货主确认付款 80:待邮寄发票 90:已完结")
private Integer status;
private String statusMsg;
public String getStatusMsg() {
return SettlementOwnerEnum.Status.getMsgByCode(status);
}
@ApiModelProperty(value = "结算方式 1装车净重 2卸车净重")
private Integer settlementWay;
private String settlementWayMsg;
public String getSettlementWayMsg() {
return SettlementWayEnum.WayType.getMsgByCode(settlementWay);
}
@ApiModelProperty(value="开票公司id",example = "1")
private Integer invoicingCompanyId; //开票公司id
......@@ -70,4 +87,9 @@ public class OwnerPageSettlementOwnerVO {
@ApiModelProperty(value="是否上报 0-否;1-是",example = "1")
private Integer reportFlag; //是否上报 0-否;1-是
@ApiModelProperty(value="装货净重(单位吨)",example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value="卸货净重(单位吨)",example = "1.23")
private BigDecimal unloadNet;
}
......@@ -46,10 +46,28 @@ public class PageOwnerSettlementOwnerDetailVO {
@ApiModelProperty(value="实际净重(吨)",example = "2.3")
private BigDecimal weight;
@ApiModelProperty(value = "装车毛重(吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装车皮重(吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装车净重(吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸车毛重(吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸车皮重(吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸车净重(吨)", example = "1.23")
private BigDecimal unloadNet;
@MoneyOutConvert
@ApiModelProperty(value="实际运费",example = "2.52")
@ApiModelProperty(value="应付运费",example = "2.52")
private BigDecimal freight;
@MoneyOutConvert
@ApiModelProperty(value="司机实收",example = "2.52")
private BigDecimal driverFreight;
@MoneyOutConvert
@ApiModelProperty(value="损耗单价",example = "1.2")
private BigDecimal lossPrice;
......@@ -77,6 +95,9 @@ public class PageOwnerSettlementOwnerDetailVO {
@ApiModelProperty(value="开票金额",example = "2.1")
private BigDecimal invoiceFreight;
@ApiModelProperty(value = "开票标识:1网运单 2普通单",example = "2")
private Integer invoiceType;
@ApiModelProperty(value="开票标识:1网运单 2普通单",example = "普通单")
private String invoiceTypeMsg;
......@@ -105,7 +126,18 @@ public class PageOwnerSettlementOwnerDetailVO {
@ApiModelProperty(value="是否上报 0-否;1-是",example = "1")
private Integer reportFlag; //是否上报 0-否;1-是
@ApiModelProperty(value = "开票时间")
private String invoiceTime;
@ApiModelProperty(value = "拆单备注")
private String separateRemark;
@ApiModelProperty(value="创建时间",example = "2013-01-01 00:00:00")
private String createTime;
@ApiModelProperty(value="备注")
private String remark;
@ApiModelProperty(value="磅单审核通过时间")
private String poundAuditTime;
}
\ No newline at end of file
package com.clx.performance.vo.pc.owner.settle;
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 UploadBatchInvoiceFileResultVO {
@ApiModelProperty(value="校验结果,0:数据无误,1:数据有误")
private Integer verifyResult;
@ApiModelProperty(value="错误文件地址")
private String errorFileUrl;
@ApiModelProperty(value="运单数")
private Integer orderChildSum;
@ApiModelProperty("装车吨数")
private BigDecimal loadWeightSum;
@ApiModelProperty(value="开票金额")
private BigDecimal invoiceFreightSum;
}
\ No newline at end of file
......@@ -237,11 +237,11 @@ public class OrderChildLoanComponent {
log.info("1.1百分百预付不需要考虑借款账户");
return;
}
if (SettlementOwnerEnum.InvoiceType.ORDINARY.getCode().equals(settlementDriverDetail.getInvoiceType())) {
log.info("2.当前不是网运单,不需要处理借款标识,是否接单冻结的借款金额");
applicationEventPublisher.publishEvent(new OwnerLoanThawEvent(this, orderChild.getChildNo()));
return;
}
// if (SettlementOwnerEnum.InvoiceType.ORDINARY.getCode().equals(settlementDriverDetail.getInvoiceType())) {
// log.info("2.当前不是网运单,不需要处理借款标识,是否接单冻结的借款金额");
// applicationEventPublisher.publishEvent(new OwnerLoanThawEvent(this, orderChild.getChildNo()));
// return;
// }
if (settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) != 0) {
log.info("3.当前是网运单,但预付运费不为0,说明已经处理");
......
package com.clx.performance.config;
import com.clx.performance.constant.RabbitKeyBrokerConstants;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: aiqingguo
* @Description: 无车承运 MQ
* @Date: 2023-10-12 16:27:30
* @Version: 1.0
*/
@Configuration
public class RabbitBrokerConfig {
@Bean
public DirectExchange brokerDefaultExchange() {
return new DirectExchange(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE);
}
@Bean
public Queue brokerDefaultDelayQueue() {
Map<String, Object> params = new HashMap<>(8);
params.put("x-message-ttl", 15 * 60 * 1000);
params.put("x-max-length", 5000000);
params.put("x-dead-letter-exchange", RabbitKeyBrokerConstants.DEFAULT_EXCHANGE);
params.put("x-dead-letter-routing-key", RabbitKeyBrokerConstants.DEFAULT_DEAD_ROUTING_KEY);
return new Queue(RabbitKeyBrokerConstants.DEFAULT_DELAY_QUEUE, true, false, false, params);
}
@Bean
public Binding brokerDefaultDelayQueueBinding() {
return BindingBuilder.bind(brokerDefaultDelayQueue()).to(brokerDefaultExchange())
.with(RabbitKeyBrokerConstants.DEFAULT_DELAY_ROUTING_KEY);
}
@Bean
public Queue brokerDefaultDeadQueue() {
return new Queue(RabbitKeyBrokerConstants.DEFAULT_DEAD_QUEUE);
}
@Bean
public Binding brokerDefaultDeadQueueBinding() {
return BindingBuilder.bind(brokerDefaultDeadQueue()).to(brokerDefaultExchange())
.with(RabbitKeyBrokerConstants.DEFAULT_DEAD_ROUTING_KEY);
}
/**
* 运单同步
*/
@Bean
public Queue brokerOrderChildSyncQueue() {
return new Queue(RabbitKeyBrokerConstants.ORDER_CHILD_SYNC_QUEUE);
}
@Bean
public Binding brokerOrderChildSyncQueueBinding() {
return BindingBuilder.bind(brokerOrderChildSyncQueue()).to(brokerDefaultExchange())
.with(RabbitKeyBrokerConstants.ORDER_CHILD_SYNC_ROUTING_KEY);
}
/**
* 运单更新
*/
@Bean
public Queue brokerOrderChildUpdateQueue() {
return new Queue(RabbitKeyBrokerConstants.ORDER_CHILD_UPDATE_QUEUE);
}
@Bean
public Binding brokerOrderChildUpdateQueueBinding() {
return BindingBuilder.bind(brokerOrderChildUpdateQueue()).to(brokerDefaultExchange())
.with(RabbitKeyBrokerConstants.ORDER_CHILD_UPDATE_ROUTING_KEY);
}
}
......@@ -123,5 +123,43 @@ public class RabbitSettlementConfig {
.with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY);
}
/**
* 风控处理
*/
@Bean
public Queue settlementRiskProcessQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_QUEUE);
}
@Bean
public Binding settlementRiskProcessQueueBinding() {
return BindingBuilder.bind(settlementRiskProcessQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_ROUTING_KEY);
}
/**
* 开票公司新增
*/
@Bean
public Queue settlementInvoiceCompanyUpdateQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_COMPANY_UPDATE_QUEUE);
}
@Bean
public Binding settlementInvoiceCompanyUpdateQueueBinding() {
return BindingBuilder.bind(settlementInvoiceCompanyUpdateQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_COMPANY_UPDATE_ROUTING_KEY);
}
/**
* 平台自动确认
*/
@Bean
public Queue settlementPlatformAutoConfirmUpdateQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_QUEUE);
}
@Bean
public Binding settlementPlatformAutoConfirmUpdateQueueBinding() {
return BindingBuilder.bind(settlementPlatformAutoConfirmUpdateQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY);
}
}
package com.clx.performance.constant;
/**
* @Author: aiqingguo
* @Description: 无车承运-mq
* @Date: 2023-10-19 15:13:06
* @Version: 1.0
*/
public class RabbitKeyBrokerConstants {
private static final String PREFIX = "clx-performance.broker.";
private static final String EXCHANGE = ".exchange";
private static final String QUEUE = ".queue";
private static final String QUEUE_ROUTING_KEY = ".routing.key";
private static final String DELAY_QUEUE = ".delay.queue";
private static final String DELAY_ROUTING_KEY = ".delay.routing.key";
private static final String DEAD_QUEUE = ".dead.queue";
private static final String DEAD_ROUTING_KEY = ".dead.routing.key";
private RabbitKeyBrokerConstants() {
}
/**
* 缺省交换机
*/
public static final String DEFAULT_EXCHANGE = PREFIX +"default"+EXCHANGE;
/**
* 缺省延迟队列
*/
public static final String DEFAULT_DELAY_QUEUE = PREFIX +"default"+DELAY_QUEUE;
public static final String DEFAULT_DELAY_ROUTING_KEY = PREFIX +"default"+DELAY_ROUTING_KEY;
public static final String DEFAULT_DEAD_QUEUE = PREFIX +"default"+DEAD_QUEUE;
public static final String DEFAULT_DEAD_ROUTING_KEY = PREFIX +"default"+DEAD_ROUTING_KEY;
/**
* 运单同步
*/
public static final String ORDER_CHILD_SYNC_QUEUE = PREFIX +"orderChild.sync"+QUEUE;
public static final String ORDER_CHILD_SYNC_ROUTING_KEY = PREFIX +"orderChild.sync"+QUEUE_ROUTING_KEY;
/**
* 运单更新
*/
public static final String ORDER_CHILD_UPDATE_QUEUE = PREFIX +"orderChild.update"+QUEUE;
public static final String ORDER_CHILD_UPDATE_ROUTING_KEY = PREFIX +"orderChild.update"+QUEUE_ROUTING_KEY;
}
......@@ -68,4 +68,22 @@ public class RabbitKeySettlementConstants {
public static final String SETTLEMENT_PAY_STATUS_SYNC_QUEUE = PREFIX +"settlementPayStatus.sync"+QUEUE;
public static final String SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY = PREFIX +"settlementPayStatus.sync"+QUEUE_ROUTING_KEY;
/**
* 风控处理
*/
public static final String SETTLEMENT_RISK_PROCESS_QUEUE = PREFIX +"settlementRisk.process"+QUEUE;
public static final String SETTLEMENT_RISK_PROCESS_ROUTING_KEY = PREFIX +"settlementRisk.process"+QUEUE_ROUTING_KEY;
/**
* 开票公司新增
*/
public static final String SETTLEMENT_INVOICE_COMPANY_UPDATE_QUEUE = PREFIX +"settlementInvoiceCompany.update"+QUEUE;
public static final String SETTLEMENT_INVOICE_COMPANY_UPDATE_ROUTING_KEY = PREFIX +"settlementInvoiceCompany.update"+QUEUE_ROUTING_KEY;
/**
* 平台自动确认
*/
public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_QUEUE = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE;
public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE_ROUTING_KEY;
}
......@@ -9,6 +9,11 @@ import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.param.pc.*;
import com.clx.performance.service.*;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsAdjustmentPriceService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.vo.pc.*;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
......@@ -17,13 +22,17 @@ import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -135,6 +144,15 @@ public class GoodsOrderController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "导出货单列表",notes = "<br>By:杨启发")
@PostMapping("/exportOrderGoods")
public void exportOrderGoods(@RequestBody PageOrderGoodsListParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = orderGoodsService.exportOrderGoods(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
@ApiOperation(value = "货单编辑查询", notes = "<br>By:胡宇帆")
@GetMapping("/findOrderGoodsByBatchNumber")
@UnitCovert
......
......@@ -61,6 +61,15 @@ public class CarrierAccountController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "预付运费账户列表")
@PostMapping("/exportPrepaidFreightList")
public void exportPrepaidFreightList(@RequestBody PageOwnerAccountListParam param, HttpServletResponse response) throws Exception {
SXSSFWorkbook workbook = ownerAccountService.exportPrepaidFreightList(param);
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
@ApiOperation(value = "保证金账户详情流水列表", notes = "<br>By:胡宇帆")
@PostMapping("/marginAccountPageList")
@UnitCovert(param = false)
......
package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.param.pc.driver.BatchUpdatePayDriverSettlementParam;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.service.settle.SettlementDriverService;
......@@ -12,12 +13,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/settlementDriver")
......@@ -44,4 +50,12 @@ public class CarrierSettlementDriverController {
return Result.ok();
}
@ApiOperation(value = "导出车主结算单",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementDriver")
public void exportSettlementDriver(@RequestBody @Validated PageCarrierSettlementDriverParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementDriverService.exportSettlementDriver(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
......@@ -11,12 +11,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/settlementDriverDetail")
......@@ -36,5 +41,12 @@ public class CarrierSettlementDriverDetailController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "导出车主运单计费",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementDriverDetail")
public void exportSettlementDriverDetail(@RequestBody @Validated PageCarrierSettlementDriverDetailParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementDriverDetailService.exportSettlementDriverDetail(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
package com.clx.performance.controller.pc.carrier;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.carrier.CarrierSettlementOwnerConfirmAccountParam;
import com.clx.performance.param.pc.carrier.CarrierSettlementOwnerConfirmSettlementParam;
import com.clx.performance.param.pc.owner.*;
import com.clx.performance.service.settle.SettlementOwnerService;
import com.clx.performance.vo.pc.carrier.settle.*;
......@@ -132,4 +133,21 @@ public class CarrierSettlementOwnerController {
settlementOwnerService.mergeOwnerSettlement(param);
return Result.ok();
}
@ApiOperation(value = "确认对账",notes = "<br>By:艾庆国")
@PostMapping("/updateConfirmAccount")
public Result updateConfirmAccount(@RequestBody @Validated CarrierSettlementOwnerConfirmAccountParam param) {
settlementOwnerService.updateConfirmAccount(param.getId());
return Result.ok();
}
@ApiOperation(value = "确认结算单",notes = "<br>By:艾庆国")
@PostMapping("/updateConfirmSettlement")
public Result updateConfirmSettlement(@RequestBody @Validated CarrierSettlementOwnerConfirmSettlementParam param) {
settlementOwnerService.updateCarrierConfirmSettlement(param.getId());
return Result.ok();
}
}
package com.clx.performance.controller.pc.carrier;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.param.pc.carrier.CarrierSettlementOwnerDetailCompanyUpdateParam;
import com.clx.performance.param.pc.carrier.ExportBatchOwnerSettlementDetailParam;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageInvoiceOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.CountOwnerSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.UploadBatchInvoiceFileResultVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -18,8 +28,10 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
@RestController
......@@ -48,7 +60,37 @@ public class CarrierSettlementOwnerDetailController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "货主结算单下载",notes = "<br>By:姜文业")
@ApiOperation(value = "开票管理待开票、已开票列表",notes = "<br>By:杨启发")
@PostMapping("/pageInvoiceOwnerSettlementOrderDetailList")
@UnitCovert(param = false)
public Result<PageData<PageOwnerSettlementOwnerDetailVO>> pageInvoiceOwnerSettlementOrderDetailList(@RequestBody @Validated PageInvoiceOwnerSettlementOwnerDetailParam param) {
IPage<PageOwnerSettlementOwnerDetailVO> page = settlementOwnerDetailService.pageInvoiceOwnerSettlementOrderDetailList(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "开票管理待开票、已开票列表统计",notes = "<br>By:杨启发")
@PostMapping("/countInvoiceOwnerSettlementOrderDetailList")
public Result<CountOwnerSettlementOwnerDetailVO> countInvoiceOwnerSettlementOrderDetailList(@RequestBody @Validated PageInvoiceOwnerSettlementOwnerDetailParam param) {
CountOwnerSettlementOwnerDetailVO vo = settlementOwnerDetailService.countInvoiceOwnerSettlementOrderDetailList(param);
return Result.ok(vo);
}
@ApiOperation(value = "导出开票管理待开票、已开票",notes = "<br>By:杨启发")
@PostMapping("/exportInvoiceOwnerSettlementOrderDetail")
public void exportInvoiceOwnerSettlementOrderDetail(@RequestBody @Validated PageInvoiceOwnerSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementOwnerDetailService.exportInvoiceOwnerSettlementOrderDetail(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
@ApiOperation(value = "上传批量开票文件",notes = "<br>By:杨启发")
@PostMapping("/uploadBatchInvoiceFile")
public Result<UploadBatchInvoiceFileResultVO> uploadBatchInvoiceFile(@RequestParam("file") MultipartFile file) throws IOException {
return Result.ok(settlementOwnerDetailService.uploadBatchInvoiceFile(file));
}
@ApiOperation(value = "导出货主结算单运单明细",notes = "<br>By:姜文业")
@PostMapping("/exportOwnerSettlementOrderDetailList")
public void exportCarrierSettlementOwnerPageList(@RequestBody @Validated PageOwnerSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
SXSSFWorkbook workbook = settlementOwnerDetailService.exportOwnerSettlementOrderDetail(param);
......@@ -56,6 +98,41 @@ public class CarrierSettlementOwnerDetailController {
workbook.write(response.getOutputStream());
}
@ApiOperation(value = "待处理运单计费列表(货主)",notes = "<br>By:杨启发")
@PostMapping("/pagePendingSettlementOwnerDetail")
@UnitCovert(param = false)
public Result<PageData<CarrierPagePendingSettlementOwnerDetailVO>> pagePendingSettlementOwnerDetail(@RequestBody @Validated PagePendingCarrierSettlementOwnerDetailParam param) {
IPage<CarrierPagePendingSettlementOwnerDetailVO> page = settlementOwnerDetailService.pagePendingSettlementOwnerDetail(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "导出货主待处理运单计费",notes = "<br>By:杨启发")
@PostMapping("/exportPendingSettlementOwnerDetail")
public void exportPendingSettlementOwnerDetail(@RequestBody @Validated PagePendingCarrierSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementOwnerDetailService.exportPendingSettlementOwnerDetail(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
@ApiOperation(value = "批量下载结算运单明细",notes = "<br>By:liruixin")
@PostMapping("/exportBatchSettlementOwnerDetail")
public void exportBatchSettlementOwnerDetail(@RequestBody @Validated ExportBatchOwnerSettlementDetailParam param, HttpServletResponse response) throws Exception {
if(CollectionUtil.isEmpty(param.getSettlementNos())){
throw new ServiceSystemException(PerformanceResultEnum.SETTLEMENT_NO_NULL_ERROR);
}
SXSSFWorkbook workbook = settlementOwnerDetailService.exportBatchSettlementOwnerDetail(param);
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
@ApiOperation(value = "更新开票公司",notes = "<br>By:艾庆国")
@PostMapping("/updateInvoiceCompany")
public Result updateInvoiceCompany(@RequestBody @Validated CarrierSettlementOwnerDetailCompanyUpdateParam param) {
settlementOwnerDetailService.updateInvoiceCompany(param);
return Result.ok();
}
}
package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.service.settle.SettlementOrderChildRiskService;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/settlementOrderChildRisk")
@Validated
@Api(tags = "承运端-风控管理")
@AllArgsConstructor
public class SettlementOrderChildRiskController {
private final SettlementOrderChildRiskService settlementOrderChildRiskService;
@ApiOperation(value = "风控异常处理列表",notes = "<br>By:杨启发")
@PostMapping("/pageSettlementOrderChildRisk")
@UnitCovert(param = false)
public Result<PageData<SettlementOrderChildRiskVO>> pageSettlementOrderChildRisk(@RequestBody @Validated PageSettlementOrderChildRiskParam param) {
IPage<SettlementOrderChildRiskVO> page = settlementOrderChildRiskService.pageSettlementOrderChildRisk(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "导出风控异常处理",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementOrderChildRisk")
public void exportSettlementOrderChildRisk(@RequestBody @Validated PageSettlementOrderChildRiskParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementOrderChildRiskService.exportSettlementOrderChildRisk(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
package com.clx.performance.controller.pc.owner;
import com.clx.performance.param.pc.owner.settle.OwnerSettlementOrderChildRiskProcessUpdateParam;
import com.clx.performance.service.settle.SettlementOrderChildRiskService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/owner/settlementOrderChildRisk")
@Validated
@Api(tags = "货主端-货主结算")
@AllArgsConstructor
public class OwnerSettlementOrderChildRiskController {
private final SettlementOrderChildRiskService settlementOrderChildRiskService;
@ApiOperation(value = "风控处理",notes = "<br>By:李瑞新")
@PostMapping("/updateProcessRisk")
public Result updateRiskProcess(@RequestBody @Validated OwnerSettlementOrderChildRiskProcessUpdateParam param) {
settlementOrderChildRiskService.updateRiskProcess(param);
return Result.ok();
}
}
......@@ -6,6 +6,7 @@ import com.clx.performance.param.pc.owner.OwnerPaymentSettlementParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.settle.SettlementOwnerExportService;
import com.clx.performance.service.settle.SettlementOwnerService;
import com.clx.performance.vo.pc.carrier.settle.CarrierSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.OwnerPageSettlementOwnerVO;
......@@ -39,7 +40,7 @@ public class OwnerSettlementOwnerController {
private final SettlementOwnerDetailService settlementOwnerDetailService;
private final SettlementOwnerExportService settlementOwnerExportService;
@ApiOperation(value = "结算单详情",notes = "<br>By:李瑞新")
@GetMapping("/getOwnerSettlementOwnerDetail")
......@@ -114,5 +115,11 @@ public class OwnerSettlementOwnerController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "货主端-导出结算单列表",notes = "<br>By:艾庆国")
@PostMapping("/exportSettlementOwner")
public void exportSettlementOwner(@RequestBody @Validated PageOwnerSettlementParam param) {
settlementOwnerExportService.exportSettlementOwner(param);
}
}
......@@ -40,7 +40,6 @@ public class TempSettlementController {
SettlementStatisticsMqParam mq = new SettlementStatisticsMqParam();
mq.setChildNo(childNo);
mq.setInvoiceType(1);
settlementMqHandlerService.settlementStatistics(mq);
return Result.ok();
......
......@@ -128,6 +128,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.set(OrderChild::getWeight, item.getWeight())
.set(OrderChild::getFreight, item.getFreight())
.set(OrderChild::getPlatformServiceFee, item.getPlatformServiceFee())
.set(OrderChild::getPoundAuditTime,item.getPoundAuditTime())
);
}
......
package com.clx.performance.dao.impl.settle;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -7,6 +8,8 @@ import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.mapper.settle.SettlementDriverMapper;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
......@@ -27,6 +30,21 @@ import java.util.Set;
public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper, SettlementDriver, Integer> implements SettlementDriverDao {
@Override
public boolean updatePayStatus(SettlementDriver item) {
return update(lUdWrapper()
.eq(SettlementDriver::getId, item.getId())
.set(SettlementDriver::getStatus, item.getStatus())
);
}
@Override
public Optional<SettlementDriver> findBySettlementNo(String settlementNo) {
return Optional.of(lQrWrapper()
.eq(SettlementDriver::getSettlementNo, settlementNo)
)
.map(super::getOne);
}
@Override
public IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param) {
......@@ -47,7 +65,11 @@ public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper,
if(StringUtils.isNotBlank(param.getDriverUserName())){
query.like(SettlementDriver :: getDriverName,param.getDriverUserName());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementDriver:: getCreateTime,param.getStartTime(),param.getEndTime());
}else {
query.between(SettlementDriver :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByDesc(SettlementDriver :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query);
}
......
package com.clx.performance.dao.impl.settle;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -27,6 +28,23 @@ import java.util.Objects;
*/
@Repository
public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> implements SettlementDriverDetailDao {
@Override
public boolean updateSettlementNo(SettlementDriverDetail item) {
return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getSettlementNo, item.getSettlementNo())
);
}
@Override
public boolean updateClearSettlementNo(SettlementDriverDetail item) {
return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getSettlementNo, item.getSettlementNo())
);
}
@Override
public boolean updateInvoiceTypeAndPrepayFreightFlag(SettlementDriverDetail item) {
return update(lUdWrapper()
......@@ -43,14 +61,32 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
);
}
@Override
public boolean updateSettlementNo(SettlementDriverDetail item) {
public boolean updateConvertOrdinary(SettlementDriverDetail item) {
return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getSettlementNo, item.getSettlementNo())
.set(SettlementDriverDetail::getInvoiceType, item.getInvoiceType())
.set(SettlementDriverDetail::getInvoicingCompanyId, item.getInvoicingCompanyId())
.set(SettlementDriverDetail::getInvoicingCompanyShorterName, item.getInvoicingCompanyShorterName())
.set(SettlementDriverDetail::getInvoicingCompanyGroupCode, item.getInvoicingCompanyGroupCode())
);
}
@Override
public boolean updatePreFreight(SettlementDriverDetail item) {
return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getInvoiceType, item.getInvoiceType())
.set(SettlementDriverDetail::getPrepayFreightFlag, item.getPrepayFreightFlag())
.set(SettlementDriverDetail::getInvoicingCompanyId, item.getInvoicingCompanyId())
.set(SettlementDriverDetail::getInvoicingCompanyShorterName, item.getInvoicingCompanyShorterName())
.set(SettlementDriverDetail::getInvoicingCompanyGroupCode, item.getInvoicingCompanyGroupCode())
);
}
@Override
public Optional<SettlementDriverDetail> getByChildNo(String childNo) {
return Optional.of(childNo)
......@@ -75,6 +111,11 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
if(StringUtils.isNotBlank(param.getDriverUserName())){
query.like(SettlementDriverDetail :: getDriverName,param.getDriverUserName());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementDriverDetail :: getCreateTime,param.getStartTime(),param.getEndTime());
}else {
query.between(SettlementDriverDetail :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByDesc(SettlementDriverDetail :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
......@@ -123,4 +164,11 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
return baseMapper.selectList(lQrWrapper().eq(SettlementDriverDetail::getLoanFlag, code));
}
@Override
public List<SettlementDriverDetail> findListByIdList(List<Integer> idList) {
return list(lQrWrapper()
.in(SettlementDriverDetail::getId, idList)
);
}
}
package com.clx.performance.dao.impl.settle;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.mapper.settle.SettlementOrderChildRiskMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.Objects;
@Repository
public class SettlementOrderChildRiskDaoImpl
extends BaseDaoImpl<SettlementOrderChildRiskMapper, SettlementOrderChildRisk, Integer>
implements SettlementOrderChildRiskDao {
@Override
public boolean updateProcess(SettlementOrderChildRisk item) {
return update(lUdWrapper()
.eq(SettlementOrderChildRisk::getId, item.getId())
.set(SettlementOrderChildRisk::getStatus, item.getStatus())
.set(SettlementOrderChildRisk::getProcessMethod, item.getProcessMethod())
.set(SettlementOrderChildRisk::getProcessBy, item.getProcessBy())
.set(SettlementOrderChildRisk::getProcessTime, item.getProcessTime())
);
}
@Override
public Optional<SettlementOrderChildRisk> getById(Integer id) {
return Optional.of(id)
.map(item -> lQrWrapper()
.eq(SettlementOrderChildRisk::getId, item)
)
.map(super::getOne);
}
@Override
public Optional<SettlementOrderChildRisk> findLastByChildNo(String childNo) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(SettlementOrderChildRisk::getChildNo, childNo)
.orderByDesc(SettlementOrderChildRisk::getId)
)
.map(super::getOne);
}
@Override
public IPage<SettlementOrderChildRisk> pageSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param) {
LambdaQueryWrapper<SettlementOrderChildRisk> query = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getChildNo())){
query.eq(SettlementOrderChildRisk :: getChildNo,param.getChildNo());
}
if(StringUtils.isNotBlank(param.getTruckNo())){
query.eq(SettlementOrderChildRisk :: getTruckNo,param.getTruckNo());
}
if(Objects.nonNull(param.getStatus())){
query.eq(SettlementOrderChildRisk :: getStatus,param.getStatus());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementOrderChildRisk :: getCreateTime,param.getStartTime(),param.getEndTime());
}else {
query.between(SettlementOrderChildRisk :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByAsc(SettlementOrderChildRisk :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
}
\ No newline at end of file
......@@ -28,6 +28,14 @@ import java.util.Objects;
@Repository
public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, SettlementOwner, Integer> implements SettlementOwnerDao {
@Override
public boolean updateStatus(SettlementOwner item) {
return update(lUdWrapper()
.eq(SettlementOwner::getId, item.getId())
.eq(SettlementOwner::getStatus, item.getStatus())
);
}
@Override
public boolean updateSettlementPeriodMonth(SettlementOwner item) {
return update(lUdWrapper()
......@@ -97,6 +105,22 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
);
}
@Override
public Optional<SettlementOwner> findById(Integer id) {
return Optional.of(lQrWrapper()
.eq(SettlementOwner::getId, id)
)
.map(super::getOne);
}
@Override
public Optional<SettlementOwner> findBySettlementNo(String settlementNo) {
return Optional.of(lQrWrapper()
.eq(SettlementOwner::getSettlementNo, settlementNo)
)
.map(super::getOne);
}
@Override
public IPage<SettlementOwner> pageCarrierSettlementOwner(PageCarrierSettlementOwnerParam param) {
LambdaQueryWrapper<SettlementOwner> query = new LambdaQueryWrapper<>();
......@@ -296,4 +320,14 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
.set(SettlementOwner:: getMergeTime,mergeTime)
);
}
@Override
public List<SettlementOwner> listPlatformToBeConfirmed(LocalDateTime time) {
return list(lUdWrapper()
.ge(SettlementOwner::getCreateTime, time)
.eq(SettlementOwner::getStatus, SettlementOwnerEnum.Status.PLATFORM_TO_BE_CONFIRMED.getCode())
.eq(SettlementOwner::getInvoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())
);
}
}
......@@ -3,6 +3,8 @@ package com.clx.performance.dao.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementDriverMapper;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
......@@ -17,6 +19,13 @@ import java.util.Set;
* @Version: 1.0
*/
public interface SettlementDriverDao extends BaseDao<SettlementDriverMapper, SettlementDriver, Integer> {
boolean updatePayStatus(SettlementDriver item);
Optional<SettlementDriver> findBySettlementNo(String settlementNo);
IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param);
......
......@@ -9,7 +9,6 @@ import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
/**
* @Author: aiqinguo
......@@ -19,12 +18,15 @@ import java.util.Set;
*/
public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> {
boolean updateInvoiceTypeAndPrepayFreightFlag(SettlementDriverDetail item);
boolean updateSettlementNo(SettlementDriverDetail item);
boolean updateClearSettlementNo(SettlementDriverDetail item);
boolean updateInvoiceTypeAndPrepayFreightFlag(SettlementDriverDetail item);
boolean updateConvertOrdinary(SettlementDriverDetail item);
boolean updatePreFreight(SettlementDriverDetail item);
Optional<SettlementDriverDetail> getByChildNo(String childNo);
Optional<SettlementDriverDetail> getByChildNo(String childNo);
IPage<SettlementDriverDetail> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
......@@ -39,4 +41,6 @@ public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetai
SettlementDriverDetail selectLoanTypeFlag(String orderNo);
List<SettlementDriverDetail> selectListByLoanFlag(Integer code);
List<SettlementDriverDetail> findListByIdList(List<Integer> idList);
}
package com.clx.performance.dao.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementOrderChildRiskMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
public interface SettlementOrderChildRiskDao
extends BaseDao<SettlementOrderChildRiskMapper,
SettlementOrderChildRisk, Integer> {
boolean updateProcess(SettlementOrderChildRisk item);
Optional<SettlementOrderChildRisk> getById(Integer id);
Optional<SettlementOrderChildRisk> findLastByChildNo(String childNo);
IPage<SettlementOrderChildRisk> pageSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param);
}
\ No newline at end of file
......@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementOwnerMapper;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerParam;
import com.msl.common.base.Optional;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
......@@ -14,6 +14,8 @@ import java.util.List;
public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, SettlementOwner, Integer> {
boolean updateStatus(SettlementOwner item);
boolean updateSettlementPeriodMonth(SettlementOwner item);
boolean updateLock(SettlementOwner item);
......@@ -29,6 +31,10 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
boolean updatePayment(SettlementOwner settlementOwner);
Optional<SettlementOwner> findById(Integer id);
Optional<SettlementOwner> findBySettlementNo(String settlementNo);
IPage<SettlementOwner> pageCarrierSettlementOwner(PageCarrierSettlementOwnerParam param);
Optional<SettlementOwner> selectBySettlementNo(@Param("settlementNo")String settlementNo);
......@@ -76,4 +82,7 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
@Param("settlementNos")List<String> settlementNos,
@Param("mergedBy") String mergedBy,
@Param("mergeTime") LocalDateTime mergeTime);
List<SettlementOwner> listPlatformToBeConfirmed(LocalDateTime time);
}
......@@ -3,14 +3,16 @@ package com.clx.performance.dao.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementOwnerDetailMapper;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.carrier.ExportBatchOwnerSettlementDetailParam;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageInvoiceOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
......@@ -21,22 +23,33 @@ import java.util.Set;
*/
public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailMapper, SettlementOwnerDetail, Integer> {
boolean updateInvoiceType(SettlementOwnerDetail item);
boolean updateInvoiceTypeStatus(SettlementOwnerDetail item);
boolean updatePayStatus(SettlementOwnerDetail item);
boolean updateSettlementNo(SettlementOwnerDetail item);
boolean updateClearSettlementNo(SettlementOwnerDetail item);
boolean updateConvertOrdinary(SettlementOwnerDetail item);
boolean updateInvoiceType(SettlementOwnerDetail item);
boolean updatePreFreight(SettlementOwnerDetail item);
boolean updateInvoiceStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("invoiceStatus")Integer invoiceStatus);
boolean updateFinalPaymentStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("finalPaymentStatus")Integer finalPaymentStatus);
boolean updateInvoiceCompany(List<Integer> idList, Integer companyId, String companyShorterName, String companyGroupCode);
Optional<SettlementOwnerDetail> findById(Integer id);
Optional<SettlementOwnerDetail> getByChildNo(String childNo);
List<SettlementOwnerDetail> getBySettlementNo(String settlementNo);
List<SettlementOwnerDetail> getBySettlementNoAndInvoiceType(String settlementNo, Integer invoiceType, Integer invoiceStatus);
IPage<SettlementOwnerDetail> pageOwnerSettlementOrderDetailList(PageOwnerSettlementOwnerDetailParam param);
IPage<SettlementOwnerDetail> pageInvoiceOwnerSettlementOrderDetailList(PageInvoiceOwnerSettlementOwnerDetailParam param);
IPage<SettlementOwnerDetail> pageSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param);
Integer getInvoiceType(String orderNo);
......@@ -52,5 +65,13 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
List<SettlementOwnerDetail>listInvoiceStatusSync();
List<SettlementOwnerDetail> listPayStatusSync();
List<SettlementOwnerDetail> listInvoiceTypeSync();
IPage<SettlementOwnerDetail> pagePendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param);
List<SettlementOwnerDetail> listSettlementOwnerDetailBySettlementNos(ExportBatchOwnerSettlementDetailParam param);
List<SettlementOwnerDetail> findListByIdList(List<Integer> idList);
}
package com.clx.performance.dto.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class InvoiceData {
@ExcelProperty("运单编号")
private String childNo;
@ExcelProperty("开票标识")
private String invoiceType;
@ExcelProperty("开票金额")
private Double invoiceFreight;
@ExcelProperty("备注")
private String remark;
}
......@@ -16,6 +16,7 @@ import com.clx.performance.dto.OwnerLoanMqDTO;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.loan.OrderChildLoanRetryRecord;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
......@@ -124,15 +125,20 @@ public class EventListenerComponent {
SettlementDriverDetail settlementDriverDetail = param.getSettlementDriverDetail();
OrderChild orderChild = param.getOrderChild();
try {
//生成借款标识
orderChildLoanComponent.childLoanConfirmAfterProcess(settlementDriverDetail, settlementOwnerDetail, orderChild);
} catch (Exception e) {
//未借款
settlementDriverDetail.setLoanFlag(OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode());
applicationEventPublisher.publishEvent(new SettlementUpdateEvent(this, settlementDriverDetail, settlementOwnerDetail));
log.error("处理货主借款监听器执行异常,数据为{},异常信息{}", JSONUtil.parse(param), ExceptionUtil.getMessage(e));
throw e;
if (SettlementOwnerEnum.InvoiceType.ORDINARY.getCode().equals(settlementDriverDetail.getInvoiceType())) {
applicationEventPublisher.publishEvent(new OwnerLoanThawEvent(this, orderChild.getChildNo()));
}
else {
try {
//生成借款标识
orderChildLoanComponent.childLoanConfirmAfterProcess(settlementDriverDetail, settlementOwnerDetail, orderChild);
} catch (Exception e) {
//未借款
settlementDriverDetail.setLoanFlag(OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode());
applicationEventPublisher.publishEvent(new SettlementUpdateEvent(this, settlementDriverDetail, settlementOwnerDetail));
log.error("处理货主借款监听器执行异常,数据为{},异常信息{}", JSONUtil.parse(param), ExceptionUtil.getMessage(e));
throw e;
}
}
log.info("处理货主借款监听器执行成功");
......@@ -140,7 +146,7 @@ public class EventListenerComponent {
settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail);
// 发送mq 结算统计
settlementMqService.settlementStatistics(settlementDriverDetail.getChildNo(), settlementDriverDetail.getInvoiceType());
settlementMqService.settlementStatistics(settlementDriverDetail.getChildNo());
} catch (Exception e) {
throw new ServiceSystemException(PerformanceResultEnum.GET_LOAN_RECORD, e.getMessage());
} finally {
......
......@@ -6,6 +6,7 @@ import com.clx.performance.vo.pc.broker.TransportVO;
public interface BrokerService {
void orderChildSync(TransportParam param);
void orderChildUpdate(TransportParam param);
TransportVO getOrderChildStatus(String childNo);
......
......@@ -33,6 +33,19 @@ public class BrokerServiceImpl implements BrokerService {
}
log.info("运单同步网络货运, result:{}", JSON.toJSONString(result));
}
@Override
public void orderChildUpdate(TransportParam param) {
param.setUserCode(settlementConfig.getBrokerUserCode());
Result<Object> result = brokerFeign.modifyTransport(param);
if (result.getCode() != 0) {
log.info("运单更新网络货运失败, msg:{}", result.getMsg());
throw new ServiceSystemException(ResultEnum.FEIGN_ERROR, result.getMsg());
}
log.info("运单更新网络货运, result:{}", JSON.toJSONString(result));
}
@Override
public TransportVO getOrderChildStatus(String childNo) {
......
......@@ -21,6 +21,12 @@ public interface BrokerFeign {
@RequestMapping(method = RequestMethod.POST, value = "/broker-service/open/transport/saveTransport")
Result<Object> saveTransport(@RequestBody TransportParam param);
/**
* 运单更新
*/
@RequestMapping(method = RequestMethod.POST, value = "/broker-service/open/transport/modifyTransport")
Result<Object> modifyTransport(@RequestBody TransportParam param);
@RequestMapping(value = "/broker-service/open/transport/getTransportByChildNo", method = RequestMethod.GET)
Result<TransportVO> getTransportByChildNo(@RequestParam @NotBlank(message = "运单编号不能为空") String orderCode,
@RequestParam @NotNull(message = "userCode不能为空") String userCode,
......
......@@ -11,6 +11,7 @@ import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.feign.transport.OrderChildPaySyncParam;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
......@@ -89,16 +90,17 @@ public class OrderChildPaySyncTransportJob {
}
@Deprecated
@XxlJob("testJob")
public void test2() {
String jobParam = XxlJobHelper.getJobParam();
log.info("XxlJobHelper jobParam:{}", jobParam);
OrderChild orderChild = orderChildDao.getByChildNo(jobParam).get();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods, settlementDriverDetail);
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
settlementMqService.settlementDetailAdd(settlementDriverDetail.getId(), settlementOwnerDetailId);
}
......
package com.clx.performance.job.settlement;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.SettlementMqService;
import com.msl.common.job.JobLog;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@AllArgsConstructor
public class SettlementJob {
// 默认30天
private static final Integer EFFECT_TIME = 30;
private final OrderChildSyncTransportInvoiceRecordDao orderChildSyncTransportInvoiceRecordDao;
private final SettlementMqService settlementMqService;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementOwnerDao settlementOwnerDao;
private final OrderChildSyncTransportRecordDao orderChildSyncTransportRecordDao;
/**
......@@ -86,4 +95,38 @@ public class SettlementJob {
}
}
/**
* 结算单平台自动确认更新
*/
@XxlJob("settlementPlatformAutoConfirmUpdate")
public void settlementPlatformAutoConfirmUpdate() {
try {
Integer effectTime= null;
String jobParam= XxlJobHelper.getJobParam();
log.info("结算单平台自动确认更新, param:{}", jobParam);
if (StringUtils.isNotBlank(jobParam)) {
JSONObject jsonObject = JSON.parseObject(jobParam);
effectTime = jsonObject.getInteger("effectTime");
}
if (effectTime == null) {
effectTime = EFFECT_TIME;
}
LocalDateTime time = LocalDateTime.now().minusDays(effectTime);
List<SettlementOwner> list = settlementOwnerDao.listPlatformToBeConfirmed(time);
log.info("结算单平台自动确认更新, size:{}", list.size());
if (list.isEmpty()) {return;}
for (SettlementOwner item : list) {
settlementMqService.settlementPlatformAutoConfirmUpdate(item.getSettlementNo());
}
} catch (Exception e) {
log.warn("结算单平台自动确认更新失败,msg:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("结算单平台自动确认更新失败", e);
}
}
}
package com.clx.performance.listener.broker;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyBrokerConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 无车承运 mq
* @Date: 2023-10-20 16:14:30
* @Version: 1.0
*/
@Slf4j
@Component
public class BrokerDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyBrokerConstants.DEFAULT_DEAD_QUEUE)
public void process(Message message) {
try{
log.info("无车承运-延迟, message:{}", message);
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<MqDelay>>(){}).getData());
}catch (Exception e){
log.info("无车承运-延迟 失败",e);
}
}
void process(MqDelay mq){
Message message = MessageBuilder.withBody(JSON.toJSONString(mq.getData()).getBytes()).build();
rabbitTemplate.send(mq.getExchange(), mq.getRouterKey(), message);
}
}
package com.clx.performance.listener.broker;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyBrokerConstants;
import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 运单同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class BrokerOrderChildSyncListener {
@Autowired
private OrderChildBrokerMqHandlerService orderChildBrokerMqHandlerService;
@RabbitListener(queues = RabbitKeyBrokerConstants.ORDER_CHILD_SYNC_QUEUE)
public void process(Message message) {
try{
log.info("无车承运-运单同步, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<BrokerOrderChildSyncMqParam>>(){}).getData());
log.info("无车承运-运单同步成功, message:{}", new String(message.getBody()));
}catch (Exception e){
log.info("无车承运-运单同步 失败,msg:{}", ExceptionUtils.getStackTrace(e));
}
}
private void process(BrokerOrderChildSyncMqParam mq){
orderChildBrokerMqHandlerService.orderChildSync(mq);
}
}
package com.clx.performance.listener.broker;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyBrokerConstants;
import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 运单更新 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class BrokerOrderChildUpdateListener {
@Autowired
private OrderChildBrokerMqHandlerService orderChildBrokerMqHandlerService;
@RabbitListener(queues = RabbitKeyBrokerConstants.ORDER_CHILD_UPDATE_QUEUE)
public void process(Message message) {
try{
log.info("无车承运-运单更新, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<BrokerOrderChildUpdateMqParam>>(){}).getData());
log.info("无车承运-运单更新成功, message:{}", new String(message.getBody()));
}catch (Exception e){
log.info("无车承运-运单同步 失败,msg:{}", ExceptionUtils.getStackTrace(e));
}
}
private void process(BrokerOrderChildUpdateMqParam mq){
orderChildBrokerMqHandlerService.orderChildUpdate(mq);
}
}
package com.clx.performance.listener.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.clx.performance.dto.excel.InvoiceData;
import lombok.AllArgsConstructor;
import java.util.List;
@AllArgsConstructor
public class InvoiceDataListener extends AnalysisEventListener<InvoiceData> {
private final List<InvoiceData> invoiceDataList;
@Override
public void invoke(InvoiceData invoiceData, AnalysisContext context) {
// 每解析一行都会调用一次,逐行校验数据
invoiceDataList.add(invoiceData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 解析完成后调用
// 可在此进行后续操作,如保存数据到数据库
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 开票公司更新 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementInvoiceCompanyUpdateListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_QUEUE)
public void process(Message message) {
try{
log.info("结算-开票公司更新, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementOwnerDetialInvoiceCompanyUpdateMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-开票公司更新 失败,msg:{}", ExceptionUtils.getStackTrace(e));
}
}
private void process(SettlementOwnerDetialInvoiceCompanyUpdateMqParam mq){
settlementMqHandlerService.invoiceCompanyUpdate(mq);
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 平台自动确认更新 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementPlatformAutoConfirmUpdateListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_QUEUE)
public void process(Message message) {
try{
log.info("结算-平台自动确认更新, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementPlatformAutoConfirmMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-平台自动确认更新 失败",e);
}
}
private void process(SettlementPlatformAutoConfirmMqParam mq){
settlementMqHandlerService.settlementPlatformAutoConfirm(mq);
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 风控处理 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementRiskProcessListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_QUEUE)
public void process(Message message) {
try{
log.info("结算-风控处理, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementOrderChildRiskProcessMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-风控处理 失败,msg:{}", ExceptionUtils.getStackTrace(e));
}
}
private void process(SettlementOrderChildRiskProcessMqParam mq){
settlementMqHandlerService.riskProcess(mq);
}
}
package com.clx.performance.mapper.settle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SettlementOrderChildRiskMapper extends BaseMapper<SettlementOrderChildRisk> {
String TABLE = "settlement_order_child_risk";
}
\ No newline at end of file
......@@ -104,6 +104,7 @@ public class OrderChild implements HasKey<Integer> {
private BigDecimal platformServiceFee; //平台服务费(分)
private BigDecimal platformServiceFeeRate; //平台服务费费率%
private BigDecimal deposit; //接单保证金(分/车)
private LocalDateTime poundAuditTime; //磅单审核通过时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
package com.clx.performance.model.settle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class SettlementOrderChildRisk implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; // ID
private String childNo; // 子订单编号
private String truckNo; // 车牌号
private String driverName; // 司机姓名
private String driverMobile; // 司机手机号
private String goodsName; // 货物名称
private Integer invoiceType; // 开票标识:1网运单 2普通单
private LocalDateTime poundAuditTime; // 磅单审核通过时间
private Integer riskType; // 风控标识:1同步失败 2结算打回
private String riskRemark; // 风控失败原因
private Integer processMethod; // 处理方式:1重新同步 2转普通单
private String processBy; // 处理人
private LocalDateTime processTime; // 处理时间
private Integer status; // 处理状态:1待处理 2已处理
private LocalDateTime createTime; // 创建时间
private LocalDateTime modifiedTime; // 修改时间
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
\ No newline at end of file
......@@ -36,7 +36,10 @@ public class SettlementOwner implements HasKey<Integer> {
private LocalDateTime settlementPeriodTime; //结算周期时间(月结)
private String orderNo; //订单编号
private BigDecimal weight; //实际净重(吨)
private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal freight; //实际运费(分)
private BigDecimal driverFreight; //司机实收(分)
private BigDecimal lossWeight; //货损吨数(吨)
private BigDecimal lossFreight; //货损金额(分)
private BigDecimal prepayFreight; //预付运费金额(分)
......
......@@ -43,7 +43,15 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private String goodsName; //货物名称
private BigDecimal freightPrice; //平台运费单价(分)
private BigDecimal weight; //实际净重(吨)
private BigDecimal loadRough; //装货毛重(单位吨)
private BigDecimal loadTare; //装货皮重(单位吨)
private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadRough; //卸货毛重(单位吨)
private BigDecimal unloadTare; //卸货皮重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal freight; //实际运费(分)
private BigDecimal driverFreight; //司机实收(分)
private BigDecimal lossPrice; //损耗单价(分)
private BigDecimal lossWeight; //货损吨数(吨)
private BigDecimal lossFreight; //货损金额(分)
......@@ -55,14 +63,20 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private BigDecimal invoiceServiceFee; //开票服务费(分)
private BigDecimal invoiceServiceFeeRate; //开票服务率
private Integer finalPaymentStatus; //尾款状态 0-否,1-是,2-无需支付
private Integer invoiceTypeStatus; // 开票标识状态:0未获取 1获取中 2获取成功 3获取失败
private Integer invoiceStatus; //开票状态 0-否,1-是,2-无需开票
private Integer invoicingCompanyId; //开票公司id
private String invoicingCompanyShorterName; //开票公司简称
private String invoicingCompanyGroupCode; //开票公司统一社会信用代码
private Integer reportFlag; //是否上报 0-否;1-是
private Integer invoiceChannel; //开票渠道:1无车承运
private LocalDateTime invoiceTime; //开票时间
private String remark; //备注
private Integer payStatus; //支付状态:0未支付 1已支付(网络货运是否支付)
private LocalDateTime poundAuditTime; //磅单审核通过时间
private String invoicingCompanyModifiedBy; //开票公司修改人
private LocalDateTime invoicingCompanyModifiedTime; //开票公司修改时间
private String separateRemark; //拆单备注
private Integer status; //状态
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -8,6 +8,7 @@ import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
......@@ -15,6 +16,7 @@ import com.clx.performance.vo.pc.DriverFreightPriceVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsPendingVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -32,6 +34,8 @@ public interface OrderGoodsService {
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
SXSSFWorkbook exportOrderGoods(PageOrderGoodsListParam param);
void updateOrderGoodsReduceWeightAndStatusAmountLoad(OrderGoods orderGoods, BigDecimal orderChildWeight, Integer orderGoodsStatus);
......
......@@ -106,4 +106,6 @@ public interface OwnerAccountService {
OwnerAccountAllVO accountAllInfo(Long userNo);
OwnerAccountArrearsVO accountArrearsInfo(Long userNo, BigDecimal prepaidArrearsOrder, BigDecimal marginArrearsOrder);
SXSSFWorkbook exportPrepaidFreightList(PageOwnerAccountListParam param);
}
package com.clx.performance.service.broker;
import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
public interface OrderChildBrokerMqHandlerService {
void orderChildSync(BrokerOrderChildSyncMqParam mq);
void orderChildUpdate(BrokerOrderChildUpdateMqParam mq);
}
package com.clx.performance.service.broker;
import java.util.List;
public interface OrderChildBrokerMqService {
void orderChildSync(String childNo);
void orderChildUpdate(String childNo);
void orderChildUpdate(List<String> childNoList);
}
......@@ -9,4 +9,6 @@ public interface OrderChildBrokerService {
void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail);
void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail);
}
package com.clx.performance.service.child;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildPoundAudit;
public interface OrderChildPostService {
......@@ -18,4 +19,5 @@ public interface OrderChildPostService {
void orderChildFinish(String childNo);
void orderChildPoundAudit(OrderChild orderChild, OrderChildPoundAudit poundAuditDetail);
}
......@@ -15,12 +15,14 @@ import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.component.OwnerAccountComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildPoundAuditDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.OrderCancelDTO;
import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildPoundAudit;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam;
......@@ -50,6 +52,9 @@ import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static com.clx.performance.enums.OrderChildPoundAuditEnum.Status.APPROVED;
import static com.clx.performance.enums.ResultEnum.DATA_ERROR;
@Slf4j
@Service
@AllArgsConstructor
......@@ -84,6 +89,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OwnerAccountComponent ownerAccountComponent;
private final OrderChildPoundAuditDao orderChildPoundAuditDao;
@Override
......@@ -489,6 +496,12 @@ public class OrderCancelServiceImpl implements OrderCancelService {
*/
@Override
public void artificialCancelOrder(String orderChildNo, String remark) {
//磅单如果审核通过,该运单不允许取消
List<OrderChildPoundAudit> poundAuditList = orderChildPoundAuditDao.getPoundAuditList(orderChildNo);
if (poundAuditList.stream().anyMatch(item->APPROVED.getCode().equals(item.getStatus()))) {
throw new ServiceSystemException(DATA_ERROR, "该运单磅单已审核通过,不允许取消");
}
LocalDateTime now = LocalDateTime.now();
OrderChild orderChild = orderChildDao.getByChildNo(orderChildNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
OrderChild update = new OrderChild();
......
package com.clx.performance.service.impl;
import com.alibaba.druid.sql.visitor.functions.If;
import com.clx.order.enums.QuotationEnum;
import com.clx.performance.dao.*;
import com.clx.performance.dto.payment.PaymentDTO;
......@@ -9,6 +10,7 @@ import com.clx.performance.model.*;
import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.param.pc.payment.PayPlatformFeeParam;
import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
......@@ -21,11 +23,13 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.clx.performance.enums.OrderChildPoundAuditEnum.Status.APPROVED;
import static com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToDefaultString;
/**
......@@ -55,6 +59,7 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
private final OrderChildService orderChildService;
private final PaymentService paymentService;
private final OcrRecognitionDao ocrRecognitionDao;
private final OrderChildPostService orderChildPostService;
@Override
public OrderChildPoundAuditDetailVO getPoundAuditDetail(String childNo) {
......@@ -167,6 +172,10 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
//更新运单数据
orderChild.setPoundStatus(param.getStatus());
//磅单审核通过时间
if (APPROVED.getCode().equals(param.getStatus())){
orderChild.setPoundAuditTime(LocalDateTime.now());
}
orderChildDao.updatePoundAuditStatus(orderChild);
//保存磅单审核数据
......@@ -187,6 +196,7 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
orderChildLogService.saveOrderChildLog(param.getChildNo(),type,OrderChildLogEnum.Type.getByCode(type).isPresent() ? OrderChildLogEnum.Type.getByCode(type).get().getMsg() :"",
OrderChildLogEnum.CreateType.PLATFORM.getCode(), loginUserInfo.getUserNo(),loginUserInfo.getUserName());
orderChildPostService.orderChildPoundAudit(orderChild, poundAuditDetail);
}
/***
......
......@@ -1456,9 +1456,6 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新车辆状态
updateDriverOrderStatusDriverConfirm(orderChild.getTruckId());
// 生成计费单
saveSettlementDetail(orderChild,orderGoods);
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
......@@ -1658,17 +1655,7 @@ public class OrderChildServiceImpl implements OrderChildService {
return result;
}
/**
* 生成计费单
*/
private void saveSettlementDetail(OrderChild orderChild,OrderGoods orderGoods){
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild,orderGoods);
log.info("生成计费单 {} ",orderChild.getChildNo());
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
}
......@@ -2416,8 +2403,9 @@ public class OrderChildServiceImpl implements OrderChildService {
fieldList.add(new ExcelField(15, "接单时间", "payTime", 5000));
fieldList.add(new ExcelField(16, "完成时间", "finishTime", 5000));
fieldList.add(new ExcelField(17, "发货地址", "sendAddress", 10000));
fieldList.add(new ExcelField(18, "收货地址", "receiveAddress", 10000));
fieldList.add(new ExcelField(17, "磅单审核通过时间", "poundAuditTime", 5000));
fieldList.add(new ExcelField(18, "发货地址", "sendAddress", 10000));
fieldList.add(new ExcelField(19, "收货地址", "receiveAddress", 10000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -2450,13 +2438,14 @@ public class OrderChildServiceImpl implements OrderChildService {
rowData.add(new ExcelData(dto.getPayTime()));
rowData.add(new ExcelData(dto.getFinishTime()));
rowData.add(new ExcelData(dto.getPoundAuditTime()));
rowData.add(new ExcelData(dto.getSendAddress()));
rowData.add(new ExcelData(dto.getReceiveAddress()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("运单列表", "运单列表", fieldList, dataList);
ExcelSheet excelSheet = new ExcelSheet("运单明细", "运单明细", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
......
......@@ -22,6 +22,8 @@ import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.dto.OrderGoodsCancelDTO;
import com.clx.performance.enums.*;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.extranal.order.QuotationService;
import com.clx.performance.extranal.user.DriverService;
......@@ -35,6 +37,10 @@ import com.clx.performance.param.pc.*;
import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.struct.OrderGoodsStruct;
import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
......@@ -44,6 +50,7 @@ import com.clx.performance.vo.pc.DriverFreightPriceVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsPendingVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.feign.UserClxFeign;
import com.msl.common.base.Optional;
......@@ -56,6 +63,7 @@ import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -245,6 +253,56 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
return page;
}
@Override
public SXSSFWorkbook exportOrderGoods(PageOrderGoodsListParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<OrderGoodsVO> orderGoodsPage = pageOrderGoodsList(param);
List<OrderGoodsVO> list = orderGoodsPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "货单编号", "orderGoodsNo", 5000));
fieldList.add(new ExcelField(1, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(2, "发货地址", "sendAddressShorter", 5000));
fieldList.add(new ExcelField(3, "收货地址", "receiveAddressShorter", 5000));
fieldList.add(new ExcelField(4, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(5, "提取吨数", "extractWeight", 5000));
fieldList.add(new ExcelField(6, "已派单", "dispatchedOrders", 5000));
fieldList.add(new ExcelField(7, "已抢单吨数", "alreadyTransportWeight", 5000));
fieldList.add(new ExcelField(8, "未抢单吨数", "residueTransportWeight", 5000));
fieldList.add(new ExcelField(9, "已装车吨数", "alreadyLoadWeight", 5000));
fieldList.add(new ExcelField(10, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(11, "货单状态", "orderGoodsStatus", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (OrderGoodsVO vo : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(vo.getOrderGoodsNo()));
rowData.add(new ExcelData(vo.getOrderNo()));
rowData.add(new ExcelData(vo.getSendAddressShorter()));
rowData.add(new ExcelData(vo.getReceiveAddressShorter()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(vo.getExtractWeight()));
rowData.add(new ExcelData(vo.getDispatchedOrders()));
rowData.add(new ExcelData(vo.getAlreadyTransportWeight()));
rowData.add(new ExcelData(vo.getResidueTransportWeight()));
rowData.add(new ExcelData(vo.getAlreadyLoadWeight()));
rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(OrderGoodsStatusEnum.Status.getMsgByCode(vo.getOrderGoodsStatus())));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("货单明细", "货单明细", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
@Override
public void updateOrderGoodsReduceWeightAndStatusAmountLoad(OrderGoods orderGoods, BigDecimal orderChildWeight, Integer orderGoodsStatus) {
if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode())
......
......@@ -43,12 +43,8 @@ import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.feign.OwnerInfoVO;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
import com.clx.performance.vo.pc.OwnerAccountVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePlatformAccountConfigVO;
import com.clx.user.enums.owner.FreezeSettingEnum;
import com.clx.user.feign.OwnerFeign;
......@@ -78,10 +74,6 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
@Slf4j
@Service
......@@ -1302,4 +1294,45 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
return build;
}
@Override
public SXSSFWorkbook exportPrepaidFreightList(PageOwnerAccountListParam param) {
IPage<OwnerAccountVO> page = ownerAccountDao.pageList(param);
List<OwnerAccountVO> list = page.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "货主编码", "index", 5000));
fieldList.add(new ExcelField(1, "货主名称", "ownerUserNo", 5000));
fieldList.add(new ExcelField(2, "联系电话", "ownerName", 5000));
fieldList.add(new ExcelField(3, "账户类型", "mobile", 5000));
fieldList.add(new ExcelField(4, "账户余额", "accountType", 15000));
fieldList.add(new ExcelField(5, "可用余额", "runningWaterType", 5000));
fieldList.add(new ExcelField(6, "冻结余额", "orderNo", 5000));
fieldList.add(new ExcelField(7, "创建人", "alterationBalance", 5000));
fieldList.add(new ExcelField(8, "创建时间", "frozenBalance", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (OwnerAccountVO dto : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(dto.getOwnerUserNo()));
rowData.add(new ExcelData(dto.getOwnerUserName()));
rowData.add(new ExcelData(dto.getMobile()));
OwnerAccountEnum.AccountTypeStatus.getByCode(dto.getAccountType()).ifPresent(a ->
rowData.add(new ExcelData(a.getMsg()))
);
rowData.add(new ExcelData(dto.getAccountBalance() == null ? null : dto.getAccountBalance().movePointLeft(2)));
rowData.add(new ExcelData(dto.getUsableBalance() == null ? null : dto.getUsableBalance().movePointLeft(2)));
rowData.add(new ExcelData(dto.getFrozenBalance() == null ? null : dto.getFrozenBalance().movePointLeft(2)));
rowData.add(new ExcelData(dto.getCreateBy()));
rowData.add(new ExcelData(dto.getCreateTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("预付运费账户列表", "预付运费账户列表", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
}
package com.clx.performance.service.impl.broker;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
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;
import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqHandlerService {
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private SettlementOwnerDetailDao settlementOwnerDetailDao;
@Autowired
private SettlementDriverDetailDao settlementDriverDetailDao;
@Autowired
private OrderChildBrokerService orderChildBrokerService;
@Override
public void orderChildSync(BrokerOrderChildSyncMqParam mq) {
String childNo = mq.getChildNo();
Integer invoiceType = mq.getInvoiceType();
OrderChild orderChild = orderChildDao
.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
OrderGoods orderGoods = orderGoodsDao
.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 更新状态
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.PROCESSING.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
settlementOwnerDetail.setInvoiceType(invoiceType);
try{
// 同步broker
orderChildBrokerService.orderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
} catch (Exception e) {
log.info("同步无车承运失败, child:{}, msg:{}", orderChild.getChildNo(), ExceptionUtils.getStackTrace(e));
}
}
@Override
public void orderChildUpdate(BrokerOrderChildUpdateMqParam mq) {
String childNo = mq.getChildNo();
OrderChild orderChild = orderChildDao
.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
OrderGoods orderGoods = orderGoodsDao
.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
try{
// 更新broker
orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
} catch (Exception e) {
log.info("更新无车承运失败, child:{}, msg:{}", orderChild.getChildNo(), ExceptionUtils.getStackTrace(e));
}
}
}
package com.clx.performance.service.impl.broker;
import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyBrokerConstants;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
import com.clx.performance.vo.mq.broker.BrokerOrderChildUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class OrderChildBrokerMqServiceImpl implements OrderChildBrokerMqService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void orderChildSync(String childNo) {
BrokerOrderChildSyncMqParam mq = new BrokerOrderChildSyncMqParam();
mq.setChildNo(childNo);
MqDelay delay =
new MqDelay<>(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
RabbitKeyBrokerConstants.ORDER_CHILD_SYNC_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
RabbitKeyBrokerConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildUpdate(String childNo) {
BrokerOrderChildUpdateMqParam mq = new BrokerOrderChildUpdateMqParam();
mq.setChildNo(childNo);
MqDelay delay =
new MqDelay<>(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
RabbitKeyBrokerConstants.ORDER_CHILD_SYNC_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
RabbitKeyBrokerConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildUpdate(List<String> childNoList) {
for (String childNo : childNoList) {
orderChildUpdate(childNo);
}
}
}
......@@ -6,7 +6,9 @@ import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild;
......@@ -54,12 +56,33 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
private OrderChildImageDao orderChildImageDao;
@Autowired
private InvoicingCompanyService invoicingCompanyService;
@Autowired
private SettlementOwnerDetailDao settlementOwnerDetailDao;
@Override
public void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// 运单同步
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.PROCESSING.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
brokerService.orderChildSync(transportParam);
}
@Override
public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// 运单更新
brokerService.orderChildUpdate(transportParam);
}
private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail){
String host = documentFeign.getHost().getData();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderGoods.getOrderNo());
......@@ -244,10 +267,15 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo.setLoadTime(DateUtils.formatDateTime(orderChild.getLoadTime()).get());
orderChildInfo.setUnloadTime(DateUtils.formatDateTime(orderChild.getUnloadTime()).get());
orderChildInfo.setPayFinishedTime(DateUtils.formatDateTime(orderChild.getConfirmTime()).get());
orderChildInfo.setPoundTime(DateUtils.formatDateTime(settlementOwnerDetail.getPoundAuditTime()).get());
orderChildInfo.setReceiveTare(orderChild.getUnloadTare());
orderChildInfo.setReceiveRough(orderChild.getUnloadRough());
orderChildInfo.setReceiveNet(orderChild.getUnloadNet());
orderChildInfo.setInvoiceFlag(settlementOwnerDetail.getInvoiceType());
orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName());
orderChildInfo.setInvoiceStatus(Objects.equals(settlementOwnerDetail.getInvoiceStatus(),
SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0);
transportParam.setOrder(orderInfo);
transportParam.setOrderChildImage(imageList);
......@@ -256,6 +284,7 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
transportParam.setOrderChildTruck(truckInfo);
transportParam.setOrderChild(orderChildInfo);
brokerService.orderChildSync(transportParam);
return transportParam;
}
}
package com.clx.performance.service.impl.child;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.UserTypeEnum;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.*;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildPoundAudit;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.mq.IntegralOrderChildFinishMqParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildMqService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Slf4j
@Service
public class OrderChildPostServiceImpl implements OrderChildPostService {
......@@ -30,6 +37,18 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
@Autowired
private VehicleWarnMqService vehicleWarnMqService;
@Autowired
private SettlementDriverDetailService settlementDriverDetailService;
@Autowired
private SettlementOwnerDetailService settlementOwnerDetailService;
@Autowired
private SettlementMqService settlementMqService;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Override
public void orderChildAdd(String childNo) {
// 发送mq 新增运单
......@@ -173,4 +192,18 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
}
@Override
public void orderChildPoundAudit(OrderChild orderChild, OrderChildPoundAudit poundAuditDetail){
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(poundAuditDetail.getStatus(), OrderChildPoundAuditEnum.Status.APPROVED.getCode())) {
// 生成计费单
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods, settlementDriverDetail);
log.info("生成计费单 {} ", orderChild.getChildNo());
settlementMqService.settlementDetailAdd(settlementDriverDetail.getId(), settlementOwnerDetailId);
}
}
}
......@@ -4,18 +4,18 @@ package com.clx.performance.service.impl.settle;
import com.clx.order.enums.QuotationEnum;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.NetworkCaseOutRecordDao;
import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dao.settle.*;
import com.clx.performance.dto.PayStatusNotifyDTO;
import com.clx.performance.enums.NetworkDriverAccountEnum;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.payment.PayPlatformFeeParam;
......@@ -62,6 +62,7 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
private final OrderGoodsDao orderGoodsDao;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementDriverDao settlementDriverDao;
@Override
public void addOrderChildSyncTransportRecord(SettlementDriverDetail detail) {
......@@ -82,13 +83,21 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao
.findBySettlementNo(settlementOwnerDetail.getSettlementNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
settlementDriver.setStatus(SettlementDriverEnum.Status.SETTLED.getCode());
settlementDriverDao.updatePayStatus(settlementDriver);
settlementOwnerDetail.setPayStatus(SettlementOwnerDetailEnum.PayStatus.YES.getCode());
settlementOwnerDetailDao.updatePayStatus(settlementOwnerDetail);
orderChildSyncTransportRecordDao.updateStatus(childNo);
networkCaseOutRecordDao.updateStatus(payStatusNotifyDTO.getChildNo(),
NetworkDriverAccountEnum.CaseOutRecordStatus.PAYED.getCode(),
NetworkDriverAccountEnum.CaseOutRecordStatus.PAYED.getMsg()
);
SettlementDriverDetail driverDetail = settlementDriverDetailService.selectOneByChildNo(childNo);
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode());
......
......@@ -4,18 +4,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverDetailParam;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.struct.settle.SettlementDriverDetailStruct;
import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -33,7 +43,7 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
private final SettlementDriverDetailStruct settlementOwnerDetailStruct;
@Override
public Integer saveSettlementDetail(OrderChild orderChild) {
public SettlementDriverDetail saveSettlementDetail(OrderChild orderChild) {
SettlementDriverDetail settlementDriverDetail = new SettlementDriverDetail();
settlementDriverDetail.setChildNo(orderChild.getChildNo());
......@@ -77,7 +87,7 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
settlementDriverDetailDao.saveEntity(settlementDriverDetail);
return settlementDriverDetail.getId();
return settlementDriverDetail;
}
private BigDecimal weightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
......@@ -127,6 +137,79 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
return settlementDriverDetailDao.getByChildNo(childNo).get();
}
@Override
public SXSSFWorkbook exportSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<CarrierPageSettlementDriverDetailVO> settlementDriverDetailPage = pageSettlementDriverDetail(param);
List<CarrierPageSettlementDriverDetailVO> list = settlementDriverDetailPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(1, "货单编号", "orderGoodsNo", 5000));
fieldList.add(new ExcelField(2, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(3, "车主编码", "driverUserNo", 5000));
fieldList.add(new ExcelField(4, "车主名称", "driverName", 5000));
fieldList.add(new ExcelField(5, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(6, "车牌号", "truckNo", 5000));
fieldList.add(new ExcelField(7, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(8, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(9, "预付标识", "prepayFreightFlag", 5000));
fieldList.add(new ExcelField(10, "借款标识", "loanFlagMsg", 5000));
fieldList.add(new ExcelField(11, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(12, "运费单价", "freightPrice", 5000));
fieldList.add(new ExcelField(13, "应付运费", "freight", 5000));
fieldList.add(new ExcelField(14, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(15, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(16, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(17, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(18, "毛利率", "platformServiceFeeRate", 5000));
fieldList.add(new ExcelField(19, "毛利润", "platformServiceFee", 5000));
fieldList.add(new ExcelField(20, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (CarrierPageSettlementDriverDetailVO dto : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getOrderGoodsNo()));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getDriverUserNo() + ""));
rowData.add(new ExcelData(dto.getDriverName()));
rowData.add(new ExcelData(dto.getGoodsName()));
rowData.add(new ExcelData(dto.getTruckNo()));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(SettlementOwnerEnum.InvoiceType.getMsgByCode(dto.getInvoiceType())));
rowData.add(new ExcelData(SettlementDriverEnum.PrepayFreightFlag.getMsgByCode(dto.getPrepayFreightFlag())));
rowData.add(new ExcelData(dto.getLoanFlagMsg()));
rowData.add(new ExcelData(dto.getWeight()));
rowData.add(new ExcelData(dto.getFreightPrice()));
rowData.add(new ExcelData(dto.getFreight()));
rowData.add(new ExcelData(dto.getLossPrice()));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossFreight()));
rowData.add(new ExcelData(dto.getSettlementFreight()));
rowData.add(new ExcelData(dto.getPlatformServiceFeeRate() + "%"));
rowData.add(new ExcelData(dto.getPlatformServiceFee()));
rowData.add(new ExcelData(dto.getSettlementNo()));
rowData.add(new ExcelData(dto.getCreateTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("车主运单计费", "车主运单计费", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
public static String formatLoanMsg(Integer loanFlag) {
if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.LOAN.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.LOAN.getMsg();
......
......@@ -7,6 +7,9 @@ import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementPlatformEnum;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.BatchUpdatePayDriverSettlementParam;
......@@ -14,14 +17,21 @@ import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.service.settle.SettlementDriverService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.struct.settle.SettlementDriverStruct;
import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import com.msl.common.exception.ServiceSystemException;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -76,6 +86,87 @@ public class SettlementDriverServiceImpl implements SettlementDriverService {
}
}
@Override
public SXSSFWorkbook exportSettlementDriver(PageCarrierSettlementDriverParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<CarrierPageSettlementDriverVO> settlementDriverPage = pageCarrierSettlementDriver(param);
List<CarrierPageSettlementDriverVO> list = settlementDriverPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(1, "货单编号", "orderGoodsNo", 5000));
fieldList.add(new ExcelField(2, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(3, "车主编码", "driverUserNo", 5000));
fieldList.add(new ExcelField(4, "车主名称", "driverName", 5000));
fieldList.add(new ExcelField(5, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(6, "预付标识", "prepayFreightFlag", 5000));
fieldList.add(new ExcelField(7, "借款标识", "loanFlagMsg", 5000));
fieldList.add(new ExcelField(8, "车牌号", "truckNo", 5000));
fieldList.add(new ExcelField(9, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(10, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(11, "运费单价", "freightPrice", 5000));
fieldList.add(new ExcelField(12, "实际运费金额", "freight", 5000));
fieldList.add(new ExcelField(13, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(14, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(15, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(16, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(17, "状态", "status", 5000));
fieldList.add(new ExcelField(18, "结算结果", "settlementResult", 5000));
fieldList.add(new ExcelField(19, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(20, "结算平台", "settlementPlatform", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(22, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(23, "毛利率", "grossMargin", 5000));
fieldList.add(new ExcelField(24, "毛利润", "grossProfit", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (CarrierPageSettlementDriverVO vo : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(vo.getChildNo()));
rowData.add(new ExcelData(vo.getOrderGoodsNo()));
rowData.add(new ExcelData(vo.getOrderNo()));
rowData.add(new ExcelData(vo.getDriverUserNo()+""));
rowData.add(new ExcelData(vo.getDriverName()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(SettlementDriverEnum.PrepayFreightFlag.getMsgByCode(vo.getPrepayFreightFlag())));
rowData.add(new ExcelData(vo.getLoanFlagMsg()));
rowData.add(new ExcelData(vo.getTruckNo()));
rowData.add(new ExcelData(SettlementDriverEnum.InvoiceType.getMsgByCode(vo.getInvoiceType())));
rowData.add(new ExcelData(vo.getWeight()));
rowData.add(new ExcelData(vo.getFreightPrice()));
rowData.add(new ExcelData(vo.getFreight()));
rowData.add(new ExcelData(vo.getLossPrice()));
rowData.add(new ExcelData(vo.getLossWeight()));
rowData.add(new ExcelData(vo.getLossFreight()));
rowData.add(new ExcelData(vo.getSettlementFreight()));
rowData.add(new ExcelData(SettlementDriverEnum.Status.getMsgByCode(vo.getStatus())));
rowData.add(new ExcelData("-"));
rowData.add(new ExcelData(vo.getSettlementNo()));
rowData.add(new ExcelData(SettlementPlatformEnum.Platform.getMsgByCode(Integer.parseInt(vo.getSettlementPlatform()))));
rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(vo.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData("0"));
rowData.add(new ExcelData("0"));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("车主结算单", "车主结算单", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
public static String formatPayMsg(Integer settlementStatus,String payMsg) {
if (!Objects.equals(settlementStatus, SettlementDriverEnum.Status.SETTLED.getCode()) || StringUtils.equals("success",payMsg)) {
return null;
......
......@@ -6,6 +6,9 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
......@@ -37,12 +40,16 @@ public class SettlementMqServiceImpl implements SettlementMqService {
}
@Override
public void settlementStatistics(String childNo, Integer invoiceType) {
public void settlementStatistics(String childNo) {
settlementStatistics(childNo, SettlementStatisticsMqParam.Type.STATISTICS.getCode());
}
@Override
public void settlementStatistics(String childNo, Integer type) {
SettlementStatisticsMqParam mq = new SettlementStatisticsMqParam();
mq.setChildNo(childNo);
mq.setInvoiceType(invoiceType);
log.info("运单号 {} 开票标识 {} ",childNo,invoiceType);
mq.setType(type);
MqDelay<MqWrapper<SettlementStatisticsMqParam>> delay =
new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY, new MqWrapper<>(mq));
......@@ -106,4 +113,40 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void riskProcess(Integer id) {
SettlementOrderChildRiskProcessMqParam mq = new SettlementOrderChildRiskProcessMqParam();
mq.setId(id);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void updateInvoiceCompany(Integer id) {
SettlementOwnerDetialInvoiceCompanyUpdateMqParam mq = new SettlementOwnerDetialInvoiceCompanyUpdateMqParam();
mq.setId(id);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_INVOICE_COMPANY_UPDATE_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void settlementPlatformAutoConfirmUpdate(String settlementNo) {
SettlementPlatformAutoConfirmMqParam mq = new SettlementPlatformAutoConfirmMqParam();
mq.setSettlementNo(settlementNo);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论