订单消息

This commit is contained in:
sxu 2025-01-02 15:44:46 +08:00
parent 2b548896f0
commit 3ed2059cde
3 changed files with 66 additions and 4 deletions

View File

@ -153,7 +153,13 @@ public class OrderDetailDto {
@ApiModelProperty(value = "买方承租方公司id")
private Integer buyerCompany;
@ApiModelProperty(value = "买方承租方公司名称")
private String buyerCompanyName;
@ApiModelProperty(value = "卖方出租方公司id")
private Integer sellerCompany;
@ApiModelProperty(value = "卖方出租方公司名称")
private String sellerCompanyName;
}

View File

@ -1,12 +1,20 @@
package com.bonus.material.order.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson2.JSONArray;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.enums.MaStatusEnum;
import com.bonus.common.biz.enums.MessageTypeEnum;
import com.bonus.common.biz.enums.OrderStatusEnum;
import com.bonus.common.biz.enums.TmTaskTypeEnum;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.SpringUtils;
import com.bonus.common.core.utils.encryption.Sm4Utils;
import com.bonus.common.redis.service.RedisService;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.basic.domain.BmMessage;
import com.bonus.material.basic.mapper.BmMessageMapper;
import com.bonus.material.comprehensive.entity.RentDetailDto;
import com.bonus.material.device.domain.vo.DevInfoVo;
import com.bonus.material.device.mapper.DevInfoMapper;
@ -28,6 +36,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* @Authorliang.chao
@ -43,6 +52,9 @@ public class OrderServiceImpl implements OrderService {
@Resource
private TmTaskMapper tmTaskMapper;
@Resource
private BmMessageMapper bmMessageMapper;
@Resource
DevInfoMapper devInfoMapper;
@ -227,9 +239,9 @@ public class OrderServiceImpl implements OrderService {
}
public Integer updateOrderStatus(OrderDetailDto orderInfoDto) {
List<OrderDetailDto> dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId());
// 退租
if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString())) {
List<OrderDetailDto> dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId());
if (dtos.size() > 0 && CollectionUtil.isNotEmpty(dtos)) {
if (CollectionUtil.isNotEmpty(orderInfoDto.getMaIds())) {
for (OrderDetailDto dto : dtos) {
@ -248,7 +260,6 @@ public class OrderServiceImpl implements OrderService {
}
// 取消
if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_CANCEL.getStatus().toString())) {
List<OrderDetailDto> dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId());
if (dtos.size() > 0 && CollectionUtil.isNotEmpty(dtos)) {
for (OrderDetailDto dto : dtos) {
dto.setMaStatus(MaStatusEnum.LISTING.getCode().toString());
@ -258,7 +269,6 @@ public class OrderServiceImpl implements OrderService {
}
String userName = SecurityUtils.getLoginUser().getUsername();
Integer i = orderMapper.updateOrderStatus(orderInfoDto.getOrderId(), orderInfoDto.getMaIds(), orderInfoDto.getOrderStatus(), userName);
List<OrderDetailDto> dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId());
if (!CollectionUtils.isEmpty(dtos)) {
OptionalInt minOrderStatus = dtos.stream().mapToInt(person -> Integer.parseInt(person.getOrderStatus())).min();
if (minOrderStatus.isPresent()) {
@ -269,6 +279,46 @@ public class OrderServiceImpl implements OrderService {
tmTaskMapper.updateTaskStatus(tmTask);
}
}
try {
if (dtos.size() > 0 && CollectionUtil.isNotEmpty(dtos)) {
for (OrderDetailDto dto : dtos) {
BmMessage bmMessage = new BmMessage();
bmMessage.setCreateTime(DateUtils.getNowDate());
bmMessage.setMessageContent("您好,您的订单状态已变更为" + dto.getOrderStatus() + ",请及时查看");
bmMessage.setMessageType(String.valueOf(MessageTypeEnum.ORDER_MESSAGE.getType()));
bmMessage.setUuid(String.valueOf(UUID.randomUUID()));
bmMessage.setFromCompany(0L);
bmMessage.setFromUser(0L);
bmMessage.setFromCompanyName("系统");
bmMessage.setIsRead(0);
// 已下单已收货已退租已完成 通知出租方
if (OrderStatusEnum.TO_ORDER_PLACED.getStatus().equals(dto.getOrderStatus()) || OrderStatusEnum.ORDER_AWAITING_RECEIPT.getStatus().equals(dto.getOrderStatus())
|| OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().equals(dto.getOrderStatus()) || OrderStatusEnum.ORDER_FINISHED.getStatus().equals(dto.getOrderStatus())
|| OrderStatusEnum.ORDER_CANCEL.getStatus().equals(dto.getOrderStatus())) {
bmMessage.setToCompanyName(dto.getSellerCompanyName());
//bmMessage.setToUser(Long.parseLong(dto.geuser()));
bmMessage.setToCompany(Long.valueOf(dto.getSellerCompany()));
} else if (OrderStatusEnum.ORDER_RECEIVE.getStatus().equals(dto.getOrderStatus()) || OrderStatusEnum.ORDER_PENDING_SHIPMENT.getStatus().equals(dto.getOrderStatus())
|| OrderStatusEnum.ORDER_REPAIRED.getStatus().equals(dto.getOrderStatus()) || OrderStatusEnum.ORDER_TERMINATED.getStatus().equals(dto.getOrderStatus())) {
// 已接单已出库已检修已结算 通知承租方
bmMessage.setToCompanyName(dto.getBuyerCompanyName());
//bmMessage.setToUser(Long.parseLong(dto.geuse()));
bmMessage.setToCompany(Long.valueOf(dto.getBuyerCompany()));
}
String msgKey = MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + bmMessage.getFromCompany() + ":" + bmMessage.getToCompany();
JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(msgKey);
if (arrayCache == null) {
arrayCache = new JSONArray();
}
List<BmMessage> list = arrayCache.toList(BmMessage.class);
list.add(bmMessage);
(SpringUtils.getBean(RedisService.class)).setCacheObject(msgKey, list, MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE_HOURS, TimeUnit.HOURS);
bmMessageMapper.insertBmMessage(bmMessage);
}
}
} catch (Exception e) {
throw new ServiceException("错误信息描述");
}
return i;
}

View File

@ -309,12 +309,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
CASE
WHEN DATE(hh.relief_start_time) = DATE(hh.relief_end_time) THEN 1
ELSE TIMESTAMPDIFF(DAY, hh.relief_start_time, hh.relief_end_time) + 1
END AS reliefDays
END AS reliefDays,
moi.buyer_company as buyerCompany,
bdept.dept_name as buyerCompanyName,
mdi.own_co as sellerCompany,
sdept.dept_name as sellerCompanyName
FROM
ma_order_details hh
LEFT JOIN ma_order_info moi on moi.order_id = hh.order_id
LEFT JOIN ma_dev_info mdi ON hh.ma_id = mdi.ma_id
LEFT JOIN ma_type mt ON mdi.type_id = mt.type_id
LEFT JOIN sys_dept bdept on bdept.dept_id = moi.buyer_company
LEFT JOIN sys_dept sdept on sdept.dept_id = mdi.own_co
WHERE
mt.del_flag = 0 and hh.order_id = #{orderId}
</select>