提交 66707e31 authored 作者: 李瑞鑫's avatar 李瑞鑫

Merge remote-tracking branch 'origin/v1.0_init_fleet_20240427' into v1.0_init_fleet_20240427

......@@ -44,6 +44,12 @@
<groupId>com.msl</groupId>
<artifactId>convertor-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.clx.cy</groupId>
<artifactId>open-sdk</artifactId>
</dependency>
</dependencies>
......
package com.clx.performance.constant;
/**
* @ClassName UserConstants
* @Description
* @Author kavin
* @Date 2024/3/25 14:15
* @Version 1.0
*/
public class UserConstants {
public static String PRODUCT_CODE = "Product-Code";
public static String TOKEN = "Token";
}
......@@ -19,8 +19,8 @@ public enum BreakContractOwnerRecordEnum {
private final Integer code;
private final String msg;
public static Optional<PayStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<PayStatus> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
......@@ -38,8 +38,8 @@ public enum BreakContractOwnerRecordEnum {
private final Integer code;
private final String msg;
public static Optional<CompensationStatusStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<CompensationStatusStatus> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
......@@ -58,8 +58,8 @@ public enum BreakContractOwnerRecordEnum {
private final Integer code;
private final String msg;
public static Optional<ConfirmStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<ConfirmStatus> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
......
......@@ -19,8 +19,8 @@ public enum BreakContractRecordEnum {
private final Integer code;
private final String msg;
public static Optional<TriggerType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<TriggerType> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
@Getter
......@@ -34,8 +34,8 @@ public enum BreakContractRecordEnum {
private final Integer code;
private final String msg;
public static Optional<BreakContractPartyType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<BreakContractPartyType> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
......
......@@ -20,8 +20,8 @@ public enum BreakContractSettlementDriverEnum {
private final Integer code;
private final String msg;
public static Optional<BreakContractPartyType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<BreakContractPartyType> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
......@@ -39,8 +39,8 @@ public enum BreakContractSettlementDriverEnum {
private final Integer code;
private final String msg;
public static Optional<SettleStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<SettleStatus> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
......@@ -57,8 +57,8 @@ public enum BreakContractSettlementDriverEnum {
private final Integer code;
private final String msg;
public static Optional<SettlePlatform> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
public static Optional<SettlePlatform> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
......
......@@ -83,4 +83,20 @@ public enum DriverTruckEnum {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
//车辆状态:1空车 2重车
@Getter
@AllArgsConstructor
public enum TraceTruckStatus {
EMPTY(1, "空车"),
HEAVY(2, "重车");
private final Integer code;
private final String msg;
public static Optional<TraceTruckStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
......@@ -16,6 +16,10 @@ public enum OrderGoodsPendingOrderWayStatusEnum {
OPEN(1, "公开派单"),
EXCLUSIVE(2, "定向派单"),
FLEET_OPEN(3, "车队公开派单"),
FLEET_EXCLUSIVE(4, "车队定向派单"),
;
private final Integer code;
......
......@@ -21,8 +21,8 @@ public enum OrderGoodsPendingVehicleUsageEnum {
private final Integer code;
private final String name;
public static Optional<Status> getByCode(String c) {
return Arrays.stream(values()).filter(e -> e.code.equals(c)).findFirst();
public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
......
......@@ -27,7 +27,7 @@ public enum OrderGoodsStatusEnum {
private final String name;
public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
......
......@@ -22,7 +22,7 @@ public enum OrderGoodsStopEnum {
private final String name;
public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
......
......@@ -15,14 +15,18 @@ public enum PendingOrderWayStatusEnum {
GK(1, "GK"),
DX(2, "DX")
DX(2, "DX"),
FLEET_GK(3, "GK"),
FLEET_DX(4, "DX")
;
private final Integer code;
private final String name;
public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
......
......@@ -34,10 +34,8 @@ public enum IntegralRecordEnum {
// REPORT_TRUCK_INFO(50, "提交基础信息"),
REPORT_REFUEL(51, "油表上报"),
REPORT_TRAFFIC(52, "上报交通拥堵"),
REPORT_SEND_ADDRESS_WAIT(53, "上报货源地需要排队"),
REPORT_SEND_ADDRESS_NO_WAIT(54, "上报货源地无需排队"),
REPORT_RECEIVE_ADDRESS_WAIT(55, "上报目的地需要排队"),
REPORT_RECEIVE_ADDRESS_NO_WAIT(56, "上报目的地无需排队"),
REPORT_SEND_ADDRESS_WAIT(53, "上报货源地排队"),
REPORT_RECEIVE_ADDRESS_WAIT(55, "上报目的地排队"),
REPORT_QUALITY(57, "上报煤炭质量问题"),
REPORT_ABNORMAL(58, "上报拉运异常问题"),
REPORT_SEND_ADDRESS_INFO(59, "上报货源地情况"),
......@@ -58,9 +56,7 @@ public enum IntegralRecordEnum {
Type.REPORT_REFUEL.value,
Type.REPORT_TRAFFIC.value,
Type.REPORT_SEND_ADDRESS_WAIT.value,
Type.REPORT_SEND_ADDRESS_NO_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_NO_WAIT.value,
Type.REPORT_QUALITY.value,
Type.REPORT_ABNORMAL.value
......
package com.clx.performance.feign;
import com.clx.performance.param.app.collect.CollectTruckParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.OrderCancelFeignParam;
import com.clx.performance.param.pc.OrderChildReportParam;
......@@ -11,10 +12,12 @@ import com.clx.performance.vo.app.collect.AppCollectTruckVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountArrearsVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleVO;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -22,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
import java.util.Set;
......@@ -64,10 +68,14 @@ public interface PerformanceFeign {
@RequestParam("userNo") @NotNull(message = "用户编号不可为空") Long userNo);
@GetMapping(value = {"clx-performance/feign/orderGoodsDriverTruck/getFleetPublicTruckList"})
Result<Set<String>> getFleetPublicTruckList(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo);
@PostMapping(value = {"clx-performance/feign/order/orderCancel"})
Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param);
/**
* 更新货单暂停标志
* @param orderNo
......@@ -115,4 +123,13 @@ public interface PerformanceFeign {
@GetMapping(value = {"clx-performance/feign/owner/loanAccount"})
Result<OwnerLoanAccountVO> loanAccount(@RequestParam Long userNo);
@GetMapping(value = {"clx-performance/feign/owner/accountArrearsInfo"})
Result<OwnerAccountArrearsVO> accountArrearsInfo(@RequestParam(value = "userNo") Long userNo,
@RequestParam(value = "prepaidArrearsOrder") BigDecimal prepaidArrearsOrder,
@RequestParam(value = "marginArrearsOrder") BigDecimal marginArrearsOrder);
@PostMapping(value = {"clx-performance/feign/orderGoods/saveBindTruck"})
Result<Object> saveBindTruck(@RequestBody @Validated DistributionTruckParam param);
}
package com.clx.performance.feign;
import com.clx.open.sdk.request.action.GetOrderBreakContractOwnerRuleFileAction;
import com.clx.open.sdk.request.action.GetOwnerAccountInfoAction;
import com.clx.open.sdk.request.dto.OwnerCancelResidueWeightDTO;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleFileVO;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "clx-performance", configuration = PerformanceClientConfiguration.class)
public interface PerformanceSDKFeign {
@PostMapping(value = {"clx-performance/feign/sdk/ownCancelOrderPre"})
Result<Integer> ownCancelOrderPre(@RequestBody OrderCancelParam param);
@GetMapping(value = {"clx-performance/feign/sdk/orderCancelResidueWeight"})
Result<OwnerCancelResidueWeightDTO> orderCancelResidueWeight(@RequestParam(value = "orderNo") String orderNo, @RequestParam(value = "optionType") String optionType);
@GetMapping(value = {"clx-performance/feign/sdk/accountAllInfo"})
Result<OwnerAccountAllVO> accountAllInfo(@RequestParam Long userNo);
/**
* 查询规则文档信息
*/
@PostMapping("clx-performance/feign/sdk/getOwnerRuleFile")
Result<BreakContractOwnerRuleFileVO> getOwnerRuleFile(@RequestBody GetOrderBreakContractOwnerRuleFileAction action);
}
package com.clx.performance.feign;
import com.clx.open.sdk.request.action.BreakContractSettlementGenerateAction;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "clx-performance",configuration = PerformanceClientConfiguration.class)
......@@ -14,4 +17,8 @@ public interface SettlementFeign {
@GetMapping("clx-performance/feign/settlement/thawAndLockSettlement")
Result<Boolean> thawAndLockSettlement(@RequestParam String orderNo);
@ApiOperation(value = "确认或驳回违约")
@PostMapping("clx-performance/feign/breakContract/updateBreakContract")
Result updateBreakContract(@RequestBody @Validated BreakContractSettlementGenerateAction action);
}
package com.clx.performance.param.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildCheckParam extends PositionParam {
@ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空")
private String orderGoodsNo;
@ApiModelProperty(value = "车辆id", example = "1")
@NotNull(message = "车辆id空")
private Integer truckId;
@ApiModelProperty(value = "车牌号", example = "1")
@NotNull(message = "车牌号不能为空")
private String truckNo;
@ApiModelProperty(value = "司机用户编号", example = "1")
@NotNull(message = "司机用户编号空")
private Long driverUserNo;
@ApiModelProperty("纬度")
private BigDecimal latitude;
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("可卸车时间段开始")
private String unloadBeginTime;
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
@ApiModelProperty("可装车时间段开始")
private String loadBeginTime;
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
}
package com.clx.performance.param.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @ClassName DistributionTruckDTO
* @Description
* @Author kavin
* @Date 2024/5/30 18:07
* @Version 1.0
*/
@Getter
@Setter
public class DistributionTruckParam {
@NotBlank(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
@NotBlank(message = "货单编号不能为空")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@NotEmpty(message = "车辆列表不能为空")
@ApiModelProperty("车辆列表")
private List<String> truckNoList;
}
package com.clx.performance.param.mq.trace;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class TruckTraceSyncMqParam {
private String childNo; //运单编号
private String truckNo; //车牌号
private String beginTime; //开始时间
private String endTime; //结束时间
}
......@@ -34,7 +34,7 @@ public class OrderGoodsChildParams {
private Integer needTruckNum;
@NotNull(message = "提取吨数不能为空")
@ApiModelProperty(value = "挂单方式 1公开派单 2定向派单" , required = true)
@ApiModelProperty(value = "挂单方式 1公开派单 2定向派单 3车队公开派单 4车队定向派单" , required = true)
private Integer pendingOrderWay;
@NotBlank(message = "最晚接单时间不能为空")
......
package com.clx.performance.param.pc;
import com.msl.common.convertor.type.MoneyInConvert;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -25,7 +24,7 @@ public class OrderGoodsEditParams {
@ApiModelProperty("剩余拉运吨数")
private BigDecimal residueTransportWeight;
@ApiModelProperty("挂单方式 1公开派单 2定向派单")
@ApiModelProperty("挂单方式 1公开派单 2定向派单 3车队公开派单 4车队定向派单")
private Integer pendingOrderWay;
@ApiModelProperty("'最晚接单时间'")
......
package com.clx.performance.param.pc.trace;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @ClassName QueryTraceParam
* @Description
* @Author kavin
* @Date 2024/5/13 18:07
* @Version 1.0
*/
@Getter
@Setter
public class QueryTraceParam {
@ApiModelProperty("运单编号")
private String childNo;
@NotBlank(message = "车牌号不能为空")
@ApiModelProperty("车牌号")
private String truckNo;
@NotBlank(message = "开始时间不能为空")
@ApiModelProperty("开始时间")
private String beginTime;
@NotBlank(message = "结束时间不能为空")
@ApiModelProperty("结束时间")
private String endTime;
}
package com.clx.performance.param.temp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.List;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class DriverTraceAddParam {
@ApiModelProperty(value = "车辆轨迹列表")
private List<DriverTraceItem> traceList;
@Setter
@Getter
@ToString
@NoArgsConstructor
public static class DriverTraceItem{
@ApiModelProperty(value = "用户编码", example = "10000")
private Long userNo;
@ApiModelProperty(value = "1-正常上传,2-离线上传", example = "1")
private Integer dataType;
@ApiModelProperty(value = "位置 [123.45, 12.34]")
private BigDecimal[] location;
@ApiModelProperty(value = "时间")
private String gpsTime;
@ApiModelProperty(value = "速度", example = "12.34")
private BigDecimal speed;
}
}
package com.clx.performance.param.temp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.List;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class TruckTraceAddParam {
@ApiModelProperty(value = "车辆轨迹列表")
private List<TruckTraceItem> traceList;
@Setter
@Getter
@ToString
@NoArgsConstructor
public static class TruckTraceItem{
@ApiModelProperty(value = "车辆编号", example = "京A12345")
private String truckNo;
@ApiModelProperty(value = "正北方向夹角", example = "12.34")
private BigDecimal angle;
@ApiModelProperty(value = "速度", example = "12.34")
private BigDecimal speed;
@ApiModelProperty(value = "里程", example = "12.34")
private BigDecimal mileage;
@ApiModelProperty(value = "海拔", example = "12.34")
private BigDecimal height;
@ApiModelProperty(value = "位置 [123.45, 12.34]")
private BigDecimal[] location;
@ApiModelProperty(value = "时间")
private String gpsTime;
}
}
......@@ -42,11 +42,8 @@ public class OrderChildPoundInfoVO {
private Integer poundStatus;
@ApiModelProperty(value = "磅单审核驳回原因", example = "交货信息错误")
private String poundRemark;
@ApiModelProperty(value = "审核驳回类型:1装车 2卸车 3装车+卸车", example = "1")
@ApiModelProperty(value = "磅单审核驳回类型:1装车 2卸车 3装车+卸车", example = "1")
private Integer poundRejectType;
public Integer getPoundRejectType() {
return rejectType;
}
@ApiModelProperty(value = "状态", example = "0")
private Integer status;
......@@ -57,8 +54,4 @@ public class OrderChildPoundInfoVO {
@ApiModelProperty(value = "卸车磅单图片列表")
private List<String> unloadImageList;
@JsonIgnore
@ApiModelProperty(value = "审核驳回类型:1装车 2卸车 3装车+卸车", example = "1", hidden = true)
private Integer rejectType;
}
\ No newline at end of file
......@@ -205,5 +205,19 @@ public class OrderChildVO {
@MoneyOutConvert
private BigDecimal lossAmount;
@ApiModelProperty("可卸车时间段开始")
private String unloadBeginTime;
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
@ApiModelProperty("可装车时间段开始")
private String loadBeginTime;
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
@ApiModelProperty(value = "车辆未开启中交兴路的提示信息")
private String notOpenZJXLMsg;
}
\ No newline at end of file
package com.clx.performance.vo.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @Description
* @Author aiqingguo
* @Date 2023-10-19 16:33:52
* @Version 1.0
*/
@Getter
@Setter
public class OwnerInfoVO {
@ApiModelProperty("用户编号")
private Long userNo;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("手机号码")
private String mobile;
@ApiModelProperty("货主类型 1企业 2个人")
private Integer ownerType;
@ApiModelProperty("所属银行")
private String ownerAccountBank;
@ApiModelProperty("开户行")
private String ownerOpenBank;
@ApiModelProperty("开户行号")
private String ownerOpenBankNumber;
@ApiModelProperty("户名")
private String ownerAccountName;
@ApiModelProperty("银行账户")
private String ownerBankAccount;
@ApiModelProperty("结算账期 1拉运完成结 2月结")
private Integer settlementAccountPeriod;
@ApiModelProperty("结算方式 1装车净重 2卸车净重")
private Integer settlementWay;
@ApiModelProperty("冻结方式 1自动冻结 2手动冻结")
private Integer freezeSetting;
@ApiModelProperty("公司名称")
private String companyName;
@ApiModelProperty("法人姓名")
private String legalName;
@ApiModelProperty("法人身份证")
private String legalCardNo;
@ApiModelProperty(value = "法人手机号", example = "")
private String legalMobile;
@ApiModelProperty("营业执照图片地址")
private String companyBusinessImg;
@ApiModelProperty("营业执照编号")
private String companyBusinessNo;
@ApiModelProperty("公司税号")
private String companyTaxCode;
@ApiModelProperty("公司地址")
private String companyAddress;
@ApiModelProperty("公司联系电话")
private String companyTelephone;
@ApiModelProperty("公司银行账户")
private String companyBankAccount;
@ApiModelProperty("公司开户行")
private String companyOpenBank;
@ApiModelProperty("统一社会信用代码")
private String companyGroupCode;
@ApiModelProperty("联系人")
private String contactsName;
@ApiModelProperty("联系电话")
private String contactsTelephone;
@ApiModelProperty("联系地址")
private String contactsAddress;
@ApiModelProperty("网络货运货主编码")
private String transportOwnerCode;
@ApiModelProperty("创建时间")
private String createTime;
}
......@@ -115,5 +115,12 @@ public class CarrierOrderChildDetailVO {
@ApiModelProperty(value = "完成时间", example = "2020-01-01 10:10:10")
private String finishTime;
@ApiModelProperty(value = "接单时间", example = "2020-01-01 10:10:10")
private String createTime;
@ApiModelProperty(value = "取消时间", example = "2020-01-01 10:10:10")
private String cancelTime;
}
\ No newline at end of file
......@@ -7,7 +7,6 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
......@@ -73,7 +72,7 @@ public class OrderGoodsVO {
@ApiModelProperty("货物名称")
private String goodsName;
@ApiModelProperty("挂单方式 1公开派单 2定向派单")
@ApiModelProperty("挂单方式 1公开派单 2定向派单 3车队公开派单 4车队定向派单")
private Integer pendingOrderWay;
@ApiModelProperty("定向运单失效时间")
......@@ -132,4 +131,19 @@ public class OrderGoodsVO {
@ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货")
private Integer vehicleUsage;
@ApiModelProperty("可卸车时间段开始")
private String unloadBeginTime;
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
@ApiModelProperty("可装车时间段开始")
private String loadBeginTime;
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
@ApiModelProperty("已派单数")
private Integer dispatchedOrders;
}
\ No newline at end of file
package com.clx.performance.vo.pc;
import com.clx.performance.vo.feign.OwnerInfoVO;
import com.msl.common.convertor.field.Converted;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -17,4 +18,10 @@ public class OwnerAccountAllVO {
@ApiModelProperty("0:没有交易密码 1:有交易密码")
private Integer ownerAccountPassword;
@ApiModelProperty("借款账户信息")
private OwnerLoanAccountVO loanAccountVO;
@ApiModelProperty("货主信息")
private OwnerInfoVO ownerInfoVO;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
@Data
@Builder
public class OwnerAccountArrearsVO {
@ApiModelProperty("当前预付账户未支付订单金额 等于0,不欠费,负数欠多少")
private BigDecimal prepaidArrearsOrderSumMoney;
@ApiModelProperty("当前保证金账户未支付订单金额 等于0,不欠费,负数欠多少")
private BigDecimal marginArrearsOrderSumMoney;
@ApiModelProperty("货主用户编码")
private Long userNo;
}
......@@ -77,9 +77,6 @@ public class CollectTruckWaitVO {
@ApiModelProperty(value = "预计等待时长", example = "")
private BigDecimal stationTime;
public BigDecimal getStationTime() {
return stationInTime;
}
@ApiModelProperty(value = "预计等待时长图片", example = "")
private List<String> stationImageList;
......
......@@ -122,14 +122,13 @@ public class AppIntegralRuleVO {
private Integer integralRefuel;
// @ApiModelProperty(value = "上报交通拥堵积分x")
// private Integer integralTraffic;
@ApiModelProperty(value = "上报货源地需要排队积分x")
@ApiModelProperty(value = "上报货源地排队积分x")
private Integer integralSendAddressWait;
@ApiModelProperty(value = "上报货源地无需排队积分x")
private Integer integralSendAddressNoWait;
@ApiModelProperty(value = "上报目的地需要排队积分x")
private Integer integralReceiveAddressWait;
@ApiModelProperty(value = "上报目的地无需排队积分x")
private Integer integralReceiveAddressNoWait;
@ApiModelProperty(value = "上报煤炭质量问题积分x")
private Integer integralQuality;
@ApiModelProperty(value = "上报拉运异常问题积分x")
......
......@@ -7,6 +7,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
......@@ -58,9 +59,10 @@ public class AppIntegralTruckRuleVO {
@ApiModelProperty(value = "预期收益结束范围", example = "")
private String incomeMsg;
public String getIncomeMsg() {
if (incomeBegin == null && incomeEnd !=null) {return "日收益小于等于"+incomeEnd.toString()+"元";}
if (incomeEnd == null && incomeBegin !=null) {return "日收益大于等于"+incomeBegin.toString()+"元";}
return "日收益"+ incomeBegin.toString() + "元—" + incomeEnd.toString()+"元";
if(incomeEnd == null && incomeBegin == null){ return StringUtils.EMPTY;}
if (incomeBegin == null ) {return "日收益小于等于"+incomeEnd+"元";}
if (incomeEnd == null) {return "日收益大于等于"+incomeBegin+"元";}
return "日收益"+ incomeBegin + "元—" + incomeEnd+"元";
}
@ApiModelProperty(value = "创建时间", example = "")
......
package com.clx.performance.vo.pc.trace;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class DriverTraceVO {
@ApiModelProperty(value = "经度")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度")
private BigDecimal latitude;
@ApiModelProperty(value = "GPS 时间")
private String gpsTime;
@ApiModelProperty(value = "速度")
private BigDecimal speed;
@ApiModelProperty(value = "停留时长(min)", example = "12.3")
private BigDecimal stayTime=BigDecimal.ZERO;
@ApiModelProperty(value = "停留结束时间")
private String stayEndTime;
@ApiModelProperty(value = "车辆状态:1空车 2重车", example = "1")
private Integer truckStatus;
}
package com.clx.performance.vo.pc.trace;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class DriverTruckTraceVO {
@ApiModelProperty(value = "正北方向夹角", example = "12.34")
private BigDecimal angle;
@ApiModelProperty(value = "GPS 速度", example = "12.34")
private BigDecimal speed;
@ApiModelProperty(value = "里程", example = "12.34")
private BigDecimal mileage;
@ApiModelProperty(value = "海拔", example = "12.34")
private BigDecimal height;
@ApiModelProperty(value = "经度", example = "123.45")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度", example = "12.34")
private BigDecimal latitude;
@ApiModelProperty(value = "GPS 时间")
private String gpsTime;
@ApiModelProperty(value = "停留结束时间")
private String stayEndTime;
@ApiModelProperty(value = "停留时长(min)", example = "12.3")
private BigDecimal stayTime=BigDecimal.ZERO;
@ApiModelProperty(value = "车辆状态:1空车 2重车", example = "1")
private Integer truckStatus;
}
package com.clx.performance.vo.pc.trace;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 车辆轨迹
* @Date: 2024/04/25 17:09:33
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
public class OrderChildTraceVO {
@ApiModelProperty(value = "车辆轨迹列表")
List<List<DriverTruckTraceVO>> truckTraceList;
@ApiModelProperty(value = "司机轨迹列表")
List<List<DriverTraceVO>> driverTraceList;
}
\ No newline at end of file
......@@ -51,11 +51,6 @@
<artifactId>message-api</artifactId>
</dependency>
<dependency>
<groupId>com.clx.cy</groupId>
<artifactId>open-sdk</artifactId>
</dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>user-sdk</artifactId>
......@@ -76,6 +71,12 @@
<artifactId>trace-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>trace-spring-boot-starter-openfeign</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.msl</groupId>-->
<!-- <artifactId>message-api</artifactId>-->
......@@ -100,6 +101,16 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
......@@ -260,6 +271,29 @@
<artifactId>openBasicSDK</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>com.clx.cy</groupId>
<artifactId>open-sdk</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>org.dromara.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>2.0.0-beta7</version>
</dependency>
</dependencies>
......
package com.clx.performance;
import com.msl.common.config.ViewScan;
import org.dromara.easyes.starter.register.EsMapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
......@@ -18,6 +19,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@ComponentScan({"com.clx.performance.*", "com.msl.*"})
@EnableFeignClients(basePackages = {"com.msl.*", "com.clx.performance.*", "com.clx.order.*", "com.clx.user.*", "com.clx.message.*"})
@ViewScan(basePackage = "com.clx.user.view")
@EsMapperScan("com.clx.performance.esplus.mapper")
public class PerformanceApplication {
public static void main(String[] args) {
......
package com.clx.performance.component;
import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.clx.performance.dao.OrderGoodsFleetOpenTruckDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoodsDriverTruck;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.base.Optional;
import lombok.AllArgsConstructor;
......@@ -14,10 +17,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
......@@ -32,6 +32,8 @@ public class GoodsOrderTruckRecordComponent {
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
private final OrderGoodsFleetOpenTruckDao orderGoodsFleetOpenTruckDao;
public void saveTruckRecord(String orderGoodsNo, List<String> truckList) {
redisTemplate.opsForSet().add(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo, truckList.toArray(new String[]{}));
......@@ -116,4 +118,30 @@ public class GoodsOrderTruckRecordComponent {
}
public Set<String> getFleetPublicTruckList(String orderGoodsNo) {
Set<String> orderGoodsList = redisTemplate.opsForSet().members(RedisConstants.ORDER_GOODS_RECORD);
if (orderGoodsList == null || orderGoodsList.isEmpty()) {
return null;
}
//当前系统所有的定向车辆
Set<String> union = redisTemplate.opsForSet().union(orderGoodsList);
Set<String> set = CollectionUtils.isEmpty(union)?new HashSet<>():union;
Optional<OrderGoodsFleetOpenTruck> optional = orderGoodsFleetOpenTruckDao.getOneByField(
OrderGoodsFleetOpenTruck::getOrderGoodsNo, orderGoodsNo);
//车队运营系统未派发车辆
if(!optional.isPresent()){
log.error("货单号:{},未在车队运营系统进行派发",orderGoodsNo);
return new HashSet<>();
}
List<String> fleetTruckNoList = JSON.parseArray(optional.get().getTruckListJson(),String.class);
//车队派发的车辆去除掉定向车辆
for (Iterator<String> it = fleetTruckNoList.iterator(); it.hasNext();) {
if(set.contains(it.next())){
it.remove();
}
}
return new HashSet<>(fleetTruckNoList);
}
}
......@@ -11,6 +11,7 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.OrderCancelDTO;
import com.clx.performance.dto.OrderCancelResult;
import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService;
......@@ -89,7 +90,7 @@ public class OrderCancelComponent implements InitializingBean {
* @param param
* @return
*/
public List<String> ownerProcess(OrderCancelParam param) {
public OrderCancelDTO ownerProcess(OrderCancelParam param) {
String orderNo = param.getOrderNo();
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
......@@ -109,7 +110,8 @@ public class OrderCancelComponent implements InitializingBean {
orderChildPostService.orderCancel(childNo);
}
}
return childNoList;
return OrderCancelDTO.builder().status(orderStatusCode)
.childNoList(childNoList).build();
}
......@@ -166,7 +168,8 @@ public class OrderCancelComponent implements InitializingBean {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode()) ||
orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -194,7 +197,9 @@ public class OrderCancelComponent implements InitializingBean {
orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode()) ||
orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())
) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -220,7 +225,9 @@ public class OrderCancelComponent implements InitializingBean {
if (CollectionUtil.isNotEmpty(orderGoodsList)) {
List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode()) ||
orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())
) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......
......@@ -13,6 +13,7 @@ import com.clx.performance.param.app.SendMobileCaptchaParam;
import com.msl.common.exception.ServiceSystemException;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
......@@ -80,9 +81,8 @@ public class SendMessageMachineCheckComponent {
//response的code枚举:100验签通过,900验签失败
AuthenticateSigResponse response = client.getAcsResponse(request);
resultCode = response.getCode();
// TODO
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return resultCode;
}
......@@ -108,10 +108,13 @@ public class SendMessageMachineCheckComponent {
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
if (inet != null) {
ip = inet.getHostAddress();
}
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
ip = inet.getHostAddress();
}
}
// 多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
......
package com.clx.performance.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
@Getter
@Setter
public class MslAppConfig {
@Value("${msl.supervise.trade.appid}")
private String appId;
@Value("${msl.supervise.trade.url}")
private String url;
@Value("${msl.supervise.trade.secret}")
private String secret;
}
package com.clx.performance.config;
import com.clx.performance.constant.RabbitKeyTraceConstants;
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 RabbitTraceConfig {
@Bean
public DirectExchange traceDefaultExchange() {
return new DirectExchange(RabbitKeyTraceConstants.DEFAULT_EXCHANGE);
}
@Bean
public Queue traceDefaultDelayQueue() {
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", RabbitKeyTraceConstants.DEFAULT_EXCHANGE);
params.put("x-dead-letter-routing-key", RabbitKeyTraceConstants.DEFAULT_DEAD_ROUTING_KEY);
return new Queue(RabbitKeyTraceConstants.DEFAULT_DELAY_QUEUE, true, false, false, params);
}
@Bean
public Binding traceDefaultDelayQueueBinding() {
return BindingBuilder.bind(traceDefaultDelayQueue()).to(traceDefaultExchange()).with(RabbitKeyTraceConstants.DEFAULT_DELAY_ROUTING_KEY);
}
@Bean
public Queue traceDefaultDeadQueue() {
return new Queue(RabbitKeyTraceConstants.DEFAULT_DEAD_QUEUE);
}
@Bean
public Binding traceDefaultDeadQueueBinding() {
return BindingBuilder.bind(traceDefaultDeadQueue()).to(traceDefaultExchange()).with(RabbitKeyTraceConstants.DEFAULT_DEAD_ROUTING_KEY);
}
/**
* 统计更新
*/
@Bean
public Queue traceTruckTraceSyncQueue() {
return new Queue(RabbitKeyTraceConstants.TRUCK_TRACE_SYNC_QUEUE);
}
@Bean
public Binding traceTruckTraceSyncQueueBinding() {
return BindingBuilder.bind(traceTruckTraceSyncQueue()).to(traceDefaultExchange()).with(RabbitKeyTraceConstants.TRUCK_TRACE_SYNC_ROUTING_KEY);
}
}
package com.clx.performance.config;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.request.OpenRequestClient;
import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Getter
@Configuration
@ConfigurationProperties(prefix = "third") // 配置 文件的前缀
@Slf4j
public class ThirdAppConfig implements InitializingBean {
// 这里的名字要和yml中的对应字段名称一致
public static Map<String, AppConfig> config = new HashMap<>();
public Map<String, OpenCallBackClient> openCallBackClientMap = new HashMap<>();
public Map<String, OpenRequestClient> openRequestClientMap = new HashMap<>();
// 注意此处的 static 关键字
public static AppConfig getConfig(String appNo) {
return config.get(appNo);
}
public void setConfig(List<AppConfig> appConfigs) {
config = appConfigs.stream().collect(Collectors.toMap(AppConfig::getAppNo, value -> value));
}
public OpenCallBackClient getOpenCallBackClient(String appNo) {
OpenCallBackClient openCallBackClient = openCallBackClientMap.get(appNo);
if (openCallBackClient == null) {
log.info("当前appNo:{}对应的client不存在", appNo);
throw new RuntimeException("当前appNo对应的client不存在");
}
return openCallBackClient;
}
public OpenRequestClient getOpenRequestClient(String appNo) {
OpenRequestClient openRequestClient = openRequestClientMap.get(appNo);
if (openRequestClient == null) {
log.info("当前appNo:{}对应的client不存在", appNo);
throw new RuntimeException("当前appNo对应的client不存在");
}
return openRequestClient;
}
@Override
public void afterPropertiesSet() throws Exception {
if (config.isEmpty()) {
log.info("third app config is empty");
return;
}
for (Map.Entry<String, AppConfig> entry : config.entrySet()) {
String key = entry.getKey();
AppConfig value = entry.getValue();
openCallBackClientMap.put(key, new OpenCallBackClient(value.getUrl(), value.getAppNo(), value.getSecret()));
openRequestClientMap.put(key, new OpenRequestClient(value.getUrl(), value.getAppNo(), value.getSecret()));
}
}
@Data
public static class AppConfig {
private String appNo;
private String secret;
private String url;
}
}
......@@ -97,4 +97,14 @@ public class RabbitKeyConstants {
public static final String OWNER_REPAYMENT_QUEUE ="clx-performance.owner.repayment.queue";
public static final String OWNER_REPAYMENT_ROUTE_KEY ="clx-performance.owner.repayment.route.key";
//承运违约结算单同步货主客户端 需要手动创建对列交换机
public static final String CLX_PERFORMANCE_BREAK_CONTRACT_OWNER_RECORD_QUEUE = "clx_performance.break_contract_owner_record_queue";
//承运货主计费数据同步货主客户端 需要手动创建对列交换机
public static final String CLX_PERFORMANCE_SETTLEMENT_OWNER_DETAIL_QUEUE = "clx_performance.settlement_owner_detail_queue";
//货主结算单数据同步货主客户端 需要手动创建对列交换机
public static final String CLX_PERFORMANCE_SETTLEMENT_OWNER_QUEUE = "clx_performance.settlement_owner_queue";
}
package com.clx.performance.constant;
/**
* @Author: aiqingguo
* @Description: 轨迹-mq
* @Date: 2023-10-19 15:10:10
* @Version: 1.0
*/
public class RabbitKeyTraceConstants {
private static final String PREFIX = "clx-performance.trace.";
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 RabbitKeyTraceConstants() {
}
/**
* 缺省交换机
*/
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 TRUCK_TRACE_SYNC_QUEUE = PREFIX +"truck.trace.update"+QUEUE;
public static final String TRUCK_TRACE_SYNC_ROUTING_KEY = PREFIX +"truck.trace.update"+QUEUE_ROUTING_KEY;
}
......@@ -32,6 +32,13 @@ public class AppDriverOrderChildController {
private final OrderChildService orderChildService;
@ApiOperation(value = "接单判断", notes = "<br>By:胡宇帆")
@PostMapping("/getOrderChildCheck")
public Result<Integer> getOrderChildCheck(@RequestBody @Validated OrderChildCheckParam param) {
return Result.ok(orderChildService.getOrderChildCheck(param));
}
@ApiOperation(value = "接单", notes = "<br>By:艾庆国")
@PostMapping("/saveOrderChild")
public Result<SaveOrderChildVO> saveOrderChild(@RequestBody @Validated OrderChildSaveParam param) {
......
package com.clx.performance.controller.feign;
import com.clx.open.sdk.request.action.BreakContractSettlementGenerateAction;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.owner.OwnerConfirmBreakContractSettlementParam;
import com.clx.performance.service.breakcontract.BreakContractOwnerRecordService;
import com.clx.performance.service.breakcontract.BreakContractOwnerRuleService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleVO;
......@@ -25,6 +28,10 @@ public class BreakContractSettlementOwnerFeignController {
private final BreakContractOwnerRuleService breakContractOwnerRuleService;
private final BreakContractOwnerRecordService breakContractOwnerRecordService;
@ApiOperation(value = "货主订单吨数下调自动保存违约结算单")
@PostMapping("/saveSettlementOwnerForTonnageDown")
......@@ -39,4 +46,15 @@ public class BreakContractSettlementOwnerFeignController {
return Result.ok(breakContractOwnerRuleService.getRuleInfo(id));
}
@ApiOperation(value = "货主客户端货主确认生成违约结算单")
@PostMapping("/updateBreakContract")
Result updateBreakContract(@RequestBody @Validated BreakContractSettlementGenerateAction param){
OwnerConfirmBreakContractSettlementParam settlementParam = new OwnerConfirmBreakContractSettlementParam();
settlementParam.setConfirmStatus(param.getConfirmStatus());
settlementParam.setId(param.getBreakContractId());
settlementParam.setRejectReason(param.getRejectReason());
breakContractOwnerRecordService.updateConfirmStatus(settlementParam);
return Result.ok();
}
}
......@@ -2,8 +2,10 @@ package com.clx.performance.controller.feign;
import com.clx.performance.param.pc.OrderCancelFeignParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.result.Result;
import com.msl.user.utils.TokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
......@@ -31,4 +33,5 @@ public class OrderCancelFeignController {
orderCancelService.ownerConfirmCancelOrderPre(param.getOrderNo());
return Result.ok();
}
}
package com.clx.performance.controller.feign;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.OrderChildReportParam;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -46,4 +48,12 @@ public class OrderGoodsFeignController {
return Result.ok(orderGoodsService.listFreightEstimate(param));
}
@ApiOperation(value = "定向单绑定车辆", notes = "<br>By:刘海泉")
@PostMapping({"/saveBindTruck"})
Result<Object> saveBindTruck(@RequestBody @Validated DistributionTruckParam param) {
orderGoodsService.saveBindTruck(param);
return Result.ok();
}
}
......@@ -5,6 +5,7 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountArrearsVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
......@@ -13,6 +14,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
@Slf4j
@RestController
@RequestMapping("/feign/owner")
......@@ -45,9 +48,19 @@ public class OwnerAccountFeignController {
return Result.ok(ownerAccountService.accountInfo(userNo));
}
@ApiOperation(value = "查询用户预付运费和保证金账户", notes = "<br>By:胡宇帆")
@ApiOperation(value = "查询用户借款账户", notes = "<br>By:胡宇帆")
@GetMapping("/loanAccount")
public Result<OwnerLoanAccountVO> loanAccount(@RequestParam Long userNo) {
return Result.ok(ownerAccountService.loanAccount(userNo));
}
@ApiOperation(value = "查询用户预付运费和保证金账户", notes = "<br>By:胡宇帆")
@GetMapping("/accountArrearsInfo")
public Result<OwnerAccountArrearsVO> accountArrearsInfo(@RequestParam(value = "userNo") Long userNo,
@RequestParam(value = "prepaidArrearsOrder") BigDecimal prepaidArrearsOrder,
@RequestParam(value = "marginArrearsOrder") BigDecimal marginArrearsOrder
) {
return Result.ok(ownerAccountService.accountArrearsInfo(userNo, prepaidArrearsOrder, marginArrearsOrder));
}
}
package com.clx.performance.controller.feign;
import com.clx.open.sdk.request.action.GetOrderBreakContractOwnerRuleFileAction;
import com.clx.open.sdk.request.action.GetOwnerAccountInfoAction;
import com.clx.open.sdk.request.dto.OwnerCancelResidueWeightDTO;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.breakcontract.BreakContractOwnerRuleService;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleFileVO;
import com.msl.common.result.Result;
import com.msl.user.utils.TokenUtil;
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.*;
import java.math.BigDecimal;
@Slf4j
@RestController
@RequestMapping("/feign/sdk")
@Validated
@Api(tags = "对外sdk Feign")
@AllArgsConstructor
public class PerformanceSdkFeignController {
private final OrderCancelService orderCancelService;
private final OrderGoodsService orderGoodsService;
private final OwnerAccountService ownerAccountService;
private final BreakContractOwnerRuleService breakContractOwnerRuleService;
@ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/ownCancelOrderPre")
public Result<Integer> ownCancelOrderPre(@RequestBody OrderCancelParam param) {
log.info("取消订单参数:{}", param);
return Result.ok(orderCancelService.ownerCancelOrderPre(param));
}
@ApiOperation(value = "获取当前订单可取消吨数", notes = "<br>By:胡宇帆")
@GetMapping("/orderCancelResidueWeight")
public Result<OwnerCancelResidueWeightDTO> orderCancelResidueWeight(@RequestParam(value = "orderNo") String orderNo, @RequestParam(value = "optionType") String optionType) {
log.info("当前订单可取消吨数参数:{}", TokenUtil.getLoginUserInfo());
OwnerCancelResidueWeightDTO dto = new OwnerCancelResidueWeightDTO();
dto.setWeight(orderGoodsService.orderCancelResidueWeight(orderNo, optionType).toString());
return Result.ok(dto);
}
@ApiOperation(value = "获取当前用户所有账户信息", notes = "<br>By:胡宇帆")
@GetMapping("/accountAllInfo")
public Result<OwnerAccountAllVO> accountAllInfo(@RequestParam Long userNo) {
return Result.ok(ownerAccountService.accountAllInfo(userNo));
}
@ApiOperation(value = "查询规则文档信息", notes = "<br>By:艾庆国")
@PostMapping("/getOwnerRuleFile")
Result<BreakContractOwnerRuleFileVO> getOwnerRuleFile(@RequestBody GetOrderBreakContractOwnerRuleFileAction action){
return Result.ok(breakContractOwnerRuleService.getRuleFile(action.getId()));
}
}
......@@ -4,6 +4,7 @@ import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -44,4 +45,12 @@ public class TruckFeignController {
return Result.ok(goodsOrderTruckRecordComponent.getPrivateTruckList(orderGoodsNo,userNo));
}
@ApiOperation(value = "获取车队运营派发的公开单车车辆列表", notes = "<br>By:刘海泉")
@GetMapping({"/getFleetPublicTruckList"})
Result<Set<String>> getFleetPublicTruckList(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo){
return Result.ok(goodsOrderTruckRecordComponent.getFleetPublicTruckList(orderGoodsNo));
}
}
package com.clx.performance.controller.pc.trace;
import com.clx.performance.param.pc.trace.QueryTraceParam;
import com.clx.performance.service.trace.TraceMonitorService;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.vo.pc.trace.OrderChildTraceVO;
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.*;
import javax.validation.constraints.NotBlank;
/**
* @ClassName TraceController
* @Description
* @Author kavin
* @Date 2024/5/13 17:54
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping("/pc/carrier/trace/monitor")
@Validated
@Api(tags = "PC-承运轨迹监控")
@AllArgsConstructor
public class TraceController{
private final TraceMonitorService traceMonitorService;
@ApiOperation(value = "运单轨迹监控", notes = "<br>By:刘海泉")
@PostMapping("/getOrderChildTrace")
public Result<OrderChildTraceVO> getOrderChildTrace(@RequestBody @Validated QueryTraceParam param) {
return Result.ok(traceMonitorService.getOrderChildTrace(param));
}
@ApiOperation(value = "车辆轨迹监控", notes = "<br>By:刘海泉")
@PostMapping("/getTruckTrace")
public Result<OrderChildTraceVO> getTruckTrace(@RequestBody @Validated QueryTraceParam param) {
return Result.ok(traceMonitorService.getTruckTrace(param));
}
}
\ No newline at end of file
......@@ -27,14 +27,14 @@ public class TempBankController {
private NbBankService bankService;
@ApiOperation(value = "转账支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/orderTransferPay", method = RequestMethod.POST)
// @RequestMapping(value = "/orderTransferPay", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> directBankTransferOrder() {
return Result.ok(bankService.orderTransferPay(1));
}
@ApiOperation(value = "订单支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/orderDirectPay", method = RequestMethod.POST)
// @RequestMapping(value = "/orderDirectPay", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> orderDirectPay() {
// return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000076809", "黑玫瑰"));
......@@ -43,7 +43,7 @@ public class TempBankController {
}
@ApiOperation(value = "订单支付1", notes = "<br>By:艾庆国")
@RequestMapping(value = "/orderDirectPay1", method = RequestMethod.POST)
// @RequestMapping(value = "/orderDirectPay1", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> orderDirectPay1(String payAcctNo, String payAcctNm) {
// return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000076809", "黑玫瑰"));
......@@ -52,28 +52,28 @@ public class TempBankController {
}
@ApiOperation(value = "查询", notes = "<br>By:艾庆国")
@RequestMapping(value = "/getResult", method = RequestMethod.POST)
// @RequestMapping(value = "/getResult", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> getResult(String merSeqNo) {
return Result.ok(bankService.getResult(merSeqNo));
}
@ApiOperation(value = "调账", notes = "<br>By:艾庆国")
@RequestMapping(value = "/adjust", method = RequestMethod.POST)
// @RequestMapping(value = "/adjust", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> adjust(String orgMerSeqNo, Integer amount) {
return Result.ok(bankService.adjust(orgMerSeqNo,amount));
}
@ApiOperation(value = "退款", notes = "<br>By:艾庆国")
@RequestMapping(value = "/refund", method = RequestMethod.POST)
// @RequestMapping(value = "/refund", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> refund(Integer type, String orgMerSeqNo, Integer amount, String orgTransSeqNo) {
return Result.ok(bankService.refund(type,orgMerSeqNo,amount,orgTransSeqNo));
}
@ApiOperation(value = "回调", notes = "<br>By:艾庆国")
@RequestMapping(value = "/notify", method = RequestMethod.POST)
// @RequestMapping(value = "/notify", method = RequestMethod.POST)
public Result notify(NbBankOrderResultVO param) {
bankService.orderPayCallback(param.getMerSeqNo(), param.getTransSeqNo(),
param.getAmount(), param.getAmount(), param.getStatus(), param.getSignNo());
......
package com.clx.performance.controller.temp;
import com.clx.performance.component.ThirdComponent;
import com.clx.open.sdk.callback.message.OrderChildSyncMessage;
import com.clx.performance.extranal.transport.TransportService;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.param.feign.transport.OrderChildPaySyncParam;
import com.clx.performance.param.feign.transport.OwnerSettlementSyncParam;
import com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam;
import com.clx.performance.listener.OrderChildDtsListener;
import com.clx.performance.service.TempService;
import com.clx.performance.service.child.FeignOrderChildService;
import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
import com.msl.common.dto.HttpDTO;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
......@@ -39,12 +35,17 @@ public class TempController {
@Autowired
private TransportFeignService transportFeignService;
@Autowired
private OrderChildDtsListener orderChildDtsListener;
@ApiOperation(value = "test", notes = "<br>By:艾庆国")
@RequestMapping(value = "/test", method = RequestMethod.GET)
public Result test() {
OrderChildSyncMessage message = new OrderChildSyncMessage();
message.setId(1);
orderChildDtsListener.thirdpartySync(message);
return Result.ok();
}
......@@ -67,16 +68,16 @@ public class TempController {
// return Result.ok();
// }
@ApiOperation(value = "测试支付划账 (临时接口)", notes = "<br>By:胡宁宁")
@RequestMapping(value = "/paymentTest", method = RequestMethod.GET)
public Result<Void> paymentTest(@RequestParam("fromUser") @NotBlank(message = "扣款方") String fromUser,
@RequestParam("toUser") @NotBlank(message = "收款方") String toUser,
@RequestParam("figure") @NotBlank(message = "金额") String figure) {
tempService.paymentTest(fromUser,toUser,figure);
return Result.ok();
}
// @ApiOperation(value = "测试支付划账 (临时接口)", notes = "<br>By:胡宁宁")
// @RequestMapping(value = "/paymentTest", method = RequestMethod.GET)
// public Result<Void> paymentTest(@RequestParam("fromUser") @NotBlank(message = "扣款方") String fromUser,
// @RequestParam("toUser") @NotBlank(message = "收款方") String toUser,
// @RequestParam("figure") @NotBlank(message = "金额") String figure) {
//
// tempService.paymentTest(fromUser,toUser,figure);
//
// return Result.ok();
// }
// @ApiOperation(value = "承运同步网络货运 (临时接口)", notes = "<br>By:艾庆国")
......
package com.clx.performance.controller.temp;
import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.vo.pc.trace.DriverTraceVO;
import com.clx.performance.vo.pc.trace.DriverTruckTraceVO;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
/**
* @Author: aiqingguo
* @Description: 临时接口
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/temp/trace")
public class TempTraceController {
@Autowired
private TruckTraceService truckTraceService;
@ApiOperation(value = "车辆轨迹同步", notes = "<br>By:艾庆国")
@PostMapping("/truckTraceSync")
public Result truckTraceSync(@RequestBody TruckTraceAddParam param) {
truckTraceService.truckTraceSave(param);
return Result.ok();
}
@ApiOperation(value = "查询车辆轨迹", notes = "<br>By:艾庆国")
@PostMapping("/listTruckTraceByTime")
public Result<List<DriverTruckTraceVO>> listTruckTraceByTime(String truckNo, String beginTime, String endTime) {
return Result.ok(truckTraceService.listTruckTraceByTime(truckNo,beginTime,endTime));
}
@ApiOperation(value = "司机轨迹同步", notes = "<br>By:艾庆国")
@PostMapping("/driverTraceSync")
public Result driverTraceSync(@RequestBody DriverTraceAddParam param) {
truckTraceService.driverTraceSave(param);
return Result.ok();
}
@ApiOperation(value = "查询司机轨迹", notes = "<br>By:艾庆国")
@PostMapping("/listDriverTraceByTime")
public Result<List<DriverTraceVO>> listDriverTraceByTime(Long userNo, String beginTime, String endTime) {
return Result.ok(truckTraceService.listDriverTraceByTime(userNo,beginTime,endTime));
}
@ApiOperation(value = "查询车辆5分钟内的最新位置", notes = "<br>By:刘海泉")
@PostMapping("/getTruckPosition")
public Result<BigDecimal[]> getTruckPosition(String truckNo) {
return Result.ok(truckTraceService.getCurrentTruckPosition(truckNo));
}
@ApiOperation(value = "批量保存车辆轨迹信息", notes = "<br>By:刘海泉")
@GetMapping("/saveTruckTrace")
public Result<BigDecimal[]> saveTruckTrace(@Param("truckNo") @NotBlank(message = "车牌号不能为空") String truckNo,
@Param("size") @NotNull(message = "大小字段不能为空") Integer size,String gpsTime) {
truckTraceService.saveTruckTrace(truckNo,size,gpsTime);
return Result.ok();
}
}
package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
......@@ -41,7 +42,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void updateOrderGoodsWeightResidueAndAlreadyAndStatus(Integer id, BigDecimal alreadyTransportWeight,BigDecimal residueTransportWeight,Integer orderGoodsStatus);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam,List<String> orderGoodsNoList);
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList);
......@@ -97,4 +98,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(AppGoodsOrderSearchParam param);
void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight);
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
}
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderGoodsFleetOpenTruckMapper;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.msl.common.dao.BaseDao;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderGoodsFleetOpenTruckDao extends BaseDao<OrderGoodsFleetOpenTruckMapper, OrderGoodsFleetOpenTruck, Integer> {
}
package com.clx.performance.dao;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.base.Optional;
......@@ -61,4 +62,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void updateTruckBindExpire(List<Integer> ids);
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList);
}
......@@ -7,6 +7,7 @@ import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.pc.GoodsOrderMapParam;
......@@ -85,9 +86,9 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
}
@Override
public IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam param) {
public IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam param,List<String> orderGoodsNoList) {
Page<OrderGoodsAPPVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.openOrderPageGoodsList(page);
return baseMapper.openOrderPageGoodsList(page,orderGoodsNoList);
}
@Override
......@@ -269,4 +270,9 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
.set(OrderGoods::getResidueTransportWeight, residueWeight)
);
}
@Override
public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() {
return baseMapper.queryProcessFleetOpenTruckList();
}
}
package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderGoodsFleetOpenTruckDao;
import com.clx.performance.mapper.OrderGoodsFleetOpenTruckMapper;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Repository
public class OrderGoodsFleetOpenTruckDaoImpl extends BaseDaoImpl<OrderGoodsFleetOpenTruckMapper, OrderGoodsFleetOpenTruck, Integer> implements OrderGoodsFleetOpenTruckDao {
}
......@@ -3,6 +3,7 @@ package com.clx.performance.dao.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
......@@ -208,4 +209,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
.set(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode())
);
}
@Override
public List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList) {
return baseMapper.queryOrderGoodsTruckNum(fleetNoList);
}
}
......@@ -39,6 +39,7 @@ public class BreakContractOwnerRecordDaoImpl extends BaseDaoImpl<BreakContractOw
LambdaQueryWrapper<BreakContractOwnerRecord> query = new LambdaQueryWrapper<>();
query.eq(StringUtils.isNotBlank(param.getOrderNo()),BreakContractOwnerRecord :: getOrderNo,param.getOrderNo());
query.eq(Objects.nonNull(param.getOwnerUserNo()),BreakContractOwnerRecord :: getOwnerUserNo,param.getOwnerUserNo());
query.notIn(Objects.nonNull(param.getOwnerUserNo()),BreakContractOwnerRecord :: getOrderSource,3);
query.eq(Objects.nonNull(param.getBreakContractPartyType()),BreakContractOwnerRecord :: getBreakContractPartyType,param.getBreakContractPartyType());
query.eq(Objects.nonNull(param.getPayStatus()),BreakContractOwnerRecord :: getPayStatus,param.getPayStatus());
if(Objects.equals(param.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())){
......
package com.clx.performance.dto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderCancelDTO {
private Integer status;
private List<String> childNoList;
}
package com.clx.performance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName OrderGoodsBindTruckNumDTO
* @Description
* @Author kavin
* @Date 2024/6/3 11:11
* @Version 1.0
*/
@Getter
@Setter
public class OrderGoodsBindTruckNumDTO {
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@ApiModelProperty("车辆数")
private Integer truckNum;
}
......@@ -14,19 +14,19 @@ import java.math.BigDecimal;
*/
public class WalletResidueDTO {
//余额
@ApiModelProperty(value = "余额", dataType = "double", example = "11.10")
private Long residue;
//冻结的资金
@ApiModelProperty(value = "冻结的资金", dataType = "double", example = "11.10")
private Long frozen;
//保证金
@ApiModelProperty(value = "保证金", dataType = "double", example = "11.10")
private Double deposit;
//状态0锁定1正常2异常
@ApiModelProperty(value = "状态0锁定1正常2异常", dataType = "int", example = "1")
private Integer status;
//是否设置交易密码0没有1有
@ApiModelProperty(value = "是否设置交易密码0没有1有", dataType = "String", example = "1")
private String pwd;
......@@ -56,7 +56,7 @@ public class WalletResidueDTO {
}
@JsonGetter(value="frozen")
public BigDecimal frozenFormat() {
return new BigDecimal(new Double(this.frozen)/100);
return BigDecimal.valueOf(new Double(this.frozen)/100);
}
@JsonGetter(value="residue")
public Double residueFormat() {
......@@ -64,7 +64,7 @@ public class WalletResidueDTO {
}
@JsonGetter(value="deposit")
public Double depositFormat() {
return new Double(this.deposit)/100;
return this.deposit/100;
}
public Double getDeposit() {
......
......@@ -38,5 +38,91 @@ public class TruckLocationDTO {
}
public String getTruckNo() {
return truckNo;
}
public void setTruckNo(String truckNo) {
this.truckNo = truckNo;
}
public BigDecimal getAngle() {
return angle;
}
public void setAngle(BigDecimal angle) {
this.angle = angle;
}
public BigDecimal getSpeed() {
return speed;
}
public void setSpeed(BigDecimal speed) {
this.speed = speed;
}
public BigDecimal[] getLocation() {
return location;
}
public void setLocation(BigDecimal[] location) {
this.location = location;
}
public String getGpsTime() {
return gpsTime;
}
public void setGpsTime(String gpsTime) {
this.gpsTime = gpsTime;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getModifiedTime() {
return modifiedTime;
}
public void setModifiedTime(String modifiedTime) {
this.modifiedTime = modifiedTime;
}
}
package com.clx.performance.encryption.oldmsl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.bouncycastle.util.encoders.Base64;
import javax.crypto.Cipher;
......@@ -18,6 +20,7 @@ import java.util.Map;
* @date 2017年4月13日
* @description
*/
@Slf4j
public class RSACoder {
public static final String KEY_ALGORITHM = "RSA";
public static final String SIGNATURE_ALGORITHM = "MD5withRSA";
......@@ -67,7 +70,7 @@ public class RSACoder {
byte[] dataBytes = Base64.encode(signature.sign());
ret = new String(dataBytes);
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return ret;
}
......@@ -118,7 +121,7 @@ public class RSACoder {
// 验证签名是否正常
ret = signature.verify(Base64.decode(sign));
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return ret;
}
......@@ -181,7 +184,7 @@ public class RSACoder {
cipher.init(Cipher.DECRYPT_MODE, privateKey);
ret = cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return ret;
}
......@@ -259,7 +262,7 @@ public class RSACoder {
cipher.init(Cipher.DECRYPT_MODE, publicKey);
ret = cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return ret;
}
......@@ -321,7 +324,7 @@ public class RSACoder {
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
ret = cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return ret;
}
......@@ -398,7 +401,7 @@ public class RSACoder {
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
ret = cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
return ret;
}
......
package com.clx.performance.esplus.mapper;
import com.clx.performance.esplus.model.DriverTraceESPlus;
import org.dromara.easyes.core.kernel.BaseEsMapper;
public interface DriverTraceESPlusMapper extends BaseEsMapper<DriverTraceESPlus> {
}
\ No newline at end of file
package com.clx.performance.esplus.mapper;
import com.clx.performance.esplus.model.TruckTraceESPlus;
import org.dromara.easyes.core.kernel.BaseEsMapper;
public interface TruckTraceESPlusMapper extends BaseEsMapper<TruckTraceESPlus> {
}
\ No newline at end of file
package com.clx.performance.esplus.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
import java.math.BigDecimal;
@Data
@IndexName("clx_trace_driver_trace_index1")
public class DriverTraceESPlus {
@IndexId(type= IdType.UUID)
private String id;
@ApiModelProperty("用户编号")
private Long userNo;
@ApiModelProperty("1-正常上传,2-离线上传")
private Integer dataType;
@IndexField(fieldType = FieldType.GEO_POINT)
private BigDecimal[] location; //位置
@ApiModelProperty("速度")
private BigDecimal speed;
@IndexField(fieldType = FieldType.DATE)
private String positionTime;
@IndexField(fieldType = FieldType.DATE)
private String createTime;
@IndexField(fieldType = FieldType.DATE)
private String modifiedTime;
}
\ No newline at end of file
package com.clx.performance.esplus.model;
import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
import java.math.BigDecimal;
@Data
@IndexName(value = "clx_truck_trace")
public class TruckTraceESPlus {
@IndexId(type= IdType.UUID)
private String id;
@IndexField(fieldType = FieldType.KEYWORD)
private String truckNo; //车辆编号
private BigDecimal angle; //agl
private BigDecimal speed; //速度
private BigDecimal mileage; //里程
private BigDecimal height; //海拔
private BigDecimal[] location; //位置
@IndexField(fieldType = FieldType.DATE)
private String gpsTime; //时间
private String createTime;
}
\ No newline at end of file
......@@ -46,7 +46,7 @@ public class NetworkDriverAccountSyncJob {
param.setMobile(vo.getMobile());
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
} catch (Exception e) {
throw new RuntimeException(e);
}
networkDriverAccountService.createNetworkDriverAccount(param);
......
......@@ -28,6 +28,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
......@@ -62,6 +63,11 @@ public class OrderChildSyncTransportInvoiceExceptionJob {
for (OrderChildSyncTransportInvoiceRecord record : recordList) {
log.info("orderChildSyncTransportInvoiceExceptionJob执行:{}", JSONUtil.parse(record));
if (record.getCreateTime().plusMinutes(10).isBefore(LocalDateTime.now())) {
log.info("当前记录运单号:{},生成不足10分钟,先不执行", record.getChildNo());
continue;
}
String data = transportFeignService.getRiskStatus(ThirdOrderChildRiskStatusParam.builder().childNo(record.getChildNo()).build()).getData();
String decrypt = ThirdComponent.decrypt(data);
Result result = JSONUtil.toBean(decrypt, Result.class);
......
......@@ -38,7 +38,7 @@ public class OrderNoGenerateJob implements InitializingBean {
* 提前生成订单号
*/
@XxlJob("generateOrderNo")
public void generateOrderNo()throws InterruptedException {
public void generateOrderNo(){
LocalDateTime today = LocalDateTime.now();
//检验今天的订单池有没有,没有就生成一套
String todayKey = RedisConstants.CARRIER_ORDER_NUM_POOL_KEY.replace("{date}", today.format(DateTimeFormatter.BASIC_ISO_DATE));
......@@ -94,7 +94,7 @@ public class OrderNoGenerateJob implements InitializingBean {
try {
jsonTemplate.opsForList().leftPushAll(key, data.subList(i, j));
} catch (Exception e){
e.printStackTrace();
log.error(e.getMessage());
continue;
}
}
......@@ -150,15 +150,15 @@ public class OrderNoGenerateJob implements InitializingBean {
*/
@Override
public void afterPropertiesSet() throws Exception {
public void afterPropertiesSet(){
//初始化redis中的订单池
executor.execute(new Runnable() {
@Override
public void run() {
try {
generateOrderNo();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
log.error(e.getMessage());
}
}
});
......
package com.clx.performance.job.trace;
import com.clx.performance.service.trace.TruckTraceMqService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.user.feign.UserClxFeign;
import com.msl.common.job.JobLog;
import com.msl.common.result.Result;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
public class PlatTruckTraceJob {
private final UserClxFeign userClxFeign;
private final TruckTraceMqService truckTraceMqService;
/**
* 车辆轨迹同步
*/
@XxlJob("platTruckTraceSync")
public void platTruckTraceSync() {
try {
Result<List<String>> result = userClxFeign.getPlatformTruckList();
if(result.succeed()){
log.info("平台车辆轨迹开始同步, size:{}", result.getData().size());
for (String truckNo : result.getData()) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = now.minusSeconds(600);
// 发送mq (同步车辆轨迹)
truckTraceMqService.truckTracSync( truckNo, LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(now));
}
log.info("平台车辆轨迹结束同步================");
}
} catch (Exception e) {
log.warn("平台车辆轨迹同步失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("平台车辆轨迹同步失败,异常原因=====================", e);
}
}
}
package com.clx.performance.listener;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.OrderChildLastOneMessage;
import com.clx.open.sdk.callback.message.OrderChildMessage;
import com.clx.open.sdk.callback.message.OrderChildSyncMessage;
import com.clx.open.sdk.enums.ResultStatusEnum;
import com.clx.order.enums.OrderEnum;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.config.MslAppConfig;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.event.OrderChildCancelEvent;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.LastTruckService;
import com.clx.performance.struct.OrderChildStruct;
import com.clx.user.vo.feign.FeignDriverTruckModelVo;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.result.Result;
......@@ -27,7 +29,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
......@@ -38,11 +39,12 @@ import java.util.Optional;
@Component
@AllArgsConstructor
public class OrderChildDtsListener {
private final MslAppConfig mslAppConfig;
private final OrderFeign orderFeign;
private final LastTruckService lastTruckService;
private final DriverService driverService;
private final ApplicationEventPublisher applicationEventPublisher;
private final ThirdAppConfig thirdAppConfig;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE)
......@@ -56,6 +58,8 @@ public class OrderChildDtsListener {
OrderChildMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new OrderChildMessage());
OrderChildMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new OrderChildMessage());
thirdpartySync(DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new OrderChildSyncMessage()));
if(Objects.equals(DtsOperationTypeEnum.INSERT.getCode(),dataTransportDTO.getOperationType().getCode())){
//同步after数据
log.info("新增:{}",after);
......@@ -93,7 +97,7 @@ public class OrderChildDtsListener {
return;
}
//同步交易平台的运单
if(Objects.equals(orderInfoFeign.getOrderSource(), SyncPlatformEnum.TRADE_PLATFORM.getCode())){
if(Objects.equals(orderInfoFeign.getOrderSource(), SyncPlatformEnum.Source.TRADE_PLATFORM.getCode())){
String truckModel = after.getTruckModel();
if(StringUtils.isNotBlank(truckModel)){
......@@ -109,12 +113,37 @@ public class OrderChildDtsListener {
after.setStatus(com.clx.open.sdk.enums.OrderChildEnum.Status.COMMON_CANCEL.getCode());
}
after.setLastFlag(ResultStatusEnum.NO.getCode());
OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result<?> result = client.encryptPost(JSON.toJSONString(after),after.topic());
String data = JSON.toJSONString(after);
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(orderInfoFeign.getOrderSource().toString());
Result<?> result = openCallBackClient.encryptPost(data,after.topic());
log.info("运单信息同步,运单编号:{},响应结果:{}",after.getChildNo(),JSON.toJSONString(result));
syncLastTruck(orderInfoFeign,after);
return;
}
if (Objects.equals(orderInfoFeign.getOrderSource(), SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode())) {
if(Objects.equals(com.clx.open.sdk.enums.OrderChildEnum.Status.COMMON_CANCEL.getCode(),after.getStatus()) ||
(after.getStatus() >= OrderChildEnum.Status.ARRIVE_RECEIVE.getCode() && after.getStatus() <= OrderChildEnum.Status.COMPLETE.getCode())){
OrderChild child;
if(Objects.equals(orderInfoFeign.getOrderStatus(), OrderEnum.Status.COMPLETED.getCode()) ||
Objects.equals(orderInfoFeign.getOrderStatus(), OrderEnum.Status.SUCCESS.getCode())) { //订单变成已完成 || 已完结
OrderEnum.Status byCode = OrderEnum.Status.getByCode(orderInfoFeign.getOrderStatus());
log.info("订单号:{},运单号:{},订单状态:{},开始查询最后一车运单===========" ,orderInfoFeign.getOrderNo(),after.getChildNo(),
Objects.nonNull(byCode)?byCode.getName():"未知状态");
child = lastTruckService.getOrderCompleteLastTruck(after.getOrderNo());
}else{ // 订单除 已完成 || 已完结 外的其他状态
child = lastTruckService.getLastTruckChild(after.getOrderNo());
}
if (Objects.nonNull(child)) {
log.info("开始同步新货主客户端最后一车的运单,运单编号:{}", child.getChildNo());
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
OrderChildLastOneMessage message = new OrderChildLastOneMessage();
message.setChildNo(child.getChildNo());
Result<?> result = openCallBackClient.encryptPost(JSONUtil.parse(message).toString(), message.topic());
log.info("结束同步新货主客户端最后一车的运单,运单编号:{},响应结果:{}", child.getChildNo(), JSONUtil.parse(result));
}
}
}
}
......@@ -135,10 +164,39 @@ public class OrderChildDtsListener {
if(Objects.nonNull(child)){
lastTruckService.syncLastTruckChild(child);
}
}
}
/**
* 第三方同步
*/
public void thirdpartySync(OrderChildSyncMessage message){
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(message.getOrderNo());
if (orderInfoFeign == null) {
return;
}
// 同步新货主客户端的运单
if(!Objects.equals(orderInfoFeign.getOrderSource(), SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode())){
return;
}
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("运单同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("运单同步成功:{}", message.getId());
}else{
log.info("运单同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
......@@ -73,7 +73,8 @@ public class OrderGoodsDtsListener {
orderGoodsLogService.saveLog(after.getOrderGoodsNo(), 0L, "系统", OrderGoodsLogsEnum.Type.SYSTEM_RELEASE.getName(),
String.format("系统自动释放:%s吨", after.getResidueTransportWeight()));
//释放定向单(非自由车辆)对应的定向车辆
if(Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
if( ( Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
|| Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.FLEET_EXCLUSIVE.getCode()) )
&& !Objects.equals(after.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){
goodsOrderTruckRecordComponent.releaseOrderGoodsDriverAndTruck(after.getOrderGoodsNo());
}
......
......@@ -7,6 +7,7 @@ import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.IntegralMqService;
import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -47,7 +48,7 @@ public class RabbitOrderGoodsStatusOnHandler {
orderGoods.getSendAddressId(), orderGoods.getSendAddressShorter(),
orderGoods.getReceiveAddressId(), orderGoods.getReceiveAddressShorter());
}catch (Exception e) {
e.printStackTrace();
log.error(ExceptionUtils.getStackTrace(e));
}
......
package com.clx.performance.listener.breakcontract;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.BreakContractOwnerRecordMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Slf4j
@Component
@AllArgsConstructor
public class BreakContractOwnerRecordDtsListener {
private final ThirdAppConfig thirdAppConfig;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_BREAK_CONTRACT_OWNER_RECORD_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.break_contract_owner_record, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
log.info("DTS消息同步开始, database:clx_performance.break_contract_owner_record, 实体:{}", dataTransportDTO);
log.info("操作类型:{}",dataTransportDTO.getOperationType().getCode());
BreakContractOwnerRecordMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new BreakContractOwnerRecordMessage());
BreakContractOwnerRecordMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new BreakContractOwnerRecordMessage());
if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
log.info("删除:{}",before);
return;
}
//违约结算单数据同步
thirdpartySync(after);
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.break_contract_owner_record, error:{}", e.getMessage());
}
}
/**
* 第三方同步
*/
public void thirdpartySync(BreakContractOwnerRecordMessage message){
// 同步货主客户端的违约结算单
if(!Objects.equals(message.getOrderSource(), SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode())){
return;
}
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("违约结算单同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("违约结算单同步成功:{}", message.getId());
}else{
log.info("违约结算单同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.SettlementOwnerDetailMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Slf4j
@Component
@AllArgsConstructor
public class SettlementOwnerDetailDtsListener {
private final ThirdAppConfig thirdAppConfig;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_SETTLEMENT_OWNER_DETAIL_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.settlement_owner_detail, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
log.info("DTS消息同步开始, database:clx_performance.settlement_owner_detail, 实体:{}", dataTransportDTO);
log.info("操作类型:{}",dataTransportDTO.getOperationType().getCode());
SettlementOwnerDetailMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new SettlementOwnerDetailMessage());
SettlementOwnerDetailMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new SettlementOwnerDetailMessage());
if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
log.info("删除:{}",before);
return;
}
//违约结算单数据同步
thirdpartySync(after);
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.settlement_owner_detail, error:{}", e.getMessage());
}
}
/**
* 第三方同步
*/
public void thirdpartySync(SettlementOwnerDetailMessage message){
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("货主运单计费同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("货主运单计费同步成功:{}", message.getId());
}else{
log.info("货主运单计费同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.SettlementOwnerBillMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Component
@AllArgsConstructor
public class SettlementOwnerDtsListener {
private final ThirdAppConfig thirdAppConfig;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_SETTLEMENT_OWNER_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.settlement_owner, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
log.info("DTS消息同步开始, database:clx_performance.settlement_owner, 实体:{}", dataTransportDTO);
log.info("操作类型:{}",dataTransportDTO.getOperationType().getCode());
SettlementOwnerBillMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new SettlementOwnerBillMessage());
SettlementOwnerBillMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new SettlementOwnerBillMessage());
List<SettlementOwnerDetail> settlementOwnerDetails = settlementOwnerDetailDao.getBySettlementNo(after.getSettlementNo());
after.setChildNos(settlementOwnerDetails.stream().map(SettlementOwnerDetail::getChildNo).collect(Collectors.toList()));
if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
log.info("删除:{}",before);
return;
}
//违约结算单数据同步
thirdpartySync(after);
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.settlement_owner_detail, error:{}", e.getMessage());
}
}
/**
* 第三方同步
*/
public void thirdpartySync(SettlementOwnerBillMessage message){
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("货主结算单同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("货主结算单同步成功:{}", message.getId());
}else{
log.info("货主结算单同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
package com.clx.performance.listener.trace;
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.RabbitKeyTraceConstants;
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 10:30:49
* @Version: 1.0
*/
@Slf4j
@Component
public class TraceDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyTraceConstants.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.trace;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyTraceConstants;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.service.trace.TruckTraceMqHandlerService;
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 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public class TruckTraceSyncListener {
@Autowired
private TruckTraceMqHandlerService truckTraceMqHandlerService;
@RabbitListener(queues = RabbitKeyTraceConstants.TRUCK_TRACE_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<TruckTraceSyncMqParam>>(){}).getData());
}catch (Exception e){
log.info("轨迹, 车辆轨迹同步失败",e);
}
}
private void process(TruckTraceSyncMqParam mq){
truckTraceMqHandlerService.truckTracSync(mq);
}
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Mapper
public interface OrderGoodsFleetOpenTruckMapper extends BaseMapper<OrderGoodsFleetOpenTruck> {
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
......@@ -49,7 +50,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "openOrderPageGoodsList")
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(Page<OrderGoodsAPPVO> page);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page, @Param("orderGoodsNoList") List<String> orderGoodsNoList);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "exclusiveOrderPageGoodsList")
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(Page<OrderGoodsAPPVO> page, List<String> param);
......@@ -96,4 +97,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "indexOrderGoodsListSearch")
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(@Param("page")Page<OrderGoodsAPPVO> page, @Param("param")AppGoodsOrderSearchParam param);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "queryProcessFleetOpenTruckList")
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider;
import org.apache.ibatis.annotations.Mapper;
......@@ -32,4 +33,9 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "findUnreleasedTruck")
List<String> findUnreleasedTruck();
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "queryOrderGoodsTruckNum")
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList);
}
\ No newline at end of file
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
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 io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 货单定向绑定车辆表
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("order_goods_fleet_open_truck")
public class OrderGoodsFleetOpenTruck implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("truck_list_json")
@ApiModelProperty("车辆列表")
private String truckListJson;
@TableField("order_no")
@ApiModelProperty("订单编号")
private String orderNo;
@TableField("order_goods_no")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
......@@ -27,6 +27,10 @@ public class BreakContractOwnerRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("order_source")
@ApiModelProperty(value = "订单来源 1:交易平台 2:货主端 3:货主客户端")
private Integer orderSource;
@TableField("trigger_type")
@ApiModelProperty("触发类型:1系统触发 2手动触发")
private Integer triggerType;
......@@ -51,6 +55,10 @@ public class BreakContractOwnerRecord implements HasKey<Integer> {
@ApiModelProperty("货主名称")
private String ownerName;
@TableField("owner_company_no")
@ApiModelProperty("货主用户编号")
private Long ownerCompanyNo;
@TableField("figure")
@ApiModelProperty("违约金(分)")
private BigDecimal figure;
......
......@@ -22,7 +22,7 @@ public interface OrderCancelService {
* 货主取消订单前置(只修改订单状态)
* @param param
*/
void ownerCancelOrderPre(OrderCancelParam param);
Integer ownerCancelOrderPre(OrderCancelParam param);
/**
* 平台取消订单前置(只修改订单状态)
......
......@@ -94,4 +94,6 @@ public interface OrderChildService {
IPage<OwnerOrderChildVO> pageOwnerOrderChildList(PageOwnerOrderChildListParam param);
OrderChildVO getOwnerOrderChildInfo(String childNo);
Integer getOrderChildCheck(OrderChildCheckParam param);
}
......@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
......@@ -99,4 +100,6 @@ public interface OrderGoodsService {
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(AppGoodsOrderSearchParam param);
void batchUpdateResidueWeight(List<OrderGoods> list);
void saveBindTruck(DistributionTruckParam param);
}
......@@ -13,14 +13,12 @@ import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.owner.CreteAccountParam;
import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam;
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.user.param.pc.owner.UpdateOwnerBindCardFeignParam;
import com.clx.user.vo.pc.owner.OwnerBindCardVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
......@@ -104,4 +102,8 @@ public interface OwnerAccountService {
void resetPassword(ResetPasswordParam param);
OwnerLoanAccountVO loanAccount(Long userNo);
OwnerAccountAllVO accountAllInfo(Long userNo);
OwnerAccountArrearsVO accountArrearsInfo(Long userNo, BigDecimal prepaidArrearsOrder, BigDecimal marginArrearsOrder);
}
......@@ -577,7 +577,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
*/
private Integer diffSecond(LocalDateTime startTime, LocalDateTime endTime){
Duration duration = Duration.between(startTime, endTime);
return Long.valueOf(duration.getSeconds()).intValue();
return (int)duration.getSeconds();
}
}
......@@ -89,6 +89,12 @@ public class IntegralRecordServiceImpl implements IntegralRecordService {
return;
}
//超过上限只能增加积分上限
if (sum + integral > ruleInfo.getDriverReportRule().getIntegralLimit()){
integral = ruleInfo.getDriverReportRule().getIntegralLimit() - sum;
}
// 更新积分
statistics.setIntegral(statistics.getIntegral()+integral);
integralStatisticsDao.updateIntegral(statistics);
......
......@@ -77,7 +77,7 @@ public class IntegralStatisticsServiceImpl implements IntegralStatisticsService
private int diffDay(LocalDateTime beginDate, LocalDateTime endDate){
long day = Duration.between(beginDate, endDate).toDays();
return Long.valueOf(day).intValue();
return (int)day;
}
}
......@@ -160,7 +160,6 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
@Override
public IPage<IntegralTruckVO> driverPageTruckRank(DriverPageIntegralTruckRankParam param) {
String time = LocalDateTimeUtils.formatTime(LocalDateTimeUtils.getStartWeek().minusDays(7));
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
......@@ -172,6 +171,7 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
param.setTruckNoList(truckNoList);
param.setTime(LocalDateTimeUtils.formatTime(LocalDateTimeUtils.getStartWeek()));
param.setStatisticsDate(time);
IPage<IntegralTruckVO> page = integralTruckDao.driverPageTruckRank(param);
truckNoList = page.getRecords().stream().map(item -> item.getTruckNo()).collect(Collectors.toList());
......@@ -212,9 +212,7 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
IntegralRecordEnum.Type.REPORT_REFUEL.getValue(),
IntegralRecordEnum.Type.REPORT_TRAFFIC.getValue(),
IntegralRecordEnum.Type.REPORT_SEND_ADDRESS_WAIT.getValue(),
IntegralRecordEnum.Type.REPORT_SEND_ADDRESS_NO_WAIT.getValue(),
IntegralRecordEnum.Type.REPORT_RECEIVE_ADDRESS_WAIT.getValue(),
IntegralRecordEnum.Type.REPORT_RECEIVE_ADDRESS_NO_WAIT.getValue(),
IntegralRecordEnum.Type.REPORT_QUALITY.getValue(),
IntegralRecordEnum.Type.REPORT_ABNORMAL.getValue(),
IntegralRecordEnum.Type.REPORT_SEND_ADDRESS_INFO.getValue(),
......
......@@ -6,7 +6,7 @@ import com.clx.open.sdk.callback.message.OrderChildMessage;
import com.clx.open.sdk.enums.ResultStatusEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.config.MslAppConfig;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.LastTruckService;
......@@ -34,7 +34,7 @@ public class LastTruckServiceImpl implements LastTruckService {
private final OrderFeign orderFeign;
private final OrderChildDao orderChildDao;
private final OrderChildStruct orderChildStruct;
private final MslAppConfig mslAppConfig;
private final ThirdAppConfig thirdAppConfig;
/**
* @Author kavin
* @Description 判断最后一车的逻辑
......@@ -68,13 +68,15 @@ public class LastTruckServiceImpl implements LastTruckService {
**/
@Override
public Result<?> syncLastTruckChild(OrderChild child) {
FeignOrderVO orderInfo = orderFeign.getOrderInfoFeign(child.getOrderNo());
OrderChildMessage message = orderChildStruct.convertMessage(child);
message.setLastFlag(ResultStatusEnum.YES.getCode());
log.info("开始同步最后一车的运单,运单编号:{},运单信息:{}",child.getChildNo(), JSON.toJSONString(message));
OpenCallBackClient client2 = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result<?> result2 = client2.encryptPost(JSON.toJSONString(message),message.topic());
log.info("结束同步最后一车的运单,运单编号:{},响应结果:{}",child.getChildNo(),JSON.toJSONString(result2));
return result2;
String data = JSON.toJSONString(message);
log.info("开始同步最后一车的运单,运单编号:{},运单信息:{}",child.getChildNo(), data);
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(orderInfo.getOrderSource().toString());
Result<?> result = openCallBackClient.encryptPost(data,message.topic());
log.info("结束同步最后一车的运单,运单编号:{},响应结果:{}",child.getChildNo(),JSON.toJSONString(result));
return result;
}
@Override
......
......@@ -17,7 +17,7 @@ import com.clx.performance.component.OwnerAccountComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
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;
......@@ -25,7 +25,6 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam;
import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.app.OrderChildVO;
......@@ -106,7 +105,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
//说明此刻未产生运单
List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())
|| orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -167,7 +167,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())
|| orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
......@@ -327,11 +328,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(OrderCancelParam param) {
public Integer ownerCancelOrderPre(OrderCancelParam param) {
String orderNo = param.getOrderNo();
List<String> childNoList = orderCancelComponent.ownerProcess(param);
param.setChildNoList(childNoList);
OrderCancelDTO orderCancelDTO = orderCancelComponent.ownerProcess(param);
param.setChildNoList(orderCancelDTO.getChildNoList());
OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam();
orderCancelReasonParam.setOrderNo(orderNo);
orderCancelReasonParam.setReason(param.getCancelReason());
......@@ -357,6 +358,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rabbitTemplate.send(
RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_EXCHANGE, RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_ROUTE_KEY, message2
);
return orderCancelDTO.getStatus();
}
// /**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论