Ver código fonte

任务相关

liuyc 2 anos atrás
pai
commit
4b51496a1e
18 arquivos alterados com 623 adições e 0 exclusões
  1. 28 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/EMFinancialReimbursementInfoDTO.java
  2. 22 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/TaskProcessInfoDTO.java
  3. 64 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/EMFinancialReimbursementInfo.java
  4. 15 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/EMProcessTaskUser.java
  5. 48 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/TaskProcessInfo.java
  6. 16 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/EMFinancialReimbursementInfoDraftVO.java
  7. 9 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/EMFinancialReimbursementInfoVO.java
  8. 22 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskProcessInfoVO.java
  9. 64 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ExpenseManagerController.java
  10. 43 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/TaskProcessController.java
  11. 8 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/EMFinancialReimbursementMapper.java
  12. 10 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/EMFinancialReimbursementMapper.xml
  13. 8 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskProcessMapper.java
  14. 6 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskProcessMapper.xml
  15. 24 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/EMFinancialReimbursementService.java
  16. 15 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/TaskProcessService.java
  17. 108 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMFinancialReimbursementServiceImpl.java
  18. 113 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

+ 28 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/EMFinancialReimbursementInfoDTO.java

@@ -0,0 +1,28 @@
+package org.springblade.control.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.control.entity.EMFinancialReimbursementInfo;
+import org.springblade.control.entity.EMProcessTaskUser;
+
+import java.util.List;
+
+@Data
+public class EMFinancialReimbursementInfoDTO extends EMFinancialReimbursementInfo {
+
+    @ApiModelProperty(value = "提交状态 1=暂存 2=提交审批")
+    private String submitStatus;
+
+    @ApiModelProperty(value = "部门负责人")
+    private EMProcessTaskUser responsibleObj;
+
+    @ApiModelProperty(value = "财务人员")
+    private EMProcessTaskUser financeObj;
+
+    @ApiModelProperty(value = "出纳人")
+    private EMProcessTaskUser cashierObj;
+
+    @ApiModelProperty(value = "抄送人列表")
+    private List<EMProcessTaskUser> ccUserObjList;
+
+}

+ 22 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/TaskProcessInfoDTO.java

@@ -0,0 +1,22 @@
+package org.springblade.control.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.control.entity.TaskProcessInfo;
+
+@Data
+public class TaskProcessInfoDTO extends TaskProcessInfo {
+
+    @ApiModelProperty(value = "选择类型 1=待办任务 2=已办任务 3=我发起的任务 4=抄送给我的")
+    private String selectType;
+
+    @ApiModelProperty(value = "选择类型 1=所有 2=已审批 3=待审批 4=已驳回")
+    private String selectStatus;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+}

+ 64 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/EMFinancialReimbursementInfo.java

@@ -0,0 +1,64 @@
+package org.springblade.control.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@TableName("c_expense_financial_reimbursement_info")
+@EqualsAndHashCode(callSuper = true)
+public class EMFinancialReimbursementInfo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "报销编号")
+    private String frNumber;
+
+    @ApiModelProperty(value = "报销类型")
+    private Integer frType;
+
+    @ApiModelProperty(value = "报销金额")
+    private BigDecimal frMoney;
+
+    @ApiModelProperty(value = "报销时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date frDate;
+
+    @ApiModelProperty(value = "费用说明")
+    private String frDesc;
+
+    @ApiModelProperty(value = "电子发票url地址")
+    private String frElectronicInvoiceUrl;
+
+    @ApiModelProperty(value = "附件url地址")
+    private String frAttachmentUrl;
+
+    @ApiModelProperty(value = "所属项目id")
+    private Long projectId;
+
+    @ApiModelProperty(value = "预算计划ids")
+    private String budgetPlanIds;
+
+    @ApiModelProperty(value = "归属人id")
+    private Long userIdVesting;
+
+    @ApiModelProperty(value = "审批状态1=待审批 2=已审批 3=已驳回")
+    private Integer status;
+
+    @ApiModelProperty(value = "是否抵扣借款 0=否 1=是")
+    private Integer isDeductLoan;
+
+    @ApiModelProperty(value = "借款信息id")
+    private Long deductLoanId;
+
+    @ApiModelProperty(value = "实际报销金额")
+    private BigDecimal frMoneyActual;
+
+}

+ 15 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/EMProcessTaskUser.java

@@ -0,0 +1,15 @@
+package org.springblade.control.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class EMProcessTaskUser {
+
+    @ApiModelProperty(value = "id")
+    private String userId;
+
+    @ApiModelProperty(value = "名称")
+    private String userName;
+
+}

