Procházet zdrojové kódy

20221025
我的通知

sunruiqi před 2 roky
rodič
revize
d0b3024722

+ 19 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableProcessController.java

@@ -61,6 +61,25 @@ public class FlowableProcessController {
     /**
      * 流程定义列表
      */
+    @GetMapping("getById")
+    public ResponseEntity getById( Page<Map> page,String id) {
+        /*
+         * 保存两个对象,一个是ProcessDefinition(流程定义),一个是Deployment(流程部署)
+         */
+        page = flowProcessService.processList(page, "");
+        List<Map> records = page.getRecords();
+        Map resultMap = new HashMap();
+        for (Map map : records) {
+            if(id.equals(map.get("id"))){
+                resultMap = map;
+            }
+        }
+        return ResponseEntity.ok ( resultMap );
+    }
+
+    /**
+     * 流程定义列表
+     */
     @GetMapping("list")
     public ResponseEntity processListData( Page<Map> page, String category) {
         /*

+ 44 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/MyNoticeController.java

@@ -0,0 +1,44 @@
+package com.jeeplus.flowable.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.flowable.model.Flow;
+import com.jeeplus.flowable.model.MyNoticeList;
+import com.jeeplus.flowable.service.MyNoticeService;
+import com.jeeplus.flowable.vo.NoticeVo;
+import com.jeeplus.flowable.vo.ProcessVo;
+import com.jeeplus.flowable.vo.TaskVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.flowable.task.api.Task;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@Api(value = "我的通知")
+@RequestMapping("/flowable/notice")
+public class MyNoticeController {
+
+    @Resource
+    private MyNoticeService service;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "待办列表")
+    public ResponseEntity noticeList(Page<MyNoticeList> page, String type) {
+        Page<MyNoticeList> voPage = service.noticeList(page, type);
+        return ResponseEntity.ok (voPage);
+    }
+
+    @ApiOperation(value = "新增")
+    @GetMapping("/add")
+    public String add(String taskId, String title, String defId, String taskName, String createUser, String createTime, String noticeName) throws Exception{
+        return service.add(taskId, title, defId, taskName, createUser, createTime, noticeName);
+    }
+
+    @ApiOperation(value = "修改已读状态")
+    @GetMapping("/update")
+    public String update(String taskId, String noticeId) {
+        return service.update(taskId, noticeId);
+    }
+}

+ 7 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/mapper/MyNoticeListMapper.java

@@ -0,0 +1,7 @@
+package com.jeeplus.flowable.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.flowable.model.MyNoticeList;
+
+public interface MyNoticeListMapper extends BaseMapper<MyNoticeList> {
+}

+ 65 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/model/MyNoticeList.java

@@ -0,0 +1,65 @@
+package com.jeeplus.flowable.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName(value = "my_notice_list")
+public class MyNoticeList extends BaseEntity {
+
+    /**
+     * 流程id
+     */
+    private String taskId;
+
+    /**
+     * 实例标题
+     */
+    private String title;
+
+    /**
+     * 流程id
+     */
+    private String defId;
+
+    /**
+     * 流程名称
+     */
+    private String taskName;
+
+    /**
+     * 当前环节
+     */
+    private String link;
+
+    /**
+     * 创建人名称
+     */
+    private String createUser;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 通知人名称
+     */
+    private String noticeName;
+
+    /**
+     * 读取状态
+     */
+    private String type;
+
+    /**
+     * 重复数量
+     */
+    private Integer repetitionCount;
+
+}

+ 113 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/MyNoticeService.java

@@ -0,0 +1,113 @@
+package com.jeeplus.flowable.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.flowable.mapper.MyNoticeListMapper;
+import com.jeeplus.flowable.model.Flow;
+import com.jeeplus.flowable.model.MyNoticeList;
+import com.jeeplus.flowable.utils.ProcessDefCache;
+import com.jeeplus.flowable.vo.NoticeVo;
+import com.jeeplus.flowable.vo.TaskVo;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Service
+@Transactional
+public class MyNoticeService {
+
+    @Resource
+    private FlowProcessService flowProcessService;
+
+    @Resource
+    private MyNoticeListMapper mapper;
+
+    /**
+     * 获取待办任务列表
+     *
+     * @return
+     */
+    public Page<MyNoticeList> noticeList(Page<MyNoticeList> page, String type){
+        // 获取当前登录人名称查询出未查看通知列表
+        String userName = UserUtils.getCurrentUserDTO ().getName ();
+        LambdaQueryWrapper<MyNoticeList> wrapper = new LambdaQueryWrapper<MyNoticeList>();
+        wrapper.eq(MyNoticeList::getNoticeName, userName).orderByDesc(BaseEntity::getCreateDate);
+        if (StringUtils.isNotEmpty(type)) {
+            wrapper.eq(MyNoticeList::getType, Integer.parseInt(type));
+        }
+        Page<MyNoticeList> listPage = mapper.selectPage(page, wrapper);
+        if (CollectionUtils.isNotEmpty(listPage.getRecords())) {
+            for (MyNoticeList notice : listPage.getRecords()) {
+                notice.setType("0".equals(notice.getType())? "未读":"已读");
+            }
+        }
+        return listPage;
+    }
+
+    public String add(String taskId, String title, String defId, String taskName, String createName, String createDate, String noticeName) throws Exception{
+        MyNoticeList notice = new MyNoticeList();
+        //是否已保存
+        LambdaQueryWrapper<MyNoticeList> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(BaseEntity::getDelFlag, 0).eq(MyNoticeList::getTaskId, taskId).eq(MyNoticeList::getNoticeName, noticeName).eq(MyNoticeList::getType, 0);
+        MyNoticeList one = mapper.selectOne(wrapper);
+        if (one != null) {
+            one.setRepetitionCount(one.getRepetitionCount() + 1);
+            mapper.updateById(one);
+        }
+        //获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        //生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        notice.setId(id);
+        notice.setCreateBy(userDTO.getId());
+        notice.setCreateDate(new Date());
+        notice.setUpdateBy(userDTO.getId());
+        notice.setUpdateDate(new Date());
+        notice.setDelFlag(0);
+        notice.setTaskId(taskId);
+        notice.setTitle(title);
+        notice.setDefId(defId);
+        if (StringUtils.isNotEmpty(taskName)) {
+            notice.setTaskName(taskName);
+        } else {
+            Page<Map> page = flowProcessService.processList(new Page<Map>(), "");
+            List<Map> records = page.getRecords();
+            Map resultMap = new HashMap();
+            for (Map<String, String> map : records) {
+                if(defId.equals(map.get("id"))){
+                    notice.setTaskName(map.get("name"));
+                }
+            }
+        }
+        notice.setLink("结束");
+        notice.setCreateUser(createName);
+        // 创建时间格式化处理
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        notice.setCreateTime(format.parse(createDate));
+        notice.setNoticeName(noticeName);
+        notice.setType("0");
+        notice.setRepetitionCount(1);
+        mapper.insert(notice);
+        return "操作成功";
+    }
+
+    public String update(String taskId, String noticeId) {
+        LambdaQueryWrapper<MyNoticeList> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(BaseEntity::getDelFlag, 0).eq(MyNoticeList::getTaskId, taskId).eq(MyNoticeList::getNoticeName, noticeId).eq(MyNoticeList::getType, 0);
+        MyNoticeList one = mapper.selectOne(wrapper);
+        one.setType("1");
+        mapper.updateById(one);
+        return "操作成功";
+    }
+}

+ 21 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/vo/NoticeVo.java

@@ -0,0 +1,21 @@
+package com.jeeplus.flowable.vo;
+
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class NoticeVo {
+
+    private String processDefinitionName; // 流程名称
+    private int version; // 流程版本
+    private Map vars; // 流程变量
+    private TaskVo task; //流程当前节点
+    private int code; // 流程状态码
+    private String status; //流程状态
+    private String noticeId;//通知人
+    private String noticeName;//通知人姓名
+    private String type;//读取状态
+    private Integer repetitionCount;//重复数量
+
+}