|
|
@@ -0,0 +1,85 @@
|
|
|
+package org.springblade.project.handler;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.xxl.job.core.biz.model.ReturnT;
|
|
|
+import com.xxl.job.core.handler.annotation.XxlJob;
|
|
|
+import com.xxl.job.core.log.XxlJobLogger;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.client.entity.Message;
|
|
|
+import org.springblade.client.feign.IMessageClient;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.project.entity.ServiceProjectItem;
|
|
|
+import org.springblade.project.service.ServiceProjectItemService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.*;
|
|
|
+
|
|
|
+@Component
|
|
|
+@AllArgsConstructor
|
|
|
+public class LocateJobHandler {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ServiceProjectItemService serviceProjectItemService;
|
|
|
+
|
|
|
+ private final IMessageClient iMessageClient;
|
|
|
+
|
|
|
+ @XxlJob("taskCompleteJobHandler")
|
|
|
+ public ReturnT<String> locateJobHandler(String param) throws Exception {
|
|
|
+ // 创建线程池
|
|
|
+ ExecutorService pool = new ThreadPoolExecutor(5, 200, 0L,
|
|
|
+ TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024),
|
|
|
+ Executors.defaultThreadFactory(),
|
|
|
+ new ThreadPoolExecutor.AbortPolicy());
|
|
|
+
|
|
|
+ try {
|
|
|
+ JSONObject json = JSON.parseObject(param, JSONObject.class);
|
|
|
+
|
|
|
+ String tenantId = json.getString("tenantId");
|
|
|
+ LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper
|
|
|
+ .eq(ServiceProjectItem::getTaskStatus, 10)
|
|
|
+ .eq(ServiceProjectItem::getBranch, "Y")
|
|
|
+ .eq(ServiceProjectItem::getTenantId, tenantId)
|
|
|
+ .eq(ServiceProjectItem::getIsDeleted, 0);
|
|
|
+ List<ServiceProjectItem> serviceProjectItemList = serviceProjectItemService.list(lambdaQueryWrapper);
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date date = new Date();
|
|
|
+ String current = sdf.format(date);
|
|
|
+ for (ServiceProjectItem serviceProjectItem : serviceProjectItemList) {
|
|
|
+ if (ObjectUtils.isNotNull(serviceProjectItem.getReminderDay())) {
|
|
|
+ String reminderDay = sdf.format(serviceProjectItem.getReminderDay());
|
|
|
+ if (current.equals(reminderDay)) {
|
|
|
+ Message message = new Message();
|
|
|
+ message.setUserId(AuthUtil.getUserId());
|
|
|
+ message.setUserName(AuthUtil.getUser().getUserName());
|
|
|
+ message.setToUserId(serviceProjectItem.getUserid());
|
|
|
+ message.setToUserName(serviceProjectItem.getUserName());
|
|
|
+ message.setMessageType(1);
|
|
|
+ message.setMessageBody("您在" + serviceProjectItem.getBeginTime() + "有需要处理的任务。任务编号:" + serviceProjectItem.getSysNo() + "");
|
|
|
+ message.setIsRead(0);
|
|
|
+ message.setTenantId(serviceProjectItem.getTenantId());
|
|
|
+ message.setCreateTime(new Date());
|
|
|
+ message.setCreateUser(AuthUtil.getUserId());
|
|
|
+ message.setIsDeleted(0);
|
|
|
+ iMessageClient.save(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ReturnT.SUCCESS;
|
|
|
+ } catch (Exception e) {
|
|
|
+ XxlJobLogger.log(e);
|
|
|
+ return ReturnT.FAIL;
|
|
|
+ } finally {
|
|
|
+ pool.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|