+ 48 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/TaskProcessInfo.java

@@ -0,0 +1,48 @@
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.util.Date;
+
+@Data
+@TableName("c_task_process_info")
+@EqualsAndHashCode(callSuper = true)
+public class TaskProcessInfo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "任务名称")
+    private String taskName;
+
+    @ApiModelProperty(value = "上报日期")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date reportDate;
+
+    @ApiModelProperty(value = "审核日期")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date auditDate;
+
+    @ApiModelProperty(value = "上报类型(任务类型)")
+    private Integer taskType;
+
+    @ApiModelProperty(value = "审批状态1=待审批 2=已审批 3=已驳回")
+    private Integer status;
+
+    @ApiModelProperty(value = "上报人id")
+    private Long reportUserId;
+
+    @ApiModelProperty(value = "审批人ids")
+    private String auditUserIds;
+
+    @ApiModelProperty(value = "抄送人ids")
+    private String ccUserIds;
+
+    @ApiModelProperty(value = "驳回原因")
+    private String rejectDesc;
+
+}

+ 16 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/EMFinancialReimbursementInfoDraftVO.java

@@ -0,0 +1,16 @@
+package org.springblade.control.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class EMFinancialReimbursementInfoDraftVO  {
+
+    private Long id;
+
+    private String title;
+
+    private Date updateTime;
+
+}

+ 9 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/EMFinancialReimbursementInfoVO.java

@@ -0,0 +1,9 @@
+package org.springblade.control.vo;
+
+import lombok.Data;
+import org.springblade.control.entity.EMFinancialReimbursementInfo;
+
+@Data
+public class EMFinancialReimbursementInfoVO extends EMFinancialReimbursementInfo {
+
+}

+ 22 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/TaskProcessInfoVO.java

@@ -0,0 +1,22 @@
+package org.springblade.control.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.control.entity.TaskProcessInfo;
+
+@Data
+public class TaskProcessInfoVO extends TaskProcessInfo {
+
+    @ApiModelProperty(value = "上报类型(任务类型)")
+    private String reportTypeName;
+
+    @ApiModelProperty(value = "审核状态名称")
+    private String statusName;
+
+    @ApiModelProperty(value = "上报人")
+    private String reportUserName;
+
+    @ApiModelProperty(value = "审核人")
+    private String auditUserNames;
+
+}

+ 64 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ExpenseManagerController.java

@@ -0,0 +1,64 @@
+package org.springblade.control.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.EMFinancialReimbursementInfoDTO;
+import org.springblade.control.service.EMFinancialReimbursementService;
+import org.springblade.control.vo.EMFinancialReimbursementInfoDraftVO;
+import org.springblade.control.vo.EMFinancialReimbursementInfoVO;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/expense")
+@Api(value = "费用管理接口", tags = "费用管理接口")
+public class ExpenseManagerController extends BladeController {
+
+    private final EMFinancialReimbursementService financialReimbursementService;
+
+    @GetMapping("/financial/page")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "财务报销分页查询")
+    public R<IPage<EMFinancialReimbursementInfoVO>> financialPage(EMFinancialReimbursementInfoDTO dto, Query query) {
+        return R.data(financialReimbursementService.financialPage(Condition.getPage(query), dto));
+    }
+
+    @GetMapping("/financial/draft/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "财务报销草稿箱列表")
+    public R<List<EMFinancialReimbursementInfoDraftVO>> financialDraftList() {
+        return R.data(financialReimbursementService.financialDraftList());
+    }
+
+    @GetMapping("/financial/detail")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "财务报销信息详情")
+    public R<EMFinancialReimbursementInfoVO> financialDetail(@RequestParam Long id) {
+        return R.data(financialReimbursementService.financialDetail(id));
+    }
+
+    @GetMapping("/financial/submit")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "财务报销信息详情")
+    public R<Object> financialSubmit(@RequestBody EMFinancialReimbursementInfoDTO dto) {
+        return R.status(financialReimbursementService.financialSubmit(dto));
+    }
+
+    @PostMapping("/financial/remove")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "财务报销记录物理删除")
+    public R<Object> financialRemove(@RequestParam Long id) {
+        return R.status(financialReimbursementService.financialRemove(id));
+    }
+
+
+}

+ 43 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/TaskProcessController.java

