Commit efd210fe authored by 赵啸非's avatar 赵啸非

添加假日数据

parent 5fae7a1d
...@@ -39,6 +39,7 @@ const router = new Router({ ...@@ -39,6 +39,7 @@ const router = new Router({
...restBuilder("task", "system/task"), // 系统管理--任务管理 ...restBuilder("task", "system/task"), // 系统管理--任务管理
// 绩效负责人 // 绩效负责人
...restBuilder("workman", "workman"), ...restBuilder("workman", "workman"),
...restBuilder("holiday", "holiday"),
//部门 //部门
...restBuilder("dept", "dept"), //部门 ...restBuilder("dept", "dept"), //部门
......
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="站点ID" prop="siteId" v-model="form.siteId" placeholder="请输入站点ID"/>
<Field label="节日名称" prop="name" v-model="form.name" placeholder="请输入节日名称"/>
<Field label="备注" prop="summary" v-model="form.summary" type="textarea" placeholder="请输入备注"/>
<Field label="年份" prop="year" v-model="form.year" placeholder="请输入年份"/>
<Field label="开始时间" prop="startTime" v-model="form.startTime" type="date" />
<Field label="结束时间" prop="endTime" v-model="form.endTime" type="date" />
<Field label="是否工作日" prop="workorholiday" v-model="form.workorholiday" type="select" :enumData="dict.workorholiday" placeholder="请选择是否工作日"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "节假日",
// 是否显示弹出层
open: false,
toString:[
"workorholiday",
],
// 表单校验
rules: {
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="holiday/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改节假日";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "holiday/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增节假日";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="holiday/view";
this.getData();
this.pageInfo.type="view"
this.title = "节假日详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
siteId : null,
name : "",
summary : "",
year : null,
startTime : null,
endTime : null,
workorholiday : 0,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "HolidayList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "index",label: "序号",width: 50},
{label: "节日名称", prop: "name"},
{label: "备注", prop: "summary"},
{label: "年份", prop: "year",formatter: this.formatter},
{label: "开始时间", prop: "startTime", formatter: this.formatterDateOnly},
{label: "工作日", prop: "workorholiday",formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} noDel onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="站点ID" label-class-name="labelClass" content-class-name="contentClass">
{{form.siteId}}
</el-descriptions-item>
<el-descriptions-item label="节日名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.name}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.summary}}
</el-descriptions-item>
<el-descriptions-item label="年份" label-class-name="labelClass" content-class-name="contentClass">
{{form.year}}
</el-descriptions-item>
<el-descriptions-item label="开始时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.startTime)}}
</el-descriptions-item>
<el-descriptions-item label="结束时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.endTime)}}
</el-descriptions-item>
<el-descriptions-item label="是否工作日" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("workorholiday", form.workorholiday) }}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"workorholiday",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.AuditStatusEnum;
import com.mortals.xhx.common.code.StaffSatusEnum;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.holiday.HolidayPdu;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.feign.holiday.IHolidayFeign;
import com.mortals.xhx.module.attendance.model.AttendanceStatEntity;
import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity;
import com.mortals.xhx.module.attendance.service.AttendanceStatService;
import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService;
import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.hik.person.model.req.org.OrgListReq;
import com.mortals.xhx.module.hik.person.model.req.person.PersonReq;
import com.mortals.xhx.module.hik.person.model.rsp.org.OrgDataInfo;
import com.mortals.xhx.module.hik.person.model.rsp.org.OrgInfo;
import com.mortals.xhx.module.hik.person.model.rsp.person.PersonDataInfo;
import com.mortals.xhx.module.hik.person.model.rsp.person.PersonInfo;
import com.mortals.xhx.module.hik.person.service.IHikPersonService;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
import com.mortals.xhx.module.holiday.model.HolidayQuery;
import com.mortals.xhx.module.holiday.service.HolidayService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.model.StaffLeaveEntity;
import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffLeaveService;
import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 同步节假日
*/
@Slf4j
@Service("SyncHolidayTask")
public class SyncHolidayTaskImpl implements ITaskExcuteService {
@Autowired
private IHolidayFeign holidayFeign;
@Autowired
private HolidayService holidayService;
@Override
public void excuteTask(ITask task) throws AppException {
HolidayPdu holidayPdu = new HolidayPdu();
holidayPdu.setYear(DateUtil.year(new Date()));
holidayPdu.setSize(-1);
Rest<RespData<List<HolidayPdu>>> respDataRest = holidayFeign.list(holidayPdu);
if (respDataRest.getCode() == YesNoEnum.YES.getValue()) {
List<HolidayPdu> holidayPduList = respDataRest.getData().getData();
for (HolidayPdu pdu : holidayPduList) {
//判断当前日期的节假日是否存在
HolidayQuery holidayQuery = new HolidayQuery();
holidayQuery.setStartTimeStart(DateUtil.formatDate(pdu.getStartTime()));
holidayQuery.setStartTimeEnd(DateUtil.formatDate(pdu.getStartTime()));
HolidayEntity holidayEntity = holidayService.selectOne(holidayQuery);
if (ObjectUtils.isEmpty(holidayEntity)) {
//新增
holidayEntity = new HolidayEntity();
holidayEntity.initAttrValue();
BeanUtils.copyProperties(pdu, holidayEntity, BeanUtil.getNullPropertyNames(pdu));
holidayEntity.setCreateTime(new Date());
holidayEntity.setCreateUserId(1L);
holidayService.save(holidayEntity);
}
}
}
}
@Override
public void stopTask(ITask task) throws AppException {
}
}
package com.mortals.xhx.module.holiday.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
/**
* 节假日Dao
* 节假日 DAO接口
*
* @author zxfei
* @date 2022-01-12
*/
public interface HolidayDao extends ICRUDDao<HolidayEntity,Long>{
}
package com.mortals.xhx.module.holiday.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.holiday.dao.HolidayDao;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
import org.springframework.stereotype.Repository;
/**
* 节假日DaoImpl DAO接口
*
* @author zxfei
* @date 2022-01-12
*/
@Repository("holidayDao")
public class HolidayDaoImpl extends BaseCRUDDaoMybatis<HolidayEntity,Long> implements HolidayDao {
}
package com.mortals.xhx.module.holiday.model;
import com.mortals.xhx.module.holiday.model.vo.HolidayVo;
import java.util.Date;
/**
* 节假日实体对象
*
* @author zxfei
* @date 2022-01-12
*/
public class HolidayEntity extends HolidayVo {
private static final long serialVersionUID = 1L;
/**
* 站点ID
*/
private Long siteId;
/**
* 站点名称
*/
private String siteName;
/**
* 节日名称
*/
private String name;
/**
* 备注
*/
private String summary;
/**
* 年份
*/
private Integer year;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 是否工作日(0.节假日,1.工作日)
*/
private Integer workorholiday;
public HolidayEntity(){}
/**
* 获取 站点ID
* @return Long
*/
public Long getSiteId(){
return siteId;
}
/**
* 设置 站点ID
* @param siteId
*/
public void setSiteId(Long siteId){
this.siteId = siteId;
}
/**
* 获取 站点名称
* @return String
*/
public String getSiteName(){
return siteName;
}
/**
* 设置 站点名称
* @param siteName
*/
public void setSiteName(String siteName){
this.siteName = siteName;
}
/**
* 获取 节日名称
* @return String
*/
public String getName(){
return name;
}
/**
* 设置 节日名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 备注
* @return String
*/
public String getSummary(){
return summary;
}
/**
* 设置 备注
* @param summary
*/
public void setSummary(String summary){
this.summary = summary;
}
/**
* 获取 年份
* @return Integer
*/
public Integer getYear(){
return year;
}
/**
* 设置 年份
* @param year
*/
public void setYear(Integer year){
this.year = year;
}
/**
* 获取 开始时间
* @return Date
*/
public Date getStartTime(){
return startTime;
}
/**
* 设置 开始时间
* @param startTime
*/
public void setStartTime(Date startTime){
this.startTime = startTime;
}
/**
* 获取 结束时间
* @return Date
*/
public Date getEndTime(){
return endTime;
}
/**
* 设置 结束时间
* @param endTime
*/
public void setEndTime(Date endTime){
this.endTime = endTime;
}
/**
* 获取 是否工作日(0.节假日,1.工作日)
* @return Integer
*/
public Integer getWorkorholiday(){
return workorholiday;
}
/**
* 设置 是否工作日(0.节假日,1.工作日)
* @param workorholiday
*/
public void setWorkorholiday(Integer workorholiday){
this.workorholiday = workorholiday;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof HolidayEntity) {
HolidayEntity tmp = (HolidayEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",siteId:").append(getSiteId());
sb.append(",siteName:").append(getSiteName());
sb.append(",name:").append(getName());
sb.append(",summary:").append(getSummary());
sb.append(",year:").append(getYear());
sb.append(",startTime:").append(getStartTime());
sb.append(",endTime:").append(getEndTime());
sb.append(",workorholiday:").append(getWorkorholiday());
return sb.toString();
}
public void initAttrValue(){
this.siteId = null;
this.siteName = null;
this.name = null;
this.summary = null;
this.year = null;
this.startTime = null;
this.endTime = null;
this.workorholiday = 0;
}
}
\ No newline at end of file
package com.mortals.xhx.module.holiday.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
/**
* 节假日视图对象
*
* @author zxfei
* @date 2022-01-12
*/
@Data
public class HolidayVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.holiday.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
/**
* HolidayService
*
* 节假日 service接口
*
* @author zxfei
* @date 2022-01-12
*/
public interface HolidayService extends ICRUDService<HolidayEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.holiday.service.impl;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.holiday.dao.HolidayDao;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
import com.mortals.xhx.module.holiday.service.HolidayService;
import org.springframework.stereotype.Service;
/**
* HolidayService
* 节假日 service实现
*
* @author zxfei
* @date 2022-01-12
*/
@Service("holidayService")
public class HolidayServiceImpl extends AbstractCRUDServiceImpl<HolidayDao, HolidayEntity, Long> implements HolidayService {
}
\ No newline at end of file
package com.mortals.xhx.module.holiday.web;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.holiday.model.HolidayEntity;
import com.mortals.xhx.module.holiday.service.HolidayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* 节假日
*
* @author zxfei
* @date 2022-01-20
*/
@RestController
@RequestMapping("holiday")
public class HolidayController extends BaseCRUDJsonBodyMappingController<HolidayService, HolidayEntity, Long> {
@Autowired
private ParamService paramService;
public HolidayController() {
super.setModuleDesc("节假日");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "workorholiday", paramService.getParamBySecondOrganize("Holiday", "workorholiday"));
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.common.pdu.holiday;
import java.util.Date;
import java.util.List;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
/**
* 节假日Pdu对象
*
* @author zxfei
* @date 2023-10-09
*/
@Data
public class HolidayPdu extends BaseEntityLong {
private static final long serialVersionUID = 1L;
/**
* 站点ID
*/
private Long siteId;
/**
* 节日名称
*/
private String name;
/**
* 备注
*/
private String summary;
/**
* 年份
*/
private Integer year;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 是否工作日(0.节假日,1.工作日)
*/
private Integer workorholiday;
public void initAttrValue(){
this.siteId = null;
this.name = "";
this.summary = "";
this.year = null;
this.startTime = null;
this.endTime = null;
this.workorholiday = 0;
}
}
\ No newline at end of file
package com.mortals.xhx.feign.holiday;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.holiday.HolidayPdu;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 节假日 Feign接口
* @author zxfei
* @date 2023-10-09
*/
@FeignClient(name = "base-manager", path = "/base", fallbackFactory = HolidayFeignFallbackFactory.class)
public interface IHolidayFeign extends IFeign {
/**
* 查看节假日列表
*
* @param holidayPdu
* @return
*/
@PostMapping(value = "/holiday/list")
Rest<RespData<List<HolidayPdu>>> list(@RequestBody HolidayPdu holidayPdu);
/**
* 查看节假日
*
* @param id
* @return
*/
@GetMapping(value = "/holiday/info")
Rest<HolidayPdu> info(@RequestParam(value = "id") Long id);
/**
* 删除节假日
*
* @param ids
* @return
*/
@GetMapping(value = "/holiday/delete")
Rest<Void> delete(Long[] ids,@RequestHeader("Authorization") String authorization);
/**
* 节假日保存更新
*
* @param holidayPdu
* @return
*/
@PostMapping(value = "/holiday/save")
Rest<RespData<HolidayPdu>> save(@RequestBody HolidayPdu holidayPdu,@RequestHeader("Authorization") String authorization);
}
@Slf4j
@Component
class HolidayFeignFallbackFactory implements FallbackFactory<IHolidayFeign> {
@Override
public IHolidayFeign create(Throwable t) {
return new IHolidayFeign() {
@Override
public Rest<RespData<List<HolidayPdu>>> list(HolidayPdu holidayPdu) {
return Rest.fail("暂时无法获取节假日列表,请稍后再试!");
}
@Override
public Rest<HolidayPdu> info(Long id) {
return Rest.fail("暂时无法获取节假日详细,请稍后再试!");
}
@Override
public Rest<Void> delete(Long[] ids, String authorization) {
return Rest.fail("暂时无法删除节假日,请稍后再试!");
}
@Override
public Rest<RespData<HolidayPdu>> save(HolidayPdu holidayPdu, String authorization) {
return Rest.fail("暂时无法保存节假日,请稍后再试!");
}
};
}
}
...@@ -853,6 +853,30 @@ CREATE TABLE mortals_xhx_attendance_record( ...@@ -853,6 +853,30 @@ CREATE TABLE mortals_xhx_attendance_record(
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='考勤打卡记录信息'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='考勤打卡记录信息';
ALTER TABLE mortals_xhx_attendance_leave_record ADD COLUMN `sourceDingTime` varchar(64) DEFAULT '' COMMENT '钉钉原始请假时间记录';
ALTER TABLE mortals_xhx_attendance_leave_record ADD COLUMN `sourceDingTime` varchar(64) DEFAULT '' COMMENT '钉钉原始请假时间记录'; -- ----------------------------
2023-10-09
-- ----------------------------
-- ----------------------------
-- 节假日
-- ----------------------------
DROP TABLE IF EXISTS `mortals_sys_holiday`;
CREATE TABLE `mortals_sys_holiday`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '序号,主键,自增长',
`siteId` bigint(20) DEFAULT NULL COMMENT '站点ID',
`siteName` varchar(255) DEFAULT NULL COMMENT '站点名称',
`name` varchar(64) DEFAULT NULL COMMENT '节日名称',
`summary` varchar(256) DEFAULT NULL COMMENT '备注',
`year` int(4) DEFAULT NULL COMMENT '年份',
`startTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '开始时间',
`endTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '结束时间',
`workorholiday` tinyint(2) DEFAULT '0' COMMENT '是否工作日(0.节假日,1.工作日)',
`createTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`createUserId` bigint(20) DEFAULT NULL COMMENT '创建用户',
`updateTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '节假日表' ROW_FORMAT = Dynamic;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment