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

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

# Conflicts: # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
......@@ -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();
}
}
}
......@@ -35,7 +35,8 @@ public enum ResultEnum implements com.msl.common.enums.ResultEnum {
VEHICLE_WARN_USER_EXIST(1201, "联系方式已存在"),
VEHICLE_WARN_CONFIG_EXIST(1201, "配置名称已存在"),
LINE_WARN_USER_EXIST(1301, "联系方式已存在"),
LINE_WARN_CONFIG_EXIST(1302, "配置名称已存在"),
;
......
package com.clx.performance.enums.linewarn;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum LineWarnConfigEnum {
;
@Getter
@AllArgsConstructor
public enum WarnType {
TAKE(1, "接单预警"),
LOAD(2, "装车预警"),
UNLOAD(3, "卸车预警"),
JAM(4, "拥堵预警 "),
WEATHER(5, "天气预警"),
CHILD_ABNORMAL(6, "运单异常"),
LINE_ABNORMAL(7, "线路异常"),
;
private final Integer code;
private final String msg;
public static Optional<WarnType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(WarnType::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum DeleteStatus {
NO(0, "否"),
YES(1, "是"),
;
private final Integer code;
private final String msg;
public static Optional<DeleteStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(DeleteStatus::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum Status {
ENABLE(1, "启用"),
DISABLE(2, "禁用"),
;
private final Integer code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Status::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.linewarn;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum LineWarnInfoEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
INIT(1, "待处理"),
RESOLVE(2, "已处理"),
SUSPEND(3, "暂停预警"),
;
private final Integer code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Status::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.linewarn;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum LineWarnLogEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
SUSPEND(1, "暂停预警"),
RESOLVE(2, "处理预警"),
;
private final Integer code;
private final String msg;
public static Optional<Type> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Type::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.linewarn;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum LineWarnOrderGoodsEnum {
;
@Getter
@AllArgsConstructor
public enum TraceStatus {
DISABLE(0, "禁止"),
ENABLE(1, "启用"),
;
private final Integer code;
private final String msg;
public static Optional<TraceStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(TraceStatus::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum WarnStatus {
DISABLE(0, "禁止"),
ENABLE(1, "启用"),
;
private final Integer code;
private final String msg;
public static Optional<WarnStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(WarnStatus::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.linewarn;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum LineWarnRangEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
ENABLE(1, "有效"),
DISABLE(2, "无效"),
;
private final Integer code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Status::getMsg).orElse(null);
}
}
}
......@@ -12,6 +12,7 @@ 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;
......@@ -23,6 +24,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;
......@@ -115,4 +117,9 @@ 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);
}
......@@ -41,4 +41,10 @@ public class OrderChildCheckParam extends PositionParam {
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
@ApiModelProperty("可装车时间段开始")
private String loadBeginTime;
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
}
package com.clx.performance.param.mq.linewarn;
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 LineWarnLineWarnMqParam {
private String orderGoodsNo; //货单编号
}
package com.clx.performance.param.mq.linewarn;
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 LineWarnNoticeMqParam {
private Integer infoId; //id
}
package com.clx.performance.param.mq.linewarn;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 新增
* @Date: 2024-5-31 13:45:10
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class LineWarnOrderGoodsAddMqParam {
private String orderGoodsNo; //货单编号
}
package com.clx.performance.param.pc.linewarn;
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 LineWarnConfigAddParam {
@ApiModelProperty(value = "预警方案名称", example = "方案1")
@NotBlank(message = "预警方案名称不能为空")
private String warnName;
@ApiModelProperty(value = "预警类型", example = "1")
@NotNull(message = "预警类型不能为空")
private Integer warnType;
@ApiModelProperty(value = "预警级别", example = "1")
@NotNull(message = "预警级别不能为空")
private Integer warnLevel;
@ApiModelProperty(value = "预警间隔(小时)", example = "1.1")
@NotNull(message = "预警间隔不能为空")
private BigDecimal interval;
@ApiModelProperty(value = "时间占比(%)", example = "1.2")
private BigDecimal timeRatio;
@ApiModelProperty(value = "任务完成占比", example = "1.3")
private BigDecimal taskCompleteRatio;
}
package com.clx.performance.param.pc.linewarn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class LineWarnConfigDeleteUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空")
private Integer id;
}
package com.clx.performance.param.pc.linewarn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class LineWarnConfigStatusUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空")
private Integer id;
@ApiModelProperty(value = "状态:1启用 2禁用", example = "1")
@NotNull(message = "状态不能为空")
private Integer status;
}
package com.clx.performance.param.pc.linewarn;
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 LineWarnConfigUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空")
private Integer id;
@ApiModelProperty(value = "预警方案名称", example = "方案1")
@NotBlank(message = "预警方案名称不能为空")
private String warnName;
@ApiModelProperty(value = "预警类型", example = "1")
@NotNull(message = "预警类型不能为空")
private Integer warnType;
@ApiModelProperty(value = "预警级别: 1一级 2二级 3三级", example = "1")
@NotNull(message = "预警级别不能为空")
private Integer warnLevel;
@ApiModelProperty(value = "预警间隔(小时)", example = "1.1")
@NotNull(message = "预警间隔不能为空")
private BigDecimal interval;
@ApiModelProperty(value = "时间占比(%)", example = "1.2")
private BigDecimal timeRatio;
@ApiModelProperty(value = "任务完成占比", example = "1.3")
private BigDecimal taskCompleteRatio;
}
package com.clx.performance.param.pc.linewarn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class LineWarnInfoResolveUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空")
private Integer id;
}
package com.clx.performance.param.pc.linewarn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class LineWarnInfoSuspendUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空")
private Integer id;
@ApiModelProperty(value = "预警屏蔽结束时间", example = "")
@NotBlank(message = "预警屏蔽结束时间不能为空")
private String warnEndTime;
}
package com.clx.performance.param.pc.linewarn;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class PageLineWarnConfigParam extends PageParam {
@ApiModelProperty(value = "预警方案名称", example = "方案1")
private String warnName;
@ApiModelProperty(value = "预警类型", example = "1")
private Integer warnType;
@ApiModelProperty(value = "预警级别", example = "1")
private Integer warnLevel;
@ApiModelProperty(value = "状态:1启用 2禁用", example = "1")
private Integer status;
@ApiModelProperty(value = "开始时间", example = "")
private String beginTime;
@ApiModelProperty(value = "结束时间", example = "")
private String endTime;
}
package com.clx.performance.param.pc.linewarn;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class PageLineWarnInfoParam extends PageParam {
@ApiModelProperty(value = "预警名称", example = "超时")
private String warnName;
@ApiModelProperty(value = "预警类型: 1到达货源地延误 2前往货源地超时 3到达目的地延误 4前往目的地超时 5停留超时 6敏感区停留 7装车超时 8卸车超时 9运单延误", example = "1")
private Integer warnType;
@ApiModelProperty(value = "预警级别", example = "1")
private Integer warnLevel;
@ApiModelProperty(value = "运单编号", example = "1000")
private String childNo;
@ApiModelProperty(value = "处理状态:1待处理 2已处理 3暂停预警", example = "1")
private Integer status;
@ApiModelProperty(value = "发货地址", example = "北京")
private String sendAddress;
@ApiModelProperty(value = "收货地址", example = "山西")
private String receiveAddress;
@ApiModelProperty(value = "开始时间", example = "")
private String beginTime;
@ApiModelProperty(value = "结束时间", example = "")
private String endTime;
}
......@@ -5,7 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
......@@ -13,7 +13,7 @@ import javax.validation.constraints.NotBlank;
public class VehicleWarnInfoResolveUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotBlank(message = "id不能为空")
@NotNull(message = "id不能为空")
private Integer id;
}
......@@ -6,6 +6,7 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
......@@ -13,12 +14,14 @@ import javax.validation.constraints.NotBlank;
public class VehicleWarnInfoSuspendUpdateParam {
@ApiModelProperty(value = "id", example = "1")
@NotBlank(message = "id不能为空")
@NotNull(message = "id不能为空")
private Integer id;
@ApiModelProperty(value = "预警屏蔽范围:1运单 2货单 3无预警", example = "1")
@NotNull(message = "预警屏蔽范围不能为空")
private Integer warnRang;
@ApiModelProperty(value = "预警屏蔽结束时间", example = "")
@NotBlank(message = "预警屏蔽结束时间不能为空")
private String warnEndTime;
}
......@@ -31,6 +31,8 @@ public class DriverTraceAddParam {
private BigDecimal[] location;
@ApiModelProperty(value = "时间")
private String gpsTime;
@ApiModelProperty(value = "速度", example = "12.34")
private BigDecimal speed;
}
}
......@@ -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
......@@ -210,6 +210,12 @@ public class OrderChildVO {
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
@ApiModelProperty("可装车时间段开始")
private String loadBeginTime;
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
@ApiModelProperty(value = "车辆未开启中交兴路的提示信息")
private String notOpenZJXLMsg;
......
......@@ -138,4 +138,10 @@ public class OrderGoodsVO {
@ApiModelProperty("可卸车时间段结束")
private String unloadEndTime;
@ApiModelProperty("可装车时间段开始")
private String loadBeginTime;
@ApiModelProperty("可装车时间段结束")
private String loadEndTime;
}
\ No newline at end of file
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;
......
package com.clx.performance.vo.pc.linewarn;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
/**
* @Author: aiqinguo
* @Description: 线路预警配置
* @Date: 2024/05/29 10:55:33
* @Version: 1.0
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
public class LineWarnConfigVO {
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "预警方案名称", example = "接单预警")
private String warnName;
@ApiModelProperty(value = "预警类型: 1接单预警 2装车预警 3卸车预警 4拥堵预警 5天气预警 6运单异常 7线路异常", example = "1")
private Integer warnType;
@ApiModelProperty(value = "预警类型: 1接单预警 2装车预警 3卸车预警 4拥堵预警 5天气预警 6运单异常 7线路异常", example = "接单预警")
private String warnTypeMsg;
public String getWarnTypeMsg() {
return LineWarnConfigEnum.WarnType.getMsgByCode(warnType);
}
@ApiModelProperty(value = "预警级别", example = "")
private Integer warnLevel;
@ApiModelProperty(value = "预警级别", example = "一级")
private String warnLevelMsg;
public String getWarnLevelMsg() {
if (warnLevel == 1) {return "一级";}
if (warnLevel == 2) {return "二级";}
if (warnLevel == 3) {return "三级";}
return null;
}
@ApiModelProperty(value = "预警间隔(小时)", example = "1.1")
private BigDecimal interval;
@ApiModelProperty(value = "时间占比(%)", example = "1.2")
private BigDecimal timeRatio;
@ApiModelProperty(value = "任务完成占比", example = "1.3")
private BigDecimal taskCompleteRatio;
@ApiModelProperty(value = "状态:1启用 2禁用", example = "1")
private Integer status;
@ApiModelProperty(value = "状态:1启用 2禁用", example = "启用")
private String statusMsg;
public String getStatusMsg() {
return LineWarnConfigEnum.Status.getMsgByCode(status);
}
@ApiModelProperty(value = "创建人", example = "")
private String createBy;
@ApiModelProperty(value = "创建时间", example = "")
private String createTime;
@ApiModelProperty(value = "修改时间", example = "")
private String modifiedTime;
@Getter
@Setter
@NoArgsConstructor
public static class WarnTypeItem {
@ApiModelProperty(value = "报警类型", example = "1")
private Integer warnType;
@ApiModelProperty(value = "报警类型名称", example = "超时")
private String warnTypeName;
public WarnTypeItem(Integer warnType, String warnTypeName) {
this.warnType = warnType;
this.warnTypeName = warnTypeName;
}
}
}
\ No newline at end of file
package com.clx.performance.vo.pc.linewarn;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* @Author: aiqinguo
* @Description: 车辆预警信息表
* @Date: 2024/04/25 17:09:33
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
public class LineWarnInfoVO {
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "预警id", example = "1")
private Integer warnId;
@ApiModelProperty(value = "预警名称", example = "超时")
private String warnName;
@ApiModelProperty(value = "预警类型: 1到达货源地延误 2前往货源地超时 3到达目的地延误 4前往目的地超时 5停留超时 6敏感区停留 7装车超时 8卸车超时 9运单延误", example = "1")
private Integer warnType;
@ApiModelProperty(value = "预警类型", example = "1")
private String warnTypeMsg;
public String getWarnTypeMsg() {
return LineWarnConfigEnum.WarnType.getMsgByCode(warnType);
}
@ApiModelProperty(value = "预警级别", example = "1")
private Integer warnLevel;
@ApiModelProperty(value = "预警级别", example = "一级")
private String warnLevelMsg;
public String getWarnLevelMsg() {
if (warnLevel == 1) {return "一级";}
if (warnLevel == 2) {return "二级";}
if (warnLevel == 3) {return "三级";}
return null;
}
@ApiModelProperty(value = "货单编号", example = "100000")
private String orderGoodsNo;
@ApiModelProperty(value = "发货地址id", example = "1")
private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "北京")
private String sendAddress;
@ApiModelProperty(value = "收货地址id", example = "2")
private Integer receiveAddressId;
@ApiModelProperty(value = "收货地址", example = "山西")
private String receiveAddress;
@ApiModelProperty(value = "运单状态", example = "1")
private Integer childStatus;
@ApiModelProperty(value = "预警时间", example = "")
private String warnTime;
@ApiModelProperty(value = "预警暂停时间", example = "")
private String suspendTime;
@ApiModelProperty(value = "处理状态:1待处理 2已处理 3暂停预警", example = "1")
private Integer status;
public Integer getStatus() {
if (Objects.equals(status, LineWarnInfoEnum.Status.RESOLVE.getCode())) {return LineWarnInfoEnum.Status.RESOLVE.getCode();}
if (StringUtils.isNotBlank(suspendTime)){
if (LocalDateTimeUtil.parse(suspendTime,"yyyy-MM-dd HH:mm:ss").isBefore(LocalDateTime.now())) {
return LineWarnInfoEnum.Status.INIT.getCode();
} else {
return LineWarnInfoEnum.Status.SUSPEND.getCode();
}
}
return LineWarnInfoEnum.Status.INIT.getCode();
}
@ApiModelProperty(value = "处理状态:1待处理 2已处理 3暂停预警", example = "待处理")
private String statusMsg;
public String getStatusMsg() {
return LineWarnInfoEnum.Status.getMsgByCode(getStatus());
}
@ApiModelProperty(value = "创建人", example = "")
private String createBy;
@ApiModelProperty(value = "创建时间", example = "")
private String createTime;
@ApiModelProperty(value = "修改时间", example = "")
private String modifiedTime;
}
\ No newline at end of file
......@@ -22,6 +22,12 @@ public class DriverTraceVO {
private BigDecimal speed;
@ApiModelProperty(value = "停留时长(min)", example = "12.3")
private BigDecimal stayTime=BigDecimal.ZERO;
@ApiModelProperty(value = "停留开始时间")
private String stayBeginTime;
@ApiModelProperty(value = "停留结束时间")
private String stayEndTime;
@ApiModelProperty(value = "车辆状态:1空车 2重车", example = "1")
private Integer truckStatus;
@ApiModelProperty(value = "时间")
private String createTime;
}
......@@ -26,8 +26,14 @@ public class DriverTruckTraceVO {
private BigDecimal latitude;
@ApiModelProperty(value = "GPS 时间")
private String gpsTime;
@ApiModelProperty(value = "停留开始时间")
private String stayBeginTime;
@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;
@ApiModelProperty(value = "时间")
private String createTime;
}
......@@ -19,8 +19,8 @@ import java.util.List;
@NoArgsConstructor
public class OrderChildTraceVO {
@ApiModelProperty(value = "车辆轨迹列表")
List<DriverTruckTraceVO> truckTraceList;
List<List<DriverTruckTraceVO>> truckTraceList;
@ApiModelProperty(value = "司机轨迹列表")
List<DriverTraceVO> driverTraceList;
List<List<DriverTraceVO>> driverTraceList;
}
\ No newline at end of file
......@@ -21,8 +21,8 @@ import java.util.List;
@NoArgsConstructor
public class VehicleTraceVO {
@ApiModelProperty(value = "车辆轨迹列表")
List<DriverTruckTraceVO> truckTraceList;
List<List<DriverTruckTraceVO>> truckTraceList;
@ApiModelProperty(value = "司机轨迹列表")
List<DriverTraceVO> driverTraceList;
List<List<DriverTraceVO>> driverTraceList;
}
\ No newline at end of file
......@@ -88,7 +88,7 @@ public class VehicleWarnInfoVO {
if (Objects.equals(status, VehicleWarnInfoEnum.Status.RESOLVE.getCode())) {return VehicleWarnInfoEnum.Status.RESOLVE.getCode();}
if (StringUtils.isNotBlank(suspendTime)){
if (LocalDateTimeUtil.parse(suspendTime).isBefore(LocalDateTime.now())) {
if (LocalDateTimeUtil.parse(suspendTime,"yyyy-MM-dd HH:mm:ss").isBefore(LocalDateTime.now())) {
return VehicleWarnInfoEnum.Status.INIT.getCode();
} else {
return VehicleWarnInfoEnum.Status.SUSPEND.getCode();
......
......@@ -40,7 +40,7 @@ public class VehicleWarnUserVO {
@ApiModelProperty(value = "通知配置列表")
private List<WarnTypeItem> warnTypeItemList;
public List<WarnTypeItem> getWarnTypeItemList() {
List<Integer> warnTypeList = JSON.parseArray(warmTypeJson, Integer.class);
List<Integer> warnTypeList = JSON.parseArray(warnTypeJson, Integer.class);
List<WarnTypeItem> list = new ArrayList<>();
for (VehicleWarnConfigEnum.WarnType item : VehicleWarnConfigEnum.WarnType.values()) {
......@@ -56,7 +56,10 @@ public class VehicleWarnUserVO {
@JsonIgnore
@ApiModelProperty(value = "预警配置", example = "", hidden = true)
private String warmTypeJson;
private String warnTypeJson;
@JsonIgnore
@ApiModelProperty(value = "线路预警配置", example = "", hidden = true)
private String lineWarnTypeJson;
@Getter
@Setter
......
package com.clx.performance.config;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
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 RabbitLineWarnConfig {
@Bean
public DirectExchange lineWarnDefaultExchange() {
return new DirectExchange(RabbitKeyLineWarnConstants.DEFAULT_EXCHANGE);
}
@Bean
public Queue lineWarnDefaultDelayQueue() {
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", RabbitKeyLineWarnConstants.DEFAULT_EXCHANGE);
params.put("x-dead-letter-routing-key", RabbitKeyLineWarnConstants.DEFAULT_DEAD_ROUTING_KEY);
return new Queue(RabbitKeyLineWarnConstants.DEFAULT_DELAY_QUEUE, true, false, false, params);
}
@Bean
public Binding lineWarnDefaultDelayQueueBinding() {
return BindingBuilder.bind(lineWarnDefaultDelayQueue()).to(lineWarnDefaultExchange()).with(RabbitKeyLineWarnConstants.DEFAULT_DELAY_ROUTING_KEY);
}
@Bean
public Queue lineWarnDefaultDeadQueue() {
return new Queue(RabbitKeyLineWarnConstants.DEFAULT_DEAD_QUEUE);
}
@Bean
public Binding lineWarnDefaultDeadQueueBinding() {
return BindingBuilder.bind(lineWarnDefaultDeadQueue()).to(lineWarnDefaultExchange()).with(RabbitKeyLineWarnConstants.DEFAULT_DEAD_ROUTING_KEY);
}
/**
* 新增
*/
@Bean
public Queue lineWarnChildAddQueue() {
return new Queue(RabbitKeyLineWarnConstants.ORDER_GOODS_ADD_QUEUE);
}
@Bean
public Binding lineWarnChildAddQueueBinding() {
return BindingBuilder.bind(lineWarnChildAddQueue()).to(lineWarnDefaultExchange()).with(RabbitKeyLineWarnConstants.ORDER_GOODS_ADD_ROUTING_KEY);
}
/**
* 线路预警
*/
@Bean
public Queue lineWarnQueue() {
return new Queue(RabbitKeyLineWarnConstants.LINE_WARN_QUEUE);
}
@Bean
public Binding lineWarnQueueBinding() {
return BindingBuilder.bind(lineWarnQueue()).to(lineWarnDefaultExchange()).with(RabbitKeyLineWarnConstants.LINE_WARN_ROUTING_KEY);
}
/**
* 线路预警通知
*/
@Bean
public Queue lineWarnNoticeQueue() {
return new Queue(RabbitKeyLineWarnConstants.LINE_WARN_NOTICE_QUEUE);
}
@Bean
public Binding lineWarnNoticeQueueBinding() {
return BindingBuilder.bind(lineWarnNoticeQueue()).to(lineWarnDefaultExchange()).with(RabbitKeyLineWarnConstants.LINE_WARN_NOTICE_ROUTING_KEY);
}
}
package com.clx.performance.constant;
/**
* @Author: aiqingguo
* @Description: 线路预警-mq
* @Date: 2023-10-19 15:10:10
* @Version: 1.0
*/
public class RabbitKeyLineWarnConstants {
private static final String PREFIX = "clx-performance.lineWarn.";
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 RabbitKeyLineWarnConstants() {
}
/**
* 缺省交换机
*/
public static final String DEFAULT_EXCHANGE = PREFIX +"default"+EXCHANGE;
/**
* 缺省延迟队列
*/
public static final String DEFAULT_DELAY_QUEUE = PREFIX +"default"+DELAY_QUEUE;
public static final String DEFAULT_DELAY_ROUTING_KEY = PREFIX +"default"+DELAY_ROUTING_KEY;
public static final String DEFAULT_DEAD_QUEUE = PREFIX +"default"+DEAD_QUEUE;
public static final String DEFAULT_DEAD_ROUTING_KEY = PREFIX +"default"+DEAD_ROUTING_KEY;
/**
* 新增
*/
public static final String ORDER_GOODS_ADD_QUEUE = PREFIX +"orderGoods.add"+QUEUE;
public static final String ORDER_GOODS_ADD_ROUTING_KEY = PREFIX +"orderGoods.add"+QUEUE_ROUTING_KEY;
/**
* 车辆预警
*/
public static final String LINE_WARN_QUEUE = PREFIX +"line.warn"+QUEUE;
public static final String LINE_WARN_ROUTING_KEY = PREFIX +"line.warn"+QUEUE_ROUTING_KEY;
/**
* 线路预警通知
*/
public static final String LINE_WARN_NOTICE_QUEUE = PREFIX +"lineWarn.notice"+QUEUE;
public static final String LINE_WARN_NOTICE_ROUTING_KEY = PREFIX +"lineWarn.notice"+QUEUE_ROUTING_KEY;
}
......@@ -34,7 +34,7 @@ public class AppDriverOrderChildController {
@ApiOperation(value = "接单判断", notes = "<br>By:胡宇帆")
@PostMapping("/getOrderChildCheck")
public Result<String> getOrderChildCheck(@RequestBody @Validated OrderChildCheckParam param) {
public Result<Integer> getOrderChildCheck(@RequestBody @Validated OrderChildCheckParam param) {
return Result.ok(orderChildService.getOrderChildCheck(param));
}
......
......@@ -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")
......@@ -50,4 +53,14 @@ public class OwnerAccountFeignController {
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.pc.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.param.pc.linewarn.*;
import com.clx.performance.service.linewarn.LineWarnConfigService;
import com.clx.performance.vo.pc.linewarn.LineWarnConfigVO;
import com.msl.common.base.PageData;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Objects;
@Slf4j
@RestController
@Validated
@Api(tags = "线路预警-预警配置")
@RequestMapping(value="/pc/lineWarnConfig")
public class LineWarnConfigController {
@Autowired
private LineWarnConfigService lineWarnConfigService;
@ApiOperation(value = "新增配置", notes = "<br>By:艾庆国")
@PostMapping("/saveConfig")
public Result<Void> saveConfig(@RequestBody @Validated LineWarnConfigAddParam param) {
if (Objects.equals(param.getWarnType(), LineWarnConfigEnum.WarnType.TAKE.getCode())
|| Objects.equals(param.getWarnType(), LineWarnConfigEnum.WarnType.LOAD.getCode())
|| Objects.equals(param.getWarnType(), LineWarnConfigEnum.WarnType.UNLOAD.getCode())
){
if (Objects.isNull(param.getTimeRatio())){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER, "时间占比不能为空");}
if (Objects.isNull(param.getTaskCompleteRatio())){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER, "任务完成占比不能为空");}
}
lineWarnConfigService.saveConfig(param);
return Result.ok();
}
@ApiOperation(value = "更新配置", notes = "<br>By:艾庆国")
@PostMapping("/updateConfig")
public Result<Void> updateConfig(@RequestBody @Validated LineWarnConfigUpdateParam param) {
if (Objects.equals(param.getWarnType(), LineWarnConfigEnum.WarnType.TAKE.getCode())
|| Objects.equals(param.getWarnType(), LineWarnConfigEnum.WarnType.LOAD.getCode())
|| Objects.equals(param.getWarnType(), LineWarnConfigEnum.WarnType.UNLOAD.getCode())
){
if (Objects.isNull(param.getTimeRatio())){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER, "时间占比不能为空");}
if (Objects.isNull(param.getTaskCompleteRatio())){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER, "任务完成占比不能为空");}
}
lineWarnConfigService.updateConfig(param);
return Result.ok();
}
@ApiOperation(value = "更新配置状态", notes = "<br>By:艾庆国")
@PostMapping("/updateStatus")
public Result<Void> updateStatus(@RequestBody @Validated LineWarnConfigStatusUpdateParam param) {
lineWarnConfigService.updateStatus(param);
return Result.ok();
}
@ApiOperation(value = "删除配置", notes = "<br>By:艾庆国")
@PostMapping("/deleteConfig")
public Result<Void> deleteConfig(@RequestBody @Validated LineWarnConfigDeleteUpdateParam param) {
lineWarnConfigService.deleteConfig(param);
return Result.ok();
}
@ApiOperation(value = "获取配置信息",notes = "<br>By:艾庆国")
@GetMapping("/getConfig")
public Result<LineWarnConfigVO> getConfig(@NotNull(message = "id不能为空") @Validated Integer id) {
return Result.ok(lineWarnConfigService.getConfig(id));
}
@ApiOperation(value = "分页搜索配置列表",notes = "<br>By:艾庆国")
@PostMapping("/pageConfig")
public Result<PageData<LineWarnConfigVO>> pageConfig(@RequestBody @Validated PageLineWarnConfigParam param) {
IPage<LineWarnConfigVO> page = lineWarnConfigService.pageConfig(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "预警类型下拉",notes = "<br>By:艾庆国")
@GetMapping("/listWarnType")
public Result<List<LineWarnConfigVO.WarnTypeItem>> listWarnType() {
return Result.ok(lineWarnConfigService.listWarnType());
}
}
package com.clx.performance.controller.pc.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.linewarn.*;
import com.clx.performance.service.linewarn.LineWarnInfoService;
import com.clx.performance.vo.pc.linewarn.LineWarnInfoVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
@Slf4j
@RestController
@Validated
@Api(tags = "线路预警-预警信息")
@RequestMapping(value="/pc/lineWarnInfo")
public class LineWarnInfoController {
@Autowired
private LineWarnInfoService lineWarnInfoService;
@ApiOperation(value = "更新预警暂停", notes = "<br>By:艾庆国")
@PostMapping("/updateSuspend")
public Result<Void> updateSuspend(@RequestBody @Validated LineWarnInfoSuspendUpdateParam param) {
lineWarnInfoService.updateSuspend(param);
return Result.ok();
}
@ApiOperation(value = "更新处理", notes = "<br>By:艾庆国")
@PostMapping("/updateResolve")
public Result<Void> updateConfig(@RequestBody @Validated LineWarnInfoResolveUpdateParam param) {
lineWarnInfoService.updateResolve(param);
return Result.ok();
}
// @ApiOperation(value = "获取轨迹",notes = "<br>By:艾庆国")
// @GetMapping("/getTrace")
// public Result<VehicleTraceVO> getTrace(@NotNull(message = "id不能为空") @Validated Integer id) {
// return Result.ok(lineWarnInfoService.getTrace(id));
// }
@ApiOperation(value = "获取预警信息",notes = "<br>By:艾庆国")
@GetMapping("/getInfo")
public Result<LineWarnInfoVO> getInfo(@NotNull(message = "id不能为空") @Validated Integer id) {
return Result.ok(lineWarnInfoService.getInfo(id));
}
@ApiOperation(value = "分页搜索预警信息列表",notes = "<br>By:艾庆国")
@PostMapping("/pageInfo")
public Result<PageData<LineWarnInfoVO>> pageInfo(@RequestBody @Validated PageLineWarnInfoParam param) {
IPage<LineWarnInfoVO> page = lineWarnInfoService.pageInfo(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.controller.temp;
import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.service.trace.TruckTraceMqHandlerService;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.gd.GdService;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.util.List;
......@@ -31,6 +38,32 @@ public class TempTraceController {
@Autowired
private TruckTraceService truckTraceService;
@Autowired
private GdService gdService;
@Autowired
private TruckTraceMqHandlerService truckTraceMqHandlerService;
@ApiOperation(value = "test", notes = "<br>By:艾庆国")
@PostMapping("/test")
public Result test(String truckNo, String beginTime, String endTime) {
TruckTraceSyncMqParam mq = new TruckTraceSyncMqParam();
mq.setTruckNo(truckNo);
mq.setBeginTime(beginTime);
mq.setEndTime(endTime);
truckTraceMqHandlerService.truckTracSync(mq);
return Result.ok();
}
@ApiOperation(value = "停留时长", notes = "<br>By:艾庆国")
@PostMapping("/getParkTime")
public Result<Integer> getParkTime(String truckNo, Long userNo, String beginTime, String endTime) {
int parkTime = truckTraceService.getParkTime(truckNo, userNo, LocalDateTimeUtils.parseTime(beginTime), LocalDateTimeUtils.parseTime(endTime));
return Result.ok(parkTime);
}
@ApiOperation(value = "车辆轨迹同步", notes = "<br>By:艾庆国")
@PostMapping("/truckTraceSync")
public Result truckTraceSync(@RequestBody TruckTraceAddParam param) {
......@@ -63,4 +96,36 @@ public class TempTraceController {
return Result.ok(truckTraceService.listDriverTraceByTime(userNo,beginTime,endTime));
}
@ApiOperation(value = "线路规划", notes = "<br>By:艾庆国")
@PostMapping("/route")
public Result<List<GdRouteDTO>> route(BigDecimal originLongitude, BigDecimal originLatitude,
BigDecimal destinationLongitude, BigDecimal destinationLatitude) {
List<GdRouteDTO> gdRouteDTOS = gdService.getRoute(originLongitude, originLatitude, destinationLongitude, destinationLatitude);
return Result.ok(gdRouteDTOS);
}
@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();
}
}
......@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
......@@ -28,17 +29,17 @@ public class TempVehicleWarnController {
@ApiOperation(value = "发送预警短信", notes = "<br>By:艾庆国")
@PostMapping("/sendSms")
public Result sendSms(List<String> mobileList, String warnName, String truckNo, String childNo) {
public Result sendSms(String mobile, String warnName, String truckNo, String childNo) {
vehicleWarnMqHandlerService.sendSms(mobileList, warnName, truckNo, childNo);
vehicleWarnMqHandlerService.sendSms(Arrays.asList(mobile), warnName, truckNo, childNo);
return Result.ok();
}
@ApiOperation(value = "发送预警外呼", notes = "<br>By:艾庆国")
@PostMapping("/sendClink")
public Result sendClink(List<String> mobileList, String warnName, String truckNo, String childNo) {
vehicleWarnMqHandlerService.sendClink(mobileList, warnName, truckNo, childNo);
public Result sendClink(String mobile, String warnName, String truckNo, String childNo) {
vehicleWarnMqHandlerService.sendClink(Arrays.asList(mobile), warnName, truckNo, childNo);
return Result.ok();
}
......
......@@ -176,4 +176,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
String beginTime);
MonthInComeAndOrderedVO statisticsTruckMonth(LocalDateTime startTime, LocalDateTime endTime, String truckNo);
List<OrderChild> listByChildNoList(List<String> childNoList);
}
......@@ -25,6 +25,7 @@ import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
......@@ -560,4 +561,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
public MonthInComeAndOrderedVO statisticsTruckMonth(LocalDateTime startTime, LocalDateTime endTime, String truckNo) {
return baseMapper.statisticsTruckMonth(startTime,endTime,truckNo);
}
@Override
public List<OrderChild> listByChildNoList(List<String> childNoList) {
return list(lQrWrapper().in(OrderChild :: getChildNo,childNoList));
}
}
package com.clx.performance.dao.impl.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.linewarn.LineWarnConfigDao;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.mapper.linewarn.LineWarnConfigMapper;
import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.param.pc.linewarn.PageLineWarnConfigParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class LineWarnConfigDaoImpl extends BaseDaoImpl<LineWarnConfigMapper, LineWarnConfig, Integer> implements LineWarnConfigDao {
@Override
public boolean updateConfig(LineWarnConfig item) {
return update(lUdWrapper()
.eq(LineWarnConfig::getId, item.getId())
.set(LineWarnConfig::getWarnName, item.getWarnName())
.set(LineWarnConfig::getWarnType, item.getWarnType())
.set(LineWarnConfig::getWarnLevel, item.getWarnLevel())
.set(LineWarnConfig::getInterval, item.getInterval())
.set(LineWarnConfig::getTimeRatio, item.getTimeRatio())
.set(LineWarnConfig::getTaskCompleteRatio, item.getTaskCompleteRatio())
);
}
@Override
public boolean updateStatus(LineWarnConfig item) {
return update(lUdWrapper()
.eq(LineWarnConfig::getId, item.getId())
.set(LineWarnConfig::getStatus, item.getStatus())
);
}
@Override
public boolean updateDelete(LineWarnConfig item) {
return update(lUdWrapper()
.eq(LineWarnConfig::getId, item.getId())
.set(LineWarnConfig::getDeleteStatus, item.getDeleteStatus())
);
}
@Override
public Optional<LineWarnConfig> findById(Integer id) {
return Optional.of(id)
.map(item -> lQrWrapper()
.eq(LineWarnConfig::getId, id)
.eq(LineWarnConfig::getDeleteStatus, LineWarnConfigEnum.DeleteStatus.NO.getCode())
.last("limit 1")
)
.map(super::getOne);
}
@Override
public Optional<LineWarnConfig> findByName(String name) {
return Optional.of(name)
.map(item -> lQrWrapper()
.eq(LineWarnConfig::getWarnName, name)
.eq(LineWarnConfig::getDeleteStatus, LineWarnConfigEnum.DeleteStatus.NO.getCode())
.last("limit 1")
)
.map(super::getOne);
}
@Override
public List<LineWarnConfig> listByWarnType(Integer warnType) {
return list(lQrWrapper()
.eq(LineWarnConfig::getWarnType, warnType)
.eq(LineWarnConfig::getDeleteStatus, LineWarnConfigEnum.DeleteStatus.NO.getCode())
.eq(LineWarnConfig::getStatus, LineWarnConfigEnum.Status.ENABLE.getCode())
);
}
@Override
public IPage<LineWarnConfig> pageByParam(PageLineWarnConfigParam param) {
Page<LineWarnConfig> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageByParam(page,param);
}
}
package com.clx.performance.dao.impl.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.mapper.linewarn.LineWarnInfoMapper;
import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.param.pc.linewarn.PageLineWarnInfoParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
@Repository
public class LineWarnInfoDaoImpl extends BaseDaoImpl<LineWarnInfoMapper, LineWarnInfo, Integer> implements LineWarnInfoDao {
@Override
public boolean updateStatus(LineWarnInfo item) {
return update(lUdWrapper()
.eq(LineWarnInfo::getId, item.getId())
.set(LineWarnInfo::getStatus, item.getStatus())
);
}
@Override
public boolean batchUpdateStatus(List<Integer> idList, Integer status) {
return update(lUdWrapper()
.in(LineWarnInfo::getId, idList)
.set(LineWarnInfo::getStatus, status)
);
}
@Override
public boolean updateSuspendTime(LineWarnInfo item) {
return update(lUdWrapper()
.eq(LineWarnInfo::getWarnConfigId, item.getWarnConfigId())
.ne(LineWarnInfo::getStatus, LineWarnInfoEnum.Status.RESOLVE.getCode())
.set(LineWarnInfo::getSuspendTime, item.getSuspendTime())
);
}
@Override
public boolean updateWarnTime(LineWarnInfo item) {
return update(lUdWrapper()
.eq(LineWarnInfo::getId, item.getId())
.set(LineWarnInfo::getWarnTime, item.getWarnTime())
);
}
@Override
public boolean updateByConfig(Integer warnConfigId, String warnName, Integer warnLevel) {
return update(lUdWrapper()
.eq(LineWarnInfo::getWarnConfigId, warnConfigId)
.set(LineWarnInfo::getWarnName, warnName)
.set(LineWarnInfo::getWarnLevel, warnLevel)
);
}
@Override
public Optional<LineWarnInfo> findById(Integer id) {
return Optional.of(id)
.map(item -> lQrWrapper()
.eq(LineWarnInfo::getId, id)
.last("limit 1")
)
.map(super::getOne);
}
@Override
public Optional<LineWarnInfo> findByOrderGoodsNoAndWarnConfigId(String orderGoodsNo, Integer warnConfigId) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(LineWarnInfo::getOrderGoodsNo, orderGoodsNo)
.eq(LineWarnInfo::getWarnConfigId, warnConfigId)
.last("limit 1")
)
.map(super::getOne);
}
@Override
public List<LineWarnInfo> listSuspendTimeout() {
return list(lQrWrapper()
.eq(LineWarnInfo::getStatus, LineWarnInfoEnum.Status.SUSPEND.getCode())
.lt(LineWarnInfo::getSuspendTime, LocalDateTime.now())
);
}
@Override
public IPage<LineWarnInfo> pageByParam(PageLineWarnInfoParam param) {
Page<LineWarnInfo> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageByParam(page,param);
}
}
package com.clx.performance.dao.impl.linewarn;
import com.clx.performance.dao.linewarn.LineWarnLogDao;
import com.clx.performance.mapper.linewarn.LineWarnLogMapper;
import com.clx.performance.model.linewarn.LineWarnLog;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
@Repository
public class LineWarnLogDaoImpl extends BaseDaoImpl<LineWarnLogMapper, LineWarnLog, Integer> implements LineWarnLogDao {
}
package com.clx.performance.dao.impl.linewarn;
import com.clx.performance.dao.linewarn.LineWarnOrderGoodsDao;
import com.clx.performance.enums.linewarn.LineWarnOrderGoodsEnum;
import com.clx.performance.mapper.linewarn.LineWarnOrderGoodsMapper;
import com.clx.performance.model.linewarn.LineWarnOrderGoods;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class LineWarnOrderGoodsDaoImpl extends BaseDaoImpl<LineWarnOrderGoodsMapper, LineWarnOrderGoods, Integer> implements LineWarnOrderGoodsDao {
@Override
public Optional<LineWarnOrderGoods> getByOrderGoodsNo(String orderGoodsNo) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(LineWarnOrderGoods::getOrderGoodsNo, orderGoodsNo)
)
.map(super::getOne);
}
@Override
public List<LineWarnOrderGoods> ListOrderGoodsNoOfWarn() {
return list(lQrWrapper().select(LineWarnOrderGoods::getOrderGoodsNo)
.eq(LineWarnOrderGoods::getWarnStatus, LineWarnOrderGoodsEnum.WarnStatus.ENABLE.getCode())
.orderByDesc(LineWarnOrderGoods::getId)
.last("limit 10000")
);
}
}
package com.clx.performance.dao.impl.linewarn;
import com.clx.performance.dao.linewarn.LineWarnRangeDao;
import com.clx.performance.enums.linewarn.LineWarnRangEnum;
import com.clx.performance.mapper.linewarn.LineWarnRangMapper;
import com.clx.performance.model.linewarn.LineWarnRang;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class LineWarnRangeDaoImpl extends BaseDaoImpl<LineWarnRangMapper, LineWarnRang, Integer> implements LineWarnRangeDao {
@Override
public List<LineWarnRang> ListByWarnConfigId(Integer warnConfigId) {
return list(lQrWrapper()
.eq(LineWarnRang::getWarnConfigId, warnConfigId)
.eq(LineWarnRang::getStatus, LineWarnRangEnum.Status.ENABLE.getCode())
.orderByDesc(LineWarnRang::getId)
);
}
@Override
public boolean updateDisable(LineWarnRang item) {
return update(lUdWrapper()
.eq(LineWarnRang::getWarnConfigId, item.getWarnConfigId())
.eq(StringUtils.isNotBlank(item.getOrderGoodsNo()), LineWarnRang::getOrderGoodsNo, item.getOrderGoodsNo())
.set(LineWarnRang::getStatus, LineWarnRangEnum.Status.DISABLE.getCode())
);
}
}
......@@ -15,19 +15,18 @@ public class VehicleWarnChildDaoImpl extends BaseDaoImpl<VehicleWarnChildMapper,
@Override
public boolean updateTraceTime(VehicleWarnChild item) {
public boolean updateWarnStatus(VehicleWarnChild item) {
return update(lUdWrapper()
.eq(VehicleWarnChild::getId, item.getId())
.set(VehicleWarnChild::getTraceStatus, item.getTraceStatus())
.set(VehicleWarnChild::getTraceTime, item.getTraceTime())
.set(VehicleWarnChild::getWarnStatus, item.getWarnStatus())
);
}
@Override
public boolean updateReceiveAddressDistance(VehicleWarnChild item) {
public boolean updateEstimateLoadTime(VehicleWarnChild item) {
return update(lUdWrapper()
.eq(VehicleWarnChild::getId, item.getId())
.set(VehicleWarnChild::getReceiveAddressDistance, item.getReceiveAddressDistance())
.set(VehicleWarnChild::getEstimateLoadTime, item.getEstimateLoadTime())
);
}
......@@ -40,12 +39,17 @@ public class VehicleWarnChildDaoImpl extends BaseDaoImpl<VehicleWarnChildMapper,
@Override
public List<VehicleWarnChild> ListTruckNoOfTrace() {
return list(lQrWrapper().select(VehicleWarnChild::getChildNo, VehicleWarnChild::getTruckNo).eq(VehicleWarnChild::getTraceStatus, VehicleWarnChildEnum.TraceStatus.ENABLE.getCode()));
return list(lQrWrapper().select(VehicleWarnChild::getChildNo, VehicleWarnChild::getTruckNo)
.eq(VehicleWarnChild::getWarnStatus, VehicleWarnChildEnum.WarnStatus.ENABLE.getCode()));
}
@Override
public List<VehicleWarnChild> ListTruckNoOfWarn() {
return list(lQrWrapper().select(VehicleWarnChild::getChildNo, VehicleWarnChild::getTruckNo).eq(VehicleWarnChild::getTraceStatus, VehicleWarnChildEnum.WarnStatus.ENABLE.getCode()));
return list(lQrWrapper().select(VehicleWarnChild::getChildNo, VehicleWarnChild::getTruckNo)
.eq(VehicleWarnChild::getWarnStatus, VehicleWarnChildEnum.WarnStatus.ENABLE.getCode())
.orderByDesc(VehicleWarnChild::getId)
.last("limit 10000")
);
}
}
......@@ -73,7 +73,11 @@ public class VehicleWarnConfigDaoImpl extends BaseDaoImpl<VehicleWarnConfigMappe
@Override
public List<VehicleWarnConfig> listByWarnType(Integer warnType) {
return list(lQrWrapper().eq(VehicleWarnConfig::getWarnType, warnType));
return list(lQrWrapper()
.eq(VehicleWarnConfig::getWarnType, warnType)
.eq(VehicleWarnConfig::getDeleteStatus, VehicleWarnConfigEnum.DeleteStatus.NO.getCode())
.eq(VehicleWarnConfig::getStatus, VehicleWarnConfigEnum.Status.ENABLE.getCode())
);
}
@Override
......
......@@ -41,7 +41,7 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
if (Objects.equals(warnRang, VehicleWarnRangEnum.WarnRange.CHILD.getCode())) {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getId, item.getId())
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE)
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE.getCode())
.set(VehicleWarnInfo::getSuspendTime, item.getSuspendTime())
);
}
......@@ -49,14 +49,14 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
return update(lUdWrapper()
.eq(VehicleWarnInfo::getWarnConfigId, item.getWarnConfigId())
.eq(VehicleWarnInfo::getOrderGoodsNo, item.getOrderGoodsNo())
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE)
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE.getCode())
.set(VehicleWarnInfo::getSuspendTime, item.getSuspendTime())
);
}
else {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getWarnConfigId, item.getWarnConfigId())
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE)
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE.getCode())
.set(VehicleWarnInfo::getSuspendTime, item.getSuspendTime())
);
}
......@@ -70,6 +70,15 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
);
}
@Override
public boolean updateByConfig(Integer warnConfigId, String warnName, Integer warnLevel) {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getWarnConfigId, warnConfigId)
.set(VehicleWarnInfo::getWarnName, warnName)
.set(VehicleWarnInfo::getWarnLevel, warnLevel)
);
}
@Override
public Optional<VehicleWarnInfo> findById(Integer id) {
return Optional.of(id)
......
......@@ -4,15 +4,11 @@ package com.clx.performance.dao.impl.vehiclewarn;
import com.clx.performance.dao.vehiclewarn.VehicleWarnLogDao;
import com.clx.performance.mapper.vehiclewarn.VehicleWarnLogMapper;
import com.clx.performance.model.vehiclewarn.VehicleWarnLog;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
@Repository
public class VehicleWarnLogDaoImpl extends BaseDaoImpl<VehicleWarnLogMapper, VehicleWarnLog, Integer> implements VehicleWarnLogDao {
@Override
public Optional<VehicleWarnLog> findById(Integer id) {
return null;
}
}
......@@ -5,9 +5,9 @@ import com.clx.performance.enums.vehiclewarn.VehicleWarnRangEnum;
import com.clx.performance.mapper.vehiclewarn.VehicleWarnRangMapper;
import com.clx.performance.model.vehiclewarn.VehicleWarnRang;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
@Repository
......@@ -19,8 +19,18 @@ public class VehicleWarnRangeDaoImpl extends BaseDaoImpl<VehicleWarnRangMapper,
return list(lQrWrapper()
.eq(VehicleWarnRang::getWarnConfigId, warnConfigId)
.eq(VehicleWarnRang::getStatus, VehicleWarnRangEnum.Status.ENABLE.getCode())
.le(VehicleWarnRang::getWarnEndTime, LocalDateTime.now())
.orderByDesc(VehicleWarnRang::getId)
);
}
@Override
public boolean updateDisable(VehicleWarnRang item) {
return update(lUdWrapper()
.eq(VehicleWarnRang::getWarnConfigId, item.getWarnConfigId())
.eq(VehicleWarnRang::getWarnRang, item.getWarnRang())
.eq(StringUtils.isNotBlank(item.getOrderGoodsNo()), VehicleWarnRang::getOrderGoodsNo, item.getOrderGoodsNo())
.eq(StringUtils.isNotBlank(item.getChildNo()), VehicleWarnRang::getChildNo, item.getChildNo())
.set(VehicleWarnRang::getStatus, VehicleWarnRangEnum.Status.DISABLE.getCode())
);
}
}
......@@ -37,7 +37,7 @@ public class VehicleWarnUserDaoImpl extends BaseDaoImpl<VehicleWarnUserMapper, V
public boolean updateWarnType(VehicleWarnUser item) {
return update(lUdWrapper()
.eq(VehicleWarnUser::getId, item.getId())
.set(VehicleWarnUser::getWarmTypeJson, item.getWarmTypeJson())
.set(VehicleWarnUser::getWarnTypeJson, item.getWarnTypeJson())
);
}
......
package com.clx.performance.dao.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.linewarn.LineWarnConfigMapper;
import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.param.pc.linewarn.PageLineWarnConfigParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
public interface LineWarnConfigDao extends BaseDao<LineWarnConfigMapper, LineWarnConfig, Integer> {
boolean updateConfig(LineWarnConfig item);
boolean updateStatus(LineWarnConfig item);
boolean updateDelete(LineWarnConfig item);
Optional<LineWarnConfig> findById(Integer id);
Optional<LineWarnConfig> findByName(String name);
List<LineWarnConfig> listByWarnType(Integer warnType);
IPage<LineWarnConfig> pageByParam(PageLineWarnConfigParam param);
}
package com.clx.performance.dao.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.linewarn.LineWarnInfoMapper;
import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.param.pc.linewarn.PageLineWarnInfoParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
public interface LineWarnInfoDao extends BaseDao<LineWarnInfoMapper, LineWarnInfo, Integer> {
boolean updateStatus(LineWarnInfo item);
boolean batchUpdateStatus(List<Integer> idList, Integer status);
boolean updateSuspendTime(LineWarnInfo item);
boolean updateWarnTime(LineWarnInfo item);
boolean updateByConfig(Integer warnConfigId, String warnName, Integer warnLevel);
Optional<LineWarnInfo> findById(Integer id);
Optional<LineWarnInfo> findByOrderGoodsNoAndWarnConfigId(String orderGoodsNo, Integer warnConfigId);
List<LineWarnInfo> listSuspendTimeout();
IPage<LineWarnInfo> pageByParam(PageLineWarnInfoParam param);
}
package com.clx.performance.dao.linewarn;
import com.clx.performance.mapper.linewarn.LineWarnLogMapper;
import com.clx.performance.model.linewarn.LineWarnLog;
import com.msl.common.dao.BaseDao;
public interface LineWarnLogDao extends BaseDao<LineWarnLogMapper, LineWarnLog, Integer> {
}
package com.clx.performance.dao.linewarn;
import com.clx.performance.mapper.linewarn.LineWarnOrderGoodsMapper;
import com.clx.performance.model.linewarn.LineWarnOrderGoods;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
public interface LineWarnOrderGoodsDao extends BaseDao<LineWarnOrderGoodsMapper, LineWarnOrderGoods, Integer> {
Optional<LineWarnOrderGoods> getByOrderGoodsNo(String orderGoodsNo);
List<LineWarnOrderGoods> ListOrderGoodsNoOfWarn();
}
package com.clx.performance.dao.linewarn;
import com.clx.performance.mapper.linewarn.LineWarnRangMapper;
import com.clx.performance.model.linewarn.LineWarnRang;
import com.msl.common.dao.BaseDao;
import java.util.List;
public interface LineWarnRangeDao extends BaseDao<LineWarnRangMapper, LineWarnRang, Integer> {
List<LineWarnRang> ListByWarnConfigId(Integer warnConfigId);
boolean updateDisable(LineWarnRang item);
}
......@@ -9,8 +9,8 @@ import java.util.List;
public interface VehicleWarnChildDao extends BaseDao<VehicleWarnChildMapper, VehicleWarnChild, Integer> {
boolean updateTraceTime(VehicleWarnChild item);
boolean updateReceiveAddressDistance(VehicleWarnChild item);
boolean updateWarnStatus(VehicleWarnChild item);
boolean updateEstimateLoadTime(VehicleWarnChild item);
Optional<VehicleWarnChild> findByChildNo(String childNo);
List<VehicleWarnChild> ListTruckNoOfTrace();
......
......@@ -15,6 +15,7 @@ public interface VehicleWarnInfoDao extends BaseDao<VehicleWarnInfoMapper, Vehic
boolean batchUpdateStatus(List<Integer> idList, Integer status);
boolean updateSuspendTime(VehicleWarnInfo item, Integer warnRang);
boolean updateWarnTime(VehicleWarnInfo item);
boolean updateByConfig(Integer warnConfigId, String warnName, Integer warnLevel);
Optional<VehicleWarnInfo> findById(Integer id);
......
......@@ -2,11 +2,9 @@ package com.clx.performance.dao.vehiclewarn;
import com.clx.performance.mapper.vehiclewarn.VehicleWarnLogMapper;
import com.clx.performance.model.vehiclewarn.VehicleWarnLog;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
public interface VehicleWarnLogDao extends BaseDao<VehicleWarnLogMapper, VehicleWarnLog, Integer> {
Optional<VehicleWarnLog> findById(Integer id);
}
......@@ -9,4 +9,5 @@ import java.util.List;
public interface VehicleWarnRangeDao extends BaseDao<VehicleWarnRangMapper, VehicleWarnRang, Integer> {
List<VehicleWarnRang> ListByWarnConfigId(Integer warnConfigId);
boolean updateDisable(VehicleWarnRang item);
}
package com.clx.performance.dto.linewarn;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.time.LocalDateTime;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class LineWarnCommonInfoDTO {
String orderGoodsNo; //货单编号
private int loadTimeAvg; //平均装车时间(min)
private int unloadTimeAvg; //平均卸车时间(min)
private LocalDateTime transportEndTime; //拉运结束时间
private LocalDateTime pendingOrderTime; //挂单时间
private Integer arriveReceiveExpectTime; //预计到达目的地时间 (min)
}
......@@ -3,15 +3,18 @@ package com.clx.performance.dto.vehiclewarn;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class VehicleWarnCommonInfoDTO {
String childNo; //运单
BigDecimal[] currentPosition; //当前位置
Integer sendAddressDistance; //距货源地址距离
......@@ -24,6 +27,8 @@ public class VehicleWarnCommonInfoDTO {
private LocalDateTime lastArriveSendTime; //最晚到达货源地时间
private LocalDateTime lastArriveReceiveTime; //最晚到达目的地时间
private boolean gotoReceive; //前往或目的地
private LocalDateTime gotoReceiveTime; //前往或目的地时间
LocalDateTime currentTime; //当前时间
......
......@@ -2,6 +2,9 @@ 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;
......
......@@ -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);
......
package com.clx.performance.job.linewarn;
import com.clx.performance.dao.linewarn.LineWarnOrderGoodsDao;
import com.clx.performance.model.linewarn.LineWarnOrderGoods;
import com.clx.performance.service.linewarn.LineWarnMqService;
import com.msl.common.job.JobLog;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
@Slf4j
@Component
public class LineWarnJob {
@Autowired
private LineWarnOrderGoodsDao lineWarnOrderGoodsDao;
@Autowired
private LineWarnMqService lineWarnMqService;
/**
* 线路监控预警
*/
@XxlJob("lineWarnWarn")
public void lineWarnWarn() {
try {
List<LineWarnOrderGoods> list = lineWarnOrderGoodsDao.ListOrderGoodsNoOfWarn();
log.info("线路监控预警, size:{}", list.size());
for (LineWarnOrderGoods item : list) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = now.minusSeconds(600);
// 发送mq (线路预警)
lineWarnMqService.lineWarn(item.getOrderGoodsNo());
}
} catch (Exception e) {
log.warn("线路监控预警失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("线路监控预警失败,异常原因=====================", e);
}
}
}
......@@ -31,7 +31,7 @@ public class PlatTruckTraceJob {
try {
Result<List<String>> result = userClxFeign.getPlatformTruckList();
if(result.succeed()){
log.info("平台车辆轨迹同步, size:{}", result.getData().size());
log.info("平台车辆轨迹开始同步, size:{}", result.getData().size());
for (String truckNo : result.getData()) {
LocalDateTime now = LocalDateTime.now();
......@@ -39,6 +39,7 @@ public class PlatTruckTraceJob {
// 发送mq (同步车辆轨迹)
truckTraceMqService.truckTracSync( truckNo, LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(now));
}
log.info("平台车辆轨迹结束同步================");
}
} catch (Exception e) {
log.warn("平台车辆轨迹同步失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
......
......@@ -41,9 +41,6 @@ public class VehicleWarnJob {
for (VehicleWarnChild item : list) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = now.minusSeconds(600);
// 发送mq (车辆预警)
vehicleWarnMqService.truckWarn(item.getChildNo());
}
......@@ -55,22 +52,4 @@ public class VehicleWarnJob {
}
// /**
// * 预警暂停取消
// */
// @XxlJob("vehicleWarnSuspendCancel")
// public void vehicleWarnSuspendCancel() {
//
// try {
//
// List<VehicleWarnInfo> list = vehicleWarnInfoDao.listSuspendTimeout();
// log.info("预警暂停取消, size:{}", list.size());
//
// vehicleWarnInfoDao.batchUpdateStatus(list.stream().map(item->item.getId()).collect(Collectors.toList()), VehicleWarnInfoEnum.Status.INIT.getCode());
//
// } catch (Exception e) {
// log.warn("预警暂停取消失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
// JobLog.error("预警暂停取消失败,异常原因=====================", e);
// }
// }
}
package com.clx.performance.listener.linewarn;
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.RabbitKeyLineWarnConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 线路预警 mq
* @Date: 2023-10-20 16:14:30
* @Version: 1.0
*/
@Slf4j
@Component
public class LineWarnDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyLineWarnConstants.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.linewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
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 LineWarnLineWarnListener {
@Autowired
private LineWarnMqHandlerService lineWarnMqHandlerService;
@RabbitListener(queues = RabbitKeyLineWarnConstants.LINE_WARN_QUEUE)
public void process(Message message) {
try{
log.info("线路预警-货单预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnLineWarnMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-货单预警 失败",e);
}
}
private void process(LineWarnLineWarnMqParam mq){
lineWarnMqHandlerService.lineWarn(mq);
}
}
package com.clx.performance.listener.linewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
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 LineWarnOrderGoodsAddListener {
@Autowired
private LineWarnMqHandlerService lineWarnMqHandlerService;
@RabbitListener(queues = RabbitKeyLineWarnConstants.ORDER_GOODS_ADD_QUEUE)
public void process(Message message) {
try{
log.info("线路预警-货单新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderGoodsAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-货单新增 失败",e);
}
}
private void process(LineWarnOrderGoodsAddMqParam mq){
lineWarnMqHandlerService.orderGoodsAdd(mq);
}
}
package com.clx.performance.listener.linewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
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 LineWarnTruckNoticeListener {
@Autowired
private LineWarnMqHandlerService lineWarnMqHandlerService;
@RabbitListener(queues = RabbitKeyLineWarnConstants.LINE_WARN_NOTICE_QUEUE)
public void process(Message message) {
try{
log.info("线路预警-预警通知, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnNoticeMqParam>>(){}).getData());
}catch (Exception e){
log.info("线路预警-预警通知 失败",e);
}
}
private void process(LineWarnNoticeMqParam mq){
lineWarnMqHandlerService.notice(mq);
}
}
......@@ -4,7 +4,7 @@ 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.RabbitKeySettlementConstants;
import com.clx.performance.constant.RabbitKeyVehicleWarnConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
......@@ -25,7 +25,7 @@ public class VehicleWarnDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeySettlementConstants.DEFAULT_DEAD_QUEUE)
@RabbitListener(queues = RabbitKeyVehicleWarnConstants.DEFAULT_DEAD_QUEUE)
public void process(Message message) {
try{
log.info("车辆预警-延迟, message:{}", message);
......
......@@ -90,8 +90,8 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
List<Double> getLossNet(@Param("param") OrderChildReportParam param);
@Select("<script>" +
"select sum(TIMESTAMPDIFF(SECOND,load_time,arrive_send_time)) from " + TABLE +
" where load_time is not null and and pay_time &gt;= #{beginTime} " +
"select avg(TIMESTAMPDIFF(SECOND,arrive_send_time,load_time)) from " + TABLE +
" where load_time is not null and pay_time &gt;= #{beginTime} " +
" <if test = 'sendSystemAddressId != null'>and send_system_address_id = #{sendSystemAddressId} </if> " +
" <if test = 'receiveSystemAddressId != null'>and receive_system_address_id = #{receiveSystemAddressId} </if> " +
......@@ -104,8 +104,8 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
String beginTime);
@Select("<script>" +
"select sum(TIMESTAMPDIFF(SECOND,unload_time,arrive_receive_time)) from " + TABLE +
" where unload_time is not null and and pay_time &gt;= #{beginTime} " +
"select avg(TIMESTAMPDIFF(SECOND,arrive_receive_time,unload_time)) from " + TABLE +
" where unload_time is not null and pay_time &gt;= #{beginTime} " +
" <if test = 'sendSystemAddressId != null'>and send_system_address_id = #{sendSystemAddressId} </if> " +
" <if test = 'receiveSystemAddressId != null'>and receive_system_address_id = #{receiveSystemAddressId} </if> " +
......
package com.clx.performance.mapper.linewarn;
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.linewarn.LineWarnConfig;
import com.clx.performance.param.pc.linewarn.PageLineWarnConfigParam;
import com.clx.performance.sqlProvider.linewarn.LineWarnConfigSqlProvider;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
@Mapper
public interface LineWarnConfigMapper extends BaseMapper<LineWarnConfig> {
String TABLE = "line_warn_config";
/**
* @see LineWarnConfigSqlProvider#pageByParam(Page, PageLineWarnConfigParam)
*/
@SelectProvider(type = LineWarnConfigSqlProvider.class, method = "pageByParam")
IPage<LineWarnConfig> pageByParam(@Param("page") Page page, @Param("param") PageLineWarnConfigParam param);
}
\ No newline at end of file
package com.clx.performance.mapper.linewarn;
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.linewarn.LineWarnInfo;
import com.clx.performance.param.pc.linewarn.PageLineWarnInfoParam;
import com.clx.performance.sqlProvider.linewarn.LineWarnInfoSqlProvider;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
@Mapper
public interface LineWarnInfoMapper extends BaseMapper<LineWarnInfo> {
String TABLE = "line_warn_config";
/**
* @see LineWarnInfoSqlProvider#pageByParam(Page, PageLineWarnInfoParam)
*/
@SelectProvider(type = LineWarnInfoSqlProvider.class, method = "pageByParam")
IPage<LineWarnInfo> pageByParam(@Param("page") Page page, @Param("param") PageLineWarnInfoParam param);
}
\ No newline at end of file
package com.clx.performance.mapper.linewarn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.linewarn.LineWarnLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LineWarnLogMapper extends BaseMapper<LineWarnLog> {
String TABLE = "line_warn_log";
}
\ No newline at end of file
package com.clx.performance.mapper.linewarn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.linewarn.LineWarnOrderGoods;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LineWarnOrderGoodsMapper extends BaseMapper<LineWarnOrderGoods> {
String TABLE = "line_warn_order_goods";
}
\ No newline at end of file
package com.clx.performance.mapper.linewarn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.linewarn.LineWarnRang;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LineWarnRangMapper extends BaseMapper<LineWarnRang> {
}
\ No newline at end of file
package com.clx.performance.model.linewarn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 车辆预警配置
* @Date: 2024/05/29 10:55:33
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class LineWarnConfig implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private String warnName; //预警方案名称
private Integer warnType; //预警类型
private Integer warnLevel; //预警级别
private BigDecimal interval; //预警间隔(小时)
private BigDecimal timeRatio; //时间占比(%)
private BigDecimal taskCompleteRatio; //任务完成占比
private Integer deleteStatus; //删除状态: 0-否;1-是
private Integer status; //状态:1启用 2禁用
private String createBy; //创建人
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.model.linewarn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 线路预警信息表
* @Date: 2024/05/30 13:30:04
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class LineWarnInfo implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private Integer warnConfigId; //预警配置id
private String warnName; //预警名称
private Integer warnType; //预警类型
private Integer warnLevel; //预警级别
private String orderGoodsNo; //货单编号
private Integer sendAddressId; //发货地址id
private String sendAddress; //发货地址
private Integer receiveAddressId; //收货地址id
private String receiveAddress; //收货地址
private LocalDateTime suspendTime; //预警暂停时间
private LocalDateTime warnTime; //预警时间
private Integer status; //处理状态:1待处理 2已处理 3暂停预警
private String createBy; //创建人
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.model.linewarn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 线路预警日志
* @Date: 2024/05/30 13:56:09
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class LineWarnLog implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private Integer infoId; //预警信息id
private Integer type; //类型:1暂停预警 2处理预警
private String orderGoodsNo; //货单编号
private String warnName; //预警名称
private LocalDateTime warnTime; //预警时间
private LocalDateTime warnEndTime; //预警屏蔽结束时间
private String content; //内容
private String createBy; //创建人
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.model.linewarn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 线路预警货单表
* @Date: 2024/05/30 13:31:44
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class LineWarnOrderGoods implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private String orderGoodsNo; //货单编号
private LocalDateTime transportEndTime; //拉运结束时间
private LocalDateTime pendingOrderTime; //挂单时间
private Integer arriveReceiveExpectTime; //预计到达目的地时间 (min)
private Integer pengNum; //挂单数
private Integer takeNum; //接单数
private Integer arriveSendNum; //到达货源地车数
private Integer loadNum; //装车车数
private Integer arriveReceiveNum; //到达目的地车数
private Integer unloadNum; //卸车车数
private Integer status; //状态
private Integer warnStatus; //预警使能:0禁用 1启用
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.model.linewarn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 预警范围
* @Date: 2024/05/30 14:09:22
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class LineWarnRang implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private Integer warnConfigId; //预警配置id
private String warnName; //预警名称
private String orderGoodsNo; //货单编号
private LocalDateTime warnEndTime; //预警屏蔽结束时间
private Integer status; //状态:1有效 2无效
private String createBy; //创建人
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
......@@ -39,9 +39,10 @@ public class VehicleWarnChild implements HasKey<Integer> {
private Integer arriveReceiveExpectTime; //预计到达目的地时间 (min)
private LocalDateTime takeTime; //接单时间
private Integer receiveAddressDistance; //距离目的地距离(m)
private LocalDateTime estimateLoadTime; //轨迹更新时间
private LocalDateTime traceTime; //轨迹更新时间
private Integer traceStatus; //轨迹更新状态:0禁止 1启用
private Integer wanStatus; //预警更新状态:0禁用 1启用
private Integer warnStatus; //预警使能:0禁用 1启用
private Integer status; //状态
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -8,7 +8,7 @@ import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.time.LocalDateTime;
/**
......@@ -29,7 +29,7 @@ public class VehicleWarnRang implements HasKey<Integer> {
private Integer warnConfigId; //预警配置id
private String warnName; //预警名称
private Integer warnRang; //预警屏蔽范围:1运单 2货单 3全部
private String orderNo; //货单编号
private String orderGoodsNo; //货单编号
private String childNo; //运单编号
private LocalDateTime warnEndTime; //预警屏蔽结束时间
private Integer status; //状态:1有效 2无效
......
......@@ -28,7 +28,8 @@ public class VehicleWarnUser implements HasKey<Integer> {
private Integer id; //id
private String name; //姓名
private String mobile; //手机
private String warmTypeJson; //预警配置
private String warnTypeJson; //预警配置
private String lineWarnTypeJson; //线路预警配置
private Integer deleteStatus; //删除状态: 0-否;1-是
private String createBy; //创建人
private LocalDateTime createTime; //创建时间
......
......@@ -95,5 +95,5 @@ public interface OrderChildService {
OrderChildVO getOwnerOrderChildInfo(String childNo);
String getOrderChildCheck(OrderChildCheckParam param);
Integer getOrderChildCheck(OrderChildCheckParam 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;
......@@ -106,4 +104,6 @@ public interface OwnerAccountService {
OwnerLoanAccountVO loanAccount(Long userNo);
OwnerAccountAllVO accountAllInfo(Long userNo);
OwnerAccountArrearsVO accountArrearsInfo(Long userNo, BigDecimal prepaidArrearsOrder, BigDecimal marginArrearsOrder);
}
......@@ -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);
......
......@@ -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());
......
......@@ -64,6 +64,7 @@ import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -1433,6 +1434,8 @@ public class OrderChildServiceImpl implements OrderChildService {
result.setUnloadBeginTime(orderInfoFeign.getUnloadBeginTime());
result.setUnloadEndTime(orderInfoFeign.getUnloadEndTime());
result.setLoadBeginTime(orderInfoFeign.getLoadBeginTime());
result.setLoadEndTime(orderInfoFeign.getLoadEndTime());
//查询结算信息
Optional<SettlementOwnerDetail> optional = settlementOwnerDetailDao.getByChildNo(childNo);
......@@ -1513,7 +1516,16 @@ public class OrderChildServiceImpl implements OrderChildService {
}
@Override
public String getOrderChildCheck(OrderChildCheckParam param) {
public Integer getOrderChildCheck(OrderChildCheckParam param) {
try {
return check(param);
} catch (Exception e) {
log.info("接单判断弹窗错误,错误信息:{}", e.getMessage());
return 0;
}
}
private int check(OrderChildCheckParam param) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).get();
BigDecimal sendLatitude = orderGoods.getSendLatitude();
BigDecimal sendLongitude = orderGoods.getSendLongitude();
......@@ -1521,14 +1533,22 @@ public class OrderChildServiceImpl implements OrderChildService {
BigDecimal longitude = param.getLongitude();
BigDecimal latitude = param.getLatitude();
TruckLocationDTO truckLocationDTO = zjxlGpsService.getTruckLastLocation(param.getTruckNo());
TruckLocationDTO truckLocationDTO = null;
try {
truckLocationDTO = zjxlGpsService.getTruckLastLocation(param.getTruckNo());
} catch (Exception e) {
log.info("中交兴路获取失败:{}", e.getMessage());
}
//如果中交兴路获取到位置信息,则使用中交,否则用APP传的位置信息
if (truckLocationDTO != null) {
BigDecimal[] location = truckLocationDTO.getLocation();
longitude = location[0];
latitude = location[1];
log.info("当前中交兴路获取司机车牌:{},相关位置信息:{}",param.getTruckNo(), JSONUtil.parse(truckLocationDTO));
log.info("当前中交兴路获取司机车牌:{},相关位置信息:{}", param.getTruckNo(), JSONUtil.parse(truckLocationDTO));
} else {
log.info("中交兴路获取失败,通过高德获取,相关参数:{}", JSONUtil.parse(param));
}
List<GdRouteDTO> route = gdService.getRoute(longitude, latitude, sendLongitude, sendLatitude);
......@@ -1540,8 +1560,8 @@ public class OrderChildServiceImpl implements OrderChildService {
LocalDate localDate = localDateTime.toLocalDate();
String begin = localDate + " " + param.getUnloadBeginTime();
String end = localDate + " " + param.getUnloadEndTime();
String begin = localDate + " " + param.getLoadBeginTime();
String end = localDate + " " + param.getLoadEndTime();
log.info("预计到达时间:{},可以装货时间:{},可以卸货时间:{}", localDateTime, begin, end);
//可以装货时间
LocalDateTime beginLocalDateTime = DateUtils.parseDateTime(begin).get();
......@@ -1549,13 +1569,13 @@ public class OrderChildServiceImpl implements OrderChildService {
if (localDateTime.isAfter(beginLocalDateTime) && localDateTime.isBefore(endLocalDateTime)) {
log.info("不用弹");
return "不用弹";
return 0;
} else {
log.info("需要弹");
return "需要弹";
return 1;
}
}
return "不用弹,高德数据为空";
return 0;
}
//计算亏吨吨数
......
......@@ -139,6 +139,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
orderGoodsVO.setSendAddressAll(orderInfoFeign.getSendAddressAll());
orderGoodsVO.setUnloadBeginTime(orderInfoFeign.getUnloadBeginTime());
orderGoodsVO.setUnloadEndTime(orderInfoFeign.getUnloadEndTime());
orderGoodsVO.setLoadBeginTime(orderInfoFeign.getLoadBeginTime());
orderGoodsVO.setLoadEndTime(orderInfoFeign.getLoadEndTime());
orderGoodsVO.setResidueTransportWeight(BigDecimal.ZERO.compareTo(orderGoodsVO.getResidueTransportWeight()) > 0 ? BigDecimal.ZERO : orderGoodsVO.getResidueTransportWeight());
return orderGoodsVO;
}
......@@ -273,17 +275,21 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
List<OrderGoods> orderGoodsList = null;
BigDecimal orderGoodsResidueWeight = BigDecimal.ZERO;
String residueWeight = orderInfoFeign.getResidueWeight();
BigDecimal ans = new BigDecimal(residueWeight);
switch (optionType) {
case "1":
return new BigDecimal(residueWeight);
return ans;
case "2":
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNoAndStatus(orderNo);
if (CollectionUtil.isNotEmpty(orderGoodsList)) {
orderGoodsResidueWeight = orderGoodsList.stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
return orderGoodsResidueWeight.add(new BigDecimal(residueWeight));
ans = orderGoodsResidueWeight.add(new BigDecimal(residueWeight));
if (ans.compareTo(new BigDecimal("35")) <= 0) {
return BigDecimal.ZERO;
} else {
return ans.subtract(new BigDecimal("35"));
}
case "3":
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
BigDecimal childResidueWeight = BigDecimal.ZERO;
......@@ -295,12 +301,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
if (CollectionUtil.isNotEmpty(orderGoodsList)) {
orderGoodsResidueWeight = orderGoodsList.stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
return new BigDecimal(residueWeight).add(orderGoodsResidueWeight).add(childResidueWeight);
ans = ans.add(orderGoodsResidueWeight).add(childResidueWeight);
if (ans.compareTo(new BigDecimal("35")) <= 0) {
return BigDecimal.ZERO;
} else {
return ans.subtract(new BigDecimal("35"));
}
default:throw new RuntimeException("参数错误");
}
}
......
......@@ -43,6 +43,7 @@ import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.feign.OwnerInfoVO;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
......@@ -1270,4 +1271,34 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
return ownerAccountAllVO;
}
@Override
public OwnerAccountArrearsVO accountArrearsInfo(Long userNo, BigDecimal prepaidArrearsOrder, BigDecimal marginArrearsOrder) {
List<OwnerAccount> accountList = ownerAccountDao.listByField(OwnerAccount::getOwnerUserNo, userNo);
OwnerAccountArrearsVO build = OwnerAccountArrearsVO.builder().build();
//查询保证金和预付运费欠多少金额
for (OwnerAccount ownerAccount : accountList) {
if (ownerAccount.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.MARGIN_ACCOUNT.getCode())) {
BigDecimal subtract = ownerAccount.getUsableBalance().subtract(marginArrearsOrder);
if (subtract.compareTo(BigDecimal.ZERO) >= 0) {
subtract = BigDecimal.ZERO;
}
build.setMarginArrearsOrderSumMoney(subtract);
log.info("当前用户:{},marginArrearsOrder:{}, 可用余额:{},欠款金额:{}", userNo, marginArrearsOrder, ownerAccount.getUsableBalance(), subtract);
}
if (ownerAccount.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())) {
BigDecimal subtract = ownerAccount.getUsableBalance().subtract(prepaidArrearsOrder);
if (subtract.compareTo(BigDecimal.ZERO) >= 0) {
subtract = BigDecimal.ZERO;
}
build.setPrepaidArrearsOrderSumMoney(subtract);
log.info("当前用户:{},prepaidArrearsOrder:{}, 可用余额:{},欠款金额:{}", userNo, prepaidArrearsOrder, ownerAccount.getUsableBalance(), subtract);
}
}
return build;
}
}
package com.clx.performance.service.impl.linewarn;
import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.service.linewarn.LineWarnCommonService;
import com.clx.performance.service.linewarn.LineWarnMqService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Slf4j
@Service
public class LineWarnCommonServiceImpl implements LineWarnCommonService {
private final static int MIN_FER_HOUR = 60;
@Autowired
private LineWarnInfoDao lineWarnInfoDao;
@Autowired
private LineWarnMqService lineWarnMqService;
@Override
public void lineWarnInfoUpdate(OrderGoods orderGoods, LineWarnInfo lineWarnInfo, LineWarnConfig lineWarnConfig){
// 更新
if (lineWarnInfo != null){
// 计算下次生效时间
LocalDateTime nextTime = lineWarnInfo.getWarnTime().plusMinutes(lineWarnConfig.getInterval().multiply(new BigDecimal(MIN_FER_HOUR)).intValue());
if (nextTime.isAfter(LocalDateTime.now())) {return;}
lineWarnInfo.setWarnTime(LocalDateTime.now());
lineWarnInfoDao.updateWarnTime(lineWarnInfo);
// 发送mq (预警通知)
lineWarnMqService.lineWarnNotice(lineWarnInfo.getId());
return;
}
// 新增
lineWarnInfo = new LineWarnInfo();
lineWarnInfo.setWarnConfigId(lineWarnConfig.getId());
lineWarnInfo.setWarnType(lineWarnConfig.getWarnType());
lineWarnInfo.setWarnName(lineWarnConfig.getWarnName());
lineWarnInfo.setWarnLevel(lineWarnConfig.getWarnLevel());
lineWarnInfo.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
lineWarnInfo.setSendAddressId(orderGoods.getSendAddressId());
lineWarnInfo.setSendAddress(orderGoods.getSendAddressShorter());
lineWarnInfo.setReceiveAddressId(orderGoods.getReceiveAddressId());
lineWarnInfo.setReceiveAddress(orderGoods.getReceiveAddressShorter());
lineWarnInfo.setWarnTime(LocalDateTime.now());
lineWarnInfoDao.saveEntity(lineWarnInfo);
// 发送mq (预警通知)
lineWarnMqService.lineWarnNotice(lineWarnInfo.getId());
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论