@@ -0,0 +1,43 @@
+package org.springblade.control.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.TaskProcessInfoDTO;
+import org.springblade.control.service.TaskProcessService;
+import org.springblade.control.vo.TaskProcessInfoVO;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/approve")
+@Api(value = "审批管理接口", tags = "审批管理接口")
+public class TaskProcessController extends BladeController {
+
+    private final TaskProcessService taskProcessService;
+
+    @GetMapping("/task/page")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "审批管理任务分页查询")
+    public R<IPage<TaskProcessInfoVO>> taskPage(TaskProcessInfoDTO dto, Query query) {
+        return R.data(taskProcessService.taskPage(Condition.getPage(query), dto));
+    }
+
+    @GetMapping("/task/detail")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "审批管理任务详情")
+    public R<TaskProcessInfoVO> taskDetail(@RequestParam String id) {
+        return R.data(taskProcessService.taskDetail(id));
+    }
+
+}

+ 8 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/EMFinancialReimbursementMapper.java

@@ -0,0 +1,8 @@
+package org.springblade.control.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.control.entity.EMFinancialReimbursementInfo;
+
+public interface EMFinancialReimbursementMapper extends BaseMapper<EMFinancialReimbursementInfo> {
+
+}

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/EMFinancialReimbursementMapper.xml

@@ -0,0 +1,10 @@
+<?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="org.springblade.control.mapper.EMFinancialReimbursementMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="resultMap" type="org.springblade.control.entity.EMFinancialReimbursementInfo">
+    </resultMap>
+
+
+</mapper>

+ 8 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskProcessMapper.java

@@ -0,0 +1,8 @@
+package org.springblade.control.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.control.entity.TaskProcessInfo;
+
+public interface TaskProcessMapper extends BaseMapper<TaskProcessInfo> {
+
+}

+ 6 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/TaskProcessMapper.xml

@@ -0,0 +1,6 @@
+<?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="org.springblade.control.mapper.TaskProcessMapper">
+
+
+</mapper>

+ 24 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/EMFinancialReimbursementService.java

@@ -0,0 +1,24 @@
+package org.springblade.control.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.control.dto.EMFinancialReimbursementInfoDTO;
+import org.springblade.control.entity.EMFinancialReimbursementInfo;
+import org.springblade.control.vo.EMFinancialReimbursementInfoDraftVO;
+import org.springblade.control.vo.EMFinancialReimbursementInfoVO;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+
+public interface EMFinancialReimbursementService extends BaseService<EMFinancialReimbursementInfo> {
+
+    IPage<EMFinancialReimbursementInfoVO> financialPage(IPage<EMFinancialReimbursementInfo> page, EMFinancialReimbursementInfoDTO dto);
+
+    List<EMFinancialReimbursementInfoDraftVO> financialDraftList();
+
+    EMFinancialReimbursementInfoVO financialDetail(Long id);
+
+    boolean financialSubmit(EMFinancialReimbursementInfoDTO dto);
+
+    boolean financialRemove(Long id);
+
+}

+ 15 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/TaskProcessService.java

@@ -0,0 +1,15 @@
+package org.springblade.control.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.control.dto.TaskProcessInfoDTO;
+import org.springblade.control.entity.TaskProcessInfo;
+import org.springblade.control.vo.TaskProcessInfoVO;
+import org.springblade.core.mp.base.BaseService;
+
+public interface TaskProcessService extends BaseService<TaskProcessInfo> {
+
+    IPage<TaskProcessInfoVO> taskPage(IPage<TaskProcessInfo> page, TaskProcessInfoDTO dto);
+
+    TaskProcessInfoVO taskDetail(String id);
+
+}

+ 108 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMFinancialReimbursementServiceImpl.java

