Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

wxf 2 rokov pred
rodič
commit
edc036c888

+ 4 - 0
hx-admin/src/main/resources/application-dev.yml

@@ -89,3 +89,7 @@ seata:
     # seata 事务组编号 用于TC集群名
     tx-service-group: springboot-seata-group
 
+mail:
+    # 调用邮箱服务url前缀
+    urlPrefix: http://localhost:8088/mailService/
+

+ 4 - 0
hx-admin/src/main/resources/application-test.yml

@@ -91,3 +91,7 @@ seata:
             springboot-seata-group: default
     # seata 事务组编号 用于TC集群名
     tx-service-group: springboot-seata-group
+
+mail:
+    # 调用邮箱服务url前缀
+    urlPrefix: http://localhost:8088/mailService/

+ 20 - 0
hx-mail/src/main/java/com/fjhx/mail/config/MailServiceConfig.java

@@ -0,0 +1,20 @@
+package com.fjhx.mail.config;
+
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MailServiceConfig {
+
+    /**
+     * 调用主服务url前缀
+     */
+    public static String urlPrefix;
+
+    @Value("${mail.urlPrefix}")
+    public void setUrlPrefix(String urlPrefix) {
+        MailServiceConfig.urlPrefix = urlPrefix;
+    }
+
+}

+ 1 - 1
hx-mail/src/main/java/com/fjhx/mail/controller/open/OpenController.java → hx-mail/src/main/java/com/fjhx/mail/controller/open/OpenMailController.java

@@ -17,7 +17,7 @@ import java.util.stream.Collectors;
 @DS(SourceConstant.ITEM)
 @RestController
 @RequestMapping("/open/mail")
