Browse Source

节假日

LIVE_YE 1 ngày trước cách đây
mục cha
commit
f9a8d17bc5

+ 121 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/manage/ClockHolidaysController.java

@@ -0,0 +1,121 @@
+package com.ruoyi.web.controller.manage;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.manage.domain.ClockHolidays;
+import com.ruoyi.manage.service.IClockHolidaysService;
+import com.ruoyi.system.service.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 节假日时间Controller
+ *
+ * @author boman
+ * @date 2024-11-27
+ */
+@RestController
+@RequestMapping("/system/holidays")
+public class ClockHolidaysController extends BaseController
+{
+    @Autowired
+    private IClockHolidaysService clockHolidaysService;
+    @Autowired
+    private Task task;
+
+    /**
+     * 查询节假日时间列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ClockHolidays clockHolidays)
+    {
+        startPage();
+        List<ClockHolidays> list = clockHolidaysService.selectClockHolidaysList(clockHolidays);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询节假日时间列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:noPageList')")
+    @GetMapping("/noPageList")
+    public AjaxResult noPageList(ClockHolidays clockHolidays)
+    {
+        List<ClockHolidays> list = clockHolidaysService.noPageList(clockHolidays);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 导出节假日时间列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:export')")
+    @Log(title = "节假日时间", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ClockHolidays clockHolidays)
+    {
+        List<ClockHolidays> list = clockHolidaysService.selectClockHolidaysList(clockHolidays);
+        ExcelUtil<ClockHolidays> util = new ExcelUtil<ClockHolidays>(ClockHolidays.class);
+        util.exportExcel(response, list, "节假日时间数据");
+    }
+
+    /**
+     * 获取节假日时间详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(clockHolidaysService.selectClockHolidaysById(id));
+    }
+
+    /**
+     * 新增节假日时间
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:add')")
+    @Log(title = "节假日时间", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ClockHolidays clockHolidays)
+    {
+        return toAjax(clockHolidaysService.insertClockHolidays(clockHolidays));
+    }
+
+    /**
+     * 修改节假日时间
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:edit')")
+    @Log(title = "节假日时间", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody ClockHolidays clockHolidays)
+    {
+        return toAjax(clockHolidaysService.updateClockHolidays(clockHolidays));
+    }
+
+    /**
+     * 删除节假日时间
+     */
+    @PreAuthorize("@ss.hasPermi('system:holidays:remove')")
+    @Log(title = "节假日时间", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(clockHolidaysService.deleteClockHolidaysByIds(ids));
+    }
+
+    /**
+     * 收到开启定时任务
+     */
+    @GetMapping("/task")
+    public void task()
+    {
+        task.holidays();
+    }
+}

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -111,7 +111,7 @@ public class SecurityConfig
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+                requests.antMatchers("/login", "/register", "/captchaImage", "/system/holidays/task").permitAll()
                     // 静态资源,可匿名访问
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/webjars/**",  "/druid/**").permitAll()

+ 97 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/domain/ClockHolidays.java

@@ -0,0 +1,97 @@
+package com.ruoyi.manage.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 节假日时间对象 clock_holidays
+ * 
+ * @author boman
+ * @date 2024-11-27
+ */
+public class ClockHolidays extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 年份 */
+    @Excel(name = "年份")
+    private String year;
+
+    /** 月份 */
+    @Excel(name = "月份")
+    private String month;
+
+    /** 日期(yyyy-mm-dd) */
+    @Excel(name = "日期", readConverterExp = "yyyy-mm-dd")
+    private String holidayDate;
+
+    /** 是否补班 YES:补班,NO:放假 */
+    @Excel(name = "是否补班 YES:补班,NO:放假")
+    private String type;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setYear(String year) 
+    {
+        this.year = year;
+    }
+
+    public String getYear() 
+    {
+        return year;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public void setHolidayDate(String holidayDate)
+    {
+        this.holidayDate = holidayDate;
+    }
+
+    public String getHolidayDate() 
+    {
+        return holidayDate;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("year", getYear())
+            .append("holidayDate", getHolidayDate())
+            .append("type", getType())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 66 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/mapper/ClockHolidaysMapper.java

@@ -0,0 +1,66 @@
+package com.ruoyi.manage.mapper;
+
+
+
+import com.ruoyi.manage.domain.ClockHolidays;
+
+import java.util.List;
+
+/**
+ * 节假日时间Mapper接口
+ * 
+ * @author boman
+ * @date 2024-11-27
+ */
+public interface ClockHolidaysMapper 
+{
+    /**
+     * 查询节假日时间
+     * 
+     * @param id 节假日时间主键
+     * @return 节假日时间
+     */
+    public ClockHolidays selectClockHolidaysById(Long id);
+
+    /**
+     * 查询节假日时间列表
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 节假日时间集合
+     */
+    public List<ClockHolidays> selectClockHolidaysList(ClockHolidays clockHolidays);
+
+    /**
+     * 新增节假日时间
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 结果
+     */
+    public int insertClockHolidays(ClockHolidays clockHolidays);
+
+    /**
+     * 修改节假日时间
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 结果
+     */
+    public int updateClockHolidays(ClockHolidays clockHolidays);
+
+    /**
+     * 删除节假日时间
+     * 
+     * @param id 节假日时间主键
+     * @return 结果
+     */
+    public int deleteClockHolidaysById(Long id);
+
+    /**
+     * 批量删除节假日时间
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteClockHolidaysByIds(Long[] ids);
+
+    List<ClockHolidays> selectClockHolidaysMonthList(ClockHolidays clockHoliday);
+}

+ 66 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/service/IClockHolidaysService.java

@@ -0,0 +1,66 @@
+package com.ruoyi.manage.service;
+
+
+
+import com.ruoyi.manage.domain.ClockHolidays;
+
+import java.util.List;
+
+/**
+ * 节假日时间Service接口
+ * 
+ * @author boman
+ * @date 2024-11-27
+ */
+public interface IClockHolidaysService 
+{
+    /**
+     * 查询节假日时间
+     * 
+     * @param id 节假日时间主键
+     * @return 节假日时间
+     */
+    public ClockHolidays selectClockHolidaysById(Long id);
+
+    /**
+     * 查询节假日时间列表
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 节假日时间集合
+     */
+    public List<ClockHolidays> selectClockHolidaysList(ClockHolidays clockHolidays);
+
+    /**
+     * 新增节假日时间
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 结果
+     */
+    public int insertClockHolidays(ClockHolidays clockHolidays);
+
+    /**
+     * 修改节假日时间
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 结果
+     */
+    public int updateClockHolidays(ClockHolidays clockHolidays);
+
+    /**
+     * 批量删除节假日时间
+     * 
+     * @param ids 需要删除的节假日时间主键集合
+     * @return 结果
+     */
+    public int deleteClockHolidaysByIds(Long[] ids);
+
+    /**
+     * 删除节假日时间信息
+     * 
+     * @param id 节假日时间主键
+     * @return 结果
+     */
+    public int deleteClockHolidaysById(Long id);
+
+    List<ClockHolidays> noPageList(ClockHolidays clockHolidays);
+}

+ 103 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/service/impl/ClockHolidaysServiceImpl.java

@@ -0,0 +1,103 @@
+package com.ruoyi.manage.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+
+import com.ruoyi.manage.domain.ClockHolidays;
+import com.ruoyi.manage.mapper.ClockHolidaysMapper;
+import com.ruoyi.manage.service.IClockHolidaysService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 节假日时间Service业务层处理
+ * 
+ * @author boman
+ * @date 2024-11-27
+ */
+@Service
+public class ClockHolidaysServiceImpl implements IClockHolidaysService
+{
+    @Autowired
+    private ClockHolidaysMapper clockHolidaysMapper;
+
+    /**
+     * 查询节假日时间
+     * 
+     * @param id 节假日时间主键
+     * @return 节假日时间
+     */
+    @Override
+    public ClockHolidays selectClockHolidaysById(Long id)
+    {
+        return clockHolidaysMapper.selectClockHolidaysById(id);
+    }
+
+    /**
+     * 查询节假日时间列表
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 节假日时间
+     */
+    @Override
+    public List<ClockHolidays> selectClockHolidaysList(ClockHolidays clockHolidays)
+    {
+        return clockHolidaysMapper.selectClockHolidaysList(clockHolidays);
+    }
+
+    /**
+     * 新增节假日时间
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 结果
+     */
+    @Override
+    public int insertClockHolidays(ClockHolidays clockHolidays)
+    {
+        clockHolidays.setCreateTime(DateUtils.getNowDate());
+        return clockHolidaysMapper.insertClockHolidays(clockHolidays);
+    }
+
+    /**
+     * 修改节假日时间
+     * 
+     * @param clockHolidays 节假日时间
+     * @return 结果
+     */
+    @Override
+    public int updateClockHolidays(ClockHolidays clockHolidays)
+    {
+        clockHolidays.setUpdateTime(DateUtils.getNowDate());
+        return clockHolidaysMapper.updateClockHolidays(clockHolidays);
+    }
+
+    /**
+     * 批量删除节假日时间
+     * 
+     * @param ids 需要删除的节假日时间主键
+     * @return 结果
+     */
+    @Override
+    public int deleteClockHolidaysByIds(Long[] ids)
+    {
+        return clockHolidaysMapper.deleteClockHolidaysByIds(ids);
+    }
+
+    /**
+     * 删除节假日时间信息
+     * 
+     * @param id 节假日时间主键
+     * @return 结果
+     */
+    @Override
+    public int deleteClockHolidaysById(Long id)
+    {
+        return clockHolidaysMapper.deleteClockHolidaysById(id);
+    }
+
+    @Override
+    public List<ClockHolidays> noPageList(ClockHolidays clockHolidays) {
+        return clockHolidaysMapper.selectClockHolidaysMonthList(clockHolidays);
+    }
+}

+ 58 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/Task.java

@@ -1,20 +1,28 @@
 package com.ruoyi.system.service;
 
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.HolidayUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.manage.domain.ClockHolidays;
 import com.ruoyi.manage.domain.ClockSet;
+import com.ruoyi.manage.mapper.ClockHolidaysMapper;
 import com.ruoyi.manage.mapper.ClockSetMapper;
 import com.ruoyi.mqtt.service.MqttService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -29,6 +37,8 @@ public class Task {
     private MqttService mqttService;
     @Autowired
     private ClockSetMapper clockSetMapper;
+    @Autowired
+    private ClockHolidaysMapper clockHolidaysMapper;
 
     /***
      * 查询是否是节假日
@@ -103,4 +113,52 @@ public class Task {
             }
         }
     }
+
+    /***
+     *获取法定节假日和补班信息
+     * 定时:每个月20号2点
+     * @throws Exception
+     */
+    @Async
+    //@Scheduled(cron = "0 0/2 * * * ? ")
+    //@Scheduled(cron = "0 20 0 * * ? ")
+    //@Scheduled(cron = "0/10 * * * * ? ")
+    @Scheduled(cron = "0 0 2 20 * ? ")
+    public void holidays() {
+        String year = DateUtils.getYear();
+        //查询是否存在当前年数据
+        ClockHolidays clockHoliday = new ClockHolidays();
+        clockHoliday.setYear(year);
+        List<ClockHolidays> clockHolidaysList = clockHolidaysMapper.selectClockHolidaysList(clockHoliday);
+        if(clockHolidaysList!=null && clockHolidaysList.size()>0){
+            year = String.valueOf(Integer.parseInt(year) + 1);
+        }
+        String url = "https://timor.tech/api/holiday/year/"+year;
+        String rspStr = HttpUtils.sendGet(url);
+        JSONObject obj = JSON.parseObject(rspStr);
+        Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) obj.get("holiday");
+        if(ObjectUtils.isEmpty(holiday)){
+            return;
+        }
+        Set<String> strings = holiday.keySet();
+        for (String str : strings) {
+            Map<String, Object> stringObjectMap = holiday.get(str);
+            String date = (String) stringObjectMap.get("date");
+            boolean bool = (Boolean) stringObjectMap.get("holiday");
+            ClockHolidays clockHolidays = new ClockHolidays();
+            clockHolidays.setYear(year);
+            clockHolidays.setMonth(date.split("-")[1]);
+            clockHolidays.setHolidayDate(date);
+            clockHolidays.setType("NO");
+            if(!bool){
+                clockHolidays.setType("YES");
+            }
+            clockHolidays.setCreateTime(DateUtils.getNowDate());
+            clockHolidays.setUpdateTime(DateUtils.getNowDate());
+            clockHolidaysMapper.insertClockHolidays(clockHolidays);
+        }
+
+        System.out.println("1");
+
+    }
 }

+ 102 - 0
ruoyi-system/src/main/resources/mapper/manage/ClockHolidaysMapper.xml

@@ -0,0 +1,102 @@
+<?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.ruoyi.manage.mapper.ClockHolidaysMapper">
+    
+    <resultMap type="ClockHolidays" id="ClockHolidaysResult">
+        <result property="id"    column="id"    />
+        <result property="year"    column="year"    />
+        <result property="month"    column="month"    />
+        <result property="holidayDate"    column="holiday_date"    />
+        <result property="type"    column="type"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectClockHolidaysVo">
+        select id, year,month, holiday_date, type, create_by, create_time, update_by, update_time, remark from clock_holidays
+    </sql>
+
+    <select id="selectClockHolidaysList" parameterType="ClockHolidays" resultMap="ClockHolidaysResult">
+        <include refid="selectClockHolidaysVo"/>
+        <where>  
+            <if test="year != null  and year != ''"> and year = #{year}</if>
+            <if test="month != null  and month != ''"> and month = #{month}</if>
+            <if test="holidayDate != null  and holidayDate != ''"> and holiday_date = #{holidayDate}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+        </where>
+    </select>
+    
+    <select id="selectClockHolidaysById" parameterType="Long" resultMap="ClockHolidaysResult">
+        <include refid="selectClockHolidaysVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectClockHolidaysMonthList" parameterType="ClockHolidays" resultMap="ClockHolidaysResult">
+        <include refid="selectClockHolidaysVo"/>
+        <where>
+            <if test="year != null  and year != ''"> and year = #{year}</if>
+            <if test="month != null  and month != ''"> and month = #{month}</if>
+            <if test="holidayDate != null  and holidayDate != ''">
+                and date_format(holiday_date,'%Y%m') = date_format(#{holidayDate},'%Y%m')
+            </if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+        </where>
+    </select>
+
+    <insert id="insertClockHolidays" parameterType="ClockHolidays" useGeneratedKeys="true" keyProperty="id">
+        insert into clock_holidays
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="year != null and year != ''">year,</if>
+            <if test="month != null and month != ''">month,</if>
+            <if test="holidayDate != null">holiday_date,</if>
+            <if test="type != null and type != ''">type,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="year != null and year != ''">#{year},</if>
+            <if test="month != null  and month != ''"> {month},</if>
+            <if test="holidayDate != null">#{holidayDate},</if>
+            <if test="type != null and type != ''">#{type},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateClockHolidays" parameterType="ClockHolidays">
+        update clock_holidays
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="year != null and year != ''">year = #{year},</if>
+            <if test="month != null  and month != ''">month = #{month},</if>
+            <if test="holidayDate != null">holiday_date = #{holidayDate},</if>
+            <if test="type != null and type != ''">type = #{type},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteClockHolidaysById" parameterType="Long">
+        delete from clock_holidays where id = #{id}
+    </delete>
+
+    <delete id="deleteClockHolidaysByIds" parameterType="String">
+        delete from clock_holidays where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>