diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java index 1cd8045..74a9af4 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java @@ -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; + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index 8f3cb55..e0b5bca 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -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; /** * @Author:liang.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 dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId()); // 退租 if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString())) { - List 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 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 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 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; } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml index afdc5a3..bdcbb42 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml @@ -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}