1
This commit is contained in:
parent
c11c140c5e
commit
03191fa2f1
@ -45,6 +45,7 @@ public class MessageSend {
|
||||
new NotifySendSingleToUserReqDTO()
|
||||
.setUserId(id)
|
||||
.setTemplateCode(messageDTO.getTemplateCode())
|
||||
.setSystemCode(messageDTO.getSystemCode())
|
||||
.setTemplateParams(map));
|
||||
});
|
||||
}
|
||||
|
@ -18,6 +18,8 @@ public class MessageDTO {
|
||||
|
||||
/** 模板枚举 */
|
||||
private String templateCode;
|
||||
/** 系统标识 */
|
||||
private String systemCode;
|
||||
|
||||
/** 参数列表 */
|
||||
private List<Object> paramList;
|
||||
|
@ -11,4 +11,9 @@ import lombok.Data;
|
||||
**/
|
||||
@Data
|
||||
public class DlBaseNoticeReqVO extends DlBaseNotice {
|
||||
|
||||
/**
|
||||
* 公告类型(1通知 2公告 3操作指南),多个以英文逗号隔开
|
||||
*/
|
||||
private String typeStr;
|
||||
}
|
||||
|
@ -35,8 +35,11 @@
|
||||
<if test="map.server != null and map.server != ''">
|
||||
and dbn.server = #{map.server}
|
||||
</if>
|
||||
<if test="map.type != null and map.type != ''">
|
||||
and dbn.type = #{map.type}
|
||||
<if test="map.typeStr != null and map.typeStr != ''">
|
||||
and dbn.type IN
|
||||
<foreach collection="map.typeStr.split(',')" separator="," item="item" open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="map.status != null">
|
||||
and dbn.status = #{map.status}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.base.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.iocoder.yudao.module.base.service.DlDriveSchoolCoachService;
|
||||
import cn.iocoder.yudao.module.base.service.DlDriveSchoolStaffService;
|
||||
import cn.iocoder.yudao.module.base.service.DlDriveSchoolStudentService;
|
||||
@ -10,6 +11,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 驾校人员管理通用接口实现类
|
||||
@ -44,6 +46,13 @@ public class DlDriveSchoolStaffServiceImpl implements DlDriveSchoolStaffService
|
||||
} else {
|
||||
//教练和员工
|
||||
staffVOIPage = coachService.pageStaffCoach(staffVO,page);
|
||||
staffVOIPage.getRecords().forEach(item->{
|
||||
if(null!=item.getCarRegisterDate()){
|
||||
//计算车龄
|
||||
Long carOld = DateUtil.betweenYear(item.getCarRegisterDate(),new Date(),true);
|
||||
item.setCarOld(carOld);
|
||||
}
|
||||
});
|
||||
}
|
||||
return staffVOIPage;
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.base.vo;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Schema(description = "驾校人员-手机APP查询专用接口")
|
||||
@Data
|
||||
public class DlDriveSchoolStaffVO {
|
||||
@ -26,6 +28,11 @@ public class DlDriveSchoolStaffVO {
|
||||
private String courseTypes;
|
||||
/**用户ID*/
|
||||
private Long userId;
|
||||
/**车辆注册日期*/
|
||||
private Date carRegisterDate;
|
||||
|
||||
/**车龄*/
|
||||
private Long carOld;
|
||||
|
||||
|
||||
/**时间查询类型(all-全部|day-当日|month-当月|more-自定义)*/
|
||||
|
@ -32,10 +32,13 @@
|
||||
main.car_id AS carId,
|
||||
main.phone AS phone,
|
||||
main.image AS avatar,
|
||||
main.user_id AS userId,
|
||||
dsc.car_register_date AS carRegisterDate,
|
||||
GROUP_CONCAT(DISTINCT dscc.course_type SEPARATOR ',') AS courseTypes
|
||||
FROM
|
||||
drive_school_coach main
|
||||
LEFT JOIN drive_school_coach_course dscc ON main.id = dscc.coach_id AND dscc.deleted = 0
|
||||
LEFT JOIN drive_school_car dsc ON main.user_id = dsc.user_id AND dsc.deleted = 0
|
||||
<where>
|
||||
main.deleted = 0
|
||||
<if test="entity.type != null and entity.type != ''">
|
||||
|
@ -17,7 +17,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* @author vinjor-M
|
||||
* @date 10:22 2024/10/17
|
||||
**/
|
||||
@ServerEndpoint(value = "/websocket/message/{tenantId}/{userId}")
|
||||
@ServerEndpoint(value = "/websocket/message/{systemCode}/{tenantId}/{userId}")
|
||||
@Component
|
||||
public class NotifyMessageSocket {
|
||||
private final static Logger log = LoggerFactory.getLogger(NotifyMessageSocket.class);
|
||||
@ -40,8 +40,8 @@ public class NotifyMessageSocket {
|
||||
* @param userId
|
||||
*/
|
||||
@OnOpen
|
||||
public void onOpen(Session session, @PathParam(value = "tenantId") String tenantId,@PathParam(value = "userId") String userId) {
|
||||
this.sessionMap.put(tenantId+"_"+userId,session);
|
||||
public void onOpen(Session session,@PathParam(value = "systemCode") String systemCode, @PathParam(value = "tenantId") String tenantId,@PathParam(value = "userId") String userId) {
|
||||
this.sessionMap.put(systemCode+"_"+tenantId+"_"+userId,session);
|
||||
log.info("{}租户下用户{}已创建连接", tenantId,userId);
|
||||
}
|
||||
|
||||
@ -68,8 +68,8 @@ public class NotifyMessageSocket {
|
||||
* @param userId
|
||||
*/
|
||||
@OnClose
|
||||
public void onClose(Session session,@PathParam(value = "tenantId") String tenantId,@PathParam(value = "userId") String userId){
|
||||
this.sessionMap.remove(tenantId+"_"+userId);
|
||||
public void onClose(Session session,@PathParam(value = "systemCode") String systemCode,@PathParam(value = "tenantId") String tenantId,@PathParam(value = "userId") String userId){
|
||||
this.sessionMap.remove(systemCode+"_"+tenantId+"_"+userId);
|
||||
}
|
||||
|
||||
|
||||
@ -81,17 +81,17 @@ public class NotifyMessageSocket {
|
||||
* @param userId 用户id
|
||||
*/
|
||||
@OnError
|
||||
public void onError(Throwable throwable,@PathParam(value = "tenantId") String tenantId,@PathParam(value = "userId") String userId){
|
||||
log.error("{}租户下用户{}已创建连接", tenantId,userId);
|
||||
public void onError(Throwable throwable,@PathParam(value = "systemCode") String systemCode,@PathParam(value = "tenantId") String tenantId,@PathParam(value = "userId") String userId){
|
||||
log.error("{}系统{}租户下用户{}已创建连接", systemCode,tenantId,userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送给指定的用户
|
||||
* @param message
|
||||
*/
|
||||
public void sendMessage(String message, String tenantId,String userId) throws IOException {
|
||||
if (sessionMap.containsKey(tenantId+"_"+userId)){
|
||||
Session session = sessionMap.get(tenantId+"_"+userId);
|
||||
public void sendMessage(String systemCode,String message, String tenantId,String userId) throws IOException {
|
||||
if (sessionMap.containsKey(systemCode+"_"+tenantId+"_"+userId)){
|
||||
Session session = sessionMap.get(systemCode+"_"+tenantId+"_"+userId);
|
||||
session.getAsyncRemote().sendText(message);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.base.controller.admin;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.common.MessageSend;
|
||||
import cn.iocoder.yudao.common.SystemEnum;
|
||||
import cn.iocoder.yudao.common.dto.MessageDTO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
@ -150,7 +151,7 @@ public class RepairWorkerController {
|
||||
|
||||
|
||||
/**
|
||||
* 测试给维修工发送消息---测试
|
||||
* 测试发送消息---测试
|
||||
* @author vinjor-M
|
||||
* @date 18:08 2024/10/16
|
||||
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
|
||||
@ -167,9 +168,10 @@ public class RepairWorkerController {
|
||||
List<Object> paramList = new ArrayList<>();
|
||||
paramList.add("测试");
|
||||
paramList.add("3");
|
||||
messageDTO.setSystemCode(SystemEnum.SCHOOL.getCode());
|
||||
messageDTO.setParamList(paramList);
|
||||
messageSend.send(messageDTO);
|
||||
notifyMessageSocket.sendMessage("11","180",userId.toString());
|
||||
notifyMessageSocket.sendMessage(SystemEnum.SCHOOL.getCode(),"11","180",userId.toString());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ public interface RepairWorkerService extends IService<RepairWorker> {
|
||||
* @param userId 用户id
|
||||
* @param text 消息通知内容
|
||||
**/
|
||||
void sentMessage(Long userId,String text);
|
||||
void sentMessage(String systemCode,Long userId,String text);
|
||||
|
||||
/**
|
||||
* 向指定用户发送消息(用户,非员工)
|
||||
@ -96,7 +96,7 @@ public interface RepairWorkerService extends IService<RepairWorker> {
|
||||
* @param text 消息通知内容
|
||||
* @param isSMS 是否需要发短信
|
||||
**/
|
||||
void sentMessageToCus(String ticketId, String text, Boolean isSMS);
|
||||
void sentMessageToCus(String systemCode,String ticketId, String text, Boolean isSMS);
|
||||
|
||||
/**
|
||||
* 通过班组长的id查该班组的员工
|
||||
|
@ -1,7 +1,6 @@
|
||||
package cn.iocoder.yudao.module.base.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.iocoder.yudao.common.RepairRoleEnum;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
@ -200,7 +199,7 @@ public class RepairWorkerServiceImpl extends ServiceImpl<RepairWorkerMapper, Rep
|
||||
* @date 16:27 2024/10/18
|
||||
**/
|
||||
@Override
|
||||
public void sentMessage(Long userId, String text) {
|
||||
public void sentMessage(String systemCode,Long userId, String text) {
|
||||
try {
|
||||
//获取当前登录用户
|
||||
// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||
@ -211,10 +210,11 @@ public class RepairWorkerServiceImpl extends ServiceImpl<RepairWorkerMapper, Rep
|
||||
// 发送站内信
|
||||
sendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
||||
.setUserId(userId)
|
||||
.setSystemCode(systemCode)
|
||||
.setTemplateCode(TICKET_EMPLOY).setTemplateParams(templateParams));
|
||||
//发送语音提醒---小李---通过租户上下文去取租户ID
|
||||
// notifyMessageSocket.sendMessage(text, loginUser.getTenantId().toString(), userId.toString());
|
||||
notifyMessageSocket.sendMessage(text, TenantContextHolder.getRequiredTenantId().toString(), userId.toString());
|
||||
notifyMessageSocket.sendMessage(systemCode,text, TenantContextHolder.getRequiredTenantId().toString(), userId.toString());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -230,7 +230,7 @@ public class RepairWorkerServiceImpl extends ServiceImpl<RepairWorkerMapper, Rep
|
||||
* @param isSMS 是否需要发短信
|
||||
**/
|
||||
@Override
|
||||
public void sentMessageToCus(String ticketId, String text, Boolean isSMS) {
|
||||
public void sentMessageToCus(String systemCode,String ticketId, String text, Boolean isSMS) {
|
||||
try {
|
||||
// 获取工单
|
||||
DlRepairTickets tickets = repairTicketsService.getById(ticketId);
|
||||
@ -243,9 +243,10 @@ public class RepairWorkerServiceImpl extends ServiceImpl<RepairWorkerMapper, Rep
|
||||
// 发送站内信
|
||||
sendApi.sendSingleMessageToMember(new NotifySendSingleToUserReqDTO()
|
||||
.setUserId(customerMain.getUserId())
|
||||
.setSystemCode(systemCode)
|
||||
.setTemplateCode(TICKET_EMPLOY).setTemplateParams(templateParams));
|
||||
//发送语音提醒
|
||||
notifyMessageSocket.sendMessage(text, TenantContextHolder.getRequiredTenantId().toString(), String.valueOf(customerMain.getUserId()));
|
||||
notifyMessageSocket.sendMessage(systemCode,text, TenantContextHolder.getRequiredTenantId().toString(), String.valueOf(customerMain.getUserId()));
|
||||
|
||||
// 发送短信
|
||||
if (isSMS) {
|
||||
|
@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.common.RepairRoleEnum;
|
||||
import cn.iocoder.yudao.common.SystemEnum;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
@ -31,7 +32,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.catalina.User;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
@ -97,13 +97,13 @@ public class DlRepairBookingServiceImpl extends ServiceImpl<DlRepairBookingMappe
|
||||
// 选择了服务顾问
|
||||
if (ObjectUtil.isNotEmpty(repairBookingRespVO.getAdviserId())){
|
||||
// 发送消息通知
|
||||
repairWorkerService.sentMessage(Long.valueOf(repairBookingRespVO.getAdviserId()), message + ",预约的服务顾问为:" + repairBookingRespVO.getAdviserName());
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(repairBookingRespVO.getAdviserId()), message + ",预约的服务顾问为:" + repairBookingRespVO.getAdviserName());
|
||||
}else {
|
||||
// 没选服务顾问
|
||||
// 获取所有的服务顾问
|
||||
List<UserDTO> allServicer = getAllServicer(TenantContextHolder.getRequiredTenantId());
|
||||
// 发送消息通知
|
||||
allServicer.forEach(item -> repairWorkerService.sentMessage(item.getId(), message));
|
||||
allServicer.forEach(item -> repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
}
|
||||
|
||||
// 正常的新增、修改
|
||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.common.RepairDictConstants;
|
||||
import cn.iocoder.yudao.common.RepairRoleEnum;
|
||||
import cn.iocoder.yudao.common.SystemEnum;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
import cn.iocoder.yudao.module.base.service.RepairWorkerService;
|
||||
@ -260,8 +261,8 @@ public class RepairWaresServiceImpl extends ServiceImpl<RepairWaresMapper, Repai
|
||||
List<String> names = repairWares.stream().map(RepairWares::getName).collect(Collectors.toList());
|
||||
String result = String.join(",", names);
|
||||
String message = "以下配件未使用天数超过设定的未使用天数提醒,请及时处理相关事项!" + result;
|
||||
warehouse.forEach(item -> workerService.sentMessage(item.getId(), message));
|
||||
admin.forEach(item -> workerService.sentMessage(item.getId(), message));
|
||||
warehouse.forEach(item -> workerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
admin.forEach(item -> workerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
}
|
||||
}
|
||||
|
||||
@ -292,8 +293,8 @@ public class RepairWaresServiceImpl extends ServiceImpl<RepairWaresMapper, Repai
|
||||
List<String> names = repairWares.stream().map(RepairWares::getName).collect(Collectors.toList());
|
||||
String result = String.join(",", names);
|
||||
String message = "以下配件库存低于设定的库存不足提醒,请及时处理相关事项!\n" + result;
|
||||
warehouse.forEach(item -> workerService.sentMessage(item.getId(), message));
|
||||
admin.forEach(item -> workerService.sentMessage(item.getId(), message));
|
||||
warehouse.forEach(item -> workerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
admin.forEach(item -> workerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,10 +311,10 @@ public class RepairWaresServiceImpl extends ServiceImpl<RepairWaresMapper, Repai
|
||||
String message = flag ? "检查配件入库是否超时出现故障,请联系开发人员解决" : "检查配件库存是否充足出现故障,请联系开发人员解决";
|
||||
// 如果为空就通知相关人员出现了问题
|
||||
if (CollUtil.isNotEmpty(warehouse)) {
|
||||
warehouse.forEach(item -> workerService.sentMessage(item.getId(), message));
|
||||
warehouse.forEach(item -> workerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(admin)) {
|
||||
admin.forEach(item -> workerService.sentMessage(item.getId(), message));
|
||||
admin.forEach(item -> workerService.sentMessage(SystemEnum.REPAIR.getCode(),item.getId(), message));
|
||||
}
|
||||
}
|
||||
}
|
@ -217,7 +217,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl<DlRepairSoMapper, DlRepai
|
||||
// 如果主表记录的领退料人与操作人一致,即是员工点击的作废,即需要通知仓库
|
||||
boolean flag = so.getUserId().equals(loginUserId);
|
||||
if (flag) {
|
||||
repairWorkerService.sentMessage(Long.valueOf(so.getCreator()), (so.getSoType().equals("02") ? "领料单:" : "退料单:") + so.getSoNo() + "已被" + so.getUserName() + "作废");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(so.getCreator()), (so.getSoType().equals("02") ? "领料单:" : "退料单:") + so.getSoNo() + "已被" + so.getUserName() + "作废");
|
||||
// 需要更新库存和申请表数据
|
||||
// 查单据子表
|
||||
List<DlRepairSoi> sois = repairSoiService.list(new LambdaQueryWrapper<DlRepairSoi>().in(DlRepairSoi::getSoId, so.getId()));
|
||||
@ -345,7 +345,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl<DlRepairSoMapper, DlRepai
|
||||
/* 这里添加新逻辑,员工确认领料时,把领的配件添加进工单子表---end */
|
||||
|
||||
// 通知仓库
|
||||
repairWorkerService.sentMessage(Long.valueOf(so.getCreator()), so.getUserName() + "已确认领料单:" + so.getSoNo());
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(so.getCreator()), so.getUserName() + "已确认领料单:" + so.getSoNo());
|
||||
|
||||
// 记录日志
|
||||
// 查配件申请表
|
||||
@ -397,7 +397,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl<DlRepairSoMapper, DlRepai
|
||||
// 查主表
|
||||
DlRepairSo newSo = baseMapper.selectById(id);
|
||||
// 通知仓库
|
||||
repairWorkerService.sentMessage(Long.valueOf(newSo.getCreator()), newSo.getUserName() + "已确认退料单:" + newSo.getSoNo());
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(newSo.getCreator()), newSo.getUserName() + "已确认退料单:" + newSo.getSoNo());
|
||||
// 记录日志
|
||||
// 查子表信息
|
||||
List<DlRepairSoi> sois = repairSoiService.list(new LambdaQueryWrapper<DlRepairSoi>().eq(DlRepairSoi::getSoId, id));
|
||||
|
@ -339,7 +339,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
// 通知客户
|
||||
// 构建消息
|
||||
String message = String.format("您的爱车%s已开始%s", ticketsRespVO.getCarNo(), repairOrderInfo.getGoodsTitle());
|
||||
repairWorkerService.sentMessageToCus(ticketsRespVO.getId(), message, true);
|
||||
repairWorkerService.sentMessageToCus(SystemEnum.REPAIR.getCode(),ticketsRespVO.getId(), message, true);
|
||||
return ticketsRespVO;
|
||||
}
|
||||
|
||||
@ -1160,7 +1160,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
List<DictDataRespDTO> dataList = dictDataApi.getDictDataList("repair_work_type");
|
||||
DictDataRespDTO dictDataRespDTO = dataList.stream().filter(item -> item.getValue().equals(worker.getWorkType())).findFirst().orElse(null);
|
||||
String message = String.format("您的爱车%s已由%s %s接单了", tickets.getCarNo(), (dictDataRespDTO != null ? dictDataRespDTO.getLabel() : "维修工"), worker.getUserName());
|
||||
repairWorkerService.sentMessageToCus(id, message, false);
|
||||
repairWorkerService.sentMessageToCus(SystemEnum.REPAIR.getCode(),id, message, false);
|
||||
|
||||
// 更新工单主表时间
|
||||
refreshUpdateTime(id);
|
||||
@ -1188,7 +1188,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
if (update != 1) {
|
||||
throw exception0(500, "工单已开始");
|
||||
}
|
||||
repairWorkerService.sentMessage(reqVO.getNowRepairId(), "您有新的工单要处理");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),reqVO.getNowRepairId(), "您有新的工单要处理");
|
||||
|
||||
// 获取当前操作人的身份----小李新加的逻辑
|
||||
String userRole = getUserRole();
|
||||
@ -1318,7 +1318,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
// 通知服务顾问
|
||||
// 如果员工完成了订单
|
||||
if (RecordTypeEnum.SGWCZJ.getCode().equals(respVO.getRecordType()) && "03".equals(respVO.getFinishType())) {
|
||||
repairWorkerService.sentMessage(Long.valueOf(tickets.getAdviserId()), "您有新的工单可以出厂检验");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(tickets.getAdviserId()), "您有新的工单可以出厂检验");
|
||||
// 需要把工单的当前操作人移交服务顾问
|
||||
baseMapper.update(new LambdaUpdateWrapper<DlRepairTickets>()
|
||||
.setSql("now_repair_id = adviser_id")
|
||||
@ -1331,7 +1331,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
throw exception0(500, "系统异常");
|
||||
}
|
||||
} else {
|
||||
repairWorkerService.sentMessage(Long.valueOf(tickets.getAdviserId()), message);
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(tickets.getAdviserId()), message);
|
||||
}
|
||||
// 通知总检
|
||||
// 总检查角色包含总检的员工
|
||||
@ -1349,10 +1349,10 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
.set(DlRepairTickets::getNowRepairName, user.getNickname())
|
||||
.set(DlRepairTickets::getTicketsWorkStatus, "05")
|
||||
.eq(DlRepairTickets::getId, respVO.getId()));
|
||||
repairWorkerService.sentMessage(user.getId(), "您有新的工单需要总检");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),user.getId(), "您有新的工单需要总检");
|
||||
} else {
|
||||
ids.forEach(id -> {
|
||||
repairWorkerService.sentMessage(id, message);
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),id, message);
|
||||
});
|
||||
}
|
||||
|
||||
@ -1369,7 +1369,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
worker.getUserName(),
|
||||
(respVO.getRecordType().equals(RecordTypeEnum.KSSG.getCode()) ? "开始施工" : "施工完成")
|
||||
);
|
||||
repairWorkerService.sentMessageToCus(tickets.getId(), newMessage, false);
|
||||
repairWorkerService.sentMessageToCus(SystemEnum.REPAIR.getCode(),tickets.getId(), newMessage, false);
|
||||
}
|
||||
|
||||
// 更新工单主表时间
|
||||
@ -1492,13 +1492,13 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
|
||||
// 通知服务顾问
|
||||
DlRepairTickets tickets = baseMapper.selectById(respVO.getId());
|
||||
repairWorkerService.sentMessage(Long.valueOf(tickets.getAdviserId()), "您有新的工单可以出厂检验");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(tickets.getAdviserId()), "您有新的工单可以出厂检验");
|
||||
|
||||
// 通知客户
|
||||
// 构建消息
|
||||
DictDataRespDTO repairType = dictDataApi.getDictData("repair_type", tickets.getRepairType());
|
||||
String message = String.format("您的爱车%s已%s完成", tickets.getCarNo(), (repairType != null ? repairType.getLabel() : "维修保养"));
|
||||
repairWorkerService.sentMessageToCus(tickets.getId(), message, true);
|
||||
repairWorkerService.sentMessageToCus(SystemEnum.REPAIR.getCode(),tickets.getId(), message, true);
|
||||
|
||||
// 更新工单主表状态
|
||||
refreshUpdateTime(respVO.getId());
|
||||
@ -1940,7 +1940,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
if (!flag) {
|
||||
// 通知总检,让其手动操作
|
||||
ids.forEach(id -> {
|
||||
repairWorkerService.sentMessage(id, "待总检车牌为:" + item.getCarNo() + "工单已经超时,但无法自动总检,请手动处理");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),id, "待总检车牌为:" + item.getCarNo() + "工单已经超时,但无法自动总检,请手动处理");
|
||||
});
|
||||
}
|
||||
return flag;
|
||||
@ -1960,9 +1960,9 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
baseMapper.updateById(updateTickets);
|
||||
// 通知总检和服务顾问
|
||||
result.forEach(item -> {
|
||||
repairWorkerService.sentMessage(Long.valueOf(item.getAdviserId()), "您有新的工单可以出厂检验");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(item.getAdviserId()), "您有新的工单可以出厂检验");
|
||||
ids.forEach(id -> {
|
||||
repairWorkerService.sentMessage(id, "车牌为:" + item.getCarNo() + "工单已由系统自动总检并移交服务顾问");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),id, "车牌为:" + item.getCarNo() + "工单已由系统自动总检并移交服务顾问");
|
||||
});
|
||||
// 记录日志
|
||||
repairRecordsService.saveRepairRecord(item.getId(), null, RecordTypeEnum.ZJ.getCode(), "该工单由系统自动总检完成", null);
|
||||
|
@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.common.RecordTypeEnum;
|
||||
import cn.iocoder.yudao.common.RepairRoleEnum;
|
||||
import cn.iocoder.yudao.common.SoStatusEnum;
|
||||
import cn.iocoder.yudao.common.SystemEnum;
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.module.base.entity.RepairWorker;
|
||||
@ -237,7 +238,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
||||
|
||||
// 通知对应的维修服务顾问和总检
|
||||
// 维修服务顾问即创建工单时选的是谁
|
||||
repairWorkerService.sentMessage(Long.valueOf(tickets.getAdviserId()), "您有新的配件申请单需要审核");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),Long.valueOf(tickets.getAdviserId()), "您有新的配件申请单需要审核");
|
||||
// 总检查角色包含总检的员工
|
||||
// 取这个角色的角色信息
|
||||
RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.INSPECTION.getCode());
|
||||
@ -245,7 +246,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
||||
List<Long> ids = permissionApi.getUserIdByRoleId(roleInfo.getId());
|
||||
// 发通知
|
||||
if (CollectionUtil.isNotEmpty(ids)) {
|
||||
ids.forEach(id -> repairWorkerService.sentMessage(id, "您有新的配件申请单需要审核"));
|
||||
ids.forEach(id -> repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),id, "您有新的配件申请单需要审核"));
|
||||
}
|
||||
|
||||
// 更新工单主表时间
|
||||
@ -376,7 +377,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
||||
// }
|
||||
// 通知维修工
|
||||
DlTicketWares ticketWares = baseMapper.selectById(respVO.getId());
|
||||
repairWorkerService.sentMessage(ticketWares.getRepairId(), "您有新的配件申请单" + (status.equals("01") ? "审批通过了" : "被驳回了"));
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),ticketWares.getRepairId(), "您有新的配件申请单" + (status.equals("01") ? "审批通过了" : "被驳回了"));
|
||||
|
||||
//插入记录
|
||||
repairRecordsService.saveRepairRecord(respVO.getTicketId(), null, RecordTypeEnum.SPPJSQD.getCode(), "审批配件申请单", null);
|
||||
@ -517,7 +518,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
||||
("02".equals(type) ? "通知领料" : "通知退料") + ": " + remarkStr.toString(), respVO.getImages());
|
||||
// 通知维修工
|
||||
// 查维修工的userId
|
||||
repairWorkerService.sentMessage(respVO.getRepairId(), type.equals("02") ? "您有新的领料单需要确认" : "您有新的退料单需要确认");
|
||||
repairWorkerService.sentMessage(SystemEnum.REPAIR.getCode(),respVO.getRepairId(), type.equals("02") ? "您有新的领料单需要确认" : "您有新的退料单需要确认");
|
||||
|
||||
// 刷新工单主表时间
|
||||
if (ObjectUtil.isNotEmpty(respVO.getTicketId())){
|
||||
|
@ -30,4 +30,8 @@ public class NotifySendSingleToUserReqDTO {
|
||||
* 站内信模板参数
|
||||
*/
|
||||
private Map<String, Object> templateParams;
|
||||
/**
|
||||
* 业务系统标识
|
||||
*/
|
||||
private String systemCode;
|
||||
}
|
||||
|
@ -20,13 +20,13 @@ public class NotifyMessageSendApiImpl implements NotifyMessageSendApi {
|
||||
@Override
|
||||
public Long sendSingleMessageToAdmin(NotifySendSingleToUserReqDTO reqDTO) {
|
||||
return notifySendService.sendSingleNotifyToAdmin(reqDTO.getUserId(),
|
||||
reqDTO.getTemplateCode(), reqDTO.getTemplateParams());
|
||||
reqDTO.getTemplateCode(), reqDTO.getTemplateParams(),reqDTO.getSystemCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long sendSingleMessageToMember(NotifySendSingleToUserReqDTO reqDTO) {
|
||||
return notifySendService.sendSingleNotifyToMember(reqDTO.getUserId(),
|
||||
reqDTO.getTemplateCode(), reqDTO.getTemplateParams());
|
||||
reqDTO.getTemplateCode(), reqDTO.getTemplateParams(),reqDTO.getSystemCode());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -90,9 +90,9 @@ public class NotifyMessageController {
|
||||
@GetMapping("/get-unread-count")
|
||||
@Operation(summary = "获得当前用户的未读站内信数量")
|
||||
@ApiAccessLog(enable = false) // 由于前端会不断轮询该接口,记录日志没有意义
|
||||
public CommonResult<Long> getUnreadNotifyMessageCount() {
|
||||
public CommonResult<Long> getUnreadNotifyMessageCount(@RequestParam(value = "systemCode",required = false) String systemCode) {
|
||||
return success(notifyMessageService.getUnreadNotifyMessageCount(
|
||||
getLoginUserId(), UserTypeEnum.ADMIN.getValue()));
|
||||
getLoginUserId(), UserTypeEnum.ADMIN.getValue(),systemCode));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -79,10 +79,10 @@ public class NotifyTemplateController {
|
||||
public CommonResult<Long> sendNotify(@Valid @RequestBody NotifyTemplateSendReqVO sendReqVO) {
|
||||
if (UserTypeEnum.MEMBER.getValue().equals(sendReqVO.getUserType())) {
|
||||
return success(notifySendService.sendSingleNotifyToMember(sendReqVO.getUserId(),
|
||||
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams()));
|
||||
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams(),sendReqVO.getSystemCode()));
|
||||
} else {
|
||||
return success(notifySendService.sendSingleNotifyToAdmin(sendReqVO.getUserId(),
|
||||
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams()));
|
||||
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams(),sendReqVO.getSystemCode()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,5 +24,9 @@ public class NotifyTemplateSendReqVO {
|
||||
|
||||
@Schema(description = "模板参数")
|
||||
private Map<String, Object> templateParams;
|
||||
/**
|
||||
* 业务系统标识
|
||||
*/
|
||||
private String systemCode;
|
||||
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ public class ApiNotifyMessageController {
|
||||
@GetMapping("/get-unread-count")
|
||||
@Operation(summary = "获得当前用户的未读站内信数量")
|
||||
@ApiAccessLog(enable = false) // 由于前端会不断轮询该接口,记录日志没有意义
|
||||
public CommonResult<Long> getUnreadNotifyMessageCount() {
|
||||
return success(notifyMessageService.getWXUnreadNotifyMessageCount(getLoginUserId()));
|
||||
public CommonResult<Long> getUnreadNotifyMessageCount(@RequestParam(value = "systemCode",required = false) String systemCode) {
|
||||
return success(notifyMessageService.getWXUnreadNotifyMessageCount(getLoginUserId(),systemCode));
|
||||
}
|
||||
}
|
||||
|
@ -71,10 +71,11 @@ public interface NotifyMessageMapper extends BaseMapperX<NotifyMessageDO> {
|
||||
.orderByDesc("id").limitN(size));
|
||||
}
|
||||
|
||||
default Long selectUnreadCountByUserIdAndUserType(Long userId, Integer userType) {
|
||||
default Long selectUnreadCountByUserIdAndUserType(Long userId, Integer userType,String systemCode) {
|
||||
return selectCount(new LambdaQueryWrapperX<NotifyMessageDO>()
|
||||
.eq(NotifyMessageDO::getReadStatus, false)
|
||||
.eq(NotifyMessageDO::getUserId, userId)
|
||||
.eqIfPresent(NotifyMessageDO::getSystemCode,systemCode)
|
||||
.eqIfPresent(NotifyMessageDO::getUserType, userType));
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ public interface NotifyMessageService {
|
||||
* @return 站内信编号
|
||||
*/
|
||||
Long createNotifyMessage(Long userId, Integer userType,
|
||||
NotifyTemplateDO template, String templateContent, Map<String, Object> templateParams);
|
||||
NotifyTemplateDO template, String templateContent, Map<String, Object> templateParams,String systemCode);
|
||||
|
||||
/**
|
||||
* 获得站内信分页
|
||||
@ -80,16 +80,17 @@ public interface NotifyMessageService {
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userType 用户类型
|
||||
* @param systemCode 系统标识 systemCode
|
||||
* @return 返回未读站内信条数
|
||||
*/
|
||||
Long getUnreadNotifyMessageCount(Long userId, Integer userType);
|
||||
Long getUnreadNotifyMessageCount(Long userId, Integer userType,String systemCode);
|
||||
/**
|
||||
* 统计用户未读站内信条数--微信小程序
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @return 返回未读站内信条数
|
||||
*/
|
||||
Long getWXUnreadNotifyMessageCount(Long userId);
|
||||
Long getWXUnreadNotifyMessageCount(Long userId,String systemCode);
|
||||
|
||||
/**
|
||||
* 标记站内信为已读
|
||||
|
@ -29,9 +29,10 @@ public class NotifyMessageServiceImpl implements NotifyMessageService {
|
||||
|
||||
@Override
|
||||
public Long createNotifyMessage(Long userId, Integer userType,
|
||||
NotifyTemplateDO template, String templateContent, Map<String, Object> templateParams) {
|
||||
NotifyTemplateDO template, String templateContent, Map<String, Object> templateParams,String systemCode) {
|
||||
NotifyMessageDO message = new NotifyMessageDO().setUserId(userId).setUserType(userType)
|
||||
.setTemplateId(template.getId()).setTemplateCode(template.getCode())
|
||||
.setSystemCode(systemCode)
|
||||
.setTemplateType(template.getType()).setTemplateNickname(template.getNickname())
|
||||
.setTemplateContent(templateContent).setTemplateParams(templateParams).setReadStatus(false);
|
||||
notifyMessageMapper.insert(message);
|
||||
@ -64,13 +65,13 @@ public class NotifyMessageServiceImpl implements NotifyMessageService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getUnreadNotifyMessageCount(Long userId, Integer userType) {
|
||||
return notifyMessageMapper.selectUnreadCountByUserIdAndUserType(userId, userType);
|
||||
public Long getUnreadNotifyMessageCount(Long userId, Integer userType,String systemCode) {
|
||||
return notifyMessageMapper.selectUnreadCountByUserIdAndUserType(userId, userType,systemCode);
|
||||
}
|
||||
@Override
|
||||
@TenantIgnore
|
||||
public Long getWXUnreadNotifyMessageCount(Long userId) {
|
||||
return notifyMessageMapper.selectUnreadCountByUserIdAndUserType(userId, 1);
|
||||
public Long getWXUnreadNotifyMessageCount(Long userId,String systemCode) {
|
||||
return notifyMessageMapper.selectUnreadCountByUserIdAndUserType(userId, 1, systemCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -21,7 +21,7 @@ public interface NotifySendService {
|
||||
* @return 发送日志编号
|
||||
*/
|
||||
Long sendSingleNotifyToAdmin(Long userId,
|
||||
String templateCode, Map<String, Object> templateParams);
|
||||
String templateCode, Map<String, Object> templateParams,String systemCode);
|
||||
/**
|
||||
* 发送单条站内信给用户 APP 的用户
|
||||
*
|
||||
@ -33,7 +33,7 @@ public interface NotifySendService {
|
||||
* @return 发送日志编号
|
||||
*/
|
||||
Long sendSingleNotifyToMember(Long userId,
|
||||
String templateCode, Map<String, Object> templateParams);
|
||||
String templateCode, Map<String, Object> templateParams,String systemCode);
|
||||
|
||||
/**
|
||||
* 发送单条站内信给用户
|
||||
@ -45,7 +45,7 @@ public interface NotifySendService {
|
||||
* @return 发送日志编号
|
||||
*/
|
||||
Long sendSingleNotify( Long userId, Integer userType,
|
||||
String templateCode, Map<String, Object> templateParams);
|
||||
String templateCode, Map<String, Object> templateParams,String systemCode);
|
||||
|
||||
default void sendBatchNotify(List<String> mobiles, List<Long> userIds, Integer userType,
|
||||
String templateCode, Map<String, Object> templateParams) {
|
||||
|
@ -13,7 +13,8 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.NOTICE_NOT_FOUND;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.NOTIFY_SEND_TEMPLATE_PARAM_MISS;
|
||||
|
||||
/**
|
||||
* 站内信发送 Service 实现类
|
||||
@ -32,17 +33,17 @@ public class NotifySendServiceImpl implements NotifySendService {
|
||||
private NotifyMessageService notifyMessageService;
|
||||
|
||||
@Override
|
||||
public Long sendSingleNotifyToAdmin(Long userId, String templateCode, Map<String, Object> templateParams) {
|
||||
return sendSingleNotify(userId, UserTypeEnum.ADMIN.getValue(), templateCode, templateParams);
|
||||
public Long sendSingleNotifyToAdmin(Long userId, String templateCode, Map<String, Object> templateParams,String systemCode) {
|
||||
return sendSingleNotify(userId, UserTypeEnum.ADMIN.getValue(), templateCode, templateParams,systemCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long sendSingleNotifyToMember(Long userId, String templateCode, Map<String, Object> templateParams) {
|
||||
return sendSingleNotify(userId, UserTypeEnum.MEMBER.getValue(), templateCode, templateParams);
|
||||
public Long sendSingleNotifyToMember(Long userId, String templateCode, Map<String, Object> templateParams,String systemCode) {
|
||||
return sendSingleNotify(userId, UserTypeEnum.MEMBER.getValue(), templateCode, templateParams,systemCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long sendSingleNotify(Long userId, Integer userType, String templateCode, Map<String, Object> templateParams) {
|
||||
public Long sendSingleNotify(Long userId, Integer userType, String templateCode, Map<String, Object> templateParams,String systemCode) {
|
||||
// 校验模版
|
||||
NotifyTemplateDO template = validateNotifyTemplate(templateCode);
|
||||
if (Objects.equals(template.getStatus(), CommonStatusEnum.DISABLE.getStatus())) {
|
||||
@ -54,7 +55,7 @@ public class NotifySendServiceImpl implements NotifySendService {
|
||||
|
||||
// 发送站内信
|
||||
String content = notifyTemplateService.formatNotifyTemplateContent(template.getContent(), templateParams);
|
||||
return notifyMessageService.createNotifyMessage(userId, userType, template, content, templateParams);
|
||||
return notifyMessageService.createNotifyMessage(userId, userType, template, content, templateParams,systemCode);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
Loading…
Reference in New Issue
Block a user