Browse Source

请假申请

sangwenwei 1 year ago
parent
commit
4ec10a4f30
14 changed files with 757 additions and 6 deletions
  1. 1 1
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/finance/mapper/JyFinanceInvoiceMapper.java
  2. 101 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/controller/HolidayController.java
  3. 64 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/domain/Holiday.java
  4. 28 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/domain/StaffUserInfo.java
  5. 28 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/HolidayMapper.java
  6. 9 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/StaffUserInfoMapper.java
  7. 94 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/xml/HolidayMapper.xml
  8. 6 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/xml/StaffUserInfoMapper.xml
  9. 328 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/service/HolidayService.java
  10. 85 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/service/dto/HolidayDTO.java
  11. 3 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/constant/FlowableConstant.java
  12. 1 1
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java
  13. 2 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/model/Flow.java
  14. 7 4
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowTaskService.java

+ 1 - 1
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/finance/mapper/JyFinanceInvoiceMapper.java

@@ -15,7 +15,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 @Mapper
-//@InterceptorIgnore(tenantLine = "true")
+@InterceptorIgnore(tenantLine = "true")
 public interface JyFinanceInvoiceMapper extends BaseMapper<JyFinanceInvoice> {
 
     public IPage<JyFinanceInvoiceDTO> findList(Page<JyFinanceInvoiceDTO> page, @Param(Constants.WRAPPER) QueryWrapper<JyFinanceInvoice> queryWrapper);

+ 101 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/controller/HolidayController.java

@@ -0,0 +1,101 @@
+package com.jeeplus.business.holiday.controller;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.business.goOut.service.dto.GoOutDTO;
+import com.jeeplus.business.holiday.domain.Holiday;
+import com.jeeplus.business.holiday.mapper.HolidayMapper;
+import com.jeeplus.business.holiday.service.HolidayService;
+import com.jeeplus.business.holiday.service.dto.HolidayDTO;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@Api(tags ="请假申请")
+@RestController
+@RequestMapping(value = "/holiday")
+public class HolidayController {
+
+    @Resource
+    private HolidayService holidayService;
+
+    @Resource
+    private HolidayMapper holidayMapper;
+
+
+    /**
+     * 列表
+     */
+    @ApiOperation(value = "请假申请列表")
+    @GetMapping(value = "/findList")
+    public ResponseEntity<IPage<HolidayDTO>> applyList(HolidayDTO holidayDTO, Page<HolidayDTO> page) throws Exception {
+        IPage<HolidayDTO> pageList=holidayService.findPageList(holidayDTO,page);
+        return ResponseEntity.ok(pageList);
+    }
+
+    /**
+     * 根据id查询数据
+     */
+    @ApiOperation(value = "根据id查询数据")
+    @GetMapping(value = "findById")
+    public ResponseEntity<HolidayDTO> findById(@RequestParam String id){
+        HolidayDTO holidayDTO=holidayService.findById(id);
+        return ResponseEntity.ok(holidayDTO);
+    }
+
+    /**
+     * 当请假类型为年假时进行校验
+     */
+    @ApiOperation(value = "校验请假类型")
+    @PostMapping(value = "checkType")
+    public ResponseEntity checkType(@RequestBody HolidayDTO holidayDTO){
+       String data= holidayService.checkType(holidayDTO);
+       return ResponseEntity.ok(data);
+    }
+
+
+    /*
+    新增或修改
+     */
+    @ApiOperation(value = "新增或修改")
+    @PostMapping(value = "/saveForm")
+    public ResponseEntity saveForm(@RequestBody HolidayDTO holidayDTO){
+        Holiday dto=holidayService.save(holidayDTO);
+        return ResponseUtil.newInstance().add("businessTable","jy_holiday").add("businessId",dto.getId()).add("days",dto.getDays()).ok("操作成功");
+    }
+
+    /**
+     * 根据id修改状态status
+     * @param
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "/updateStatusById")
+    public void updateStatusById(@RequestBody HolidayDTO holidayDTO) {
+        holidayService.updateStatusById(holidayDTO);
+    }
+
+    /**
+     * 根据id进行删除
+     */
+    @ApiOperation(value = "根据id进行删除")
+    @DeleteMapping(value = "/delete")
+    public ResponseEntity<String> deleteById(@RequestParam String id){
+        String s = holidayService.deleteById(id);
+        return ResponseEntity.ok(s);
+    }
+
+
+}

+ 64 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/domain/Holiday.java

@@ -0,0 +1,64 @@
+package com.jeeplus.business.holiday.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@TableName("jy_holiday")
+public class Holiday extends BaseEntity {
+
+    /**
+     * 请假开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date startDay;
+
+    private String beginTime;
+
+    /**
+     * 请假结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date endDay;
+
+    private String endTime;
+
+    /**
+     * 请假天数
+     */
+    private String days;
+
+    /**
+     * 请假类型
+     */
+    private String type;
+
+    /*
+    请假原因
+     */
+    private String reason;
+
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+    @TableField(exist = false)
+    private String taskId;
+
+    private String status;
+
+
+}

+ 28 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/domain/StaffUserInfo.java

@@ -0,0 +1,28 @@
+package com.jeeplus.business.holiday.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.regex.Pattern;
+
+@Data
+@TableName("staff_user_info")
+public class StaffUserInfo extends BaseEntity {
+
+    /**
+     * 员工入职日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date inTime;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+}

+ 28 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/HolidayMapper.java

@@ -0,0 +1,28 @@
+package com.jeeplus.business.holiday.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.business.holiday.domain.Holiday;
+import com.jeeplus.business.holiday.service.dto.HolidayDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+@InterceptorIgnore(tenantLine = "true")
+public interface HolidayMapper extends BaseMapper<Holiday> {
+    IPage<HolidayDTO> findPageList(@Param(Constants.WRAPPER) QueryWrapper<HolidayDTO> queryWrapper, Page<HolidayDTO> page);
+
+    HolidayDTO findById(@Param("id") String id);
+
+    HolidayDTO findByUserId(@Param("id") String id);
+
+    List<HolidayDTO> selectByUserId(@Param("id") String id);
+
+    void updateStatusById(@Param("status")String status, @Param("id")String id);
+}

+ 9 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/StaffUserInfoMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.business.holiday.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.business.holiday.domain.StaffUserInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface StaffUserInfoMapper extends BaseMapper<StaffUserInfo> {
+}

+ 94 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/xml/HolidayMapper.xml

@@ -0,0 +1,94 @@
+<?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.jeeplus.business.holiday.mapper.HolidayMapper">
+
+    <select id="findPageList" resultType="com.jeeplus.business.holiday.service.dto.HolidayDTO">
+        select
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.start_day,
+            a.begin_time,
+            a.end_day,
+            a.end_time,
+            a.days,
+            a.type,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.status,
+            art1.ID_ as task_id,
+            su.name as createName,
+            so.name as officeName
+        from jy_holiday a
+        left join sys_user su on a.create_by_id = su.id and su.del_flag = '0'
+        left join sys_office so on su.office_id = so.id and so.del_flag = '0'
+        LEFT JOIN act_ru_task art1 ON a.proc_ins_id = art1.PROC_INST_ID_
+         ${ew.customSqlSegment}
+        ORDER BY a.update_time DESC
+    </select>
+
+    <select id="findById" resultType="com.jeeplus.business.holiday.service.dto.HolidayDTO">
+        select
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.start_day,
+            a.begin_time,
+            a.end_day,
+            a.end_time,
+            a.days,
+            a.type,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.status,
+            a.reason,
+            art1.ID_ as task_id,
+            su.name as createName,
+            so.name as officeName
+        from jy_holiday a
+        left join sys_user su on a.create_by_id = su.id and su.del_flag = '0'
+        left join sys_office so on su.office_id = so.id and so.del_flag = '0'
+        LEFT JOIN act_ru_task art1 ON a.proc_ins_id = art1.PROC_INST_ID_
+        where a.id = #{id}
+    </select>
+
+    <select id="findByUserId" resultType="com.jeeplus.business.holiday.service.dto.HolidayDTO">
+        select
+            in_time,
+            user_id
+        from staff_user_info
+        where user_id = #{id}
+    </select>
+
+    <select id="selectByUserId" resultType="com.jeeplus.business.holiday.service.dto.HolidayDTO">
+        select
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.start_day,
+            a.begin_time,
+            a.end_day,
+            a.end_time,
+            a.days,
+            a.type,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.status,
+            a.reason,
+            art1.ID_ as task_id,
+            su.name as createName,
+            so.name as officeName
+        from jy_holiday a
+        left join sys_user su on a.create_by_id = su.id and su.del_flag = '0'
+        left join sys_office so on su.office_id = so.id and so.del_flag = '0'
+        LEFT JOIN act_ru_task art1 ON a.proc_ins_id = art1.PROC_INST_ID_
+        where a.create_by_id = #{id} and a.type = '1' and YEAR(a.create_time) = YEAR(CURDATE()) and a.del_flag = '0' and a.status = '5'
+    </select>
+
+    <update id="updateStatusById">
+        update jy_holiday set status = #{status} where id =#{id}
+    </update>
+
+</mapper>

+ 6 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/mapper/xml/StaffUserInfoMapper.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="com.jeeplus.business.holiday.mapper.StaffUserInfoMapper">
+</mapper>

+ 328 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/service/HolidayService.java

@@ -0,0 +1,328 @@
+package com.jeeplus.business.holiday.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.business.goOut.mapper.GoOutMapper;
+import com.jeeplus.business.holiday.domain.Holiday;
+import com.jeeplus.business.holiday.mapper.HolidayMapper;
+import com.jeeplus.business.holiday.service.dto.HolidayDTO;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.xml.crypto.Data;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+
+@Service
+public class HolidayService {
+
+    @Resource
+    private HolidayMapper holidayMapper;
+
+    @Resource
+    private GoOutMapper goOutMapper;
+
+
+
+
+    public IPage<HolidayDTO> findPageList(HolidayDTO holidayDTO, Page<HolidayDTO> page) throws Exception {
+        QueryWrapper<HolidayDTO> queryWrapper = QueryWrapperGenerator.buildQueryCondition(holidayDTO, HolidayDTO.class);
+        queryWrapper.eq("a.del_flag",0);
+        //请假类型
+        if (StringUtils.isNotBlank(holidayDTO.getType())){
+            queryWrapper.eq("a.type",holidayDTO.getType());
+        }
+        //请假人
+        if (StringUtils.isNotBlank(holidayDTO.getCreateById())){
+            queryWrapper.eq("a.create_by_id",holidayDTO.getCreateById());
+        }
+        //申请人部门
+        if (StringUtils.isNotBlank(holidayDTO.getOfficeId())){
+            queryWrapper.eq("so.id",holidayDTO.getOfficeId());
+        }
+        //申请时间
+        if (holidayDTO.getDates() != null && holidayDTO.getDates().length > 0) {
+            queryWrapper.between("a.start_day", holidayDTO.getDates()[0], holidayDTO.getDates()[1]);
+        }
+        IPage<HolidayDTO> pageList=holidayMapper.findPageList(queryWrapper,page);
+        return pageList;
+    }
+
+    /**
+     * 根据id查询数据
+     * @param id
+     * @return
+     */
+    public HolidayDTO findById(String id) {
+        HolidayDTO holidayDTO=holidayMapper.findById(id);
+        // 查询附件信息
+        List<WorkAttachmentInfo> files = goOutMapper.findDtos(id);
+        if (CollectionUtils.isNotEmpty(files)) {
+            for (WorkAttachmentInfo i : files) {
+                i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
+            }
+            holidayDTO.setFiles(files);
+        }
+        return holidayDTO;
+    }
+
+    /**
+     * 校验年假
+     * @param holidayDTO
+     * @return
+     */
+    public String checkType(HolidayDTO holidayDTO) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        //获取当前登录人入职时间
+        HolidayDTO dto=holidayMapper.findByUserId(userDTO.getId());
+        Date date=dto.getInTime();
+        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate intime = LocalDate.of(localDate.getYear(), localDate.getMonth(), localDate.getDayOfMonth());
+        //当前时间
+        LocalDate now = LocalDate.now();
+        //判断是否满一年
+        long yearsPassed = ChronoUnit.YEARS.between(intime, now); // 计算经过的年数
+        if (yearsPassed<1){
+            return "入职不满一年,无法休年假";
+        }
+        //计算员工入职时间距离今年还剩多少天
+        LocalDate inTime = LocalDate.of(now.getYear(), localDate.getMonth(), localDate.getDayOfMonth());
+        LocalDate endDate = LocalDate.of(now.getYear(), 12, 31);
+        long days = ChronoUnit.DAYS.between(inTime, endDate);
+        //计算今年一共有多少天
+        LocalDate endOfYear = now.withYear(now.getYear() + 1); // 获取下一年的第一天
+        long daysInYear = ChronoUnit.DAYS.between(now, endOfYear); // 计算当年一共有多少天
+        //判断员工入职是否满10年
+        long round=0;
+        double days1=Double.parseDouble(holidayDTO.getDays());
+        if (yearsPassed>=1 && yearsPassed<10){
+            //(当年距离入职时间剩余的天数/当年一共天数)*5
+            double yearDays=(double)days/daysInYear*5;
+            round = Math.round(yearDays);
+            if (days1>round){
+                return "已超出可休年假天数,当年可休年假天数为"+round+"天";
+            }
+        }else if (yearsPassed>=10){
+            //(当年距离入职时间剩余的天数/当年一共天数)*10
+            double yearDays=(double)days/daysInYear*10;
+            round = Math.round(yearDays);
+            if (days1>round){
+                return "已超出可休年假天数,当年可休年假天数为"+round+"天";
+            }
+        }
+        //当前员工当年是否休过年假
+        List<HolidayDTO> holidays = holidayMapper.selectByUserId(userDTO.getId());
+        Double holiday=0.00;
+        if (ObjectUtils.isNotEmpty(holidays)){
+            for (HolidayDTO holiday1 : holidays) {
+                //获取已经休过的年假天数
+                holiday+=Double.parseDouble(holiday1.getDays());
+            }
+            //员工可休年假天数与已休年假天数比较 获取剩余年假天数
+            double surplus=round-holiday;
+            //如果剩余年假天数小于等于0
+            if (surplus <= 0){
+                return "当年无剩余年假,无法再休年假";
+            }else {
+                //判断本次年假天数是否大于剩余年假天数
+                if (days1>surplus){
+                    return "本次年假时间超出剩余年假天数,剩余年假"+surplus+"天";
+                }
+            }
+        }
+
+       return "本次年假休息"+days1+"天";
+
+    }
+
+    /**
+     * 新增或修改
+     * @param holidayDTO
+     * @return
+     */
+    public Holiday save(HolidayDTO holidayDTO) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        if (StringUtils.isNotBlank(holidayDTO.getId())){
+            return update(holidayDTO,userDTO);
+        }
+        return add(holidayDTO,userDTO);
+    }
+
+    private Holiday update(HolidayDTO holidayDTO, UserDTO userDTO) {
+        Holiday holiday = new Holiday();
+        BeanUtils.copyProperties(holidayDTO,holiday);
+        holiday.setUpdateById(userDTO.getId());
+        holiday.setUpdateTime(new Date());
+        holiday.setStartDay(holidayDTO.getStartDay());//开始日期
+        holiday.setBeginTime(holidayDTO.getBeginTime());//开始时间
+        holiday.setEndDay(holidayDTO.getEndDay());//结束日期
+        holiday.setEndTime(holidayDTO.getEndTime());//结束时间
+        holiday.setType(holidayDTO.getType());//请假类型
+        holiday.setDays(holidayDTO.getDays());//请假时长
+        holiday.setReason(holidayDTO.getReason());//请假原因
+        holiday.setStatus(holidayDTO.getStatus());
+        holidayMapper.updateById(holiday);
+        //修改附件
+        List<WorkAttachmentInfo> files = holidayDTO.getFiles();
+        updateFiles(files, userDTO, holidayDTO.getId());
+        return holiday;
+    }
+    /**
+     * 修改附件信息
+     * @param list 待修改的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id) {
+        int j = 1;
+        String names = new String();
+        //表中存在,但是传过来不存在,说明已删除,表中数据也要删除
+        for (WorkAttachmentInfo dto : list) {
+            names = names + "," +dto.getUrl();
+        }
+        //查询保存的附件信息
+        List<WorkAttachmentInfo> infoList = goOutMapper.findList(id);
+        if (CollectionUtil.isNotEmpty(infoList)) {
+            for (WorkAttachmentInfo i : infoList) {
+                if (!names.contains(i.getUrl())) {
+                    SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteById(i.getId());
+                }
+            }
+        }
+        //保存信息
+        for (WorkAttachmentInfo dto : list) {
+            //判断是否存在
+            Integer isExit = goOutMapper.findIsExit(id, dto.getName());
+            if (isExit == 0) {
+                WorkAttachmentInfo i = new WorkAttachmentInfo();
+                //包含了url、size、name
+                i.setId(UUID.randomUUID().toString().replace("-", ""));
+//                i.getCreateBy().setId(userDTO.getId());
+                i.setCreateTime(new Date());
+//                i.getUpdateBy().setId(userDTO.getId());
+                i.setUpdateTime(new Date());
+                i.setDelFlag(0);
+                i.setUrl(dto.getUrl());
+                //文件类型处理
+                List<String> strings = Arrays.asList(dto.getName().split("\\."));
+                if (CollectionUtil.isNotEmpty(strings)) {
+                    i.setType(strings.get(1));
+                }
+                i.setAttachmentId(id);
+                i.setAttachmentName(dto.getName());
+                i.setAttachmentFlag("jyHoliday");
+                i.setFileSize(dto.getSize());
+                i.setSort(j);
+                Map<String,String> map = new HashMap<>();
+                String workAttachment = JSON.toJSONString((i));
+                String userDTOInfo = JSON.toJSONString((userDTO));
+                map.put("workAttachment",workAttachment);
+                map.put("userDTO",userDTOInfo);
+                SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+                j++;
+            }
+        }
+    }
+
+    private Holiday add(HolidayDTO holidayDTO, UserDTO userDTO) {
+        Holiday holiday = new Holiday();
+        //获取id
+        String id = UUID.randomUUID().toString().replace("-", "");
+
+        holiday.setId(id);
+        holiday.setStartDay(holidayDTO.getStartDay());//开始日期
+        holiday.setBeginTime(holidayDTO.getBeginTime());//开始时间
+        holiday.setEndDay(holidayDTO.getEndDay());//结束日期
+        holiday.setEndTime(holidayDTO.getEndTime());//结束时间
+        holiday.setType(holidayDTO.getType());//请假类型
+        holiday.setDays(holidayDTO.getDays());//请假时长
+        holiday.setReason(holidayDTO.getReason());//请假原因
+        holiday.setStatus(holidayDTO.getStatus());
+        holidayMapper.insert(holiday);
+        //保存附件
+        List<WorkAttachmentInfo> files = holidayDTO.getFiles();
+        if (CollectionUtil.isNotEmpty(files)) {
+            saveFiles(files, userDTO, id);
+        }
+        return holiday;
+    }
+
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id) {
+        int j = 1;
+        for (WorkAttachmentInfo dto : list) {
+            WorkAttachmentInfo i = new WorkAttachmentInfo();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateTime(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateTime(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getName().split("\\."));
+            if (CollectionUtil.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getName());
+            i.setAttachmentFlag("jyHoliday");
+            i.setFileSize(dto.getSize());
+            i.setSort(j);
+            Map<String,String> map = new HashMap<>();
+            String workAttachment = JSON.toJSONString((i));
+            String userDTOInfo = JSON.toJSONString((userDTO));
+            map.put("workAttachment",workAttachment);
+            map.put("userDTO",userDTOInfo);
+            SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+            j++;
+        }
+    }
+
+
+    /*
+    根据id修改状态
+     */
+    public void updateStatusById(HolidayDTO holidayDTO) {
+        holidayMapper.updateStatusById(holidayDTO.getStatus(),holidayDTO.getId());
+    }
+
+    /**
+     * 根据id进行删除
+     * @param id
+     * @return
+     */
+    public String deleteById(String id) {
+        holidayMapper.deleteById(id);
+        return "操作成功";
+    }
+}

