南昌市物联网技防平台-后台
Administrator
2021-03-09 c38f066ac66f90e5da16593c9bc09a495b2cabfb
Merge remote-tracking branch 'origin/master'
3 files modified
11 files added
729 ■■■■■ changed files
blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java 5 ●●●● patch | view | raw | blame | history
blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java 1 ●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/pom.xml 8 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java 169 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/dto/AttendanceDTO.java 34 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java 98 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/excel/AttendanceExcel.java 78 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java 56 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml 59 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java 51 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java 60 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/vo/AttendanceVO.java 46 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/wrapper/AttendanceWrapper.java 54 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/sql/attendance.menu.mysql 10 ●●●●● patch | view | raw | blame | history
blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java
@@ -31,9 +31,12 @@
    /**
     * 测试
     */
    TEST("test"),
    TEST("attendanceType"),
    CLOCKTYPE("clockType")
    ;
    final String name;
}
blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java
@@ -89,7 +89,6 @@
     */
    USER_TYPE("user_type"),
    ;
    final String name;
}
blade-service/blade-jfpts/pom.xml
@@ -42,6 +42,14 @@
            <artifactId>blade-jfpts-api</artifactId>
            <version>${bladex.project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-excel</artifactId>
        </dependency>
    </dependencies>
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java
New file
@@ -0,0 +1,169 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.*;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.jfpt.attendance.excel.AttendanceExcel;
import org.springblade.jfpt.attendance.wrapper.AttendanceWrapper;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.vo.UserVO;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.jfpt.attendance.entity.Attendance;
import org.springblade.jfpt.attendance.vo.AttendanceVO;
import org.springblade.jfpt.attendance.service.IAttendanceService;
import org.springblade.core.boot.ctrl.BladeController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Map;
/**
 * 控制器
 *
 * @author BladeX
 * @since 2021-03-03
 */
@RestController
@AllArgsConstructor
@RequestMapping("/attendance")
@Api(value = "", tags = "接口")
public class AttendanceController extends BladeController {
    private final IAttendanceService attendanceService;
    /**
     * 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入attendance")
    public R<Attendance> detail(Attendance attendance) {
        Attendance detail = attendanceService.getOne(Condition.getQueryWrapper(attendance));
        return R.data(detail);
    }
    /**
     * 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入attendance")
    public R<IPage<AttendanceVO>> list(Attendance attendance, Query query) {
        IPage<Attendance> pages = attendanceService.page(Condition.getPage(query), Condition.getQueryWrapper(attendance));
        return R.data(AttendanceWrapper.build().pageVO(pages));
    }
    /**
     * 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入attendance")
    public R<IPage<AttendanceVO>> page(AttendanceVO attendance, Query query, Long department) {
        IPage<Attendance> pages = attendanceService.selectAttendancePage(Condition.getPage(query), department, attendance);
        return R.data(AttendanceWrapper.build().pageVO(pages));
    }
    /**
     * 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入attendance")
    public R save(@Valid @RequestBody Attendance attendance) {
        return R.status(attendanceService.save(attendance));
    }
    /**
     * 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入attendance")
    public R update(@Valid @RequestBody Attendance attendance) {
        return R.status(attendanceService.updateById(attendance));
    }
    /**
     * 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入attendance")
    public R submit(@Valid @RequestBody Attendance attendance) {
        return R.status(attendanceService.saveOrUpdate(attendance));
    }
    /**
     * 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(attendanceService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 导出用户
     */
    @GetMapping("/export-Attendance")
    public void exportAttendane(String name, String beginTime, String endTime, String attendancetype, HttpServletResponse response) {
        String beginTimes = null;
        String endTimes = null;
        String attendancetypes = null;
        if (beginTime.equals("undefined        ") && endTime.equals("undefined")) {
            beginTimes=null;
            endTimes=null;
            attendancetypes=attendancetype;
        }
        else if (attendancetype.equals("undefined")){
            attendancetypes=null;
        }
        else {
            beginTimes=beginTime;
            endTimes=endTime;
            attendancetypes=attendancetype;
        }
        List<AttendanceExcel> list = attendanceService.exportAttendane(name, beginTimes, endTimes, attendancetypes);
        ExcelUtil.export(response, "考勤数据" + DateUtil.time(), "考勤数据表", list, AttendanceExcel.class);
}
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/dto/AttendanceDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.dto;
import org.springblade.jfpt.attendance.entity.Attendance;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 数据传输对象实体类
 *
 * @author BladeX
 * @since 2021-03-03
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AttendanceDTO extends Attendance {
    private static final long serialVersionUID = 1L;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java
New file
@@ -0,0 +1,98 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
 * 实体类
 *
 * @author BladeX
 * @since 2021-03-03
 */
@Data
@TableName("sys_attendance")
@ApiModel(value = "Attendance对象", description = "Attendance对象")
public class Attendance implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
    * 姓名
    */
        @ApiModelProperty(value = "姓名")
        private String name;
    /**
    * 编号
    */
        @ApiModelProperty(value = "编号")
        private String number;
    /**
    * 部门
    */
        @ApiModelProperty(value = "部门")
        private String department;
    /**
    * 天气
    */
        @ApiModelProperty(value = "天气")
        private String weather;
    /**
    * 打卡时间
    */
        @ApiModelProperty(value = "打卡时间")
        @TableField("clockTime")
    private String clocktime;
    /**
    * 经度
    */
        @ApiModelProperty(value = "经度")
        private String jd;
    /**
    * 纬度
    */
        @ApiModelProperty(value = "纬度")
        private String wd;
    /**
    * 打卡类型 0:上班 1:下班
    */
        @ApiModelProperty(value = "打卡类型 0:上班 1:下班")
        @TableField("clockType")
    private String clocktype;
    /**
    * 考勤类型 0:正常 1:迟到 2:早退 3:外勤
    */
        @ApiModelProperty(value = "考勤类型 0:正常 1:迟到 2:早退 3:外勤")
        @TableField("attendanceType")
    private String attendancetype;
    private String tenantId;
    private String week;
    private String address;
    @TableLogic
    private Integer isDeleted;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/excel/AttendanceExcel.java
New file
@@ -0,0 +1,78 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * UserExcel
 *
 * @author Chill
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class AttendanceExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    @ColumnWidth(10)
    @ExcelProperty("姓名")
    private String name;
    @ColumnWidth(20)
    @ExcelProperty("编号")
    private String number;
    @ColumnWidth(15)
    @ExcelProperty("部门")
    private String department;
    @ColumnWidth(10)
    @ExcelProperty("天气")
    private String weather;
    @ColumnWidth(20)
    @ExcelProperty("打卡时间")
    private String clockTime;
    @ColumnWidth(15)
    @ExcelProperty("打卡类型")
    private String clockType;
    @ColumnWidth(15)
    @ExcelProperty("考勤类型")
    private String attendanceType;
    @ColumnWidth(15)
    @ExcelProperty("星期")
    private String week;
    @ColumnWidth(40)
    @ExcelProperty("地址")
    private String address;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java
New file
@@ -0,0 +1,56 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.jfpt.attendance.entity.Attendance;
import org.springblade.jfpt.attendance.excel.AttendanceExcel;
import org.springblade.jfpt.attendance.vo.AttendanceVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.system.user.entity.User;
import java.util.List;
/**
 *  Mapper 接口
 *
 * @author BladeX
 * @since 2021-03-03
 */
public interface AttendanceMapper extends BaseMapper<Attendance> {
    /**
     * 自定义分页
     *
     * @param page
     * @param attendance
     * @return
     */
    List<Attendance> selectAttendancePage(IPage page, Long department, AttendanceVO attendance);
    /**
     * 获取导出用户数据
     *
     * @param
     * @return
     */
    List<AttendanceExcel> exportAttendane(String name,String beginTimes,String endTimes,String attendancetypes);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml
New file
@@ -0,0 +1,59 @@
<?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.jfpt.attendance.mapper.AttendanceMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="attendanceResultMap" type="org.springblade.jfpt.attendance.entity.Attendance">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="number" property="number"/>
        <result column="department" property="department"/>
        <result column="weather" property="weather"/>
        <result column="clockTime" property="clocktime"/>
        <result column="jd" property="jd"/>
        <result column="wd" property="wd"/>
        <result column="clockType" property="clocktype"/>
        <result column="attendanceType" property="attendancetype"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="week" property="week"/>
        <result column="address" property="address"/>
    </resultMap>
    <select id="selectAttendancePage" resultMap="attendanceResultMap">
        select * from sys_attendance where is_deleted = 0
        <if test="attendance.name!=null and attendance.name != ''">
            and name = #{attendance.name}
        </if>
        <if test="attendance.department!=null and attendance.department != ''">
            and department = #{department}
        </if>
        <if test="attendance.attendancetype!=null and attendance.attendancetype != ''">
            and attendancetype = #{attendance.attendancetype}
        </if>
        <if test="attendance.beginTime!=null and attendance.beginTime!=''">
            and clockTime&gt;=#{attendance.beginTime}
        </if>
        <if test="attendance.endTime!=null and attendance.endTime!=''">
            and clockTime&lt;=#{attendance.endTime}
        </if>
    </select>
    <select id="exportAttendane" resultType="org.springblade.jfpt.attendance.excel.AttendanceExcel">
        SELECT id, name, number, department, weather, clockTime, clockType, attendanceType,week,address FROM sys_attendance where is_deleted = 0
        <if test="name!=null and name != ''">
            and name = #{name}
        </if>
        <if test="beginTimes!=null and beginTimes!=''">
            and clockTime&gt;=#{beginTimes}
        </if>
        <if test="endTimes!=null and endTimes!=''">
            and clockTime&lt;=#{endTimes}
        </if>
        <if test="attendancetypes!=null and attendancetypes!=''">
            and attendancetype=#{attendancetypes}
        </if>
    </select>
</mapper>
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java
New file
@@ -0,0 +1,51 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.jfpt.attendance.entity.Attendance;
import org.springblade.jfpt.attendance.excel.AttendanceExcel;
import org.springblade.jfpt.attendance.vo.AttendanceVO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.system.user.entity.User;
import java.util.List;
/**
 *  服务类
 *
 * @author BladeX
 * @since 2021-03-03
 */
public interface IAttendanceService extends IService<Attendance> {
    /**
     * 自定义分页
     *
     * @param page
     * @param attendance
     * @return
     */
    IPage<Attendance> selectAttendancePage(IPage<Attendance> page, Long department, AttendanceVO attendance);
    /**
     * 导出用户数据
     *
     * @return
     */
    List<AttendanceExcel> exportAttendane(String name,String beginTimes,String endTimes,String attendancetypes);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java
New file
@@ -0,0 +1,60 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.service.impl;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.jfpt.attendance.entity.Attendance;
import org.springblade.jfpt.attendance.excel.AttendanceExcel;
import org.springblade.jfpt.attendance.vo.AttendanceVO;
import org.springblade.jfpt.attendance.mapper.AttendanceMapper;
import org.springblade.jfpt.attendance.service.IAttendanceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.cache.SysCache;
import org.springblade.system.enums.DictBizEnum;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
 *  服务实现类
 *
 * @author BladeX
 * @since 2021-03-03
 */
@Service
public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attendance> implements IAttendanceService {
    @Override
    public IPage<Attendance> selectAttendancePage(IPage<Attendance> page,  Long department,AttendanceVO attendance) {
        return page.setRecords(baseMapper.selectAttendancePage(page,department, attendance));
    }
    @Override
    public List<AttendanceExcel> exportAttendane(String name,String beginTimes,String endTimes,String attendancetypes) {
        List<AttendanceExcel> userList = baseMapper.exportAttendane(name, beginTimes, endTimes,attendancetypes);
        userList.forEach(user -> {
            user.setAttendanceType(DictBizCache.getValue(DictBizEnum.TEST,user.getAttendanceType()));
            user.setClockType(DictBizCache.getValue(DictBizEnum.CLOCKTYPE,user.getClockType()));
            user.setDepartment(StringUtil.join(SysCache.getDeptNames(user.getDepartment())));
        });
        return userList;
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/vo/AttendanceVO.java
New file
@@ -0,0 +1,46 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.vo;
import org.springblade.jfpt.attendance.entity.Attendance;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
/**
 * 视图实体类
 *
 * @author BladeX
 * @since 2021-03-03
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "AttendanceVO对象", description = "AttendanceVO对象")
public class AttendanceVO extends Attendance {
    private static final long serialVersionUID = 1L;
    /**
     * 部门名
     */
    private String deptName;
    private  String beginTime;
    private  String endTime;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/wrapper/AttendanceWrapper.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.jfpt.attendance.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.jfpt.attendance.entity.Attendance;
import org.springblade.jfpt.attendance.vo.AttendanceVO;
import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.SysCache;
import org.springblade.system.entity.Tenant;
import org.springblade.system.enums.DictEnum;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.vo.UserVO;
import java.util.List;
import java.util.Objects;
/**
 * 包装类,返回视图层所需的字段
 *
 * @author Chill
 */
public class AttendanceWrapper extends BaseEntityWrapper<Attendance, AttendanceVO> {
    public static AttendanceWrapper build() {
        return new AttendanceWrapper();
    }
    @Override
    public AttendanceVO entityVO(Attendance attendance) {
        AttendanceVO attendanceVO = Objects.requireNonNull(BeanUtil.copy(attendance, AttendanceVO.class));
        Tenant tenant = SysCache.getTenant(attendance.getTenantId());
        List<String> deptName = SysCache.getDeptNames(attendance.getDepartment());
        attendanceVO.setDeptName(Func.join(deptName));
        return attendanceVO;
    }
}
blade-service/blade-jfpts/src/main/java/sql/attendance.menu.mysql
New file
@@ -0,0 +1,10 @@
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1367006439005184006', 1123598815738675201, 'attendance', '考勤打卡', 'menu', '/jfpts/attendance', NULL, 1, 1, 0, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1367006439005184007', '1367006439005184006', 'attendance_add', '新增', 'add', '/jfpts/attendance/add', 'plus', 1, 2, 1, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1367006439005184008', '1367006439005184006', 'attendance_edit', '修改', 'edit', '/jfpts/attendance/edit', 'form', 2, 2, 2, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1367006439005184009', '1367006439005184006', 'attendance_delete', '删除', 'delete', '/api/blade-jfpts/attendance/remove', 'delete', 3, 2, 3, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1367006439005184010', '1367006439005184006', 'attendance_view', '查看', 'view', '/jfpts/attendance/view', 'file-text', 4, 2, 2, 1, NULL, 0);