提交 6badbe78 authored 作者: 艾庆国's avatar 艾庆国

运单预警

上级 90992706
......@@ -13,8 +13,8 @@ public enum VehicleWarnRangEnum {
@AllArgsConstructor
public enum WarnRange {
CHILD(1, "运单"),
ORDER(1, "货单"),
ALL(1, "全部"),
ORDER_GOODS(2, "货单"),
ALL(3, "全部"),
;
......
package com.clx.performance.vo.pc.vehiclewarn;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum;
import com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* @Author: aiqinguo
......@@ -79,12 +81,25 @@ public class VehicleWarnInfoVO {
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, VehicleWarnInfoEnum.Status.RESOLVE.getCode())) {return VehicleWarnInfoEnum.Status.RESOLVE.getCode();}
if (StringUtils.isNotBlank(suspendTime)){
if (LocalDateTimeUtil.parse(suspendTime).isBefore(LocalDateTime.now())) {
return VehicleWarnInfoEnum.Status.INIT.getCode();
} else {
return VehicleWarnInfoEnum.Status.SUSPEND.getCode();
}
}
return VehicleWarnInfoEnum.Status.INIT.getCode();
}
@ApiModelProperty(value = "处理状态:1待处理 2已处理 3暂停预警", example = "待处理")
private String statusMsg;
public String getStatusMsg() {
return VehicleWarnInfoEnum.Status.getMsgByCode(status);
return VehicleWarnInfoEnum.Status.getMsgByCode(getStatus());
}
@ApiModelProperty(value = "创建人", example = "")
private String createBy;
......
......@@ -27,7 +27,7 @@ public class VehicleWarnChildDaoImpl extends BaseDaoImpl<VehicleWarnChildMapper,
public boolean updateReceiveAddressDistance(VehicleWarnChild item) {
return update(lUdWrapper()
.eq(VehicleWarnChild::getId, item.getId())
.set(VehicleWarnChild::getTraceTime, item.getTraceTime())
.set(VehicleWarnChild::getReceiveAddressDistance, item.getReceiveAddressDistance())
);
}
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao;
import com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum;
import com.clx.performance.enums.vehiclewarn.VehicleWarnRangEnum;
import com.clx.performance.mapper.vehiclewarn.VehicleWarnInfoMapper;
import com.clx.performance.model.vehiclewarn.VehicleWarnInfo;
import com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnInfoParam;
......@@ -11,6 +12,10 @@ 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;
import java.util.Objects;
@Repository
public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, VehicleWarnInfo, Integer> implements VehicleWarnInfoDao {
......@@ -23,7 +28,45 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
}
@Override
public boolean updateWarn(VehicleWarnInfo item) {
public boolean batchUpdateStatus(List<Integer> idList, Integer status) {
return update(lUdWrapper()
.in(VehicleWarnInfo::getId, idList)
.set(VehicleWarnInfo::getStatus, status)
);
}
@Override
public boolean updateSuspendTime(VehicleWarnInfo item, Integer warnRang) {
if (Objects.equals(warnRang, VehicleWarnRangEnum.WarnRange.CHILD.getCode())) {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getId, item.getId())
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE)
.set(VehicleWarnInfo::getSuspendTime, item.getSuspendTime())
.set(VehicleWarnInfo::getStatus, item.getStatus())
);
}
else if (Objects.equals(warnRang, VehicleWarnRangEnum.WarnRange.ORDER_GOODS.getCode())) {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getWarnConfigId, item.getWarnConfigId())
.eq(VehicleWarnInfo::getOrderGoodsNo, item.getOrderGoodsNo())
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE)
.set(VehicleWarnInfo::getSuspendTime, item.getSuspendTime())
.set(VehicleWarnInfo::getStatus, item.getStatus())
);
}
else {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getWarnConfigId, item.getWarnConfigId())
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE)
.set(VehicleWarnInfo::getSuspendTime, item.getSuspendTime())
.set(VehicleWarnInfo::getStatus, item.getStatus())
);
}
}
@Override
public boolean updateWarnTime(VehicleWarnInfo item) {
return update(lUdWrapper()
.eq(VehicleWarnInfo::getId, item.getId())
.set(VehicleWarnInfo::getWarnTime, item.getWarnTime())
......@@ -41,37 +84,22 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
}
@Override
public Optional<VehicleWarnInfo> findByChildNoAndWarnConfigType(String childNo, Integer warnConfigType) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(VehicleWarnInfo::getChildNo, childNo)
.eq(VehicleWarnInfo::getWarnConfigId, warnConfigType)
.last("limit 1")
)
.map(super::getOne);
}
@Override
public Optional<VehicleWarnInfo> findEnableByChildNoAndWarnConfigType(String childNo, Integer warnConfigType) {
public Optional<VehicleWarnInfo> findByChildNoAndWarnConfigId(String childNo, Integer warnConfigId) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(VehicleWarnInfo::getChildNo, childNo)
.eq(VehicleWarnInfo::getWarnConfigId, warnConfigType)
.ne(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.RESOLVE.getCode())
.eq(VehicleWarnInfo::getWarnConfigId, warnConfigId)
.last("limit 1")
)
.map(super::getOne);
}
@Override
public Optional<VehicleWarnInfo> findByWarnConfigType(Integer warnConfigType) {
return Optional.of(warnConfigType)
.map(item -> lQrWrapper()
.eq(VehicleWarnInfo::getWarnConfigId, warnConfigType)
.orderByDesc(VehicleWarnInfo::getId)
.last("limit 1")
)
.map(super::getOne);
public List<VehicleWarnInfo> listSuspendTimeout() {
return list(lQrWrapper()
.eq(VehicleWarnInfo::getStatus, VehicleWarnInfoEnum.Status.SUSPEND.getCode())
.lt(VehicleWarnInfo::getSuspendTime, LocalDateTime.now())
);
}
......
......@@ -7,17 +7,20 @@ import com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnInfoParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
public interface VehicleWarnInfoDao extends BaseDao<VehicleWarnInfoMapper, VehicleWarnInfo, Integer> {
boolean updateStatus(VehicleWarnInfo item);
boolean updateWarn(VehicleWarnInfo item);
boolean batchUpdateStatus(List<Integer> idList, Integer status);
boolean updateSuspendTime(VehicleWarnInfo item, Integer warnRang);
boolean updateWarnTime(VehicleWarnInfo item);
Optional<VehicleWarnInfo> findById(Integer id);
Optional<VehicleWarnInfo> findByChildNoAndWarnConfigType(String childNo, Integer warnConfigType);
Optional<VehicleWarnInfo> findEnableByChildNoAndWarnConfigType(String childNo, Integer warnConfigType);
Optional<VehicleWarnInfo> findByChildNoAndWarnConfigId(String childNo, Integer warnConfigId);
Optional<VehicleWarnInfo> findByWarnConfigType(Integer warnConfigType);
List<VehicleWarnInfo> listSuspendTimeout();
IPage<VehicleWarnInfo> pageByParam(PageVehicleWarnInfoParam param);
......
package com.clx.performance.job.vehiclewarn;
import com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao;
import com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum;
import com.clx.performance.model.vehiclewarn.VehicleWarnChild;
import com.clx.performance.model.vehiclewarn.VehicleWarnInfo;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqService;
import com.msl.common.job.JobLog;
import com.xxl.job.core.handler.annotation.XxlJob;
......@@ -12,6 +15,7 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Component
......@@ -21,17 +25,19 @@ public class VehicleWarnJob {
private VehicleWarnChildDao vehicleWarnChildDao;
@Autowired
private VehicleWarnMqService vehicleWarnMqService;
@Autowired
private VehicleWarnInfoDao vehicleWarnInfoDao;
/**
* 车辆预警
* 车辆监控预警
*/
@XxlJob("truckWarn")
public void truckWarn() {
@XxlJob("vehicleWarnTruckWarn")
public void vehicleWarnTruckWarn() {
try {
List<VehicleWarnChild> list = vehicleWarnChildDao.ListTruckNoOfWarn();
log.info("车辆预警, size:{}", list.size());
log.info("车辆监控预警, size:{}", list.size());
for (VehicleWarnChild item : list) {
......@@ -43,9 +49,28 @@ public class VehicleWarnJob {
}
} catch (Exception e) {
log.warn("车辆轨迹同步失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("车辆轨迹同步失败,异常原因=====================", e);
log.warn("车辆监控预警失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("车辆监控预警失败,异常原因=====================", e);
}
}
// /**
// * 预警暂停取消
// */
// @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);
// }
// }
}
......@@ -28,7 +28,7 @@ public class VehicleWarnChild implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private String childNo; //运单编号
private String orderNo; //货单编号
private String orderGoodsNo; //货单编号
private String truckNo; //车牌号
private Long driverUserNo; //司机用户编号
private BigDecimal sendLongitude; //发货地址经度
......@@ -38,7 +38,7 @@ public class VehicleWarnChild implements HasKey<Integer> {
private Integer arriveSendExpectTime; //预计到达货源地时间 (min)
private Integer arriveReceiveExpectTime; //预计到达目的地时间 (min)
private LocalDateTime takeTime; //接单时间
private Integer receiveAddressDistance; //距离目的地距离(m)
private Integer receiveAddressDistance; //距离目的地距离(m)
private LocalDateTime traceTime; //轨迹更新时间
private Integer traceStatus; //轨迹更新状态:0禁止 1启用
private Integer wanStatus; //预警更新状态:0禁用 1启用
......
......@@ -30,6 +30,7 @@ public class VehicleWarnInfo implements HasKey<Integer> {
private String warnName; //预警名称
private Integer warnType; //预警类型
private Integer warnLevel; //预警级别
private String orderGoodsNo; //货单编号
private String childNo; //运单编号
private Integer sendAddressId; //发货地址id
private String sendAddress; //发货地址
......
......@@ -136,7 +136,7 @@ public class TruckTraceServiceImpl implements TruckTraceService {
@Override
public BigDecimal[] getCurrentPosition(String truckNo, Long userNo) {
String beginTime = LocalDateTimeUtils.formatTime(LocalDateTime.now().minusHours(1));
String beginTime = LocalDateTimeUtils.formatTime(LocalDateTime.now().minusMinutes(5));
String endTime = LocalDateTimeUtils.formatTime();
// 车辆
......
......@@ -55,8 +55,16 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
VehicleWarnInfo vehicleWarnInfo = vehicleWarnInfoDao.findById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
vehicleWarnInfo.setStatus(VehicleWarnInfoEnum.Status.SUSPEND.getCode());
vehicleWarnInfoDao.updateStatus(vehicleWarnInfo);
LocalDateTime endTime = LocalDateTimeUtils.parseTime(param.getWarnEndTime());
vehicleWarnInfo.setSuspendTime(endTime);
if (endTime.isBefore(LocalDateTime.now())){
vehicleWarnInfo.setStatus(VehicleWarnInfoEnum.Status.SUSPEND.getCode());
}
else {
vehicleWarnInfo.setStatus(VehicleWarnInfoEnum.Status.INIT.getCode());
}
vehicleWarnInfoDao.updateSuspendTime(vehicleWarnInfo, param.getWarnRang());
VehicleWarnLog vehicleWarnLog = new VehicleWarnLog();
vehicleWarnLog.setInfoId(vehicleWarnInfo.getId());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论