+ 85 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/holiday/service/dto/HolidayDTO.java

@@ -0,0 +1,85 @@
+package com.jeeplus.business.holiday.service.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class HolidayDTO extends BaseEntity {
+    /**
+     * 请假开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date startDay;
+
+    private String beginTime;
+
+    /**
+     * 请假结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date endDay;
+
+    private String endTime;
+
+    /**
+     * 请假天数
+     */
+    private String days;
+
+    /**
+     * 请假类型
+     */
+    private String type;
+
+    /*
+    请假原因
+     */
+    private String reason;
+
+    /**
+     * 年假剩余天数
+     */
+    private String remainDays;
+
+    /**
+     * 员工入职日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date inTime;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    private String createName;
+    private String officeId;
+    private String officeName;
+    private String[] dates;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+    @TableField(exist = false)
+    private String taskId;
+
+    private String status;
+
+    private List<WorkAttachmentInfo> files;
+}

+ 3 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/constant/FlowableConstant.java

@@ -1,5 +1,7 @@
 package com.jeeplus.flowable.constant;
 
+import liquibase.pro.packaged.S;
+
 public interface FlowableConstant {
     /**
      * 约定的发起者节点id 前缀
@@ -21,5 +23,6 @@ public interface FlowableConstant {
     String AFTER_ADDSIGN = "after";    //后加签
     String BEFORE_ADDSIGN = "before";    //前加签
     String RECORDTYPE="recordType";   //项目类型
+    String DAYS="days"; //请假天数
 
 }

+ 1 - 1
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java

@@ -167,7 +167,7 @@ public class FlowableTaskController {
      */
     @PostMapping("start")
     public ResponseEntity start(@RequestBody Flow flow) {
-        String procInsId = flowTaskService.startProcess ( flow.getProcDefKey ( ), flow.getBusinessTable ( ), flow.getBusinessId ( ), flow.getTitle ( ),flow.getRecordType(), flow.getProcDefId() );
+        String procInsId = flowTaskService.startProcess ( flow.getProcDefKey ( ), flow.getBusinessTable ( ), flow.getBusinessId ( ), flow.getTitle ( ),flow.getRecordType(), flow.getProcDefId(),flow.getDays() );
 
         //指定下一步处理人
         if ( StringUtils.isNotBlank ( flow.getAssignee ( ) ) ) {

+ 2 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/model/Flow.java

@@ -74,6 +74,8 @@ public class Flow {
 
     private String recordType;//获取发票基本信息类型
 
+    private String days;// 请假天数
+
 
     public Flow() {
         super ( );

+ 7 - 4
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowTaskService.java

@@ -615,9 +615,9 @@ public class FlowTaskService {
      * @param recordType    项目类型
      * @return 流程实例ID
      */
-    public String startProcess(String procDefKey, String businessTable, String businessId, String title,String recordType, String procDefId) {
+    public String startProcess(String procDefKey, String businessTable, String businessId, String title,String recordType, String procDefId,String days) {
         Map <String, Object> vars = Maps.newHashMap ( );
-        return startProcess ( procDefKey, businessTable, businessId, title,  vars ,recordType, procDefId);
+        return startProcess ( procDefKey, businessTable, businessId, title,  vars ,recordType, procDefId,days);
     }
 
     /**
@@ -631,7 +631,7 @@ public class FlowTaskService {
      * @return 流程实例ID
      */
     @SuppressWarnings("unused")
-    public String startProcess(String procDefKey, String businessTable, String businessId, String title, Map <String, Object> vars,String recordType,  String procDefId) {
+    public String startProcess(String procDefKey, String businessTable, String businessId, String title, Map <String, Object> vars,String recordType,  String procDefId,String days) {
         //String userId = UserUtils.getUser().getLoginName();//ObjectUtils.toString(UserUtils.getUser().getId())
         // 设置流程变量
         if ( vars == null ) {
@@ -656,7 +656,10 @@ public class FlowTaskService {
         if (StrUtil.isNotBlank(recordType)){
             vars.put(FlowableConstant.RECORDTYPE,recordType);
         }
-
+        //设置请假天数
+        if (StrUtil.isNotBlank(days)){
+            vars.put(FlowableConstant.DAYS,days);
+        }
 
         // 启动流程
         ProcessInstance procIns = runtimeService.startProcessInstanceByKeyAndTenantId ( procDefKey, businessTable + ":" + businessId, vars, /*tenantApi.getCurrentTenantId ( )*/ flowMapper.getTenantIdByProcDefKey(procDefKey) );