提交 5eeadd9f authored 作者: 艾庆国's avatar 艾庆国

线路预警

上级 a173d088
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ResultEnum implements com.msl.common.enums.ResultEnum {
/**
* 系统
*/
SIGN_NULL(1001, "签名不存在"),
SIGN_ERROR(1002, "签名错误"),
TIMESTAMP_ERROR(1003, "请求不在时间范围内"),
INCREMENT_ERROR(1004, "编码生成失败"),
HTTP_ERROR(1005, "HTTP请求失败"),
LOCK_ERROR(1006,"加锁失败"),
TRY_LOCK_ERROR(1007,"操作频繁,请稍后重试"),
FEIGN_ERROR(1008, "服务调用失败"),
PARAM_ERROR(1009, "参数缺失"),
DATA_ERROR(1010, "数据错误"),
/**
* 通用
*/
FILE_LIMIT_ERROR(1104, "文件过大"),
REPEAT_OPERATION(1105, "重复操作"),
DATA_NOT_FIND(1106, "数据不存在"),
DATA_REPEAT(1107, "数据重复"),
LINE_WARN_USER_EXIST(1301, "联系方式已存在"),
LINE_WARN_CONFIG_EXIST(1302, "配置名称已存在"),
;
private final int code;
private final String msg;
}
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 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);
}
}
}
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;
}
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
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.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.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.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())
);
}
}
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 VehicleWarnInfoDaoImpl 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> findByChildNoAndWarnConfigId(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.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> findByChildNoAndWarnConfigId(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.dao.BaseDao;
public interface LineWarnOrderGoodsDao extends BaseDao<LineWarnOrderGoodsMapper, LineWarnOrderGoods, Integer> {
}
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);
}
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 Integer pengNum; //挂单数
private Integer takeNum; //接单数
private Integer arriveSendNum; //到达货源地车数
private Integer loadNum; //装车车数
private Integer arriveReceiveNum; //到达目的地车数
private Integer unloadNum; //卸车车数
private Integer status; //状态
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
package com.clx.performance.service.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.dao.linewarn.LineWarnLogDao;
import com.clx.performance.dao.linewarn.LineWarnOrderGoodsDao;
import com.clx.performance.dao.linewarn.LineWarnRangeDao;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.enums.linewarn.LineWarnLogEnum;
import com.clx.performance.enums.linewarn.LineWarnRangEnum;
import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.model.linewarn.LineWarnLog;
import com.clx.performance.model.linewarn.LineWarnRang;
import com.clx.performance.param.pc.linewarn.LineWarnInfoResolveUpdateParam;
import com.clx.performance.param.pc.linewarn.LineWarnInfoSuspendUpdateParam;
import com.clx.performance.param.pc.linewarn.PageLineWarnInfoParam;
import com.clx.performance.service.linewarn.LineWarnInfoService;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.struct.linewarn.LineWarnInfoStruct;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.pc.linewarn.LineWarnInfoVO;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
public class LineWarnInfoServiceImpl implements LineWarnInfoService {
@Autowired
private LineWarnInfoDao lineWarnInfoDao;
@Autowired
private LineWarnLogDao lineWarnLogDao;
@Autowired
private LineWarnRangeDao lineWarnRangeDao;
@Autowired
private LineWarnOrderGoodsDao lineWarnOrderGoodsDao;
@Autowired
private LineWarnInfoStruct lineWarnInfoStruct;
@Autowired
private TruckTraceService truckTraceService;
@Transactional(rollbackFor = Exception.class)
@Override
public void updateSuspend(LineWarnInfoSuspendUpdateParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
LocalDateTime endTime = LocalDateTimeUtils.parseTime(param.getWarnEndTime());
LineWarnInfo lineWarnInfo = lineWarnInfoDao.findById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
lineWarnInfo.setSuspendTime(endTime);
lineWarnInfoDao.updateSuspendTime(lineWarnInfo);
LineWarnLog lineWarnLog = new LineWarnLog();
lineWarnLog.setInfoId(lineWarnInfo.getId());
lineWarnLog.setType(LineWarnLogEnum.Type.SUSPEND.getCode());
lineWarnLog.setContent(LineWarnLogEnum.Type.SUSPEND.getMsg());
lineWarnLog.setOrderGoodsNo(lineWarnInfo.getOrderGoodsNo());
lineWarnLog.setWarnName(lineWarnInfo.getWarnName());
lineWarnLog.setWarnEndTime(endTime);
lineWarnLog.setWarnTime(lineWarnInfo.getWarnTime());
lineWarnLog.setCreateBy(loginUserInfo.getUserName());
lineWarnLogDao.saveEntity(lineWarnLog);
LineWarnRang lineWarnRang = new LineWarnRang();
lineWarnRang.setWarnConfigId(lineWarnInfo.getWarnConfigId());
lineWarnRang.setWarnName(lineWarnInfo.getWarnName());
lineWarnRang.setOrderGoodsNo(lineWarnInfo.getOrderGoodsNo());
lineWarnRang.setWarnEndTime(endTime);
lineWarnRang.setStatus(LineWarnRangEnum.Status.ENABLE.getCode());
lineWarnRang.setCreateBy(loginUserInfo.getUserName());
// 禁用旧数据
lineWarnRangeDao.updateDisable(lineWarnRang);
// 新增新数据
lineWarnRangeDao.saveEntity(lineWarnRang);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void updateResolve(LineWarnInfoResolveUpdateParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
LineWarnInfo lineWarnInfo = lineWarnInfoDao.findById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
lineWarnInfo.setStatus(LineWarnInfoEnum.Status.RESOLVE.getCode());
lineWarnInfoDao.updateStatus(lineWarnInfo);
LineWarnLog lineWarnLog = new LineWarnLog();
lineWarnLog.setInfoId(lineWarnInfo.getId());
lineWarnLog.setType(LineWarnLogEnum.Type.RESOLVE.getCode());
lineWarnLog.setContent(LineWarnLogEnum.Type.RESOLVE.getMsg());
lineWarnLog.setOrderGoodsNo(lineWarnInfo.getOrderGoodsNo());
lineWarnLog.setWarnName(lineWarnInfo.getWarnName());
lineWarnLog.setWarnTime(lineWarnInfo.getWarnTime());
lineWarnLog.setCreateBy(loginUserInfo.getUserName());
lineWarnLogDao.saveEntity(lineWarnLog);
}
//
// @Override
// public VehicleTraceVO getTrace(Integer id) {
// VehicleWarnInfo vehicleWarnInfo = vehicleWarnInfoDao.findById(id).orElseThrow(ResultEnum.DATA_NOT_FIND);
// OrderChild orderChild = orderChildDao.getByChildNo(vehicleWarnInfo.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
//
// LocalDateTime beginTime = vehicleWarnInfo.getTakeTime();
// LocalDateTime endTime = LocalDateTime.now();
// if (orderChild.getArriveSendTime() != null) {endTime = orderChild.getArriveSendTime();}
// if (orderChild.getLoadTime() != null) {endTime = orderChild.getLoadTime();}
// if (orderChild.getArriveReceiveTime() != null) {endTime = orderChild.getArriveReceiveTime();}
// if (orderChild.getUnloadTime() != null) {endTime = orderChild.getUnloadTime();}
// if (orderChild.getConfirmTime() != null) {endTime = orderChild.getConfirmTime();}
// if (orderChild.getSettleTime() != null) {endTime = orderChild.getSettleTime();}
// if (orderChild.getFinishTime() != null) {endTime = orderChild.getFinishTime();}
// if (endTime.isAfter(beginTime.plusDays(TRUCK_TRACE_DAY_MAX))) {endTime = beginTime.plusDays(TRUCK_TRACE_DAY_MAX);} //最多查询3天
//
// List<DriverTruckTraceVO> truckTraceList = truckTraceService.listTruckTraceByTime(vehicleWarnInfo.getTruckNo(),
// LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(endTime));
// // 接单重车、卸车空车
// for (DriverTruckTraceVO item : truckTraceList) {
// item.setTruckStatus(DriverTruckEnum.TraceTruckStatus.HEAVY.getCode());
// if (orderChild.getCancelTime() != null){
// if (LocalDateTimeUtils.parseTime(item.getGpsTime()).isAfter(orderChild.getCancelTime())){
// item.setTruckStatus(DriverTruckEnum.TraceTruckStatus.EMPTY.getCode());}
// }
// if (orderChild.getUnloadTime() != null){
// if (LocalDateTimeUtils.parseTime(item.getGpsTime()).isAfter(orderChild.getUnloadTime())){
// item.setTruckStatus(DriverTruckEnum.TraceTruckStatus.EMPTY.getCode());}
// }
// }
// List<DriverTraceVO> driverTraceList = truckTraceService.listDriverTraceByTime(vehicleWarnInfo.getDriverUserNo(),
// LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(endTime));
//
// VehicleTraceVO result = new VehicleTraceVO();
// result.setDriverTraceList(truckTraceService.splitDriverTrace(driverTraceList));
// result.setTruckTraceList(truckTraceService.splitTruckTrace(truckTraceList));
//
// return result;
// }
@Override
public LineWarnInfoVO getInfo(Integer id) {
return lineWarnInfoStruct.convert(lineWarnInfoDao.findById(id).orNull());
}
@Override
public IPage<LineWarnInfoVO> pageInfo(PageLineWarnInfoParam param) {
Page<LineWarnInfoVO> page = lineWarnInfoStruct.convertPage(lineWarnInfoDao.pageByParam(param));
List<String> orderGoodsNoList = page.getRecords().stream().map(item -> item.getOrderGoodsNo()).collect(Collectors.toList());
if (!orderGoodsNoList.isEmpty()) {
}
return page;
}
}
package com.clx.performance.service.impl.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.linewarn.LineWarnConfigDao;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.param.pc.linewarn.*;
import com.clx.performance.service.linewarn.LineWarnConfigService;
import com.clx.performance.struct.linewarn.LineWarnConfigStruct;
import com.clx.performance.vo.pc.linewarn.LineWarnConfigVO;
import com.msl.common.base.Optional;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
public class VehicleWarnConfigServiceImpl implements LineWarnConfigService {
@Autowired
private LineWarnConfigDao lineWarnConfigDao;
@Autowired
private LineWarnConfigStruct lineWarnConfigStruct;
@Transactional(rollbackFor = Exception.class)
@Override
public void saveConfig(LineWarnConfigAddParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Optional<LineWarnConfig> optional = lineWarnConfigDao.findByName(param.getWarnName());
if (optional.isPresent()){
throw new ServiceSystemException(ResultEnum.LINE_WARN_CONFIG_EXIST);
}
LineWarnConfig lineWarnConfig = new LineWarnConfig();
lineWarnConfig.setWarnName(param.getWarnName());
lineWarnConfig.setWarnType(param.getWarnType());
lineWarnConfig.setWarnLevel(param.getWarnLevel());
lineWarnConfig.setInterval(param.getInterval());
lineWarnConfig.setTimeRatio(param.getTimeRatio());
lineWarnConfig.setTaskCompleteRatio(param.getTaskCompleteRatio());
lineWarnConfigDao.saveEntity(lineWarnConfig);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void updateConfig(LineWarnConfigUpdateParam param) {
LineWarnConfig lineWarnConfig = lineWarnConfigDao.findById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (!Objects.equals(lineWarnConfig.getWarnName(), param.getWarnName())){
Optional<LineWarnConfig> optional = lineWarnConfigDao.findByName(param.getWarnName());
if (optional.isPresent()){
throw new ServiceSystemException(ResultEnum.LINE_WARN_CONFIG_EXIST);
}
}
lineWarnConfig.setWarnName(param.getWarnName());
lineWarnConfig.setWarnType(param.getWarnType());
lineWarnConfig.setWarnLevel(param.getWarnLevel());
lineWarnConfig.setInterval(param.getInterval());
lineWarnConfig.setTimeRatio(param.getTimeRatio());
lineWarnConfig.setTaskCompleteRatio(param.getTaskCompleteRatio());
lineWarnConfigDao.updateConfig(lineWarnConfig);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void updateStatus(LineWarnConfigStatusUpdateParam param) {
LineWarnConfig lineWarnConfig = lineWarnConfigDao.findById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
lineWarnConfig.setStatus(param.getStatus());
lineWarnConfigDao.updateStatus(lineWarnConfig);
}
@Override
public void deleteConfig(LineWarnConfigDeleteUpdateParam param) {
LineWarnConfig lineWarnConfig = lineWarnConfigDao.findById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
lineWarnConfig.setDeleteStatus(LineWarnConfigEnum.DeleteStatus.YES.getCode());
lineWarnConfigDao.updateDelete(lineWarnConfig);
}
@Override
public LineWarnConfigVO getConfig(Integer id) {
return lineWarnConfigStruct.convert(lineWarnConfigDao.findById(id).orNull());
}
@Override
public IPage<LineWarnConfigVO> pageConfig(PageLineWarnConfigParam param) {
return lineWarnConfigStruct.convertPage(lineWarnConfigDao.pageByParam(param));
}
@Override
public List<LineWarnConfigVO.WarnTypeItem> listWarnType() {
List<LineWarnConfigVO.WarnTypeItem> list = new ArrayList<>();
for (LineWarnConfigEnum.WarnType item : LineWarnConfigEnum.WarnType.values()) {
list.add(new LineWarnConfigVO.WarnTypeItem(item.getCode(), item.getMsg()));
}
return list;
}
}
package com.clx.performance.service.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.linewarn.*;
import com.clx.performance.vo.pc.linewarn.LineWarnConfigVO;
import java.util.List;
public interface LineWarnConfigService {
void saveConfig(LineWarnConfigAddParam param);
void updateConfig(LineWarnConfigUpdateParam param);
void updateStatus(LineWarnConfigStatusUpdateParam param);
void deleteConfig(LineWarnConfigDeleteUpdateParam param);
LineWarnConfigVO getConfig(Integer id);
IPage<LineWarnConfigVO> pageConfig(PageLineWarnConfigParam param);
List<LineWarnConfigVO.WarnTypeItem> listWarnType();
}
package com.clx.performance.service.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.linewarn.LineWarnInfoResolveUpdateParam;
import com.clx.performance.param.pc.linewarn.LineWarnInfoSuspendUpdateParam;
import com.clx.performance.param.pc.linewarn.PageLineWarnInfoParam;
import com.clx.performance.vo.pc.linewarn.LineWarnInfoVO;
public interface LineWarnInfoService {
void updateSuspend(LineWarnInfoSuspendUpdateParam param);
void updateResolve(LineWarnInfoResolveUpdateParam param);
// VehicleTraceVO getTrace(Integer id);
LineWarnInfoVO getInfo(Integer id);
IPage<LineWarnInfoVO> pageInfo(PageLineWarnInfoParam param);
}
package com.clx.performance.sqlProvider.linewarn;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.linewarn.PageLineWarnConfigParam;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class LineWarnConfigSqlProvider {
private static final String TABLE = "line_warn_config";
public String pageByParam(@Param("page") Page page, @Param("param") PageLineWarnConfigParam param) {
return new SQL(){{
SELECT("*");
FROM(TABLE);
WHERE("delete_status = 0");
if (StringUtils.isNotBlank(param.getWarnName())) {WHERE("warn_name like CONCAT('%', #{param.warnName},'%')");}
if (Objects.nonNull(param.getWarnType())) {WHERE("warn_type = #{param.warnType}");}
if (Objects.nonNull(param.getWarnLevel())) {WHERE("warn_level = #{param.warnLevel}");}
if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("create_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("create_time <= #{param.endTime}");}
ORDER_BY("id desc");
}}.toString();
}
}
package com.clx.performance.sqlProvider.linewarn;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.param.pc.linewarn.PageLineWarnInfoParam;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class LineWarnInfoSqlProvider {
private static final String TABLE = "vehicle_warn_info";
public String pageByParam(@Param("page") Page page, @Param("param") PageLineWarnInfoParam param) {
return new SQL(){{
SELECT("*");
FROM(TABLE);
if (StringUtils.isNotBlank(param.getWarnName())) {WHERE("warn_name like CONCAT('%', #{param.warnName},'%')");}
if (StringUtils.isNotBlank(param.getChildNo())) {WHERE("child_no = #{param.childNo}");}
if (Objects.nonNull(param.getWarnType())) {WHERE("warn_type = #{param.warnType}");}
if (Objects.nonNull(param.getWarnLevel())) {WHERE("warn_level = #{param.warnLevel}");}
if (Objects.nonNull(param.getStatus())) {
if (Objects.equals(param.getStatus(), LineWarnInfoEnum.Status.RESOLVE.getCode())) {
WHERE("status = #{param.status}");
}
else if (Objects.equals(param.getStatus(), LineWarnInfoEnum.Status.INIT.getCode())) {
WHERE("(status = 1 and (suspend_time is null or suspend_time < now()))");
}
else {
WHERE("(status = 1 and(suspend_time is not null and suspend_time > now()))");
}
}
if (StringUtils.isNotBlank(param.getSendAddress())) {WHERE("send_address like CONCAT('%',#{param.sendAddress},'%')");}
if (StringUtils.isNotBlank(param.getReceiveAddress())) {WHERE("receive_address like CONCAT('%',#{param.receiveAddress},'%')");}
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("create_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("create_time <= #{param.endTime}");}
ORDER_BY("id desc");
}}.toString();
}
}
package com.clx.performance.struct.linewarn;
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.vo.pc.linewarn.LineWarnConfigVO;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface LineWarnConfigStruct {
LineWarnConfigVO convert(LineWarnConfig item);
Page<LineWarnConfigVO> convertPage(IPage<LineWarnConfig> page);
}
package com.clx.performance.struct.linewarn;
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.vo.pc.linewarn.LineWarnInfoVO;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface LineWarnInfoStruct {
LineWarnInfoVO convert(LineWarnInfo item);
Page<LineWarnInfoVO> convertPage(IPage<LineWarnInfo> page);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论