no message

This commit is contained in:
cb 2025-08-01 15:40:43 +08:00
parent 1fe53780b9
commit 91cb050b47
1 changed files with 109 additions and 104 deletions

View File

@ -129,19 +129,19 @@ public class OrderServiceImpl implements OrderService {
if (nowT.getHour() < 8 || nowT.getHour() > 20) {
return;
}
List<Integer> list=new ArrayList<>();
List<Integer> list = new ArrayList<>();
list.add(OrderStatus.FINISH_CHECK.code());
OrderMaster orderMasterFinishCheck = new OrderMaster();
orderMasterFinishCheck.setOrderStatus(OrderStatus.FINISH_CHECK.code());
orderMasterFinishCheck.setWithdrawn(1);
List<OrderMaster> orderMasterFinish = orderMasterService.selectOrderMasterList(orderMasterFinishCheck);
for (OrderMaster orderMaster:orderMasterFinish){
log.info("满足完成条件的主订单{}",orderMaster);
List<OrderDetail> orderDetailList=orderDetailService.selectByOrderMasterId(orderMaster.getId());
for (OrderMaster orderMaster : orderMasterFinish) {
log.info("满足完成条件的主订单{}", orderMaster);
List<OrderDetail> orderDetailList = orderDetailService.selectByOrderMasterId(orderMaster.getId());
boolean allDrawCashStatusIs2 = orderDetailList != null
&& orderDetailList.stream()
.allMatch(detail -> detail.getDrawCashStatus() == 2);
if (allDrawCashStatusIs2){
if (allDrawCashStatusIs2) {
orderMaster.setWithdrawn(2);
orderMaster.setOrderStatus(OrderStatus.FINISH.code());
orderMasterService.updateOrderMaster(orderMaster);
@ -149,7 +149,6 @@ public class OrderServiceImpl implements OrderService {
}
// 查询待接单状态的主单
List<OrderMaster> orderMasters = orderMasterService.selectByStatus(orderMasterTimeoutStatus);
log.info("扫描到{}条未完成的主订单", orderMasters.size());
@ -186,9 +185,9 @@ public class OrderServiceImpl implements OrderService {
Date overTime1h = getOverTime(createTime, 30 * 60 * 1000);
boolean flag;
if (order.getUpdateTime() != null) {
flag = getOverTime(order.getUpdateTime(), 45 * 60 * 1000).before(now);
flag = getOverTime(order.getUpdateTime(), 8 * 60 * 60 * 1000).before(now);
} else {
flag = getOverTime(createTime, 45 * 60 * 1000).before(now);
flag = getOverTime(createTime, 8 * 60 * 60 * 1000).before(now);
log.info("判断时间:{},当前时间:{},结果:{}", getOverTime(createTime, 45 * 60 * 1000), now, flag);
}
// 是否已经超时
@ -242,14 +241,14 @@ public class OrderServiceImpl implements OrderService {
boolean timeout = ONE.equals(order.getTimeout());
Integer fineTimes = order.getTimeoutFineTimes();
if (!timeout) {
log.info("主订单是否未约未排[{}]派单工id{}", order.getIsCall(),order.getWorkerId());
log.info("主订单是否未约未排[{}]派单工id{}", order.getIsCall(), order.getWorkerId());
if (overTime30min.before(now)) {
// 30min未接单为超时
log.info("主订单[{}]超时30分钟未排的参数{}", order.getId(),order.getHasDispatchedAll());
log.info("主订单[{}]超时30分钟未排的参数{}", order.getId(), order.getHasDispatchedAll());
orderMasterService.updateTimeout(order.getId(), 1);
timeout = true;
//主单超时未约未排
if (order.getIsCall().equals("01")&&order.getHasDispatchedAll().equals(0)) {
if (order.getIsCall().equals("01") && order.getHasDispatchedAll().equals(0)) {
log.info("主订单未约[{}]", order.getIsCall());
try {
// 推送公众号通知数据
@ -322,9 +321,9 @@ public class OrderServiceImpl implements OrderService {
public boolean isInTimeRange(LocalTime now, int hour, int minute) {
LocalTime end = LocalTime.of(hour, minute, 59); // 17:30:59
if(minute==0){
minute=60;
hour=hour-1;
if (minute == 0) {
minute = 60;
hour = hour - 1;
}
LocalTime start = LocalTime.of(hour, minute - 1, 59); // 17:29:59
return !now.isBefore(start) && !now.isAfter(end);
@ -353,9 +352,9 @@ public class OrderServiceImpl implements OrderService {
// 查询一下售后单时间
Date afterTime = getOverTime(afterServiceRecord.get(0).getUpdateTime(), 30 * 60 * 1000);
//师傅没有操作 则正常进行售后超时计算
boolean WorkerFeedback=afterServiceRecord.get(0).getWorkerFeedbackResult()==null;
log.info("师傅操作{},所有记录{},师傅是否进行操作{}",afterServiceRecord.get(0).getWorkerFeedbackResult(),afterServiceRecord,WorkerFeedback);
if (afterTime.before(now) && !afterTimeout&&WorkerFeedback) {
boolean WorkerFeedback = afterServiceRecord.get(0).getWorkerFeedbackResult() == null;
log.info("师傅操作{},所有记录{},师傅是否进行操作{}", afterServiceRecord.get(0).getWorkerFeedbackResult(), afterServiceRecord, WorkerFeedback);
if (afterTime.before(now) && !afterTimeout && WorkerFeedback) {
log.info("售后订单[{}]超时30分钟", order.getId());
orderDetailService.updateAfterTimeout(order.getId(), 1, 0);
// 售后超时通知
@ -386,7 +385,7 @@ public class OrderServiceImpl implements OrderService {
if (order.getOrderStatus().equals(OrderStatus.SERVER.code())) {
// 服务中状态要按预计上门时间计算4h超时
// Date overTime = DateUtils.addMilliseconds(order.getUpdateTime(), 4 * 60 * 60 * 1000);
Date overTime=calculateOverTime(order.getUpdateTime());
Date overTime = calculateOverTime(order.getUpdateTime());
log.info("订单[{}]服务中状态超时4小时 4小时后的时间", overTime);
if (overTime.before(now)) {
log.info("订单[{}]服务中状态超时4小时 扣款", order.getId());
@ -420,14 +419,14 @@ public class OrderServiceImpl implements OrderService {
} else if (timeoutOrderStatus.contains(order.getOrderStatus())) {
// 其它状态用update_time判断30min超时
Date overTime = getOverTime(order.getUpdateTime(), 30 * 60 * 1000);
if (overTime.before(now)&&order.getOrderStatus()!=OrderStatus.GOING.code()) {
if (overTime.before(now) && order.getOrderStatus() != OrderStatus.GOING.code()) {
log.info("订单[{}]超时30分钟", order.getId());
orderDetailService.updateTimeout(order.getId(), 1, 0);
// 判断是否约单
OrderCallRecord param = new OrderCallRecord();
param.setOrderId(order.getId());
List<OrderCallRecord> list = orderCallRecordService.selectOrderCallRecordList(param);
if (order.getOrderStatus()==OrderStatus.RECEIVE.code()){
if (order.getOrderStatus() == OrderStatus.RECEIVE.code()) {
try {
// 推送公众号通知数据
// 消息组装
@ -698,7 +697,7 @@ public class OrderServiceImpl implements OrderService {
}
}
// 如果已经不存在"已完成""已取消"以外的子订单 就把主订单也改为完成
if (allFinish&&om.getWithdrawn()==null) {
if (allFinish && om.getWithdrawn() == null) {
log.info("主订单自动完成[id={} code={}]", om.getId(), om.getCode());
orderMasterService.finish(om.getId());
}
@ -724,7 +723,7 @@ public class OrderServiceImpl implements OrderService {
orderListRequest.setIsMonitoredOrder(true);
orderListRequest.setNeedImgs(false);
long num = this.appMixOrderCount(orderListRequest);
log.info("超时巡查超时数量{},超时师傅名称{}",num,worker.getName());
log.info("超时巡查超时数量{},超时师傅名称{}", num, worker.getName());
if (num > 0) {
try {
// 推送公众号通知数据
@ -735,7 +734,7 @@ public class OrderServiceImpl implements OrderService {
// 名称
paramsNew.put("thing7", "请进入【我的订单--超时单】迅速处理");
paramsNew.put("character_string23", num );
paramsNew.put("character_string23", num);
// 预约时间
paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date()));
@ -759,8 +758,8 @@ public class OrderServiceImpl implements OrderService {
orderDetail1.setDeptId(worker.getDeptId());
orderDetail1.setWorkerId(worker.getWorkerId());
orderDetail1.setShelveStatus(1);
long num =orderDetailService.countOrderDetailList(orderDetail1);
log.info("搁置单巡查超时数量{},超时师傅名称{}",num,worker.getName());
long num = orderDetailService.countOrderDetailList(orderDetail1);
log.info("搁置单巡查超时数量{},超时师傅名称{}", num, worker.getName());
if (num > 0) {
try {
// 推送公众号通知数据
@ -770,7 +769,7 @@ public class OrderServiceImpl implements OrderService {
paramsNew.put("thing13", "您有《无法排单》需再次联系客户");
// 名称
paramsNew.put("thing7", "请进入【我的订单--搁置单】操作处理");
paramsNew.put("character_string23", num );
paramsNew.put("character_string23", num);
// 预约时间
paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date()));
WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.DEFAULT_HANDLE_ORDER, paramsNew);
@ -789,9 +788,9 @@ public class OrderServiceImpl implements OrderService {
orderDetail.setExpectTimeStart(Date.from(tomorrow.atZone(ZoneId.systemDefault()).toInstant()));
tomorrow = LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MAX);
orderDetail.setExpectTimeEnd(Date.from(tomorrow.atZone(ZoneId.systemDefault()).toInstant()));
long tomorrowNum =orderDetailService.countOrderDetailList(orderDetail);
log.info("明日单巡查超时数量{},超时师傅名称{}",tomorrowNum,worker.getName());
if (tomorrowNum>0){
long tomorrowNum = orderDetailService.countOrderDetailList(orderDetail);
log.info("明日单巡查超时数量{},超时师傅名称{}", tomorrowNum, worker.getName());
if (tomorrowNum > 0) {
log.info("订单[{}]明日订单通知", worker.getName());
try {
// 推送公众号通知数据
@ -802,7 +801,7 @@ public class OrderServiceImpl implements OrderService {
// 名称
paramsNew.put("thing7", "进入【我的订单--明日单】查看准备");
paramsNew.put("character_string23", tomorrowNum );
paramsNew.put("character_string23", tomorrowNum);
// 预约时间
paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date()));
WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TOMORROW_ORDER, paramsNew);
@ -820,8 +819,8 @@ public class OrderServiceImpl implements OrderService {
orderListRequest.setNeedImgs(false);
AjaxResult afterListRes = this.appMixAfterList(orderListRequest);
List<AfterServiceRecord> afterList = (List<AfterServiceRecord>) afterListRes.get("data");
log.info("售后单巡查超时数量{},超时师傅名称{}",num,worker.getName());
if (afterList.size()>0){
log.info("售后单巡查超时数量{},超时师傅名称{}", num, worker.getName());
if (afterList.size() > 0) {
log.info("订单[{}]售后巡查订单通知", worker.getName());
try {
// 推送公众号通知数据
@ -831,7 +830,7 @@ public class OrderServiceImpl implements OrderService {
paramsNew.put("thing13", "售后巡查,您或您下级售后单未完成");
// 名称
paramsNew.put("thing7", "请进入【我的订单--售后中】查看处理");
paramsNew.put("character_string23", afterList.size() );
paramsNew.put("character_string23", afterList.size());
// 预约时间
paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date()));
WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.DEFAULT_HANDLE_ORDER, paramsNew);
@ -845,7 +844,6 @@ public class OrderServiceImpl implements OrderService {
}
public long appMixOrderCount(OrderListRequest orderListRequest) {
long count = 0;
@ -856,7 +854,7 @@ public class OrderServiceImpl implements OrderService {
OrderDetail orderDetailReq = new OrderDetail();
BeanUtils.copyProperties(orderListRequest, orderDetailReq);
List<OrderDetail> list = orderDetailService.selectOrderDetailList(orderDetailReq);
long size= list.stream()
long size = list.stream()
.filter(order -> order.getOrderStatus() != 6) // 先过滤状态不等于6的订单
.filter(order -> order.getOrderStatus() != 5).count();
count += size;
@ -876,7 +874,7 @@ public class OrderServiceImpl implements OrderService {
.map(OrderMaster::getId) // 再提取id
.collect(Collectors.toList())
);
if (org.apache.commons.collections.CollectionUtils.isEmpty(countParam.getMasterIds())){
if (org.apache.commons.collections.CollectionUtils.isEmpty(countParam.getMasterIds())) {
return count;
}
List<OrderDetail> orderDetails = orderDetailService.selectOrderDetailList(countParam);
@ -919,13 +917,13 @@ public class OrderServiceImpl implements OrderService {
break;
}
}
if (isKeep|| org.apache.commons.collections.CollectionUtils.isEmpty(tmpDetailListOfMasters)) {
if (isKeep || org.apache.commons.collections.CollectionUtils.isEmpty(tmpDetailListOfMasters)) {
filteredMasterList.add(master);
}
}
count += filteredMasterList.size();
if (filteredMasterList.isEmpty()){
if (filteredMasterList.isEmpty()) {
count += masterList.size();
}
} else {
@ -933,6 +931,7 @@ public class OrderServiceImpl implements OrderService {
}
return count;
}
public AjaxResult appMixAfterList(@RequestBody OrderListRequest orderListRequest) {
List<OrderListResponse> orderListResponses = new ArrayList<>();
@ -964,9 +963,9 @@ public class OrderServiceImpl implements OrderService {
break;
}
}
long count = detailAfterListOfMasters.stream().filter(x->(x.getAfterTimeout()!=null && x.getAfterTimeout() == 1)).count();
long count = detailAfterListOfMasters.stream().filter(x -> (x.getAfterTimeout() != null && x.getAfterTimeout() == 1)).count();
if (isKeep) {
if(count > 0){
if (count > 0) {
master.setAfterTimeout(1);
}
filteredMasterList.add(master);
@ -984,6 +983,7 @@ public class OrderServiceImpl implements OrderService {
return AjaxResult.success(orderListResponses);
}
public List<OrderListResponse> getMasterAfterList(OrderMaster orderMaster) {
// 查所有售后的单
@ -1061,9 +1061,9 @@ public class OrderServiceImpl implements OrderService {
// 地址信息
CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId());
SysArea sysArea;
if(customerAddress.getStreetId()!=null){
if (customerAddress.getStreetId() != null) {
sysArea = sysAreaService.selectById(customerAddress.getStreetId());
}else {
} else {
sysArea = sysAreaService.selectById(customerAddress.getCountryId());
}
String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress();
@ -1097,8 +1097,8 @@ public class OrderServiceImpl implements OrderService {
// orderListResponse.setChangeMoney(totalChangeMoney);
orderListResponse.setWorkerName(worker == null ? "" : worker.getName());
orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone());
orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName())?master.getName():customerAddress.getName());
orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone())?master.getPhone():customerAddress.getPhone());
orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName()) ? master.getName() : customerAddress.getName());
orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone()) ? master.getPhone() : customerAddress.getPhone());
orderListResponse.setServerTime(master.getRevTime());
orderListResponse.setExpectTimeStart(master.getExpectTimeStart());
orderListResponse.setExpectTimeEnd(master.getExpectTimeEnd());
@ -1158,7 +1158,7 @@ public class OrderServiceImpl implements OrderService {
if (worker != null) {
// 师傅实名信息
workerRealInfo = workerCertificationService.selectByWorkerId(orderMaster.getWorkerId());
workerName = workerRealInfo == null ? worker.getName() : workerRealInfo.getSurname()+workerRealInfo.getName();
workerName = workerRealInfo == null ? worker.getName() : workerRealInfo.getSurname() + workerRealInfo.getName();
}
// 消费者信息
@ -1183,9 +1183,9 @@ public class OrderServiceImpl implements OrderService {
// 地址信息
CustomerAddress customerAddress = addressService.selectByCustomerAddressId(orderMaster.getAddressId());
SysArea sysArea;
if(customerAddress.getStreetId()!=null){
if (customerAddress.getStreetId() != null) {
sysArea = sysAreaService.selectById(customerAddress.getStreetId());
}else {
} else {
sysArea = sysAreaService.selectById(customerAddress.getCountryId());
}
String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress();
@ -1231,8 +1231,8 @@ public class OrderServiceImpl implements OrderService {
orderListResponse.setWorkerId(detail.getWorkerId());
orderListResponse.setWorkerName(workerName);
orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone());
orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName())?orderMaster.getName():customerAddress.getName());
orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone())?orderMaster.getPhone():customerAddress.getPhone());
orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName()) ? orderMaster.getName() : customerAddress.getName());
orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone()) ? orderMaster.getPhone() : customerAddress.getPhone());
orderListResponse.setOrderStatus(detail.getOrderStatus());
orderListResponse.setPayStatus(orderMaster.getPayStatus());
orderListResponse.setPayType(orderMaster.getPayType());
@ -1260,6 +1260,7 @@ public class OrderServiceImpl implements OrderService {
});
return orderListResponses;
}
private boolean checkIsOnlyServer(Long orderMasterId, Long workId) {
// 找出原单的数量
List<OrderGoods> orderGoodsList = orderGoodsService.selectByOrderMasterId(orderMasterId);
@ -1289,6 +1290,7 @@ public class OrderServiceImpl implements OrderService {
}
return true;
}
/*判断超时4小时的时间 如果超过晚上八点则剩余的时间从第二天早上开始计时*/
public static Date calculateOverTime(Date updateTime) {
// 1. 增加4小时
@ -1313,6 +1315,7 @@ public class OrderServiceImpl implements OrderService {
}
return Date.from(overTime.atZone(java.time.ZoneId.systemDefault()).toInstant());
}
//单独处理待上门通知
public void checkTimeoutDoor(OrderDetail order) {
log.info("子单超时开始:单号:{}, 内容:{}", order.getCode(), order);
@ -1333,7 +1336,7 @@ public class OrderServiceImpl implements OrderService {
Date oneHourTime = DateUtils.addMilliseconds(order.getExpectTimeStart(), -60 * 60 * 1000);
log.info("待上门订单开始前一个小时 订单号:[{}]时间:{} 当前时间 {} 是否为同一时间小时{} 分钟{}", order.getId(), oneHourTime, now, oneHourTime.getHours(), oneHourTime.getMinutes());
log.info("待上门订单[{}]服务中预计超时时间{},是否已经超时{}", order.getId(),overTime,overTime.before(now));
log.info("待上门订单[{}]服务中预计超时时间{},是否已经超时{}", order.getId(), overTime, overTime.before(now));
LocalTime currentTime = LocalTime.now(); // 当前系统时间
if (overTime.before(now)) {
log.info("订单[{}]待上门状态超时30分钟", order.getId());
@ -1364,7 +1367,7 @@ public class OrderServiceImpl implements OrderService {
log.error(e.getMessage(), e);
}
}
if (isInTimeRange(currentTime, oneHourTime.getHours(), oneHourTime.getMinutes())&&isSameYearMonthDay(now,oneHourTime)) {
if (isInTimeRange(currentTime, oneHourTime.getHours(), oneHourTime.getMinutes()) && isSameYearMonthDay(now, oneHourTime)) {
log.info("订单[{}]约一小时上门服务", order.getId());
try {
// 推送公众号通知数据
@ -1392,6 +1395,7 @@ public class OrderServiceImpl implements OrderService {
}
}
public static boolean isSameYearMonthDay(Date date1, Date date2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化为本地时间的字符串忽略时间部分
@ -1399,6 +1403,7 @@ public class OrderServiceImpl implements OrderService {
String dateStr2 = sdf.format(date2);
return dateStr1.equals(dateStr2);
}
@Override
public void orderServerToFinishCheck() {
List<OrderDetail> orderDetails = orderDetailService.selectByStatus(Collections.singletonList(OrderStatus.SERVER.code()));
@ -1460,7 +1465,7 @@ public class OrderServiceImpl implements OrderService {
}
// 检查是否到达目标时间
if (now.after(targetTime)&&orderMaster.getPayStatus()==1) {
if (now.after(targetTime) && orderMaster.getPayStatus() == 1) {
log.info("订单[{}]确认截止时间已到,开始转为确认中状态", orderDetail.getCode());
orderDetail.setWorkFinishTime(new Date());
orderDetailService.updateOrderDetail(orderDetail);