-public class OpenController {
+public class OpenMailController {
 
     @Autowired
     private RedisCache redisCache;

+ 40 - 0
hx-mail/src/main/java/com/fjhx/mail/listener/LoginEventListeners.java

@@ -0,0 +1,40 @@
+package com.fjhx.mail.listener;
+
+import com.fjhx.mail.util.MailHttpUtil;
+import com.ruoyi.framework.config.ThreadPoolConfig;
+import com.ruoyi.framework.event.LoginEvent;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class LoginEventListeners {
+
+    @Autowired
+    @Qualifier(ThreadPoolConfig.threadPoolTaskExecutor)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
+    @EventListener
+    public void loginEvent(LoginEvent loginEvent) {
+        threadPoolTaskExecutor.execute(() -> {
+            Long userId = (Long) loginEvent.getSource();
+
+            int num = 0;
+            while (num < 3) {
+                try {
+                    MailHttpUtil.userLogin(userId);
+                    num = 3;
+                } catch (Exception e) {
+                    log.error("同步邮件服务用户登录失败", e);
+                    num++;
+                }
+            }
+
+        });
+    }
+
+}

+ 12 - 0
hx-mail/src/main/java/com/fjhx/mail/util/MailHttpUtil.java

@@ -0,0 +1,12 @@
+package com.fjhx.mail.util;
+
+import cn.hutool.http.HttpUtil;
+import com.fjhx.mail.config.MailServiceConfig;
+
+public class MailHttpUtil {
+
+    public static void userLogin(Long userId) {
+        HttpUtil.get(MailServiceConfig.urlPrefix + "userLogin/" + userId);
+    }
+
+}

+ 68 - 0
hx-oa/src/main/java/com/fjhx/oa/controller/work/WorkTasksController.java

@@ -0,0 +1,68 @@
+package com.fjhx.oa.controller.work;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.work.vo.WorkTasksVo;
+import com.fjhx.oa.entity.work.dto.WorkTasksSelectDto;
+import com.fjhx.oa.entity.work.dto.WorkTasksDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.oa.service.work.WorkTasksService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 工作任务 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+@RestController
+@RequestMapping("/workTasks")
+public class WorkTasksController {
+
+    @Autowired
+    private WorkTasksService workTasksService;
+
+    /**
+     * 工作任务分页
+     */
+    @PostMapping("/page")
+    public Page<WorkTasksVo> page(@RequestBody WorkTasksSelectDto dto) {
+        return workTasksService.getPage(dto);
+    }
+
+    /**
+     * 工作任务明细
+     */
+    @PostMapping("/detail")
+    public WorkTasksVo detail(@RequestBody BaseSelectDto dto) {
+        return workTasksService.detail(dto.getId());
+    }
+
+    /**
+     * 工作任务新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody WorkTasksDto workTasksDto) {
+        workTasksService.add(workTasksDto);
+    }
+
+    /**
+     * 工作任务编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody WorkTasksDto workTasksDto) {
+        workTasksService.edit(workTasksDto);
+    }
+
+    /**
+     * 工作任务删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        workTasksService.delete(dto.getId());
+    }
+
+}

+ 23 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/work/dto/WorkTasksDto.java

@@ -0,0 +1,23 @@
+package com.fjhx.oa.entity.work.dto;
+
+import com.fjhx.file.entity.ObsFile;
+import com.fjhx.oa.entity.work.po.WorkTasks;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 工作任务新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+@Getter
+@Setter
+public class WorkTasksDto extends WorkTasks {
+
+    /**文件列表*/
+    List<ObsFile> fileList;
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/work/dto/WorkTasksSelectDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.work.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工作任务列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+@Getter
+@Setter
+public class WorkTasksSelectDto extends BaseSelectDto {
+
+    /**来源*/
+    private Integer source;
+    /**状态*/
+    private Integer status;
+
+}

+ 66 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/work/po/WorkTasks.java

@@ -0,0 +1,66 @@
+package com.fjhx.oa.entity.work.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 工作任务
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+@Getter
+@Setter
+@TableName("work_tasks")
+public class WorkTasks extends BasePo {
+    /**来源*/
+    private Integer source;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 重要程度 重要1 不重要0
+     */
+    private Integer importanceLv;
+
+    /**
+     * 紧急程度 紧急1 不紧急0
+     */
+    private Integer urgencyLv;
+
+    /**
+     * 完成期限
+     */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    private Date dueDate;
+
+    /**
+     * 负责人
+     */
+    private Long personLiableId;
+
+    /**
+     * 说明
+     */
+    private String remarks;
+
+    /**
+     * 文件名
+     */
+    private String fileName;
+
+    /**
+     * 状态 0未完成 1已完成
+     */
+    private Integer status;
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/work/vo/WorkTasksVo.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.work.vo;
+
+import com.fjhx.oa.entity.work.po.WorkTasks;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工作任务列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+@Getter
+@Setter
+public class WorkTasksVo extends WorkTasks {
+
+    /**发布人名字*/
+    private String publisherName;
+    /**负责人名字*/
+    private String personLiableName;
+
+}

+ 26 - 0
hx-oa/src/main/java/com/fjhx/oa/mapper/work/WorkTasksMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.oa.mapper.work;
+
+import com.fjhx.oa.entity.work.po.WorkTasks;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.work.vo.WorkTasksVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 工作任务 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+public interface WorkTasksMapper extends BaseMapper<WorkTasks> {
+
+    /**
+     * 工作任务分页
+     */
+    Page<WorkTasksVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<WorkTasks> wrapper);
+
+}

+ 46 - 0
hx-oa/src/main/java/com/fjhx/oa/service/work/WorkTasksService.java

@@ -0,0 +1,46 @@
+package com.fjhx.oa.service.work;
+
+import com.fjhx.oa.entity.work.po.WorkTasks;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.work.vo.WorkTasksVo;
+import com.fjhx.oa.entity.work.dto.WorkTasksSelectDto;
+import com.fjhx.oa.entity.work.dto.WorkTasksDto;
+
+
+/**
+ * <p>
+ * 工作任务 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-07
+ */
+public interface WorkTasksService extends BaseService<WorkTasks> {
+
+    /**
+     * 工作任务分页
+     */
+    Page<WorkTasksVo> getPage(WorkTasksSelectDto dto);
+
+    /**
+     * 工作任务明细
+     */
+    WorkTasksVo detail(Long id);
+
+    /**
+     * 工作任务新增
+     */
+    void add(WorkTasksDto workTasksDto);
+
+    /**
+     * 工作任务编辑
+     */
+    void edit(WorkTasksDto workTasksDto);
+
+    /**
+     * 工作任务删除
+     */
+    void delete(Long id);
+
+}

+ 81 - 0
hx-oa/src/main/java/com/fjhx/oa/service/work/impl/WorkTasksServiceImpl.java

@@ -0,0 +1,81 @@
+package com.fjhx.oa.service.work.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.file.entity.ObsFile;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.oa.entity.work.dto.WorkTasksDto;
+import com.fjhx.oa.entity.work.dto.WorkTasksSelectDto;
+import com.fjhx.oa.entity.work.po.WorkTasks;
+import com.fjhx.oa.entity.work.vo.WorkTasksVo;
+import com.fjhx.oa.mapper.work.WorkTasksMapper;
+import com.fjhx.oa.service.work.WorkTasksService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.utils.UserUtil;
+import io.seata.spring.annotation.GlobalTransactional;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 工作任务 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-07
+ */
+@DS(SourceConstant.OA)
+@Service
+public class WorkTasksServiceImpl extends ServiceImpl<WorkTasksMapper, WorkTasks> implements WorkTasksService {
+
+    @Override
+    public Page<WorkTasksVo> getPage(WorkTasksSelectDto dto) {
+        IWrapper<WorkTasks> wrapper = getWrapper();
+        wrapper.orderByDesc("wt", WorkTasks::getId);
+        Long userId = SecurityUtils.getUserId();
+        wrapper.and(w -> w.eq(WorkTasks::getCreateUser, userId).or().eq(WorkTasks::getPersonLiableId, userId));
+        wrapper.eq(WorkTasks::getSource, dto.getSource());
+        wrapper.eq(WorkTasks::getStatus, dto.getStatus());
+        wrapper.like(WorkTasks::getTitle, dto.getKeyword());
+        Page<WorkTasksVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<WorkTasksVo> records = page.getRecords();
+        UserUtil.assignmentNickName(records, WorkTasks::getCreateUser, WorkTasksVo::setPublisherName);
+        UserUtil.assignmentNickName(records, WorkTasks::getPersonLiableId, WorkTasksVo::setPersonLiableName);
+        return page;
+    }
+
+    @Override
+    public WorkTasksVo detail(Long id) {
+        WorkTasks WorkTasks = this.getById(id);
+        WorkTasksVo result = BeanUtil.toBean(WorkTasks, WorkTasksVo.class);
+        return result;
+    }
+
+    @GlobalTransactional
+    @Override
+    public void add(WorkTasksDto workTasksDto) {
+        List<ObsFile> fileList = workTasksDto.getFileList();
+        workTasksDto.setStatus(0);
+        workTasksDto.setSource(0);
+        workTasksDto.setFileName(fileList.get(0).getFileName());
+        this.save(workTasksDto);
+        ObsFileUtil.saveFile(fileList, workTasksDto.getId());
+    }
+
+    @Override
+    public void edit(WorkTasksDto workTasksDto) {
+        this.updateById(workTasksDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 24 - 0
hx-oa/src/main/resources/mapper/work/WorkTasksMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.oa.mapper.work.WorkTasksMapper">
+    <select id="getPage" resultType="com.fjhx.oa.entity.work.vo.WorkTasksVo">
+        select
+            wt.id,
+            wt.source,
+            wt.title,
+            wt.importance_lv,
+            wt.urgency_lv,
+            wt.due_date,
+            wt.person_liable_id,
+            wt.remarks,
+            wt.file_name,
+            wt.status,
+            wt.create_user,
+            wt.create_time,
+            wt.update_user,
+            wt.update_time
+        from work_tasks wt
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>