提交 12a75986 authored 作者: jiangwujie's avatar jiangwujie

Merge branch 'v21.1_jianzhuang_20240807' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/constant/RedisConstants.java Former-commit-id: 6f912c60
...@@ -48,4 +48,13 @@ public class RedisConstants { ...@@ -48,4 +48,13 @@ public class RedisConstants {
*/ */
public static final String ORDER_LAST_TRUCK_CHILD = "clx-performance:order:last:truck:child:"; public static final String ORDER_LAST_TRUCK_CHILD = "clx-performance:order:last:truck:child:";
/**
* 电子围栏短信通知 未装车
*/
public static final String NOTICE_MESSAGE_LIMIT_UNLOAD = "clx-performance:notice_message_limit_unload:";
/**
* 电子围栏短信通知 未监装
*/
public static final String NOTICE_MESSAGE_LIMIT_UNSUPERVISED = "clx-performance:notice_message_limit_unsupervised:";
} }
...@@ -1789,7 +1789,6 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1789,7 +1789,6 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
/** /**
* todo 要改成两个
* 获取监装 * 获取监装
* @param orderNo * @param orderNo
* @param childNo * @param childNo
...@@ -1815,7 +1814,6 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1815,7 +1814,6 @@ public class OrderChildServiceImpl implements OrderChildService {
if (Objects.isNull(supervisionLoadInfo)) {//有监装信息 if (Objects.isNull(supervisionLoadInfo)) {//有监装信息
return null; return null;
} }
//通过运单号查询监装监卸子任务状态
return new SuperviseInfo(supervisionLoadInfo.getTaskContracts(), supervisionLoadInfo.getTaskMobile(), supervisionLoadInfo.getTaskAddress()); return new SuperviseInfo(supervisionLoadInfo.getTaskContracts(), supervisionLoadInfo.getTaskMobile(), supervisionLoadInfo.getTaskAddress());
} }
...@@ -1825,7 +1823,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1825,7 +1823,7 @@ public class OrderChildServiceImpl implements OrderChildService {
* @param childNo * @param childNo
* @return * @return
*/ */
private SuperviseInfo getSuperviseInfoWithSubStatus(String orderNo, String childNo) { private SuperviseInfo getSuperviseInfoWithSubStatus(String orderNo, String childNo, String truckNo) {
NeedAlertSuperviseInfoResultVO result = new NeedAlertSuperviseInfoResultVO(); NeedAlertSuperviseInfoResultVO result = new NeedAlertSuperviseInfoResultVO();
App app = appConfig.getPurchaseManageApp();//对接马上来供应链配置信息 App app = appConfig.getPurchaseManageApp();//对接马上来供应链配置信息
//组装配置信息 //组装配置信息
...@@ -1853,10 +1851,15 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1853,10 +1851,15 @@ public class OrderChildServiceImpl implements OrderChildService {
if (!supervisionLoadTruckInfoDto.succeed()) {//接口调用失败 if (!supervisionLoadTruckInfoDto.succeed()) {//接口调用失败
return null; return null;
} }
//监装子任务状态
SupervisionLoadTruckInfoDto supervisionLoadTruckInfo = supervisionLoadTruckInfoDto.getData(); SupervisionLoadTruckInfoDto supervisionLoadTruckInfo = supervisionLoadTruckInfoDto.getData();
if (Objects.isNull(supervisionLoadTruckInfo) || !supervisionLoadTruckInfo.getLoadStatus()) { if (Objects.isNull(supervisionLoadTruckInfo) || !supervisionLoadTruckInfo.getLoadStatus()) {
return null; return null;
} }
//判断当前卡车是否是监装车辆
if (!Objects.equals(truckNo, supervisionLoadTruckInfo.getTruckNo())) {
return null;
}
return new SuperviseInfo(supervisionLoadInfo.getTaskContracts(), supervisionLoadInfo.getTaskMobile(), supervisionLoadInfo.getTaskAddress()); return new SuperviseInfo(supervisionLoadInfo.getTaskContracts(), supervisionLoadInfo.getTaskMobile(), supervisionLoadInfo.getTaskAddress());
} }
...@@ -3287,8 +3290,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3287,8 +3290,8 @@ public class OrderChildServiceImpl implements OrderChildService {
truckLatitudeY = truckTraceDTO.getLocation()[1]; truckLatitudeY = truckTraceDTO.getLocation()[1];
} }
if (truckLongitudeX == null || truckLatitudeY == null) { if (truckLongitudeX == null || truckLatitudeY == null) {
BigDecimal[] location = truckTraceService.getTruckCurrentPosition(truckNo); BigDecimal[] location = truckTraceService.getCurrentPosition(truckNo, driverUserNo);
log.info("运单号:{},卡车:{},卡车经纬度:{}", childNo, truckNo, location); log.info("运单号:{},卡车:{},卡车/司机经纬度:{}", childNo, truckNo, location);
if (location != null && location.length >= 2) { if (location != null && location.length >= 2) {
truckLongitudeX = location[0]; truckLongitudeX = location[0];
truckLatitudeY = location[1]; truckLatitudeY = location[1];
...@@ -3300,10 +3303,10 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3300,10 +3303,10 @@ public class OrderChildServiceImpl implements OrderChildService {
BigDecimal siteLongitudeX = orderGoods.getSendLongitude(); BigDecimal siteLongitudeX = orderGoods.getSendLongitude();
BigDecimal siteLatitudeY = orderGoods.getSendLatitude(); BigDecimal siteLatitudeY = orderGoods.getSendLatitude();
log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{}", childNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY); log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{}", childNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY);
//调高德获取距离
if (Objects.isNull(truckLongitudeX) || Objects.isNull(truckLatitudeY)) { if (Objects.isNull(truckLongitudeX) || Objects.isNull(truckLatitudeY)) {
continue; continue;
} }
//调高德获取距离
Integer distance = getGdRoute(truckNo, truckLongitudeX, truckLatitudeY, siteLongitudeX, Integer distance = getGdRoute(truckNo, truckLongitudeX, truckLatitudeY, siteLongitudeX,
siteLatitudeY); siteLatitudeY);
if (distance == null) { if (distance == null) {
...@@ -3319,16 +3322,28 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3319,16 +3322,28 @@ public class OrderChildServiceImpl implements OrderChildService {
//超出货源地x公里范围了,且通知状态为未通知 //超出货源地x公里范围了,且通知状态为未通知
// 到达货源地 // 到达货源地
if (Objects.equals(child.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) { if (Objects.equals(child.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) {
Integer count = (Integer) redisTemplate.opsForValue().get(RedisConstants.NOTICE_MESSAGE_LIMIT_UNLOAD + childNo);
if (count != null && count > 3) {
log.info("{}超出货源地x公里范围了,运单{}为到达货源地状态,运单已发送短信次数:{},不进行短信通知", truckNo, childNo, count);
continue;
}
log.info("{}超出货源地x公里范围了,运单{}为到达货源地状态,发送短信", truckNo, childNo); log.info("{}超出货源地x公里范围了,运单{}为到达货源地状态,发送短信", truckNo, childNo);
sendLoadSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo()); sendLoadSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo());
redisTemplate.opsForValue().increment(RedisConstants.NOTICE_MESSAGE_LIMIT_UNLOAD + childNo);
} }
// 已装货 // 已装货
if (Objects.equals(child.getStatus(), OrderChildEnum.Status.LOAD.getCode())) { if (Objects.equals(child.getStatus(), OrderChildEnum.Status.LOAD.getCode())) {
SuperviseInfo superviseInfo = getSuperviseInfoWithSubStatus(child.getOrderNo(), child.getChildNo()); SuperviseInfo superviseInfo = getSuperviseInfoWithSubStatus(child.getOrderNo(), child.getChildNo(), child.getTruckNo());
log.info("运单号:{},卡车:{},监装信息{}", childNo, truckNo, superviseInfo); log.info("运单号:{},卡车:{},监装信息{}", childNo, truckNo, superviseInfo);
if (superviseInfo != null) { if (superviseInfo != null) {
Integer count = (Integer) redisTemplate.opsForValue().get(RedisConstants.NOTICE_MESSAGE_LIMIT_UNSUPERVISED + childNo);
if (count != null && count > 3) {
log.info("{}超出货源地x公里范围了,运单{}为装货成功状态,运单已发送短信次数:{},不进行短信通知", truckNo, childNo, count);
continue;
}
log.info("{}超出货源地x公里范围了,运单{}为装货成功状态,发送短信", truckNo, childNo); log.info("{}超出货源地x公里范围了,运单{}为装货成功状态,发送短信", truckNo, childNo);
sendSupervisionSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo(), superviseInfo.getTaskAddress()); sendSupervisionSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo(), superviseInfo.getTaskAddress());
redisTemplate.opsForValue().increment(RedisConstants.NOTICE_MESSAGE_LIMIT_UNSUPERVISED + childNo);
} }
} }
// 修改 通知状态 为已通知 // 修改 通知状态 为已通知
......
...@@ -16,8 +16,6 @@ import org.apache.ibatis.annotations.Param; ...@@ -16,8 +16,6 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.StringJoiner; import java.util.StringJoiner;
...@@ -181,40 +179,34 @@ public class OrderChildSqlProvider { ...@@ -181,40 +179,34 @@ public class OrderChildSqlProvider {
return sql; return sql;
} }
public String findArtificialCancelOrder(@Param("param") ArtificialCancelOrderQueryParam param) { public String findArtificialCancelOrder(ArtificialCancelOrderQueryParam param) {
//todo jiangwujie 改成 new SQL()形式 return new SQL() {{
StringBuilder sql = new StringBuilder(); SELECT("child_no, goods_name, freight_price, order_no, " +
sql.append("SELECT child_no, goods_name, freight_price, order_no, "); "send_address, receive_address, " +
sql.append("send_address, receive_address, "); "driver_user_no, driver_name, driver_mobile, " +
sql.append("driver_user_no, driver_name, driver_mobile, "); "truck_no, unload_pound_no, weight, " +
sql.append("truck_no, unload_pound_no, weight, "); "cancel_remark, pound_status, status, " +
sql.append("cancel_remark, pound_status, status, "); "DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, " +
sql.append("DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, "); "DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, " +
sql.append("DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, "); "DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime ");
sql.append("DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime "); FROM("order_child ");
sql.append("FROM order_child "); if (StringUtils.isNotBlank(param.getOrderChildNo())) {
sql.append("WHERE 1=1 "); WHERE("child_no = #{param.orderChildNo,jdbcType=VARCHAR}");
}
List<String> conditions = new ArrayList<>(); if (StringUtils.isNotBlank(param.getTruckNo())) {
if (StringUtils.isNotBlank(param.getOrderChildNo())) { WHERE("truck_no = #{param.truckNo,jdbcType=VARCHAR}");
conditions.add("child_no = #{param.orderChildNo}"); }
} //支付状态 可以忽略
if (StringUtils.isNotBlank(param.getTruckNo())) { WHERE("status >=" + OrderChildEnum.Status.CREATED.getCode());
conditions.add("truck_no = #{param.truckNo}"); WHERE("status <=" + OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
} }}.toString();
//todo :jiangwujie 支付状态 可以忽略 ,还是使用<= >= }
List<Integer> statuses = Arrays.asList(
OrderChildEnum.Status.CREATED.getCode(), public static void main(String[] args) {
OrderChildEnum.Status.GO_TO_SEND.getCode(), ArtificialCancelOrderQueryParam param = new ArtificialCancelOrderQueryParam();
OrderChildEnum.Status.ARRIVE_SEND.getCode(), param.setTruckNo("A123456");
OrderChildEnum.Status.LOAD.getCode(), param.setOrderChildNo("CYD1234567890");
OrderChildEnum.Status.GO_TO_RECEIVE.getCode(), System.out.println(new OrderChildSqlProvider().findArtificialCancelOrder(param));
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode()
);
conditions.add("status IN (" + StringUtils.join(statuses, ", ") + ")");
sql.append("AND ");
sql.append(StringUtils.join(conditions, " AND "));
return sql.toString();
} }
public String orderChildCancelRecord(@Param("page") Page<OrderChildVO> page, @Param("param") OrderChildCancelRecordParam param) { public String orderChildCancelRecord(@Param("page") Page<OrderChildVO> page, @Param("param") OrderChildCancelRecordParam param) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论