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

Merge remote-tracking branch 'origin/v17.3_youhua_20240615' into dev

# Conflicts: # performance-web/src/main/java/com/clx/performance/controller/temp/TempTraceController.java # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java # performance-web/src/main/java/com/clx/performance/mapper/OrderChildMapper.java
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
public enum OrderEnum {
;
//订单状态: 0待报价 1客户确认中 2报价已确认 3平台已承接 4已取消 5暂停 6拒绝承运 7 挂单中 8运输中 9订单已完成 10 已失效
@Getter
@AllArgsConstructor
public enum Status {
WAIT_QUOTATION(0, "待报价"),
CUSTOMER_CONFIRMING(1, "客户确认中"),
QUOTATION_CONFIRMED(2, "报价已确认"),
PLATFORM_UNDERTAKING(3, "平台已承接"),
CANCELED(4, "已取消"),
SUSPEND(5, "暂停"),
REFUSAL_TO_CARRY(6, "拒绝承运"),
ON_ORDER(7, "挂单中"),
IN_TRANSIT(8, "运输中"),
SUCCESS(9, "订单已完成"),
EXPIRED(10, "已失效"),
POST_ORDER(11, "已挂单"),
COMPLETED(12,"已完结")
;
private final Integer code;
private final String name;
public static Status getByCode(int code) {
for(Status type: Status.values()){
if(type.code == code){
return type;
}
}
return null;
}
}
//申请状态 1.申请 2.驳回 3.同意 4.过期'
@Getter
@AllArgsConstructor
public enum CancelApplyStatus {
APPLY(1, "申请"),
REJECT(2, "驳回"),
AGREE(3, "同意"),
EXPIRED(4, "过期");
private final int code;
private final String name;
public static Status getByCode(int code) {
for(Status type: Status.values()){
if(type.code == code){
return type;
}
}
return null;
}
}
//报价状态 2.确认报价 3.驳回报价 4.报价过期'
@Getter
@AllArgsConstructor
public enum QuotationStatus{
CONFIRM(2, "确认报价"),
REJECT(3, "驳回报价"),
EXPIRE(4, "报价过期");
private final int code;
private final String name;
public static QuotationStatus getByCode(Integer code) {
for(QuotationStatus type: QuotationStatus.values()){
if(type.code == code){
return type;
}
}
return null;
}
}
@Getter
@AllArgsConstructor
public enum OverWeight{
NO(0, "否"),
YES(1, "是");
private final Integer code;
private final String name;
public static OverWeight getByCode(Integer code) {
for(OverWeight type: OverWeight.values()){
if(Objects.equals(type.code,code)){
return type;
}
}
return null;
}
}
@Getter
@AllArgsConstructor
public enum ReportFlag{
NO(0, "否"),
YES(1, "是");
private final int code;
private final String name;
public static String getNameByCode(int code) {
for(ReportFlag type: ReportFlag.values()){
if(type.code == code){
return type.getName();
}
}
return null;
}
}
//预付运费标识 1:部分预付 2:全额预付
@Getter
@AllArgsConstructor
public enum PrepayFreightFlag{
PART(1, "部分预付"),
ALL(2, "全额预付");
private final Integer code;
private final String name;
public static String getByCode(Integer code) {
for(PrepayFreightFlag type: PrepayFreightFlag.values()){
if(Objects.equals(type.code,code)){
return type.getName();
}
}
return null;
}
}
public static final List<Integer> BORROW_TIP_STATUS_lIST = Arrays.asList(
Status.PLATFORM_UNDERTAKING.getCode(),
Status.ON_ORDER.getCode(),
Status.POST_ORDER.getCode(),
Status.IN_TRANSIT.getCode()
);
//外部系统可以修改数据的状态
public static final List<Integer> SYNC_ORDER_UPDATE_lIST = Arrays.asList(
Status.CUSTOMER_CONFIRMING.getCode(),
Status.QUOTATION_CONFIRMED.getCode(),
Status.PLATFORM_UNDERTAKING.getCode(),
Status.ON_ORDER.getCode(),
Status.POST_ORDER.getCode(),
Status.IN_TRANSIT.getCode()
);
}
...@@ -34,9 +34,9 @@ public enum ResultEnum implements com.msl.common.enums.ResultEnum { ...@@ -34,9 +34,9 @@ public enum ResultEnum implements com.msl.common.enums.ResultEnum {
VEHICLE_WARN_USER_EXIST(1201, "联系方式已存在"), VEHICLE_WARN_USER_EXIST(1201, "联系方式已存在"),
VEHICLE_WARN_CONFIG_EXIST(1201, "配置名称已存在"), VEHICLE_WARN_CONFIG_EXIST(1201, "预警方案名称已存在"),
LINE_WARN_USER_EXIST(1301, "联系方式已存在"), LINE_WARN_USER_EXIST(1301, "联系方式已存在"),
LINE_WARN_CONFIG_EXIST(1302, "配置名称已存在"), LINE_WARN_CONFIG_EXIST(1302, "预警方案名称已存在"),
......
...@@ -24,7 +24,7 @@ public enum VehicleWarnUserEnum { ...@@ -24,7 +24,7 @@ public enum VehicleWarnUserEnum {
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum NoticeStatus { public enum NoticeStatus {
NO(0, "禁用"), NO(0, "关闭"),
YES(1, "开启"), YES(1, "开启"),
; ;
......
package com.clx.performance.feign; package com.clx.performance.feign;
import com.clx.performance.param.app.collect.CollectTruckParam; import com.clx.performance.param.app.collect.CollectTruckParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam; import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.OrderCancelFeignParam; import com.clx.performance.param.pc.OrderCancelFeignParam;
...@@ -132,4 +133,12 @@ public interface PerformanceFeign { ...@@ -132,4 +133,12 @@ public interface PerformanceFeign {
@PostMapping(value = {"clx-performance/feign/orderGoods/saveBindTruck"}) @PostMapping(value = {"clx-performance/feign/orderGoods/saveBindTruck"})
Result<Object> saveBindTruck(@RequestBody @Validated DistributionTruckParam param); Result<Object> saveBindTruck(@RequestBody @Validated DistributionTruckParam param);
/**
* 取消货单
* @param param
* @return
*/
@PostMapping(value = {"clx-performance/feign/orderGoods/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param);
} }
package com.clx.performance.param.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Getter
@Setter
public class CancelOrderGoodsParam {
@NotBlank(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
@NotNull(message = "操作人编号不能为空")
@ApiModelProperty("操作人编号")
private Long createBy;
@NotNull(message = "操作人名称不能为空")
@Size(max=32,message = "操作人名称最多输入32个字符")
@ApiModelProperty("操作人名称")
private String createName;
}
...@@ -87,6 +87,12 @@ ...@@ -87,6 +87,12 @@
<artifactId>coding-api</artifactId> <artifactId>coding-api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>server-spring-boot-starter</artifactId>
</dependency>
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>com.msl</groupId>--> <!-- <groupId>com.msl</groupId>-->
<!-- <artifactId>cache-spring-boot-starter</artifactId>--> <!-- <artifactId>cache-spring-boot-starter</artifactId>-->
......
...@@ -99,7 +99,7 @@ public class RabbitLineWarnConfig { ...@@ -99,7 +99,7 @@ public class RabbitLineWarnConfig {
} }
@Bean @Bean
public Binding lineWarnLineReportQueueBinding() { public Binding lineWarnLineReportQueueBinding() {
return BindingBuilder.bind(lineWarnNoticeQueue()).to(lineWarnDefaultExchange()) return BindingBuilder.bind(lineWarnLineReportQueue()).to(lineWarnDefaultExchange())
.with(RabbitKeyLineWarnConstants.LINE_WARN_LINE_REPORT_ROUTING_KEY); .with(RabbitKeyLineWarnConstants.LINE_WARN_LINE_REPORT_ROUTING_KEY);
} }
......
...@@ -2,6 +2,7 @@ package com.clx.performance.constant; ...@@ -2,6 +2,7 @@ package com.clx.performance.constant;
public class RabbitKeyConstants { public class RabbitKeyConstants {
//更改订单状态为挂单中
public static final String ORDER_POSTED_QUEUE = "clx-order.order.posted.queue"; public static final String ORDER_POSTED_QUEUE = "clx-order.order.posted.queue";
//改订单状态为已挂单 //改订单状态为已挂单
...@@ -12,16 +13,18 @@ public class RabbitKeyConstants { ...@@ -12,16 +13,18 @@ public class RabbitKeyConstants {
public static final String ORDER_ON_ROUTE_KEY ="clx-order.order.on.route.key"; public static final String ORDER_ON_ROUTE_KEY ="clx-order.order.on.route.key";
/*
public static final String ORDER_ON_DEAD_ROUTE_KEY ="clx-order.order.on.dead.route.key"; public static final String ORDER_ON_DEAD_ROUTE_KEY ="clx-order.order.on.dead.route.key";
*/
public static final String ORDER_ON_QUEUE ="clx-order.order.on.queue"; public static final String ORDER_ON_QUEUE ="clx-order.order.on.queue";
public static final String ORDER_ON_EXCHANGE ="clx-order.order.on.exchange"; public static final String ORDER_ON_EXCHANGE ="clx-order.order.on.exchange";
//更改订单状态为挂单中
public static final String ORDER_ON_DEAD_EXCHANGE ="clx-order.order.on.dead.exchange";
public static final String ORDER_ON_DEAD_QUEUE ="clx-order.order.on.dead.queue"; /* public static final String ORDER_ON_DEAD_EXCHANGE ="clx-order.order.on.dead.exchange";
public static final String ORDER_ON_DEAD_QUEUE ="clx-order.order.on.dead.queue";*/
public static final String ORDER_GOODS_SYNC_TRUCK_DRIVER_INFO_QUEUE = "clx-performance.order.goods.sync.truck.driver.info.queue"; public static final String ORDER_GOODS_SYNC_TRUCK_DRIVER_INFO_QUEUE = "clx-performance.order.goods.sync.truck.driver.info.queue";
......
...@@ -36,4 +36,10 @@ public class RedisConstants { ...@@ -36,4 +36,10 @@ public class RedisConstants {
public static final String MESSAGE_RESET_PASSWORD_TOKEN = "message:resetpassword:token:"; public static final String MESSAGE_RESET_PASSWORD_TOKEN = "message:resetpassword:token:";
/**
* 线路天气预警
*/
public static final String LINE_WARN_WEATHER = "clx-performance:lineWarn:weather:";
} }
package com.clx.performance.controller.feign; package com.clx.performance.controller.feign;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.OrderChildReportParam; import com.clx.performance.param.pc.OrderChildReportParam;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
...@@ -55,5 +56,12 @@ public class OrderGoodsFeignController { ...@@ -55,5 +56,12 @@ public class OrderGoodsFeignController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "取消货单", notes = "<br>By:李瑞新")
@PostMapping({"/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param) {
orderGoodsService.cancelOrderGoods(param);
return Result.ok();
}
} }
package com.clx.performance.controller.system;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.registry.NacosRegistration;
import com.alibaba.cloud.nacos.registry.NacosServiceRegistry;
import com.msl.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 应用服务器控制
*
* @author wanglq
* Date 2022/11/28
* Time 15:43
*/
@RestController
@RequestMapping("/appServer")
@Slf4j
public class AppServerController {
@Autowired
private NacosRegistration registration;
@Autowired
private NacosServiceRegistry registry;
/**
* 下线服务
*
* @return
*/
@GetMapping("/deregister")
public Result<Void> deregister() {
NacosDiscoveryProperties properties = registration.getNacosDiscoveryProperties();
String service = properties.getService();
String group = properties.getGroup();
String clusterName = properties.getClusterName();
String ip = properties.getIp();
int port = properties.getPort();
log.info("deregister from nacos, serviceName:{}, groupName:{}, clusterName:{}, ip:{}, port:{}", service, group, clusterName, ip, port);
registry.deregister(registration);
return Result.ok();
}
/**
* 应用状态
*
* @return
*/
@GetMapping("/status")
public Result<String> status() {
return Result.ok("up");
}
}
package com.clx.performance.controller.temp; package com.clx.performance.controller.temp;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.clx.performance.service.linewarn.LineWarnMqService; import com.clx.performance.service.linewarn.LineWarnMqService;
import com.clx.performance.utils.gd.GdUtils;
import com.msl.common.base.Optional;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/** /**
* @Author: aiqingguo * @Author: aiqingguo
* @Description: 临时接口 * @Description: 临时接口
...@@ -22,6 +32,12 @@ public class TempLineWarnController { ...@@ -22,6 +32,12 @@ public class TempLineWarnController {
@Autowired @Autowired
private LineWarnMqService lineWarnMqService; private LineWarnMqService lineWarnMqService;
@Autowired
private AddressService addressService;
@Autowired
private GdUtils gdUtils;
@Autowired
private LineWarnMqHandlerService lineWarnMqHandlerService;
@ApiOperation(value = "test", notes = "<br>By:艾庆国") @ApiOperation(value = "test", notes = "<br>By:艾庆国")
@PostMapping("/test") @PostMapping("/test")
...@@ -45,5 +61,51 @@ public class TempLineWarnController { ...@@ -45,5 +61,51 @@ public class TempLineWarnController {
lineWarnMqService.orderGoodsAdd(orderGoodsNo); lineWarnMqService.orderGoodsAdd(orderGoodsNo);
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "天气", notes = "<br>By:艾庆国")
@PostMapping("/weather")
public Result<Map<String, String>> weather(Integer sendAddressId, Integer receiveAddressId) {
Map<String, String> result = new HashMap<>();
Optional<FeignAddressVO> addressOptional = addressService
.getSendAndReceiveAddress(sendAddressId, receiveAddressId);
if (addressOptional.isEmpty()) {return Result.ok(result);}
FeignAddressVO feignAddressVO = addressOptional.get();
if (feignAddressVO.getSendAddress()!=null){
String cityCode = gdUtils.getCity(feignAddressVO.getSendAddress().getLongitude(),
feignAddressVO.getSendAddress().getLatitude());
String weather = gdUtils.getWeather(cityCode);
result.put("send", weather);
}
if (feignAddressVO.getReceiveAddress()!=null){
String cityCode = gdUtils.getCity(feignAddressVO.getReceiveAddress().getLongitude(),
feignAddressVO.getReceiveAddress().getLatitude());
String weather = gdUtils.getWeather(cityCode);
result.put("receive", weather);
}
return Result.ok(result);
}
@ApiOperation(value = "发送预警短信", notes = "<br>By:艾庆国")
@PostMapping("/sendSms")
public Result sendSms(String mobile, String warnName, String orderGoodsNo) {
lineWarnMqHandlerService.sendSms(Arrays.asList(mobile), warnName, orderGoodsNo);
return Result.ok();
}
@ApiOperation(value = "发送预警外呼", notes = "<br>By:艾庆国")
@PostMapping("/sendClink")
public Result sendClink(String mobile, String warnName, String orderGoodsNo) {
lineWarnMqHandlerService.sendClink(Arrays.asList(mobile), warnName, orderGoodsNo);
return Result.ok();
}
} }
...@@ -181,9 +181,11 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -181,9 +181,11 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> listByChildNoList(List<String> childNoList); List<OrderChild> listByChildNoList(List<String> childNoList);
MonthInComeAndOrderedVO statisticsTruckMonth(LocalDateTime startTime, LocalDateTime endTime, String truckNo);
List<OrderChild> listByOrderGoodsNoAndStatus(String orderGoodsNo, List<Integer> statusList); List<OrderChild> listByOrderGoodsNoAndStatus(String orderGoodsNo, List<Integer> statusList);
BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo); BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo, BigDecimal defaultWeight);
BigDecimal sumLoadWeightByOrderGoodsNo(String orderGoodsNo); BigDecimal sumLoadWeightByOrderGoodsNo(String orderGoodsNo);
BigDecimal sumUnloadWeightByOrderGoodsNo(String orderGoodsNo); BigDecimal sumUnloadWeightByOrderGoodsNo(String orderGoodsNo);
......
...@@ -100,4 +100,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -100,4 +100,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight); void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight);
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList(); List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
void cancelOrderGoods(String orderNo);
} }
...@@ -568,6 +568,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -568,6 +568,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return list(lQrWrapper().in(OrderChild :: getChildNo,childNoList)); return list(lQrWrapper().in(OrderChild :: getChildNo,childNoList));
} }
@Override
public MonthInComeAndOrderedVO statisticsTruckMonth(LocalDateTime startTime, LocalDateTime endTime, String truckNo) {
return baseMapper.statisticsTruckMonth(startTime,endTime,truckNo);
}
@Override @Override
public List<OrderChild> listByOrderGoodsNoAndStatus(String orderGoodsNo, List<Integer> statusList) { public List<OrderChild> listByOrderGoodsNoAndStatus(String orderGoodsNo, List<Integer> statusList) {
return list(lQrWrapper() return list(lQrWrapper()
...@@ -578,8 +583,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -578,8 +583,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
} }
@Override @Override
public BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo) { public BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo, BigDecimal defaultWeight) {
return baseMapper.sumTakeWeightByOrderGoodsNo(orderGoodsNo); return baseMapper.sumTakeWeightByOrderGoodsNo(orderGoodsNo, defaultWeight);
} }
@Override @Override
......
...@@ -275,4 +275,12 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -275,4 +275,12 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() { public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() {
return baseMapper.queryProcessFleetOpenTruckList(); return baseMapper.queryProcessFleetOpenTruckList();
} }
@Override
public void cancelOrderGoods(String orderNo) {
update(lUdWrapper()
.eq(OrderGoods::getOrderNo, orderNo)
.set(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode())
);
}
} }
...@@ -27,6 +27,7 @@ public class LineWarnConfigDaoImpl extends BaseDaoImpl<LineWarnConfigMapper, Lin ...@@ -27,6 +27,7 @@ public class LineWarnConfigDaoImpl extends BaseDaoImpl<LineWarnConfigMapper, Lin
.set(LineWarnConfig::getInterval, item.getInterval()) .set(LineWarnConfig::getInterval, item.getInterval())
.set(LineWarnConfig::getTimeRatio, item.getTimeRatio()) .set(LineWarnConfig::getTimeRatio, item.getTimeRatio())
.set(LineWarnConfig::getTaskCompleteRatio, item.getTaskCompleteRatio()) .set(LineWarnConfig::getTaskCompleteRatio, item.getTaskCompleteRatio())
.set(LineWarnConfig::getCongestionTime, item.getCongestionTime())
); );
} }
......
...@@ -38,7 +38,7 @@ public class LineWarnInfoDaoImpl extends BaseDaoImpl<LineWarnInfoMapper, LineWar ...@@ -38,7 +38,7 @@ public class LineWarnInfoDaoImpl extends BaseDaoImpl<LineWarnInfoMapper, LineWar
public boolean updateSuspendTime(LineWarnInfo item) { public boolean updateSuspendTime(LineWarnInfo item) {
return update(lUdWrapper() return update(lUdWrapper()
.eq(LineWarnInfo::getWarnConfigId, item.getWarnConfigId()) .eq(LineWarnInfo::getId, item.getId())
.ne(LineWarnInfo::getStatus, LineWarnInfoEnum.Status.RESOLVE.getCode()) .ne(LineWarnInfo::getStatus, LineWarnInfoEnum.Status.RESOLVE.getCode())
.set(LineWarnInfo::getSuspendTime, item.getSuspendTime()) .set(LineWarnInfo::getSuspendTime, item.getSuspendTime())
); );
......
package com.clx.performance.esplus.mapper;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import org.dromara.easyes.core.kernel.BaseEsMapper;
public interface TruckLastPosESPlusMapper extends BaseEsMapper<TruckLatestPosESPlus> {
}
\ No newline at end of file
package com.clx.performance.esplus.model;
import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
import java.math.BigDecimal;
@Data
@IndexName(value = "clx_truck_latest_pos")
public class TruckLatestPosESPlus {
@IndexId(type= IdType.UUID)
private String id;
@IndexField(fieldType = FieldType.KEYWORD)
private String truckNo; //车辆编号
private BigDecimal angle; //agl
private BigDecimal speed; //速度
private BigDecimal mileage; //里程
private BigDecimal height; //海拔
private BigDecimal[] location; //位置
@IndexField(fieldType = FieldType.DATE)
private String gpsTime; //时间
private String createTime;
}
\ No newline at end of file
...@@ -3,10 +3,14 @@ package com.clx.performance.extranal.order; ...@@ -3,10 +3,14 @@ package com.clx.performance.extranal.order;
public interface InternalReportService { public interface InternalReportService {
Boolean checkLineJam(Integer sendSystemAddressId, Boolean checkLineJam(Integer sendSystemAddressId,
Integer receiveSystemAddressId, Integer receiveSystemAddressId,
Integer sendAddressId,
Integer receiveAddressId,
String beginTime, String beginTime,
Integer duration); Integer duration);
Boolean checkLineAbnormal(Integer sendSystemAddressId, Boolean checkLineAbnormal(Integer sendSystemAddressId,
Integer receiveSystemAddressId, Integer receiveSystemAddressId,
Integer sendAddressId,
Integer receiveAddressId,
String beginTime); String beginTime);
} }
...@@ -18,10 +18,15 @@ public class InternalReportServiceImpl implements InternalReportService { ...@@ -18,10 +18,15 @@ public class InternalReportServiceImpl implements InternalReportService {
@Override @Override
public Boolean checkLineJam(Integer sendSystemAddressId, public Boolean checkLineJam(Integer sendSystemAddressId,
Integer receiveSystemAddressId, Integer receiveSystemAddressId,
Integer sendAddressId,
Integer receiveAddressId,
String beginTime, String beginTime,
Integer duration) { Integer duration) {
return Optional.of(internalReportFeign.checkLineJam(sendSystemAddressId, return Optional.of(internalReportFeign.checkLineJam(sendSystemAddressId,
receiveSystemAddressId,beginTime,duration)) receiveSystemAddressId,
sendAddressId,
receiveAddressId,
beginTime,duration))
.filter(Result::succeed) .filter(Result::succeed)
.map(Result::getData) .map(Result::getData)
.orElse(false); .orElse(false);
...@@ -29,9 +34,14 @@ public class InternalReportServiceImpl implements InternalReportService { ...@@ -29,9 +34,14 @@ public class InternalReportServiceImpl implements InternalReportService {
@Override @Override
public Boolean checkLineAbnormal(Integer sendSystemAddressId, public Boolean checkLineAbnormal(Integer sendSystemAddressId,
Integer receiveSystemAddressId, Integer receiveSystemAddressId,
Integer sendAddressId,
Integer receiveAddressId,
String beginTime) { String beginTime) {
return Optional.of(internalReportFeign.checkLineAbnormal(sendSystemAddressId, return Optional.of(internalReportFeign.checkLineAbnormal(sendSystemAddressId,
receiveSystemAddressId,beginTime)) receiveSystemAddressId,
sendAddressId,
receiveAddressId,
beginTime))
.filter(Result::succeed) .filter(Result::succeed)
.map(Result::getData) .map(Result::getData)
.orElse(false); .orElse(false);
......
...@@ -10,7 +10,10 @@ import com.msl.common.base.Optional; ...@@ -10,7 +10,10 @@ import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -29,6 +32,9 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -29,6 +32,9 @@ public class RabbitOrderGoodsStatusOnHandler {
@Autowired @Autowired
private LineWarnMqService lineWarnMqService; private LineWarnMqService lineWarnMqService;
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE) @RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message); log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message);
...@@ -45,6 +51,14 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -45,6 +51,14 @@ public class RabbitOrderGoodsStatusOnHandler {
log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName()); log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName());
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode());
Message orderNoMessage = MessageBuilder.withBody(orderGoods.getOrderNo().getBytes()).build();
//发送mq,更改货单对应的订单为挂单中
rabbitTemplate.send(
RabbitKeyConstants.ORDER_POSTED_EXCHANGE, RabbitKeyConstants.ORDER_POSTED_ROUTE_KEY, orderNoMessage
);
// 发送mq // 发送mq
lineWarnMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo()); lineWarnMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo());
......
...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper; ...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants; import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam; import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService; import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -31,7 +32,12 @@ public class LineWarnLineWarnListener { ...@@ -31,7 +32,12 @@ public class LineWarnLineWarnListener {
log.info("线路预警-货单预警, message:{}", new String(message.getBody())); log.info("线路预警-货单预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnLineWarnMqParam>>(){}).getData()); process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnLineWarnMqParam>>(){}).getData());
}catch (Exception e){ }catch (Exception e){
log.info("线路预警-货单预警 失败",e); if (e instanceof ServiceSystemException){
log.info("线路预警-货单预警 失败, msg:{}", e.getMessage());
}
else {
log.info("线路预警-货单预警 失败", e);
}
} }
} }
......
...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper; ...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants; import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam; import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService; import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -31,7 +32,12 @@ public class LineWarnOrderChildWarnListener { ...@@ -31,7 +32,12 @@ public class LineWarnOrderChildWarnListener {
log.info("线路预警-运单异常预警, message:{}", new String(message.getBody())); log.info("线路预警-运单异常预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderChildWarnMqParam>>(){}).getData()); process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderChildWarnMqParam>>(){}).getData());
}catch (Exception e){ }catch (Exception e){
log.info("线路预警-运单异常预警 失败",e); if (e instanceof ServiceSystemException){
log.info("线路预警-运单异常预警 失败, msg:{}", e.getMessage());
}
else {
log.info("线路预警-运单异常预警 失败", e);
}
} }
} }
......
...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper; ...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyLineWarnConstants; import com.clx.performance.constant.RabbitKeyLineWarnConstants;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam; import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
import com.clx.performance.service.linewarn.LineWarnMqHandlerService; import com.clx.performance.service.linewarn.LineWarnMqHandlerService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -31,7 +32,12 @@ public class LineWarnOrderGoodsAddListener { ...@@ -31,7 +32,12 @@ public class LineWarnOrderGoodsAddListener {
log.info("线路预警-货单新增, message:{}", new String(message.getBody())); log.info("线路预警-货单新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderGoodsAddMqParam>>(){}).getData()); process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<LineWarnOrderGoodsAddMqParam>>(){}).getData());
}catch (Exception e){ }catch (Exception e){
log.info("线路预警-货单新增 失败",e); if (e instanceof ServiceSystemException){
log.info("线路预警-货单新增 失败, msg:{}", e.getMessage());
}
else {
log.info("线路预警-货单新增 失败", e);
}
} }
} }
......
...@@ -125,35 +125,51 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> { ...@@ -125,35 +125,51 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@Select("select sum(weight) from order_child where order_goods_no=#{orderGoodsNo} and status in(10,20,30,40,50,60,70,80,90,100)") @Select("select sum(weight) from order_child where order_goods_no=#{orderGoodsNo} and status in(10,20,30,40,50,60,70,80,90,100)")
BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo); BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo);
@Select("select sum(weight) from order_child where order_goods_no=#{orderGoodsNo} and status in(50,60,70,80,90,100)") @SelectProvider(type = OrderChildSqlProvider.class, method = "statisticsTruckMonth")
MonthInComeAndOrderedVO statisticsTruckMonth(@Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime, @Param("truckNo")String truckNo);
@Select("select sum(if (status>=50, load_net, #{defaultWeight})) from order_child " +
" where order_goods_no=#{orderGoodsNo} and status in(10,20,30,40,50,60,70,80,90,100)")
BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo, BigDecimal defaultWeight);
@Select("select sum(load_net) from order_child " +
" where order_goods_no=#{orderGoodsNo} and status in(50,60,70,80,90,100)")
BigDecimal sumLoadWeightByOrderGoodsNo(String orderGoodsNo); BigDecimal sumLoadWeightByOrderGoodsNo(String orderGoodsNo);
@Select("select sum(weight) from order_child where order_goods_no=#{orderGoodsNo} and status in(80,90,100)") @Select("select sum(if (unload_net>load_net, load_net, unload_net)) from order_child " +
" where order_goods_no=#{orderGoodsNo} and status in(80,90,100)")
BigDecimal sumUnloadWeightByOrderGoodsNo(String orderGoodsNo); BigDecimal sumUnloadWeightByOrderGoodsNo(String orderGoodsNo);
@Select("<script>select order_goods_no, count(*) num from order_child where status in(10,20,30,40,50,60,70,80,90,100) " + @Select("<script>select order_goods_no, count(*) num from order_child " +
" and order_goods_no in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " + " where status in(10,20,30,40,50,60,70,80,90,100) " +
" and order_goods_no " +
" in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" group by order_goods_no " + " group by order_goods_no " +
"</script>") "</script>")
List<LineWarnOrderChildStatisticsDTO>sumTakeNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumTakeNumByOrderGoodsNoList(List<String> orderGoodsNoList);
@Select("<script>select order_goods_no, count(*) num from order_child where status in(40,50,60,70,80,90,100) " + @Select("<script>select order_goods_no, count(*) num from order_child where status in(40,50,60,70,80,90,100) " +
" and order_goods_no in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " + " and order_goods_no " +
" in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" group by order_goods_no " + " group by order_goods_no " +
"</script>") "</script>")
List<LineWarnOrderChildStatisticsDTO>sumArriveSendNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumArriveSendNumByOrderGoodsNoList(List<String> orderGoodsNoList);
@Select("<script>select order_goods_no, count(*) num from order_child where status in(50,60,70,80,90,100) " + @Select("<script>select order_goods_no, count(*) num from order_child where status in(50,60,70,80,90,100) " +
" and order_goods_no in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " + " and order_goods_no " +
" in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" group by order_goods_no " + " group by order_goods_no " +
"</script>") "</script>")
List<LineWarnOrderChildStatisticsDTO>sumLoadNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumLoadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
@Select("<script>select order_goods_no, count(*) num from order_child where status in(70,80,90,100) " + @Select("<script>select order_goods_no, count(*) num from order_child where status in(70,80,90,100) " +
" and order_goods_no in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " + " and order_goods_no " +
" in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" group by order_goods_no " + " group by order_goods_no " +
"</script>") "</script>")
List<LineWarnOrderChildStatisticsDTO>sumArriveRecieveNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumArriveRecieveNumByOrderGoodsNoList(List<String> orderGoodsNoList);
@Select("<script>select order_goods_no, count(*) num from order_child where status in(80,90,100) " + @Select("<script>select order_goods_no, count(*) num from order_child where status in(80,90,100) " +
" and order_goods_no in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " + " and order_goods_no " +
" in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" group by order_goods_no " + " group by order_goods_no " +
"</script>") "</script>")
List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
......
...@@ -50,7 +50,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -50,7 +50,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "openOrderPageGoodsList") @SelectProvider(type = OrderGoodsSqlProvider.class, method = "openOrderPageGoodsList")
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(Page<OrderGoodsAPPVO> page, List<String> orderGoodsNoList); IPage<OrderGoodsAPPVO> openOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page, @Param("orderGoodsNoList") List<String> orderGoodsNoList);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "exclusiveOrderPageGoodsList") @SelectProvider(type = OrderGoodsSqlProvider.class, method = "exclusiveOrderPageGoodsList")
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(Page<OrderGoodsAPPVO> page, List<String> param); IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(Page<OrderGoodsAPPVO> page, List<String> param);
......
...@@ -7,14 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName; ...@@ -7,14 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn; import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey; import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Optional;
/** /**
* 货单定向绑定车辆表 * 货单定向绑定车辆表
...@@ -28,7 +25,7 @@ public class OrderGoodsFleetOpenTruck implements HasKey<Integer> { ...@@ -28,7 +25,7 @@ public class OrderGoodsFleetOpenTruck implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
@TableField("truck_no") @TableField("truck_list_json")
@ApiModelProperty("车辆列表") @ApiModelProperty("车辆列表")
private String truckListJson; private String truckListJson;
...@@ -52,21 +49,4 @@ public class OrderGoodsFleetOpenTruck implements HasKey<Integer> { ...@@ -52,21 +49,4 @@ public class OrderGoodsFleetOpenTruck implements HasKey<Integer> {
public Integer gainKey() { public Integer gainKey() {
return this.id; return this.id;
} }
@Getter
@AllArgsConstructor
public enum Status {
NORMAL(1, "正常"),
CANCEL(2, "取消"),
ORDER(3, "已接单"),
;
private final int code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
} }
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderGoodsLog;
import com.clx.performance.param.pc.OrderGoodsLogParam; import com.clx.performance.param.pc.OrderGoodsLogParam;
import com.clx.performance.vo.pc.OrderGoodsLogVO; import com.clx.performance.vo.pc.OrderGoodsLogVO;
import java.util.List;
/** /**
* @author kavin * @author kavin
* Date 2023-10-26 * Date 2023-10-26
...@@ -13,4 +16,6 @@ public interface OrderGoodsLogService { ...@@ -13,4 +16,6 @@ public interface OrderGoodsLogService {
void saveLog(String orderGoodsNo,Long userNo,String userName,String type,String remark); void saveLog(String orderGoodsNo,Long userNo,String userName,String type,String remark);
IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param); IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param);
void saveBatchLog(List<OrderGoodsLog> logs);
} }
...@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild; ...@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam; import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.OrderGoodsAPPVO; import com.clx.performance.vo.app.OrderGoodsAPPVO;
...@@ -102,4 +103,6 @@ public interface OrderGoodsService { ...@@ -102,4 +103,6 @@ public interface OrderGoodsService {
void batchUpdateResidueWeight(List<OrderGoods> list); void batchUpdateResidueWeight(List<OrderGoods> list);
void saveBindTruck(DistributionTruckParam param); void saveBindTruck(DistributionTruckParam param);
void cancelOrderGoods(CancelOrderGoodsParam param);
} }
...@@ -292,7 +292,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -292,7 +292,9 @@ public class OrderChildServiceImpl implements OrderChildService {
OrderGoodsTruckBind bind = null; OrderGoodsTruckBind bind = null;
List<OrderGoodsTruckBind> orderGoodsTruckBindList = orderGoodsTruckBindDao.getValidByTruckNo(truckNo).orNull(); List<OrderGoodsTruckBind> orderGoodsTruckBindList = orderGoodsTruckBindDao.getValidByTruckNo(truckNo).orNull();
if (Objects.equals(orderGoods.getPendingOrderWay(), if (Objects.equals(orderGoods.getPendingOrderWay(),
OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())) { OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode()) ||
Objects.equals(orderGoods.getPendingOrderWay(),
OrderGoodsPendingOrderWayStatusEnum.Status.FLEET_EXCLUSIVE.getCode())) {
if (CollectionUtils.isEmpty(orderGoodsTruckBindList)) { if (CollectionUtils.isEmpty(orderGoodsTruckBindList)) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR);
} }
......
...@@ -47,4 +47,9 @@ public class OrderGoodsLogServiceImpl implements OrderGoodsLogService { ...@@ -47,4 +47,9 @@ public class OrderGoodsLogServiceImpl implements OrderGoodsLogService {
result.setRecords(orderGoodsLogVOS); result.setRecords(orderGoodsLogVOS);
return result; return result;
} }
@Override
public void saveBatchLog(List<OrderGoodsLog> logs) {
orderGoodsLogDao.saveBatchList(logs);
}
} }
...@@ -23,6 +23,7 @@ import com.clx.performance.extranal.user.DriverService; ...@@ -23,6 +23,7 @@ import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.*; import com.clx.performance.model.*;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam; import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.service.IntegralMqService; import com.clx.performance.service.IntegralMqService;
...@@ -121,13 +122,24 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -121,13 +122,24 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Override @Override
public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) { public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) {
OrderGoodsVO orderGoodsVO = orderGoodsDao.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo).map(orderGoodsStruct::convert).get(); OrderGoodsVO orderGoodsVO = orderGoodsDao.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo).map(orderGoodsStruct::convert).get();
List<String> truckList = orderGoodsTruckBindDao.selectListByOrderGoodsNo(orderGoodsNo).stream().map(OrderGoodsTruckBind::getTruckNo).collect(Collectors.toList()); List<String> truckList;
if(Objects.equals(orderGoodsVO.getPendingOrderWay(),PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())){
truckList = orderGoodsTruckBindDao.
listByField(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.stream().map(OrderGoodsTruckBind::getTruckNo).collect(Collectors.toList());
}else{
truckList = orderGoodsTruckBindDao.selectListByOrderGoodsNo(orderGoodsNo).stream().map(OrderGoodsTruckBind::getTruckNo).collect(Collectors.toList());
}
String orderNo = orderGoodsVO.getOrderNo(); String orderNo = orderGoodsVO.getOrderNo();
orderGoodsVO.setTruckList(truckList); orderGoodsVO.setTruckList(truckList);
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
orderGoodsVO.setReveiveAddressAll(orderInfoFeign.getReveiveAddressAll()); orderGoodsVO.setReveiveAddressAll(orderInfoFeign.getReveiveAddressAll());
orderGoodsVO.setSendAddressAll(orderInfoFeign.getSendAddressAll()); orderGoodsVO.setSendAddressAll(orderInfoFeign.getSendAddressAll());
orderGoodsVO.setDispatchedOrders(truckList.size());
return orderGoodsVO; return orderGoodsVO;
} }
...@@ -162,7 +174,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -162,7 +174,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
page.getRecords().forEach(item->item.setDispatchedOrders(map.get(item.getOrderGoodsNo()))); page.getRecords().forEach(item->item.setDispatchedOrders(map.get(item.getOrderGoodsNo())));
} }
} }
return orderGoodsDao.pageOrderGoodsList(param); return page;
} }
@Override @Override
...@@ -961,4 +973,28 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -961,4 +973,28 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void cancelOrderGoods(CancelOrderGoodsParam param) {
//取消货单
orderGoodsDao.cancelOrderGoods(param.getOrderNo());
//批量保存货单日志
List<OrderGoods> orderGoodsListByOrderNo = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
List<OrderGoodsLog> orderGoodsLogs = new ArrayList<>();
OrderGoodsLog orderGoodsLog = null;
for(OrderGoods orderGoods:orderGoodsListByOrderNo){
orderGoodsLog = new OrderGoodsLog();
orderGoodsLog.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderGoodsLog.setCreateName(param.getCreateName());
orderGoodsLog.setType(OrderGoodsLogsEnum.Type.CANCEL.getName());
orderGoodsLog.setCreateBy(param.getCreateBy());
orderGoodsLog.setRemark("货主发起减吨请求,当前已挂单量超过总拉运量,自动取消");
orderGoodsLogs.add(orderGoodsLog);
}
orderGoodsLogService.saveBatchLog(orderGoodsLogs);
}
} }
...@@ -68,4 +68,18 @@ public class LineWarnCommonServiceImpl implements LineWarnCommonService { ...@@ -68,4 +68,18 @@ public class LineWarnCommonServiceImpl implements LineWarnCommonService {
lineWarnMqService.lineWarnNotice(lineWarnInfo.getId()); lineWarnMqService.lineWarnNotice(lineWarnInfo.getId());
} }
/**
* 暂停检测
*/
@Override
public boolean suspendCheck(LineWarnInfo lineWarnInfo){
if (lineWarnInfo == null) {return false;}
if (lineWarnInfo.getSuspendTime() != null && lineWarnInfo.getSuspendTime().isAfter(LocalDateTime.now())){
return true;
}
return false;
}
} }
...@@ -2,9 +2,11 @@ package com.clx.performance.service.impl.linewarn; ...@@ -2,9 +2,11 @@ package com.clx.performance.service.impl.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.linewarn.LineWarnConfigDao; import com.clx.performance.dao.linewarn.LineWarnConfigDao;
import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.enums.ResultEnum; import com.clx.performance.enums.ResultEnum;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum; import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.model.linewarn.LineWarnConfig; import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.model.vehiclewarn.VehicleWarnInfo;
import com.clx.performance.param.pc.linewarn.*; import com.clx.performance.param.pc.linewarn.*;
import com.clx.performance.service.linewarn.LineWarnConfigService; import com.clx.performance.service.linewarn.LineWarnConfigService;
import com.clx.performance.struct.linewarn.LineWarnConfigStruct; import com.clx.performance.struct.linewarn.LineWarnConfigStruct;
...@@ -32,6 +34,9 @@ public class LineWarnConfigServiceImpl implements LineWarnConfigService { ...@@ -32,6 +34,9 @@ public class LineWarnConfigServiceImpl implements LineWarnConfigService {
@Autowired @Autowired
private LineWarnConfigStruct lineWarnConfigStruct; private LineWarnConfigStruct lineWarnConfigStruct;
@Autowired
private LineWarnInfoDao lineWarnInfoDao;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void saveConfig(LineWarnConfigAddParam param) { public void saveConfig(LineWarnConfigAddParam param) {
...@@ -77,6 +82,11 @@ public class LineWarnConfigServiceImpl implements LineWarnConfigService { ...@@ -77,6 +82,11 @@ public class LineWarnConfigServiceImpl implements LineWarnConfigService {
lineWarnConfig.setTaskCompleteRatio(param.getTaskCompleteRatio()); lineWarnConfig.setTaskCompleteRatio(param.getTaskCompleteRatio());
lineWarnConfig.setCongestionTime(param.getCongestionTime()); lineWarnConfig.setCongestionTime(param.getCongestionTime());
lineWarnConfigDao.updateConfig(lineWarnConfig); lineWarnConfigDao.updateConfig(lineWarnConfig);
// 同步历史数据
VehicleWarnInfo vehicleWarnInfo = new VehicleWarnInfo();
lineWarnInfoDao.updateByConfig(lineWarnConfig.getId()
, lineWarnConfig.getWarnName(), lineWarnConfig.getWarnLevel());
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
......
...@@ -57,9 +57,15 @@ public class LineWarnCongestionWarnServiceImpl implements LineWarnCongestionWarn ...@@ -57,9 +57,15 @@ public class LineWarnCongestionWarnServiceImpl implements LineWarnCongestionWarn
return; return;
} }
// 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
// 检测是否拥堵 // 检测是否拥堵
Boolean flag = internalReportService.checkLineJam(orderGoods.getSendSystemAddressId(), Boolean flag = internalReportService.checkLineJam(orderGoods.getSendSystemAddressId(),
orderGoods.getReceiveSystemAddressId(), orderGoods.getReceiveSystemAddressId(),
orderGoods.getSendAddressId(),
orderGoods.getReceiveAddressId(),
LocalDateTimeUtils.formatTime(beginTime), lineWarnConfig.getCongestionTime()); LocalDateTimeUtils.formatTime(beginTime), lineWarnConfig.getCongestionTime());
if (!flag) {return;} if (!flag) {return;}
......
...@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.linewarn; ...@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.linewarn;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.linewarn.LineWarnInfoDao; import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.dao.linewarn.LineWarnLogDao; import com.clx.performance.dao.linewarn.LineWarnLogDao;
import com.clx.performance.dao.linewarn.LineWarnRangeDao; import com.clx.performance.dao.linewarn.LineWarnRangeDao;
...@@ -11,6 +12,7 @@ import com.clx.performance.enums.ResultEnum; ...@@ -11,6 +12,7 @@ import com.clx.performance.enums.ResultEnum;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum; import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.enums.linewarn.LineWarnLogEnum; import com.clx.performance.enums.linewarn.LineWarnLogEnum;
import com.clx.performance.enums.linewarn.LineWarnRangEnum; import com.clx.performance.enums.linewarn.LineWarnRangEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnInfo; import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.model.linewarn.LineWarnLog; import com.clx.performance.model.linewarn.LineWarnLog;
import com.clx.performance.model.linewarn.LineWarnRange; import com.clx.performance.model.linewarn.LineWarnRange;
...@@ -49,6 +51,8 @@ public class LineWarnInfoServiceImpl implements LineWarnInfoService { ...@@ -49,6 +51,8 @@ public class LineWarnInfoServiceImpl implements LineWarnInfoService {
@Autowired @Autowired
private OrderChildDao orderChildDao; private OrderChildDao orderChildDao;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
...@@ -120,12 +124,15 @@ public class LineWarnInfoServiceImpl implements LineWarnInfoService { ...@@ -120,12 +124,15 @@ public class LineWarnInfoServiceImpl implements LineWarnInfoService {
// 更新车数统计数据 // 更新车数统计数据
List<String> orderGoodsNoList = page.getRecords().stream().map(item -> item.getOrderGoodsNo()).collect(Collectors.toList()); List<String> orderGoodsNoList = page.getRecords().stream().map(item -> item.getOrderGoodsNo()).collect(Collectors.toList());
if (!orderGoodsNoList.isEmpty()) { if (!orderGoodsNoList.isEmpty()) {
List<OrderGoods> pengList = orderGoodsDao.selectListByOrderGoodsList(orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO> takeList = orderChildDao.sumTakeNumByOrderGoodsNoList(orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO> takeList = orderChildDao.sumTakeNumByOrderGoodsNoList(orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO> sendList = orderChildDao.sumArriveSendNumByOrderGoodsNoList(orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO> sendList = orderChildDao.sumArriveSendNumByOrderGoodsNoList(orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO> loadList = orderChildDao.sumLoadNumByOrderGoodsNoList(orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO> loadList = orderChildDao.sumLoadNumByOrderGoodsNoList(orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO> receiveList = orderChildDao.sumArriveRecieveNumByOrderGoodsNoList(orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO> receiveList = orderChildDao.sumArriveRecieveNumByOrderGoodsNoList(orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO> unloadList = orderChildDao.sumUnloadNumByOrderGoodsNoList(orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO> unloadList = orderChildDao.sumUnloadNumByOrderGoodsNoList(orderGoodsNoList);
Map<String, OrderGoods> pengMap = pengList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item));
Map<String, LineWarnOrderChildStatisticsDTO> takeMap = takeList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item)); Map<String, LineWarnOrderChildStatisticsDTO> takeMap = takeList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item));
Map<String, LineWarnOrderChildStatisticsDTO> sendMap = sendList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item)); Map<String, LineWarnOrderChildStatisticsDTO> sendMap = sendList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item));
Map<String, LineWarnOrderChildStatisticsDTO> loadMap = loadList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item)); Map<String, LineWarnOrderChildStatisticsDTO> loadMap = loadList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item));
...@@ -133,6 +140,7 @@ public class LineWarnInfoServiceImpl implements LineWarnInfoService { ...@@ -133,6 +140,7 @@ public class LineWarnInfoServiceImpl implements LineWarnInfoService {
Map<String, LineWarnOrderChildStatisticsDTO> unloadMap = unloadList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item)); Map<String, LineWarnOrderChildStatisticsDTO> unloadMap = unloadList.stream().collect(Collectors.toMap(item -> item.getOrderGoodsNo(), item -> item));
for (LineWarnInfoVO item : page.getRecords()) { for (LineWarnInfoVO item : page.getRecords()) {
item.setPengNum(pengMap.get(item.getOrderGoodsNo()) == null? 0:pengMap.get(item.getOrderGoodsNo()).getNeedTruckNum());
item.setTakeNum(takeMap.get(item.getOrderGoodsNo()) == null? 0:takeMap.get(item.getOrderGoodsNo()).getNum()); item.setTakeNum(takeMap.get(item.getOrderGoodsNo()) == null? 0:takeMap.get(item.getOrderGoodsNo()).getNum());
item.setArriveSendNum(sendMap.get(item.getOrderGoodsNo()) == null? 0:sendMap.get(item.getOrderGoodsNo()).getNum()); item.setArriveSendNum(sendMap.get(item.getOrderGoodsNo()) == null? 0:sendMap.get(item.getOrderGoodsNo()).getNum());
item.setLoadNum(loadMap.get(item.getOrderGoodsNo()) == null? 0:loadMap.get(item.getOrderGoodsNo()).getNum()); item.setLoadNum(loadMap.get(item.getOrderGoodsNo()) == null? 0:loadMap.get(item.getOrderGoodsNo()).getNum());
......
...@@ -55,9 +55,15 @@ public class LineWarnLineWarnServiceImpl implements LineWarnLineWarnService { ...@@ -55,9 +55,15 @@ public class LineWarnLineWarnServiceImpl implements LineWarnLineWarnService {
return; return;
} }
// 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
// 检测线路是否异常 // 检测线路是否异常
Boolean flag = internalReportService.checkLineAbnormal(orderGoods.getSendSystemAddressId(), Boolean flag = internalReportService.checkLineAbnormal(orderGoods.getSendSystemAddressId(),
orderGoods.getReceiveSystemAddressId(), orderGoods.getReceiveSystemAddressId(),
orderGoods.getSendAddressId(),
orderGoods.getReceiveAddressId(),
LocalDateTimeUtils.formatTime(beginTime)); LocalDateTimeUtils.formatTime(beginTime));
if (!flag) {return;} if (!flag) {return;}
......
...@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
...@@ -47,6 +48,8 @@ public class LineWarnLoadWarnServiceImpl implements LineWarnLoadWarnService { ...@@ -47,6 +48,8 @@ public class LineWarnLoadWarnServiceImpl implements LineWarnLoadWarnService {
int needTime = unloadTimeAvg+arriveReceiveExpectTime; int needTime = unloadTimeAvg+arriveReceiveExpectTime;
// 接单最长时间 // 接单最长时间
long difTime = totalTime - needTime; long difTime = totalTime - needTime;
if (difTime < 0){difTime = 0;}
// 任务量 // 任务量
BigDecimal taskWeight = lineWarnCommonInfo.getTaskWeight(); BigDecimal taskWeight = lineWarnCommonInfo.getTaskWeight();
...@@ -54,8 +57,9 @@ public class LineWarnLoadWarnServiceImpl implements LineWarnLoadWarnService { ...@@ -54,8 +57,9 @@ public class LineWarnLoadWarnServiceImpl implements LineWarnLoadWarnService {
BigDecimal taskCompleteRatio = BigDecimal.ZERO; BigDecimal taskCompleteRatio = BigDecimal.ZERO;
BigDecimal weight = orderChildDao.sumLoadWeightByOrderGoodsNo(orderGoods.getOrderGoodsNo()); BigDecimal weight = orderChildDao.sumLoadWeightByOrderGoodsNo(orderGoods.getOrderGoodsNo());
if (weight != null){ if (weight != null){
taskCompleteRatio = weight.divide(taskWeight, 4, BigDecimal.ROUND_UP).movePointRight(2); taskCompleteRatio = weight.divide(taskWeight, 4, RoundingMode.UP).movePointRight(2);
} }
log.info("装车预警,任务量:{}, 完成量:{}, 任务完成率:{}, 总时间:{}, 需要时间:{}, 相差时间:{}", taskWeight, weight, taskCompleteRatio, totalTime, needTime, difTime);
List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao
.listByWarnType(LineWarnConfigEnum.WarnType.LOAD.getCode()); .listByWarnType(LineWarnConfigEnum.WarnType.LOAD.getCode());
...@@ -76,12 +80,16 @@ public class LineWarnLoadWarnServiceImpl implements LineWarnLoadWarnService { ...@@ -76,12 +80,16 @@ public class LineWarnLoadWarnServiceImpl implements LineWarnLoadWarnService {
return; return;
} }
int time = lineWarnConfig.getTimeRatio().multiply(new BigDecimal(difTime)).intValue(); // 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
int time = lineWarnConfig.getTimeRatio().multiply(new BigDecimal(difTime)).movePointLeft(2).intValue();
// 未达到时间占比 // 未达到时间占比
if (pendingOrderTime.plusMinutes(time).isAfter(LocalDateTime.now())){return;} if (pendingOrderTime.plusMinutes(time).isAfter(LocalDateTime.now())){return;}
// 达到任务占比 // 达到任务占比
if (lineWarnConfig.getTaskCompleteRatio().compareTo(taskCompleteRatio) >= 0) {return;} if (lineWarnConfig.getTaskCompleteRatio().compareTo(taskCompleteRatio) < 0) {return;}
// 更新 // 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig); lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig);
......
...@@ -47,6 +47,7 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService { ...@@ -47,6 +47,7 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
// 缺省装卸车时间 // 缺省装卸车时间
private static final int DEFAULT_LOAD_UNLOAD_TIME = 60; private static final int DEFAULT_LOAD_UNLOAD_TIME = 60;
private static final int DEFAULT_LOAD_UNLOAD_DAY = 7; private static final int DEFAULT_LOAD_UNLOAD_DAY = 7;
private static final int SECOND_PER_MIN = 60;
@Autowired @Autowired
private ClxMessageConfig clxMessageConfig; private ClxMessageConfig clxMessageConfig;
...@@ -94,14 +95,14 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService { ...@@ -94,14 +95,14 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(ResultEnum.DATA_NOT_FIND); .getOrderInfo(orderGoods.getOrderNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
// 计算货源地到 // 计算货源地到
int arriveSendExpectTime = gdUtils.getNeedTime(new BigDecimal[]{orderGoods.getSendLongitude(), int arriveReceiveExpectTime = gdUtils.getNeedTime(new BigDecimal[]{orderGoods.getSendLongitude(),
orderGoods.getSendLatitude()}, orderGoods.getReceiveLongitude(), orderGoods.getReceiveLatitude()); orderGoods.getSendLatitude()}, orderGoods.getReceiveLongitude(), orderGoods.getReceiveLatitude());
LineWarnOrderGoods lineWarnOrderGoods = new LineWarnOrderGoods(); LineWarnOrderGoods lineWarnOrderGoods = new LineWarnOrderGoods();
lineWarnOrderGoods.setOrderGoodsNo(orderGoods.getOrderGoodsNo()); lineWarnOrderGoods.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
lineWarnOrderGoods.setTransportEndTime(LocalDateTimeUtils.parseTime(orderInfo.getTransportEndTime())); lineWarnOrderGoods.setTransportEndTime(LocalDateTimeUtils.parseTime(orderInfo.getTransportEndTime()));
lineWarnOrderGoods.setPendingOrderTime(orderGoods.getPendingOrderTime()); lineWarnOrderGoods.setPendingOrderTime(orderGoods.getPendingOrderTime());
lineWarnOrderGoods.setArriveReceiveExpectTime(arriveSendExpectTime==0? null : arriveSendExpectTime); lineWarnOrderGoods.setArriveReceiveExpectTime(arriveReceiveExpectTime==0? null : arriveReceiveExpectTime);
lineWarnOrderGoodsDao.saveEntity(lineWarnOrderGoods); lineWarnOrderGoodsDao.saveEntity(lineWarnOrderGoods);
} }
...@@ -126,12 +127,18 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService { ...@@ -126,12 +127,18 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
.loadTimeAvg(orderGoods.getSendAddressId(), orderGoods.getReceiveAddressId(), .loadTimeAvg(orderGoods.getSendAddressId(), orderGoods.getReceiveAddressId(),
orderGoods.getSendSystemAddressId(), orderGoods.getReceiveSystemAddressId(), orderGoods.getSendSystemAddressId(), orderGoods.getReceiveSystemAddressId(),
LocalDateTimeUtils.formatTime(LocalDateTime.now().minusDays(DEFAULT_LOAD_UNLOAD_DAY))); LocalDateTimeUtils.formatTime(LocalDateTime.now().minusDays(DEFAULT_LOAD_UNLOAD_DAY)));
if (loadTimeAvg == null) {loadTimeAvg = DEFAULT_LOAD_UNLOAD_TIME;}
else {loadTimeAvg = loadTimeAvg/SECOND_PER_MIN;}
Integer unloadTimeAvg = orderChildDao Integer unloadTimeAvg = orderChildDao
.unloadTimeAvg(orderGoods.getSendAddressId(), orderGoods.getReceiveAddressId(), .unloadTimeAvg(orderGoods.getSendAddressId(), orderGoods.getReceiveAddressId(),
orderGoods.getSendSystemAddressId(), orderGoods.getReceiveSystemAddressId(), orderGoods.getSendSystemAddressId(), orderGoods.getReceiveSystemAddressId(),
LocalDateTimeUtils.formatTime(LocalDateTime.now().minusDays(DEFAULT_LOAD_UNLOAD_DAY))); LocalDateTimeUtils.formatTime(LocalDateTime.now().minusDays(DEFAULT_LOAD_UNLOAD_DAY)));
lineWarnCommonInfo.setLoadTimeAvg(loadTimeAvg!=null? loadTimeAvg:DEFAULT_LOAD_UNLOAD_TIME); if (unloadTimeAvg == null) {unloadTimeAvg = DEFAULT_LOAD_UNLOAD_TIME;}
lineWarnCommonInfo.setUnloadTimeAvg(unloadTimeAvg!=null? unloadTimeAvg:DEFAULT_LOAD_UNLOAD_TIME); else {unloadTimeAvg = unloadTimeAvg/SECOND_PER_MIN;}
lineWarnCommonInfo.setLoadTimeAvg(loadTimeAvg);
lineWarnCommonInfo.setUnloadTimeAvg(unloadTimeAvg);
log.info("线路预警, lineWarnCommonInfo:{}", lineWarnCommonInfo); log.info("线路预警, lineWarnCommonInfo:{}", lineWarnCommonInfo);
...@@ -254,6 +261,7 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService { ...@@ -254,6 +261,7 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
ClinkMessageReq req = new ClinkMessageReq(); ClinkMessageReq req = new ClinkMessageReq();
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("触发"); sb.append("触发");
sb.append(warnName); sb.append(warnName);
sb.append("预警;货单"); sb.append("预警;货单");
......
...@@ -30,7 +30,7 @@ public class LineWarnOrderChildWarnServiceImpl implements LineWarnOrderChildWarn ...@@ -30,7 +30,7 @@ public class LineWarnOrderChildWarnServiceImpl implements LineWarnOrderChildWarn
@Override @Override
public void orderChildWarn(OrderGoods orderGoods) { public void orderChildWarn(OrderGoods orderGoods) {
List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao
.listByWarnType(LineWarnConfigEnum.WarnType.UNLOAD.getCode()); .listByWarnType(LineWarnConfigEnum.WarnType.CHILD_ABNORMAL.getCode());
if (lineWarnConfigList.isEmpty()) {return;} if (lineWarnConfigList.isEmpty()) {return;}
for (LineWarnConfig item : lineWarnConfigList) { for (LineWarnConfig item : lineWarnConfigList) {
...@@ -46,6 +46,10 @@ public class LineWarnOrderChildWarnServiceImpl implements LineWarnOrderChildWarn ...@@ -46,6 +46,10 @@ public class LineWarnOrderChildWarnServiceImpl implements LineWarnOrderChildWarn
return; return;
} }
// 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
// 更新 // 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig); lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig);
} }
......
package com.clx.performance.service.impl.linewarn; package com.clx.performance.service.impl.linewarn;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.linewarn.LineWarnConfigDao; import com.clx.performance.dao.linewarn.LineWarnConfigDao;
import com.clx.performance.dao.linewarn.LineWarnInfoDao; import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO; import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.enums.OrderEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum; import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum; import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnConfig; import com.clx.performance.model.linewarn.LineWarnConfig;
import com.clx.performance.model.linewarn.LineWarnInfo; import com.clx.performance.model.linewarn.LineWarnInfo;
...@@ -17,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -17,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
...@@ -28,6 +33,8 @@ import java.util.Objects; ...@@ -28,6 +33,8 @@ import java.util.Objects;
public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService { public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService {
// 默认时间 // 默认时间
private static final int DEFAULT_TIME = 60; private static final int DEFAULT_TIME = 60;
private static final BigDecimal OVER_WEIGHT = new BigDecimal(50);
private static final BigDecimal STANDARD_WEIGHT = new BigDecimal(35);
@Autowired @Autowired
private LineWarnConfigDao lineWarnConfigDao; private LineWarnConfigDao lineWarnConfigDao;
@Autowired @Autowired
...@@ -36,6 +43,8 @@ public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService { ...@@ -36,6 +43,8 @@ public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService {
private LineWarnCommonService lineWarnCommonService; private LineWarnCommonService lineWarnCommonService;
@Autowired @Autowired
private OrderChildDao orderChildDao; private OrderChildDao orderChildDao;
@Autowired
private OrderService orderService;
@Override @Override
public void takeWarn(OrderGoods orderGoods, LineWarnCommonInfoDTO lineWarnCommonInfo) { public void takeWarn(OrderGoods orderGoods, LineWarnCommonInfoDTO lineWarnCommonInfo) {
...@@ -49,16 +58,25 @@ public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService { ...@@ -49,16 +58,25 @@ public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService {
int needTime = DEFAULT_TIME+loadTimeAvg+unloadTimeAvg+arriveReceiveExpectTime; int needTime = DEFAULT_TIME+loadTimeAvg+unloadTimeAvg+arriveReceiveExpectTime;
// 接单最长时间 // 接单最长时间
long difTime = totalTime - needTime; long difTime = totalTime - needTime;
if (difTime < 0){difTime = 0;}
// 任务量 // 任务量
BigDecimal taskWeight = lineWarnCommonInfo.getTaskWeight(); BigDecimal taskWeight = lineWarnCommonInfo.getTaskWeight();
// 任务完成率 // 任务完成率
BigDecimal taskCompleteRatio = BigDecimal.ZERO; BigDecimal taskCompleteRatio = BigDecimal.ZERO;
BigDecimal weight = orderChildDao.sumTakeWeightByOrderGoodsNo(orderGoods.getOrderGoodsNo());
if (weight != null){
taskCompleteRatio = weight.divide(taskWeight, 4, BigDecimal.ROUND_UP).movePointRight(2);
}
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
BigDecimal weight = orderChildDao.sumTakeWeightByOrderGoodsNo(orderGoods.getOrderGoodsNo(),
Objects.equals(orderInfo.getOverWeight(), OrderEnum.OverWeight.YES.getCode())
? OVER_WEIGHT
: STANDARD_WEIGHT
);
if (weight == null) {weight = BigDecimal.ZERO;}
taskCompleteRatio = weight.divide(taskWeight, 4, RoundingMode.UP).movePointRight(2);
log.info("接单预警,任务量:{}, 完成量:{}, 任务完成率:{}, 总时间:{}, 需要时间:{}, 相差时间:{}", taskWeight, weight, taskCompleteRatio, totalTime, needTime, difTime);
List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao
.listByWarnType(LineWarnConfigEnum.WarnType.TAKE.getCode()); .listByWarnType(LineWarnConfigEnum.WarnType.TAKE.getCode());
if (lineWarnConfigList.isEmpty()) {return;} if (lineWarnConfigList.isEmpty()) {return;}
...@@ -78,12 +96,16 @@ public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService { ...@@ -78,12 +96,16 @@ public class LineWarnTakeWarnServiceImpl implements LineWarnTakeWarnService {
return; return;
} }
int time = lineWarnConfig.getTimeRatio().multiply(new BigDecimal(difTime)).intValue(); // 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
int time = lineWarnConfig.getTimeRatio().multiply(new BigDecimal(difTime)).movePointLeft(2).intValue();
// 未达到时间占比 // 未达到时间占比
if (pendingOrderTime.plusMinutes(time).isAfter(LocalDateTime.now())){return;} if (pendingOrderTime.plusMinutes(time).isAfter(LocalDateTime.now())){return;}
// 达到任务占比 // 达到任务占比
if (lineWarnConfig.getTaskCompleteRatio().compareTo(taskCompleteRatio) >= 0) {return;} if (lineWarnConfig.getTaskCompleteRatio().compareTo(taskCompleteRatio) < 0) {return;}
// 更新 // 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig); lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig);
......
...@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
...@@ -42,15 +43,18 @@ public class LineWarnUnloadServiceImpl implements LineWarnUnloadWarnService { ...@@ -42,15 +43,18 @@ public class LineWarnUnloadServiceImpl implements LineWarnUnloadWarnService {
int needTime = 0; int needTime = 0;
// 接单最长时间 // 接单最长时间
long difTime = totalTime - needTime; long difTime = totalTime - needTime;
if (difTime < 0){difTime = 0;}
// 任务量 // 任务量
BigDecimal taskWeight = lineWarnCommonInfo.getTaskWeight(); BigDecimal taskWeight = lineWarnCommonInfo.getTaskWeight();
// 任务完成率 // 任务完成率
BigDecimal taskCompleteRatio = BigDecimal.ZERO; BigDecimal taskCompleteRatio = BigDecimal.ZERO;
BigDecimal weight = orderChildDao.sumTakeWeightByOrderGoodsNo(orderGoods.getOrderGoodsNo()); BigDecimal weight = orderChildDao.sumUnloadWeightByOrderGoodsNo(orderGoods.getOrderGoodsNo());
if (weight != null){ if (weight != null){
taskCompleteRatio = weight.divide(taskWeight, 4, BigDecimal.ROUND_UP).movePointRight(2); taskCompleteRatio = weight.divide(taskWeight, 4, RoundingMode.UP).movePointRight(2);
} }
log.info("卸车预警,任务量:{}, 完成量:{}, 任务完成率:{}, 总时间:{}, 需要时间:{}, 相差时间:{}", taskWeight, weight, taskCompleteRatio, totalTime, needTime, difTime);
List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao
.listByWarnType(LineWarnConfigEnum.WarnType.UNLOAD.getCode()); .listByWarnType(LineWarnConfigEnum.WarnType.UNLOAD.getCode());
...@@ -71,12 +75,16 @@ public class LineWarnUnloadServiceImpl implements LineWarnUnloadWarnService { ...@@ -71,12 +75,16 @@ public class LineWarnUnloadServiceImpl implements LineWarnUnloadWarnService {
return; return;
} }
int time = lineWarnConfig.getTimeRatio().multiply(new BigDecimal(difTime)).intValue(); // 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
int time = lineWarnConfig.getTimeRatio().multiply(new BigDecimal(difTime)).movePointLeft(2).intValue();
// 未达到时间占比 // 未达到时间占比
if (pendingOrderTime.plusMinutes(time).isAfter(LocalDateTime.now())){return;} if (pendingOrderTime.plusMinutes(time).isAfter(LocalDateTime.now())){return;}
// 达到任务占比 // 达到任务占比
if (lineWarnConfig.getTaskCompleteRatio().compareTo(taskCompleteRatio) >= 0) {return;} if (lineWarnConfig.getTaskCompleteRatio().compareTo(taskCompleteRatio) < 0) {return;}
// 更新 // 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig); lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig);
......
package com.clx.performance.service.impl.linewarn; package com.clx.performance.service.impl.linewarn;
import com.clx.order.vo.feign.FeignAddressVO; import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.linewarn.LineWarnConfigDao; import com.clx.performance.dao.linewarn.LineWarnConfigDao;
import com.clx.performance.dao.linewarn.LineWarnInfoDao; import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO; import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO;
import com.clx.performance.enums.linewarn.LineWarnConfigEnum; import com.clx.performance.enums.linewarn.LineWarnConfigEnum;
import com.clx.performance.enums.linewarn.LineWarnInfoEnum; import com.clx.performance.enums.linewarn.LineWarnInfoEnum;
import com.clx.performance.extranal.order.InternalReportService;
import com.clx.performance.extranal.user.AddressService; import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnConfig; import com.clx.performance.model.linewarn.LineWarnConfig;
...@@ -18,19 +18,20 @@ import com.msl.common.base.Optional; ...@@ -18,19 +18,20 @@ import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
@Service @Service
public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnService { public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnService {
@Autowired @Autowired
private LineWarnConfigDao lineWarnConfigDao; private LineWarnConfigDao lineWarnConfigDao;
@Autowired
private InternalReportService internalReportService;
@Autowired @Autowired
private LineWarnCommonService lineWarnCommonService; private LineWarnCommonService lineWarnCommonService;
@Autowired @Autowired
...@@ -39,10 +40,15 @@ public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnServic ...@@ -39,10 +40,15 @@ public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnServic
private GdUtils gdUtils; private GdUtils gdUtils;
@Autowired @Autowired
private AddressService addressService; private AddressService addressService;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Override @Override
public void weatherWarn(OrderGoods orderGoods, LineWarnCommonInfoDTO lineWarnCommonInfo) { public void weatherWarn(OrderGoods orderGoods, LineWarnCommonInfoDTO lineWarnCommonInfo) {
Boolean flag = redisTemplate.opsForValue().setIfAbsent(RedisConstants.LINE_WARN_WEATHER + orderGoods.getOrderGoodsNo(), orderGoods.getOrderGoodsNo(), 1, TimeUnit.HOURS);
if (!flag) {return;}
List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao List<LineWarnConfig> lineWarnConfigList = lineWarnConfigDao
.listByWarnType(LineWarnConfigEnum.WarnType.WEATHER.getCode()); .listByWarnType(LineWarnConfigEnum.WarnType.WEATHER.getCode());
if (lineWarnConfigList.isEmpty()) {return;} if (lineWarnConfigList.isEmpty()) {return;}
...@@ -61,28 +67,45 @@ public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnServic ...@@ -61,28 +67,45 @@ public class LineWarnWeatherWarnServiceImpl implements LineWarnWeatherWarnServic
return; return;
} }
// 暂停检测
boolean suspend = lineWarnCommonService.suspendCheck(lineWarnInfo);
if (suspend) {return;}
String weatherAll = "";
Optional<FeignAddressVO> addressOptional = addressService Optional<FeignAddressVO> addressOptional = addressService
.getSendAndReceiveAddress(orderGoods.getSendAddressId(), orderGoods.getReceiveAddressId()); .getSendAndReceiveAddress(orderGoods.getSendAddressId(), orderGoods.getReceiveAddressId());
if (addressOptional.isEmpty()) {return;} if (addressOptional.isEmpty()) {return;}
FeignAddressVO feignAddressVO = addressOptional.get(); FeignAddressVO feignAddressVO = addressOptional.get();
if (feignAddressVO.getSendAddress()!=null if (feignAddressVO.getSendAddress()!=null){
&& StringUtils.isNotBlank(feignAddressVO.getSendAddress().getCityCode())){ String cityCode = gdUtils.getCity(feignAddressVO.getSendAddress().getLongitude(),
String weather = gdUtils.getWeather(feignAddressVO.getSendAddress().getCityCode()); feignAddressVO.getSendAddress().getLatitude());
String weather = gdUtils.getWeather(cityCode);
if (weatherCheck(weather)){ if (weatherCheck(weather)){
// 更新 weatherAll = weather;
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig, weather);
} }
} }
if (feignAddressVO.getReceiveAddress()!=null if (feignAddressVO.getReceiveAddress()!=null){
&& StringUtils.isNotBlank(feignAddressVO.getReceiveAddress().getCityCode())){ String cityCode = gdUtils.getCity(feignAddressVO.getReceiveAddress().getLongitude(),
String weather = gdUtils.getWeather(feignAddressVO.getReceiveAddress().getCityCode()); feignAddressVO.getReceiveAddress().getLatitude());
String weather = gdUtils.getWeather(cityCode);
if (weatherCheck(weather)){ if (weatherCheck(weather)){
// 更新 if (StringUtils.isBlank(weatherAll)){weatherAll = weather;}
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig, weather); else {
//不相同,逗号分隔
if (!weatherAll.equals(weather)){
weatherAll = weatherAll + "," + weather;
}
}
} }
} }
if (StringUtils.isNotBlank(weatherAll)){
// 更新
lineWarnCommonService.lineWarnInfoUpdate(orderGoods, lineWarnInfo, lineWarnConfig, weatherAll);
}
} }
/** /**
......
...@@ -6,13 +6,17 @@ import com.clx.performance.esplus.model.TruckTraceESPlus; ...@@ -6,13 +6,17 @@ import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao; import com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao;
import com.clx.performance.dto.zjxl.TruckTraceDTO; import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.esplus.mapper.TruckLastPosESPlusMapper;
import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper; import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus; import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam; import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.service.trace.TruckTraceMqHandlerService; import com.clx.performance.service.trace.TruckTraceMqHandlerService;
import com.clx.performance.struct.trace.TruckTraceStruct;
import com.clx.performance.utils.LocalDateTimeUtils; import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZjxlGpsService; import com.clx.performance.utils.zjxl.ZjxlGpsService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -20,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -20,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
@Slf4j @Slf4j
@Service @Service
...@@ -35,6 +40,12 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic ...@@ -35,6 +40,12 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
@Autowired @Autowired
private TruckTraceESPlusMapper truckTraceESPlusMapper; private TruckTraceESPlusMapper truckTraceESPlusMapper;
@Autowired
TruckLastPosESPlusMapper truckLastPosESPlusMapper;
@Autowired
TruckTraceStruct truckTraceStruct;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
...@@ -60,6 +71,20 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic ...@@ -60,6 +71,20 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
// 保存 // 保存
truckTraceESPlusMapper.insertBatch(esList); truckTraceESPlusMapper.insertBatch(esList);
//保存车辆最新的位置信息
TruckTraceESPlus trace = esList.get(esList.size() - 1);
TruckLatestPosESPlus truckLatestPos = truckLastPosESPlusMapper.selectOne(
new LambdaEsQueryWrapper<TruckLatestPosESPlus>().eq(TruckLatestPosESPlus::getTruckNo, trace.getTruckNo()));
log.info("通过车牌号:{},查询车辆最新位置信息:{}",trace.getTruckNo(),truckLatestPos);
TruckLatestPosESPlus item = truckTraceStruct.convert2LatestPos(trace);
if(Objects.nonNull(truckLatestPos)){
truckLastPosESPlusMapper.update(item,new LambdaEsQueryWrapper<TruckLatestPosESPlus>().
eq(TruckLatestPosESPlus::getTruckNo, trace.getTruckNo()));
}else{
truckLastPosESPlusMapper.insert(item);
}
} }
} }
package com.clx.performance.service.impl.trace; package com.clx.performance.service.impl.trace;
import com.clx.performance.esplus.mapper.DriverTraceESPlusMapper; import com.clx.performance.esplus.mapper.DriverTraceESPlusMapper;
import com.clx.performance.esplus.mapper.TruckLastPosESPlusMapper;
import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper; import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper;
import com.clx.performance.esplus.model.DriverTraceESPlus; import com.clx.performance.esplus.model.DriverTraceESPlus;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus; import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.param.temp.DriverTraceAddParam; import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam; import com.clx.performance.param.temp.TruckTraceAddParam;
...@@ -40,6 +42,9 @@ public class TruckTraceServiceImpl implements TruckTraceService { ...@@ -40,6 +42,9 @@ public class TruckTraceServiceImpl implements TruckTraceService {
@Autowired @Autowired
private DriverTraceESPlusMapper driverTraceESPlusMapper; private DriverTraceESPlusMapper driverTraceESPlusMapper;
@Autowired
TruckLastPosESPlusMapper truckLastPosESPlusMapper;
@Autowired @Autowired
private TruckTraceStruct truckTraceStruct; private TruckTraceStruct truckTraceStruct;
@Autowired @Autowired
...@@ -414,6 +419,11 @@ public class TruckTraceServiceImpl implements TruckTraceService { ...@@ -414,6 +419,11 @@ public class TruckTraceServiceImpl implements TruckTraceService {
truckTraceESPlusMapper.insertBatch(esList); truckTraceESPlusMapper.insertBatch(esList);
} }
@Override
public TruckLatestPosESPlus getTruckLatestPos(String truckNo) {
TruckLatestPosESPlus truckLatestPos = truckLastPosESPlusMapper.selectOne(
new LambdaEsQueryWrapper<TruckLatestPosESPlus>().eq(TruckLatestPosESPlus::getTruckNo, truckNo));
log.info("通过车牌号:{},查询车辆最新位置信息:{}",truckNo,truckLatestPos);
return truckLatestPos;
}
} }
...@@ -9,4 +9,6 @@ public interface LineWarnCommonService { ...@@ -9,4 +9,6 @@ public interface LineWarnCommonService {
void lineWarnInfoUpdate(OrderGoods orderGoods, LineWarnInfo lineWarnInfo, LineWarnConfig lineWarnConfig); void lineWarnInfoUpdate(OrderGoods orderGoods, LineWarnInfo lineWarnInfo, LineWarnConfig lineWarnConfig);
void lineWarnInfoUpdate(OrderGoods orderGoods, LineWarnInfo lineWarnInfo, LineWarnConfig lineWarnConfig, String weather); void lineWarnInfoUpdate(OrderGoods orderGoods, LineWarnInfo lineWarnInfo, LineWarnConfig lineWarnConfig, String weather);
boolean suspendCheck(LineWarnInfo lineWarnInfo);
} }
package com.clx.performance.service.trace; package com.clx.performance.service.trace;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.param.temp.DriverTraceAddParam; import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam; import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.vo.pc.trace.DriverTraceVO; import com.clx.performance.vo.pc.trace.DriverTraceVO;
...@@ -41,4 +42,8 @@ public interface TruckTraceService { ...@@ -41,4 +42,8 @@ public interface TruckTraceService {
void saveTruckTrace(String truckNo,Integer size,String gpsTime); void saveTruckTrace(String truckNo,Integer size,String gpsTime);
TruckLatestPosESPlus getTruckLatestPos(String truckNo);
} }
...@@ -85,7 +85,7 @@ public class OrderGoodsSqlProvider { ...@@ -85,7 +85,7 @@ public class OrderGoodsSqlProvider {
} }
public String openOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page, @Param("param") List<String> orderGoodsNoList) { public String openOrderPageGoodsList(@Param("page") Page<OrderGoodsAPPVO> page, @Param("orderGoodsNoList") List<String> orderGoodsNoList) {
String sql = new SQL() {{ String sql = new SQL() {{
SELECT("a.id, a.order_no," + SELECT("a.id, a.order_no," +
" a.order_goods_no, a.order_goods_status, a.extract_weight, " + " a.order_goods_no, a.order_goods_status, a.extract_weight, " +
...@@ -107,10 +107,10 @@ public class OrderGoodsSqlProvider { ...@@ -107,10 +107,10 @@ public class OrderGoodsSqlProvider {
StringJoiner sj = new StringJoiner(",","a.order_goods_no in (",")"); StringJoiner sj = new StringJoiner(",","a.order_goods_no in (",")");
orderGoodsNoList.forEach(item -> sj.add("'"+item+"'")); orderGoodsNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(" (a.pending_order_way = " + PendingOrderWayStatusEnum.Status.GK.getCode() + " OR (a.pending_order_way = " + WHERE(" (a.pending_order_way = " + PendingOrderWayStatusEnum.Status.GK.getCode() + " OR (a.pending_order_way = " +
PendingOrderWayStatusEnum.Status.FLEET_GK.getCode() + "and " + sj + "))"); PendingOrderWayStatusEnum.Status.FLEET_GK.getCode() + " and " + sj + "))");
} }
WHERE("a.last_arrive_send_time >= now()"); WHERE("a.last_arrive_send_time >= now()");
WHERE("(a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")"); WHERE("a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("a.residue_transport_weight >=35"); WHERE("a.residue_transport_weight >=35");
ORDER_BY("a.pending_order_time desc"); ORDER_BY("a.pending_order_time desc");
}}.toString(); }}.toString();
...@@ -126,8 +126,9 @@ public class OrderGoodsSqlProvider { ...@@ -126,8 +126,9 @@ public class OrderGoodsSqlProvider {
WHERE("a.stop_flag = "+ OrderGoodsStopEnum.Status.NO.getCode()); WHERE("a.stop_flag = "+ OrderGoodsStopEnum.Status.NO.getCode());
WHERE(" a.pending_order_way = " + PendingOrderWayStatusEnum.Status.FLEET_GK.getCode()); WHERE(" a.pending_order_way = " + PendingOrderWayStatusEnum.Status.FLEET_GK.getCode());
WHERE("a.last_arrive_send_time >= now()"); WHERE("a.last_arrive_send_time >= now()");
WHERE("(a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")"); WHERE("a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("a.residue_transport_weight >=35"); WHERE("a.residue_transport_weight >=35");
WHERE("b.id is not null");
}}.toString(); }}.toString();
return sql; return sql;
} }
......
package com.clx.performance.sqlProvider; package com.clx.performance.sqlProvider;
import com.clx.order.enums.VehicleUsageEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum; import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
...@@ -42,7 +42,10 @@ public class OrderGoodsTruckBindSqlProvider { ...@@ -42,7 +42,10 @@ public class OrderGoodsTruckBindSqlProvider {
FROM("order_goods_truck_bind a"); FROM("order_goods_truck_bind a");
LEFT_OUTER_JOIN("order_goods b on a.order_goods_no = b.order_goods_no"); LEFT_OUTER_JOIN("order_goods b on a.order_goods_no = b.order_goods_no");
WHERE("a.truck_no IN (" + truckList.stream().map(code -> "'"+code+"'").collect(Collectors.joining(","))+ ")" ); WHERE("a.truck_no IN (" + truckList.stream().map(code -> "'"+code+"'").collect(Collectors.joining(","))+ ")" );
WHERE("b.vehicle_usage = " + VehicleUsageEnum.Status.OWN.getCode() + " or a.`status` =" + OrderGoodsTruckBindEnum.Status.NORMAL.getCode()); WHERE("a.`status` =" + OrderGoodsTruckBindEnum.Status.NORMAL.getCode());
WHERE("b.order_goods_status IN ( " + OrderGoodsStatusEnum.Status.PAYING.getCode() + ","
+ OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode() +")");
}}.toString(); }}.toString();
} }
...@@ -50,7 +53,6 @@ public class OrderGoodsTruckBindSqlProvider { ...@@ -50,7 +53,6 @@ public class OrderGoodsTruckBindSqlProvider {
return new SQL(){{ return new SQL(){{
SELECT(" a.order_goods_no,count(*) truckNum "); SELECT(" a.order_goods_no,count(*) truckNum ");
FROM("order_goods_truck_bind a"); FROM("order_goods_truck_bind a");
WHERE("a.order_goods_no IN (" + fleetNoList.stream().map(code -> "'"+code+"'").collect(Collectors.joining(","))+ ")" );
StringJoiner sj = new StringJoiner(",","a.order_goods_no in (",")"); StringJoiner sj = new StringJoiner(",","a.order_goods_no in (",")");
fleetNoList.forEach(item -> sj.add("'"+item+"'")); fleetNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(sj.toString()); WHERE(sj.toString());
......
...@@ -43,7 +43,7 @@ public class LineWarnInfoSqlProvider { ...@@ -43,7 +43,7 @@ public class LineWarnInfoSqlProvider {
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("warn_time >= #{param.beginTime}");} if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("warn_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("warn_time <= #{param.endTime}");} if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("warn_time <= #{param.endTime}");}
ORDER_BY("id desc"); ORDER_BY("warn_time desc, id desc");
}}.toString(); }}.toString();
} }
......
...@@ -41,10 +41,10 @@ public class VehicleWarnInfoSqlProvider { ...@@ -41,10 +41,10 @@ public class VehicleWarnInfoSqlProvider {
if (StringUtils.isNotBlank(param.getSendAddress())) {WHERE("send_address like CONCAT('%',#{param.sendAddress},'%')");} 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.getReceiveAddress())) {WHERE("receive_address like CONCAT('%',#{param.receiveAddress},'%')");}
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("create_time >= #{param.beginTime}");} if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("warn_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("create_time <= #{param.endTime}");} if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("warn_time <= #{param.endTime}");}
ORDER_BY("id desc"); ORDER_BY("warn_time desc, id desc");
}}.toString(); }}.toString();
} }
......
...@@ -23,11 +23,11 @@ public class VehicleWarnRangeSqlProvider { ...@@ -23,11 +23,11 @@ public class VehicleWarnRangeSqlProvider {
if (Objects.nonNull(param.getWarnRang())) {WHERE("warn_rang = #{param.warnRang}");} if (Objects.nonNull(param.getWarnRang())) {WHERE("warn_rang = #{param.warnRang}");}
if (StringUtils.isNotBlank(param.getSuspendObject())) { if (StringUtils.isNotBlank(param.getSuspendObject())) {
WHERE("((warn_rage=1 and child_no =#{param.suspendObject}) " + WHERE("((warn_rang=1 and child_no =#{param.suspendObject}) " +
"or (warn_rage=2 and order_goods_no =#{param.suspendObject}))");} "or (warn_rang=2 and order_goods_no =#{param.suspendObject}))");}
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("create_time >= #{param.beginTime}");} if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("warn_end_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("create_time <= #{param.endTime}");} if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("warn_end_time <= #{param.endTime}");}
ORDER_BY("id desc"); ORDER_BY("id desc");
}}.toString(); }}.toString();
......
package com.clx.performance.strategy; package com.clx.performance.strategy;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.order.enums.OrderStopEnum; import com.clx.order.enums.OrderStopEnum;
import com.clx.order.enums.ResultEnum; import com.clx.order.enums.ResultEnum;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.model.OrderGoodsTruckBind; import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.performance.utils.SpringContextUtils; import com.clx.performance.utils.SpringContextUtils;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -83,7 +81,7 @@ public abstract class GoodsOrderStrategy { ...@@ -83,7 +81,7 @@ public abstract class GoodsOrderStrategy {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "已被定向单绑定车辆:" + trucks); } throw new ServiceSystemException(ResultEnum.DATA_ERROR, "已被定向单绑定车辆:" + trucks); }
} }
//根据不同的订单类型创建不同的货单 //根据不同的订单类型创建不同的货单
LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now); /* LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now);
Message message = MessageBuilder.withBody(orderNo.getBytes()).build(); Message message = MessageBuilder.withBody(orderNo.getBytes()).build();
BigDecimal epochMilli = null; BigDecimal epochMilli = null;
...@@ -107,6 +105,6 @@ public abstract class GoodsOrderStrategy { ...@@ -107,6 +105,6 @@ public abstract class GoodsOrderStrategy {
rabbitTemplate.send( rabbitTemplate.send(
RabbitKeyConstants.ORDER_ON_EXCHANGE, RabbitKeyConstants.ORDER_ON_ROUTE_KEY, message RabbitKeyConstants.ORDER_ON_EXCHANGE, RabbitKeyConstants.ORDER_ON_ROUTE_KEY, message
); );
} }*/
} }
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.struct.trace; ...@@ -2,6 +2,7 @@ package com.clx.performance.struct.trace;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.esplus.model.TruckLatestPosESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus; import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.vo.pc.trace.DriverTruckTraceVO; import com.clx.performance.vo.pc.trace.DriverTruckTraceVO;
import com.msl.common.utils.DateStructUtil; import com.msl.common.utils.DateStructUtil;
...@@ -20,4 +21,7 @@ public interface TruckTraceStruct { ...@@ -20,4 +21,7 @@ public interface TruckTraceStruct {
List<DriverTruckTraceVO> convert(List<TruckTraceESPlus> list); List<DriverTruckTraceVO> convert(List<TruckTraceESPlus> list);
Page<DriverTruckTraceVO> convertPage(IPage<TruckTraceESPlus> page); Page<DriverTruckTraceVO> convertPage(IPage<TruckTraceESPlus> page);
TruckLatestPosESPlus convert2LatestPos(TruckTraceESPlus item);
} }
...@@ -12,6 +12,7 @@ import org.apache.commons.lang.StringUtils; ...@@ -12,6 +12,7 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
...@@ -35,6 +36,7 @@ public class GdService { ...@@ -35,6 +36,7 @@ public class GdService {
private static final String WEATHER_API = "https://restapi.amap.com/v3/weather/weatherInfo?parameters";//天气 private static final String WEATHER_API = "https://restapi.amap.com/v3/weather/weatherInfo?parameters";//天气
private static final String CITY_API = "https://restapi.amap.com/v3/geocode/regeo?parameters";//城市
private String gaodeKey = "b2550e16bbc7bf9f6cd168e0f21709fc"; private String gaodeKey = "b2550e16bbc7bf9f6cd168e0f21709fc";
...@@ -405,4 +407,50 @@ public class GdService { ...@@ -405,4 +407,50 @@ public class GdService {
return weather; return weather;
} }
public String getCity(BigDecimal longitude, BigDecimal latitude){
return getCity(gaodeKey, longitude, latitude);
}
public static String getCity(String key, BigDecimal longitude, BigDecimal latitude) {
String url = CITY_API+"?output=json&location=" +longitude.setScale(6, RoundingMode.HALF_UP)+","+latitude.setScale(2, RoundingMode.HALF_UP)+"&key="+key;
String resultStr;
try {
resultStr = HttpUtils.httpGetRequest(url);
} catch (Exception e) {
throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德地理编码接口异常");
}
if (StringUtils.isBlank(resultStr)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 返回结果空");}
JSONObject retJSONObject = JSONObject.parseObject(resultStr);
if (Objects.isNull(retJSONObject)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 返回结果转换异常, result:"+resultStr);}
Integer status = retJSONObject.getInteger("status");
if (!Objects.equals(1, status)) {
if (Objects.equals(10001, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 无效key, result:"+resultStr);}
else if (Objects.equals(10002, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 没有权限使用相应的服务或者请求接口的路径拼写错误, result:"+resultStr);}
else if (Objects.equals(10003, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 访问已超出日访问量, result:"+resultStr);}
else if (Objects.equals(10004, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 单位时间内访问过于频繁, result:"+resultStr);}
else if (Objects.equals(10010, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, IP访问超限, result:"+resultStr);}
else if (Objects.equals(10044, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 账号维度日调用量超出限制, result:"+resultStr);}
else if (Objects.equals(40000, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 余额耗尽, result:"+resultStr);}
else if (Objects.equals(40002, status)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 购买服务到期, result:"+resultStr);}
else if (Objects.equals(20802, status)) { throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 路线计算失败, result:"+resultStr); }
else if (Objects.equals(20803, status)) { throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 起点终点距离过长, result:"+resultStr); }
else {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德天气接口异常, 状态异常, result:"+resultStr);}
}
// 解析
String adcode = retJSONObject.getJSONObject("regeocode").getJSONObject("addressComponent").getString("adcode");
if (StringUtils.isBlank(adcode)) {throw new ServiceSystemException(ResultCodeEnum.FAIL, "调用高德城市编码接口异常, result:"+resultStr);}
return adcode;
}
} }
...@@ -80,6 +80,12 @@ public class GdUtils { ...@@ -80,6 +80,12 @@ public class GdUtils {
public String getWeather(String city){ public String getWeather(String city){
return gdService.getWeather(city); return gdService.getWeather(city);
} }
/**
* 天气
*/
public String getCity(BigDecimal longitude, BigDecimal latitude){
return gdService.getCity(longitude,latitude);
}
/** /**
* 获取线路 * 获取线路
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论