Browse Source

任务看板添加消息通知

wangzhuo 2 years ago
parent
commit
076bc5059b

+ 10 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -52,6 +52,7 @@ public interface IUserClient {
 	String REMOVE_USER = API_PREFIX + "/remove-user";
 	String GAIN_USER = API_PREFIX + "/gainUser";
 	String USER_INFO_BY_NAME = API_PREFIX + "/user-info-by-name";
+	String USER_INFO_BY_IDS = API_PREFIX + "/user-info-by-ids";
 	String USER_INFO_BY_NAME_PRECISION = API_PREFIX + "/user-info-by-name-precision";
 	String LIST_USER_BY_ROLE_ID = API_PREFIX + "/listUserByRoleId";
 	String GET_USER_PAGE = API_PREFIX + "/getUserPage";
@@ -79,6 +80,15 @@ public interface IUserClient {
 	List<User> userInfoByName(@RequestParam("userName") String userName, @RequestParam("tenantId") String tenantId);
 
 	/**
+	 * 根据id组查询数据
+	 *
+	 * @param
+	 * @return
+	 */
+	@GetMapping(USER_INFO_BY_IDS)
+	List<User> userListGetByIds(@RequestParam("ids") List<Long> ids);
+
+	/**
 	 * 获取用户信息精准查询
 	 *
 	 * @param

+ 163 - 145
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/controller/TaskController.java

@@ -36,6 +36,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.mocha.vo.TaskStatisticsVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.mocha.entity.Task;
@@ -64,10 +65,10 @@ public class TaskController extends BladeController {
 	private final ITaskService taskService;
 
 //	private final IWechatClient wechatClient;
-//	//消息
-//	private final IMessageClient messageClient;
-//
-//	private final IUserClient userClient;
+	//消息
+	private final IMessageClient messageClient;
+
+	private final IUserClient userClient;
 
 	/**
 	 * 详情
@@ -156,72 +157,79 @@ public class TaskController extends BladeController {
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入task")
+	@Transactional
 	public R save(@Valid @RequestBody Task task) {
 		task.setCreateTime(LocalDateTime.now());
-//		StringBuilder sb = new StringBuilder();
-//		sb.append(task.getResponsibleUserId()).append(",");
-//		sb.append(task.getCreateUser()).append(",");
-//		sb.append(task.getCcId());
-//		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
-//		String date1 = format.format(new Date());
-//
+		StringBuilder sb = new StringBuilder();
+		sb.append(task.getResponsibleUserId()).append(",");
+		sb.append(task.getCreateUser()).append(",");
+		sb.append(task.getCcId());
+		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
+		String date1 = format.format(new Date());
+
 //		boolean save = taskService.save(task);
-//
-//		List<Long> ids = new ArrayList<>();
-//		ids.add(task.getCreateUser());
-//		ids.add(task.getResponsibleUserId());
-//		List<String> idList = Arrays.asList(task.getCcId().split(","));
-//		idList.forEach(id -> ids.add(Long.valueOf(id)));
-//		List<User> userList = userClient.userListGetByIds(ids);
-//
-//		String type = "";
-//		if (task.getType() == 1) {
-//			type = "待执行";
-//		} else if (task.getType() == 2) {
-//			type = "执行中";
-//		} else if (task.getType() == 3) {
-//			type = "已提交";
-//		} else if (task.getType() == 4) {
-//			type = "工单关闭";
-//		}
-//
-//		for (User datum : userList) {
-//			//循环发送消息
-//			Message sendMessage = new Message();
-//			sendMessage.setParameter(null);
-//			sendMessage.setUserName(AuthUtil.getUserName());
-//			sendMessage.setUserId(null);
-//			sendMessage.setToUserId(datum.getId());
-//			sendMessage.setToUserName(datum.getName());
-//			sendMessage.setMessageType(1);
-//			sendMessage.setTenantId(AuthUtil.getTenantId());
-//			sendMessage.setCreateUser(null);
-//			sendMessage.setCreateTime(new Date());
-//			sendMessage.setUrl("/TaskKanban/index");
-//			sendMessage.setPageLabel("任务看板");
-//			sendMessage.setPageStatus(null);
-//			DateTimeFormatter dfDateTime = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
-//			String date = dfDateTime.format(task.getCompletionTime().plusYears(1));
-//			if (task.getIsUrgency() == 0) {
-//				sendMessage.setMessageBody("您有新的任务" +
-//					"\n需求方:" + task.getCreateUserName() +
-//					"\n要求完成时间: " + date +
-//					"\n当前状态:" + type +
-//					"\n任务内容:" + task.getTsInfo());
-//			} else {
-//				sendMessage.setMessageBody("紧急任务!" +
-//					"\n需求方:" + task.getCreateUserName() +
-//					"\n要求完成时间: " + date +
-//					"\n任务内容:" + task.getTsInfo());
-//			}
-//			R webSave = messageClient.save(sendMessage);
-//			System.out.println("web信息发送结果:" + webSave);
-//
-//			if (!webSave.isSuccess()) {
-//				throw new SecurityException("web信息发送消息失败");
-//			}
-//		}
-//
+
+		List<Long> ids = new ArrayList<>();
+		ids.add(task.getCreateUser());
+		ids.add(task.getResponsibleUserId());
+		List<String> idList = Arrays.asList(task.getCcId().split(","));
+		idList.forEach(id -> ids.add(Long.valueOf(id)));
+		List<User> userList = userClient.userListGetByIds(ids);
+
+		String type = "";
+		if (task.getType() == 1) {
+			type = "待执行";
+		} else if (task.getType() == 2) {
+			type = "执行中";
+		} else if (task.getType() == 3) {
+			type = "已提交";
+		} else if (task.getType() == 4) {
+			type = "工单关闭";
+		}
+
+		for (User datum : userList) {
+
+			if (Objects.equals(datum.getId(), AuthUtil.getUserId())) {
+				continue;
+			}
+
+			//循环发送消息
+			Message sendMessage = new Message();
+			sendMessage.setParameter(null);
+			sendMessage.setUserName(AuthUtil.getUserName());
+			sendMessage.setUserId(null);
+			sendMessage.setToUserId(datum.getId());
+			sendMessage.setToUserName(datum.getName());
+			sendMessage.setMessageType(1);
+			sendMessage.setTenantId(AuthUtil.getTenantId());
+			sendMessage.setCreateUser(null);
+			sendMessage.setCreateTime(new Date());
+			sendMessage.setUrl("/TaskKanban/index");
+			sendMessage.setPageLabel("任务看板");
+			sendMessage.setPageStatus(null);
+			DateTimeFormatter dfDateTime = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
+			String date = dfDateTime.format(task.getCompletionTime().plusYears(1));
+			if (task.getIsUrgency() == 0) {
+				sendMessage.setMessageBody("您有新的任务" +
+					"\n需求方:" + task.getCreateUserName() +
+					"\n要求完成时间: " + date +
+					"\n当前状态:" + type +
+					"\n任务内容:" + task.getTsInfo());
+			} else {
+				sendMessage.setMessageBody("紧急任务!" +
+					"\n需求方:" + task.getCreateUserName() +
+					"\n要求完成时间: " + date +
+					"\n当前状态:" + type +
+					"\n任务内容:" + task.getTsInfo());
+			}
+			R webSave = messageClient.save(sendMessage);
+			System.out.println("web信息发送结果:" + webSave);
+
+			if (!webSave.isSuccess()) {
+				throw new SecurityException("web信息发送消息失败");
+			}
+		}
+
 //		System.out.println("==== 任务看板添加发送消息租户号:" + AuthUtil.getTenantId() + "。接收人ids:" + sb + " ====");
 //		String rest = wechatClient.sendMessage(
 //			sb.toString(),
@@ -245,87 +253,97 @@ public class TaskController extends BladeController {
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入task")
+	@Transactional
 	public R update(@Valid @RequestBody Task task) {
 		task.setUpdateTime(LocalDateTime.now());
-//
-//		task.setCreateTime(LocalDateTime.now());
-//		StringBuilder sb = new StringBuilder();
-//		sb.append(task.getResponsibleUserId()).append(",");
-//		sb.append(task.getCreateUser()).append(",");
-//		sb.append(task.getCcId());
-//		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
-//		String date1 = format.format(new Date());
-//
-//		String info = "\"" + task.getTsInfo() + "\"" + "为 ";
-//		if (task.getType() == 1) {
-//			info += "待执行";
-//		} else if (task.getType() == 2) {
-//			info += "执行中";
-//		} else if (task.getType() == 3) {
-//			info += "已提交";
-//		} else if (task.getType() == 4) {
-//			info += "工单关闭";
-//		}
-//
-//		Task originalTask = taskService.getById(task.getId());
-//
+
+		task.setCreateTime(LocalDateTime.now());
+		StringBuilder sb = new StringBuilder();
+		sb.append(task.getResponsibleUserId()).append(",");
+		sb.append(task.getCreateUser()).append(",");
+		sb.append(task.getCcId());
+		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
+		String date1 = format.format(new Date());
+
+		String info = "\"" + task.getTsInfo() + "\"" + "为 ";
+		if (task.getType() == 1) {
+			info += "待执行";
+		} else if (task.getType() == 2) {
+			info += "执行中";
+		} else if (task.getType() == 3) {
+			info += "已提交";
+		} else if (task.getType() == 4) {
+			info += "工单关闭";
+		}
+
+
+
 //		boolean b = taskService.updateById(task);
-//
-//		List<Long> ids = new ArrayList<>();
-//		ids.add(task.getCreateUser());
-//		ids.add(task.getResponsibleUserId());
-//		List<String> idList = Arrays.asList(task.getCcId().split(","));
-//		idList.forEach(id -> ids.add(Long.valueOf(id)));
-//		List<User> userList = userClient.userListGetByIds(ids);
-//
-//		String type = "";
-//		if (task.getType() == 1) {
-//			type = "待执行";
-//		} else if (task.getType() == 2) {
-//			type = "执行中";
-//		} else if (task.getType() == 3) {
-//			type = "已提交";
-//		} else if (task.getType() == 4) {
-//			type = "工单关闭";
-//		}
-//
-//		for (User datum : userList) {
-//			//循环发送消息
-//			Message sendMessage = new Message();
-//			sendMessage.setParameter(null);
-//			sendMessage.setUserName(AuthUtil.getUserName());
-//			sendMessage.setUserId(null);
-//			sendMessage.setToUserId(datum.getId());
-//			sendMessage.setToUserName(datum.getName());
-//			sendMessage.setMessageType(1);
-//			sendMessage.setTenantId(AuthUtil.getTenantId());
-//			sendMessage.setCreateUser(null);
-//			sendMessage.setCreateTime(new Date());
-//			sendMessage.setUrl("/TaskKanban/index");
-//			sendMessage.setPageLabel("任务看板");
-//			sendMessage.setPageStatus(null);
-//			DateTimeFormatter dfDateTime = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
-//			String date = dfDateTime.format(task.getCompletionTime().plusYears(1));
-//			if (task.getIsUrgency() == 0) {
-//				sendMessage.setMessageBody("任务看板" +
-//					"\n需求方:" + task.getCreateUserName() +
-//					"\n要求完成时间: " + date +
-//					"\n当前状态:" + type +
-//					"\n任务内容:" + task.getTsInfo());
-//			} else {
-//				sendMessage.setMessageBody("紧急任务!" +
-//					"\n需求方:" + task.getCreateUserName() +
-//					"\n要求完成时间: " + date +
-//					"\n任务内容:" + task.getTsInfo());
-//			}
-//			R webSave = messageClient.save(sendMessage);
-//			System.out.println("web信息发送结果:" + webSave);
-//
-//			if (!webSave.isSuccess()) {
-//				throw new SecurityException("web信息发送消息失败");
-//			}
-//		}
-//
+
+		Task originalTask = taskService.getById(task.getId());
+
+		List<Long> ids = new ArrayList<>();
+		ids.add(task.getCreateUser());
+		ids.add(task.getResponsibleUserId());
+		List<String> idList = Arrays.asList(task.getCcId().split(","));
+		idList.forEach(id -> ids.add(Long.valueOf(id)));
+		List<User> userList = userClient.userListGetByIds(ids);
+
+		String type = "";
+		if (task.getType() == 1) {
+			type = "待执行";
+		} else if (task.getType() == 2) {
+			type = "执行中";
+		} else if (task.getType() == 3) {
+			type = "已提交";
+		} else if (task.getType() == 4) {
+			type = "工单关闭";
+		}
+
+		for (User datum : userList) {
+
+
+			if (Objects.equals(datum.getId(), AuthUtil.getUserId())) {
+				continue;
+			}
+
+			//循环发送消息
+			Message sendMessage = new Message();
+			sendMessage.setParameter(null);
+			sendMessage.setUserName(AuthUtil.getUserName());
+			sendMessage.setUserId(null);
+			sendMessage.setToUserId(datum.getId());
+			sendMessage.setToUserName(datum.getName());
+			sendMessage.setMessageType(1);
+			sendMessage.setTenantId(AuthUtil.getTenantId());
+			sendMessage.setCreateUser(null);
+			sendMessage.setCreateTime(new Date());
+			sendMessage.setUrl("/TaskKanban/index");
+			sendMessage.setPageLabel("任务看板");
+			sendMessage.setPageStatus(null);
+			DateTimeFormatter dfDateTime = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
+			String date = dfDateTime.format(task.getCompletionTime().plusYears(1));
+			if (task.getIsUrgency() == 0) {
+				sendMessage.setMessageBody("任务看板" +
+					"\n需求方:" + task.getCreateUserName() +
+					"\n要求完成时间: " + date +
+					"\n当前状态:" + type +
+					"\n任务内容:" + task.getTsInfo());
+			} else {
+				sendMessage.setMessageBody("紧急任务!" +
+					"\n需求方:" + task.getCreateUserName() +
+					"\n要求完成时间: " + date +
+					"\n当前状态:" + type +
+					"\n任务内容:" + task.getTsInfo());
+			}
+			R webSave = messageClient.save(sendMessage);
+			System.out.println("web信息发送结果:" + webSave);
+
+			if (!webSave.isSuccess()) {
+				throw new SecurityException("web信息发送消息失败");
+			}
+		}
+
 //		if (originalTask.getType() != task.getType()) {
 //			System.out.println("==== 任务看板修改发送消息租户号:" + AuthUtil.getTenantId() + "。接收人ids:" + sb + " ====");
 //			String rest = wechatClient.sendMessage(

+ 14 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -106,6 +106,20 @@ public class UserClient implements IUserClient {
 	}
 
 	@Override
+	public List<User> userListGetByIds(List<Long> ids) {
+		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
+		for (int i = 0; i < ids.size(); i++) {
+			if (ids.size() - 1 == 1) {
+				lqw.eq(User::getId, ids.get(i));
+			} else {
+				lqw.eq(User::getId, ids.get(i)).or();
+			}
+		}
+//		ids.forEach(id -> lqw.eq(User::getId, id).or());
+		return service.list(lqw);
+	}
+
+	@Override
 	@GetMapping(USER_INFO_BY_NAME_PRECISION)
 	public List<User> userInfoByNamePrecision(String userName, String tenantId) {
 		LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();