@@ -0,0 +1,108 @@
+package org.springblade.control.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.EMFinancialReimbursementInfoDTO;
+import org.springblade.control.entity.EMFinancialReimbursementInfo;
+import org.springblade.control.mapper.EMFinancialReimbursementMapper;
+import org.springblade.control.service.EMFinancialReimbursementService;
+import org.springblade.control.vo.EMFinancialReimbursementInfoDraftVO;
+import org.springblade.control.vo.EMFinancialReimbursementInfoVO;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+@Service
+@AllArgsConstructor
+public class EMFinancialReimbursementServiceImpl extends BaseServiceImpl<EMFinancialReimbursementMapper, EMFinancialReimbursementInfo> implements EMFinancialReimbursementService {
+
+    private final IUserClient iUserClient;
+
+    @Override
+    public IPage<EMFinancialReimbursementInfoVO> financialPage(IPage<EMFinancialReimbursementInfo> page, EMFinancialReimbursementInfoDTO dto) {
+        QueryWrapper<EMFinancialReimbursementInfo> queryWrapper = Condition.getQueryWrapper(dto);
+        queryWrapper.lambda().eq(EMFinancialReimbursementInfo::getIsDeleted, 1);
+        IPage<EMFinancialReimbursementInfo> pages = this.page(page, queryWrapper.lambda().orderBy(true, true, EMFinancialReimbursementInfo::getCreateTime));
+        return pages.convert(reimbursementInfo -> {
+            EMFinancialReimbursementInfoVO vo = new EMFinancialReimbursementInfoVO();
+            BeanUtils.copyProperties(reimbursementInfo, vo);
+            //TODO vo.set
+            return vo;
+        });
+    }
+
+    @Override
+    public List<EMFinancialReimbursementInfoDraftVO> financialDraftList() {
+        LambdaQueryWrapper<EMFinancialReimbursementInfo> queryWrapper = new LambdaQueryWrapper<>();
+        //获取当前时间
+        LocalDateTime now = LocalDateTime.now();
+        //计算三个月前的时间
+        LocalDateTime threeMonthsAgo = now.minusMonths(3);
+        queryWrapper.between(EMFinancialReimbursementInfo::getCreateTime, now, threeMonthsAgo);
+        queryWrapper.eq(EMFinancialReimbursementInfo::getIsDeleted, 1);
+        List<EMFinancialReimbursementInfo> list = baseMapper.selectList(queryWrapper);
+        Map<Long, List<User>> userMaps = iUserClient.selectUserAll().stream().collect(Collectors.groupingBy(User::getId));
+        List<EMFinancialReimbursementInfoDraftVO> resultVOS = new ArrayList<>();
+        for (EMFinancialReimbursementInfo obj : list) {
+            EMFinancialReimbursementInfoDraftVO vo = new EMFinancialReimbursementInfoDraftVO();
+            vo.setId(obj.getId());
+            userMaps.get(obj.getCreateUser()).stream().findAny().ifPresent(user -> vo.setTitle((ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getRealName())) ? user.getRealName() + obj.getCreateUser() + "提交的日常报销" : ""));
+            vo.setUpdateTime(obj.getUpdateTime());
+            resultVOS.add(vo);
+        }
+        return resultVOS.stream()
+                .sorted(Comparator.comparing(EMFinancialReimbursementInfoDraftVO::getUpdateTime).reversed())
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public EMFinancialReimbursementInfoVO financialDetail(Long id) {
+        EMFinancialReimbursementInfo obj = baseMapper.selectById(id);
+        EMFinancialReimbursementInfoVO vo = BeanUtil.copyProperties(obj, EMFinancialReimbursementInfoVO.class);
+        //TODO vo.set
+        return vo;
+    }
+
+    @Override
+    public boolean financialSubmit(EMFinancialReimbursementInfoDTO dto) {
+        if (("1").equals(dto.getSubmitStatus())) { //暂存
+
+            dto.setIsDeleted(1);
+            this.saveOrUpdate(dto);
+            return true;
+        } else if (("2").equals(dto.getSubmitStatus())) { //提交审批
+            if (ObjectUtil.isNotEmpty(dto.getResponsibleObj()) && ObjectUtil.isNotEmpty(dto.getFinanceObj()) && ObjectUtil.isNotEmpty(dto.getCashierObj()) && ObjectUtil.isNotEmpty(dto.getCcUserObjList())) {
+                //新建任务 TODO
+
+                //新增任务id与报销id关系信息
+
+                dto.setIsDeleted(0);
+                dto.setStatus(1); //待审批
+                this.saveOrUpdate(dto);
+                return true;
+            } else {
+                throw new ServiceException("获取当前流程人员信息失败,请联系管理员");
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean financialRemove(Long id) {
+        return this.removeById(id);
+    }
+
+}

+ 113 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

@@ -0,0 +1,113 @@
+package org.springblade.control.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
+import org.springblade.control.dto.TaskProcessInfoDTO;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.entity.TaskProcessInfo;
+import org.springblade.control.mapper.TaskProcessMapper;
+import org.springblade.control.service.TaskProcessService;
+import org.springblade.control.vo.TaskProcessInfoVO;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.beans.BeanUtils;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+@AllArgsConstructor
+public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, TaskProcessInfo> implements TaskProcessService {
+
+    private final IUserClient iUserClient;
+    private final JdbcTemplate jdbcTemplate;
+
+    @Override
+    public IPage<TaskProcessInfoVO> taskPage(IPage<TaskProcessInfo> page, TaskProcessInfoDTO dto) {
+        if (ObjectUtil.isEmpty(SecureUtil.getUserId())) {
+            throw new ServiceException("未获取到当前用户信息,请联系管理员");
+        }
+        QueryWrapper<TaskProcessInfo> queryWrapper = Condition.getQueryWrapper(dto);
+        if (dto.getSelectType().equals("1")) { //待审批为待办任务
+            queryWrapper.lambda().like(TaskProcessInfo::getAuditUserIds, SecureUtil.getUserId());
+            queryWrapper.lambda().eq(TaskProcessInfo::getStatus, 1);
+        } else if (dto.getSelectType().equals("2")) { //已审核、已驳回为已办任务
+            queryWrapper.lambda().like(TaskProcessInfo::getAuditUserIds, SecureUtil.getUserId());
+            queryWrapper.lambda().in(TaskProcessInfo::getStatus, 2, 3);
+        } else if (dto.getSelectType().equals("3")) { //我发起的任务
+            if (ObjectUtil.isNotEmpty(dto.getSelectStatus()) && !dto.getSelectStatus().equals("1")) {
+                queryWrapper.lambda().eq(TaskProcessInfo::getStatus, dto.getSelectStatus());
+            }
+            queryWrapper.lambda().eq(TaskProcessInfo::getReportUserId, SecureUtil.getUserId());
+        } else if (dto.getSelectType().equals("4")) { //抄送给我的
+            if (ObjectUtil.isNotEmpty(dto.getSelectStatus()) && !dto.getSelectStatus().equals("1")) {
+                queryWrapper.lambda().eq(TaskProcessInfo::getStatus, dto.getSelectStatus());
+            }
+            queryWrapper.lambda().like(TaskProcessInfo::getCcUserIds, SecureUtil.getUserId());
+        }
+        if (StringUtils.isNotEmpty(dto.getStartTime()) && StringUtils.isNotEmpty(dto.getEndTime())) {
+            String endTime = dto.getEndTime();
+            endTime = DateUtil.format(DateUtils.addDays(DateUtil.parse(endTime, "yyyy-MM-dd"), 1), "yyyy-MM-dd");
+            queryWrapper.lambda().between(TaskProcessInfo::getReportDate, dto.getStartTime(), endTime);
+        }
+        IPage<TaskProcessInfo> pages = this.page(page, queryWrapper.lambda().orderBy(true, true, TaskProcessInfo::getReportDate));
+
+        List<DictInfo> dictInfoList = jdbcTemplate.query("select dict_name,dict_value from c_dict_info where code = 'report_type'", new BeanPropertyRowMapper<>(DictInfo.class));
+
+        Map<Long, String> userMap = iUserClient.selectUserAll().stream().collect(Collectors.toMap(User::getId, User::getRealName));
+
+        return pages.convert((obj -> {
+            TaskProcessInfoVO vo = new TaskProcessInfoVO();
+            BeanUtils.copyProperties(obj, vo);
+            vo.setReportUserName(userMap.get(vo.getReportUserId()));
+            List<String> auditUserNames = Arrays.stream(vo.getAuditUserIds().split(","))
+                    .map(Long::parseLong).map(userMap::get)
+                    .collect(Collectors.toList());
+            vo.setAuditUserNames(StringUtils.join(auditUserNames, "、"));
+
+            vo.setStatusName(vo.getStatus().equals(1) ? "待审批" : (vo.getStatus().equals(2) ? "已审核" : "已驳回"));
+
+            for (DictInfo dictInfo : dictInfoList) {
+                if ((vo.getTaskType() + "").equals(dictInfo.getDictValue())) {
+                    vo.setReportTypeName(dictInfo.getDictName());
+                    break;
+                }
+            }
+            return vo;
+        }));
+    }
+
+    @Override
+    public TaskProcessInfoVO taskDetail(String id) {
+        TaskProcessInfo taskProcessInfo = baseMapper.selectById(id);
+        if (taskProcessInfo != null) {
+            if (taskProcessInfo.getTaskType().equals(1)) {
+                //任务审批=1
+
+            } else if (("2,3,4,5,6").contains(taskProcessInfo.getTaskType() + "")) {
+                //财务2、支付3、借款4、采购5、外包6
+
+            } else {
+                //其他
+
+            }
+        }
+        return null;
+    }
+
+
+}