Commit ba2fd033 authored by daijunxiong's avatar daijunxiong

假期数据新增关联

parent 1c3b1811
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
public enum AllHolidaysEnum {
事假("personalLeaveDays", "1"),
调休("compensatedLeaveDays", "2"),
病假("sickLeaveDays", "3"),
年假("annualLeaveDays", "4"),
产假("maternityLeaveDays", "5"),
陪产假("paternityLeaveDays", "6"),
婚假("marriageLeaveDays", "7"),
例假("menstrualLeaveDays", "8"),
哺乳假("breastfeedingLeaveDays", "9"),
丧假("bereavementLeaveDays", "10"),
回单位("backToUnit", "11"),
因公请假("onDutyLeave", "12"),
外出勘验("outOfOffice", "13"),
值班补班("shiftCompensation", "14"),
体检("physicalExamination", "15"),
隔离("quarantine", "16"),
因公外出与窗口工作无关("businessTrip", "17"),
公休("publicHoliday", "18"),
育儿假("childRearingLeave", "19"),
调回单位或离职("transferBack", "20"),
探亲假("homeLeave", "21");
private String value;
private String desc;
AllHolidaysEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AllHolidaysEnum getByValue(String value) {
for (AllHolidaysEnum allHolidaysEnum : AllHolidaysEnum.values()) {
if (allHolidaysEnum.getValue() == value) {
return allHolidaysEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (AllHolidaysEnum item : AllHolidaysEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
public enum JobTypeEnum {
分组("1", "分组"),
职位("2", "职位");
private String value;
private String desc;
JobTypeEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static JobTypeEnum getByValue(String value) {
for (JobTypeEnum jobTypeEnum : JobTypeEnum.values()) {
if (jobTypeEnum.getValue() == value) {
return jobTypeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (JobTypeEnum item : JobTypeEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
......@@ -18,111 +18,136 @@ public class AttendanceVacationBalanceEntity extends AttendanceVacationBalanceVo
/**
* 员工id
*/
@Excel(name = "员工id")
private Long staffId;
/**
* 员工姓名
*/
@Excel(name = "员工姓名")
private String staffName;
/**
* 部门id
*/
@Excel(name = "部门id")
private Long deptId;
/**
* 部门名称
*/
@Excel(name = "部门名称")
private String deptName;
/**
* 入职时间
*/
@Excel(name = "入职时间")
private Date entryTime;
/**
* 事假(天)
*/
@Excel(name = "事假(天)")
private BigDecimal personalLeaveDays;
/**
* 调休(天)
*/
@Excel(name = "调休(天)")
private BigDecimal compensatedLeaveDays;
/**
* 病假(天)
*/
@Excel(name = "病假(天)")
private BigDecimal sickLeaveDays;
/**
* 年假(天)
*/
@Excel(name = "年假(天)")
private BigDecimal annualLeaveDays;
/**
* 婚假(天)
*/
@Excel(name = "婚假(天)")
private BigDecimal marriageLeaveDays;
/**
* 备注
*/
@Excel(name = "备注")
private String remark;
/**
* 产假(天)
*/
@Excel(name = "产假(天)")
private BigDecimal maternityLeaveDays;
/**
* 陪产假(天)
*/
@Excel(name = "陪产假(天)")
private BigDecimal paternityLeaveDays;
/**
* 例假(天)
*/
@Excel(name = "例假(天)")
private BigDecimal menstrualLeaveDays;
/**
* 哺乳假(天)
*/
@Excel(name = "哺乳假(天)")
private BigDecimal breastfeedingLeaveDays;
/**
* 丧假(天)
*/
@Excel(name = "丧假(天)")
private BigDecimal bereavementLeaveDays;
/**
* 回单位(天)
*/
@Excel(name = "回单位(天)")
private BigDecimal backToUnit;
/**
* 因公请假(天)
*/
@Excel(name = "因公请假(天)")
private BigDecimal onDutyLeave;
/**
* 外出勘验(天)
*/
@Excel(name = "外出勘验(天)")
private BigDecimal outOfOffice;
/**
* 值班补班(天)
*/
@Excel(name = "值班补班(天)")
private BigDecimal shiftCompensation;
/**
* 体检(天)
*/
@Excel(name = "体检(天)")
private BigDecimal physicalExamination;
/**
* 隔离(天)
*/
@Excel(name = "隔离(天)")
private BigDecimal quarantine;
/**
* 因公外出(与窗口工作无关/天)
*/
@Excel(name = "因公外出(与窗口工作无关/天)")
private BigDecimal businessTrip;
/**
* 公休(天)
*/
@Excel(name = "公休(天)")
private BigDecimal publicHoliday;
/**
* 育儿假(天)
*/
@Excel(name = "育儿假(天)")
private BigDecimal childRearingLeave;
/**
* 调回单位(或离职/天)
*/
@Excel(name = "调回单位(或离职/天)")
private BigDecimal transferBack;
/**
* 探亲假(天)
*/
@Excel(name = "探亲假(天")
private BigDecimal homeLeave;
......
......@@ -17,43 +17,51 @@ public class AttendanceVacationRecordEntity extends AttendanceVacationRecordVo {
/**
* 员工id
*/
@Excel(name = "员工id")
private Long staffId;
/**
* 员工姓名
*/
@Excel(name = "员工姓名")
private String staffName;
/**
* 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)
*/
@Excel(name = "请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)")
private Integer type;
/**
* 增减类型(1.增加,2.扣除)
*/
@Excel(name = "增减类型(1.增加,2.扣除)")
private Integer subAddType;
/**
* 有效期
*/
@Excel(name = "有效期")
private String validityPeriod;
/**
* 增加或扣减天数(天)
*/
@Excel(name = "增加或扣减天数(天)")
private BigDecimal subOrAddDays;
/**
* 内容
*/
@Excel(name = "内容")
private String content;
/**
* 规则
*/
@Excel(name = "规则")
private String rule;
/**
* 理由
*/
@Excel(name = "理由")
private String reason;
/**
* 备注
*/
@Excel(name = "备注")
private String remark;
......
package com.mortals.xhx.module.attendance.model.vo;
import lombok.Data;
/**
* @author djx
* @date 2023年04月17日 16:40
*/
@Data
public class AllHolidaysVo {
private Integer type;
private String desc;
}
package com.mortals.xhx.module.attendance.service.impl;
import com.mortals.xhx.common.code.TypeEnum;
import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity;
import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceQuery;
import com.mortals.xhx.module.attendance.model.AttendanceVacationRecordQuery;
import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import cn.hutool.core.util.ReflectUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.common.code.AllHolidaysEnum;
import com.mortals.xhx.common.code.SubAddTypeEnum;
import com.mortals.xhx.module.attendance.dao.AttendanceVacationRecordDao;
import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity;
import com.mortals.xhx.module.attendance.model.AttendanceVacationRecordEntity;
import com.mortals.xhx.module.attendance.model.vo.AllHolidaysVo;
import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService;
import com.mortals.xhx.module.attendance.service.AttendanceVacationRecordService;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import static cn.hutool.core.util.NumberUtil.add;
/**
* AttendanceVacationRecordService
......@@ -27,22 +35,43 @@ public class AttendanceVacationRecordServiceImpl extends AbstractCRUDServiceImpl
@Autowired
private AttendanceVacationBalanceService attendanceVacationBalanceService;
@SneakyThrows
@Override
protected void saveAfter(AttendanceVacationRecordEntity entity, Context context) throws AppException {
super.saveAfter(entity, context);
if (entity.getSubAddType() == 1) {
AttendanceVacationBalanceEntity attendanceVacationBalanceEntity = attendanceVacationBalanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(entity.getStaffId()));
if (!ObjectUtils.isEmpty(attendanceVacationBalanceEntity)) {
//todo 反射属性 设置实体属性更新值
//attendanceVacationBalanceEntity.setAnnualLeaveDays(attendanceVacationBalanceEntity.getAnnualLeaveDays()+);
attendanceVacationBalanceService.update(attendanceVacationBalanceEntity);
//todo 反射属性 设置实体属性更新值
//attendanceVacationBalanceEntity.setAnnualLeaveDays(attendanceVacationBalanceEntity.getAnnualLeaveDays()+);
Class<AllHolidaysEnum> allHolidaysEnumClass = AllHolidaysEnum.class;
Object[] objects = allHolidaysEnumClass.getEnumConstants();
Method getValue = allHolidaysEnumClass.getMethod("getValue");
Method getDesc = allHolidaysEnumClass.getMethod("getDesc");
List<AllHolidaysVo> list = new ArrayList<>();
for (Object object : objects) {
AllHolidaysVo vo = new AllHolidaysVo();
vo.setDesc(getValue.invoke(object).toString());
vo.setType(Integer.valueOf(getDesc.invoke(object).toString()));
list.add(vo);
}
list.forEach(e -> {
if (e.getType().equals(entity.getType())){
System.out.println(e.getDesc());
AttendanceVacationBalanceEntity attendanceVacationBalanceEntity = attendanceVacationBalanceService.get(entity.getStaffId());
BigDecimal count = (BigDecimal) ReflectUtil.getFieldValue(attendanceVacationBalanceEntity, e.getDesc());
if (entity.getSubAddType().equals(SubAddTypeEnum.增加.getValue())) {
BigDecimal countNew = count.add(new BigDecimal(String.valueOf(entity.getSubOrAddDays())));
ReflectUtil.setFieldValue(attendanceVacationBalanceEntity,e.getDesc(),add(countNew));
attendanceVacationBalanceService.update(attendanceVacationBalanceEntity);
}else if (entity.getSubAddType().equals(SubAddTypeEnum.扣除.getValue())){
ReflectUtil.setFieldValue(attendanceVacationBalanceEntity,e.getDesc(),count.subtract(new BigDecimal(String.valueOf(entity.getSubOrAddDays()))));
System.out.println(attendanceVacationBalanceEntity);
attendanceVacationBalanceService.update(attendanceVacationBalanceEntity);
}else {
return;
}
}
}
});
}
}
\ No newline at end of file
package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.exception.AppException;
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.common.code.AllHolidaysEnum;
import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity;
import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
*
* 员工假期余额信息
......@@ -24,20 +25,15 @@ public class AttendanceVacationBalanceController extends BaseCRUDJsonBodyMapping
@Autowired
private ParamService paramService;
public AttendanceVacationBalanceController(){
super.setModuleDesc( "员工假期余额信息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model,"AllHolidays",AllHolidaysEnum.getEnumMap());
super.init(model, context);
}
@Override
protected int doListAfter(AttendanceVacationBalanceEntity query, Map<String, Object> model, Context context) throws AppException {
AttendanceVacationBalanceEntity attendanceVacationBalanceEntity = service.get(query.getId());
model.put("allHoliday",attendanceVacationBalanceEntity);
return super.doListAfter(query, model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.job.web;
import com.mortals.framework.exception.AppException;
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.common.code.JobTypeEnum;
import com.mortals.xhx.module.job.model.JobEntity;
import com.mortals.xhx.module.job.model.JobQuery;
import com.mortals.xhx.module.job.service.JobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
......@@ -28,22 +25,17 @@ public class JobController extends BaseCRUDJsonBodyMappingController<JobService,
@Autowired
private ParamService paramService;
public JobController(){
super.setModuleDesc( "职位信息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "type", paramService.getParamBySecondOrganize("Job", "type"));
this.addDict(model, "groupId", service.find(new JobQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(), y->y.getGroupId(),(o, n)->n)));
this.addDict(model,"type",JobTypeEnum.getEnumMap());
super.init(model, context);
}
@Override
public void doImportDataBefore(List<JobEntity> list, boolean updateSupport, Context context) throws AppException {
super.doImportDataBefore(list, updateSupport, context);
}
}
package com.mortals.xhx.module.staff.model;
import com.mortals.framework.annotation.Excel;
import com.mortals.xhx.module.staff.model.vo.StaffVo;
import java.util.Date;
......@@ -16,14 +17,17 @@ public class StaffEntity extends StaffVo {
/**
* 员工姓名
*/
@Excel(name = "员工姓名")
private String name;
/**
* 性别(1.男,2.女)
*/
@Excel(name = "性别")
private Integer gender;
/**
* 出生日期
*/
@Excel(name = "出生日期")
private Date birthday;
/**
* 照片
......@@ -32,14 +36,17 @@ public class StaffEntity extends StaffVo {
/**
* 联系电话
*/
@Excel(name = "联系电话")
private String phoneNumber;
/**
* 身份证号码
*/
@Excel(name = "身份证号码")
private String idCard;
/**
* 工号
*/
@Excel(name = "工号")
private String workNum;
/**
* 政治面貌 (1.中共党员,2.中共预备党员,3.共青团员,4.群众,5.其它)
......@@ -52,6 +59,7 @@ public class StaffEntity extends StaffVo {
/**
* 所属部门名称
*/
@Excel(name = "所属部门名称")
private String deptName;
/**
* 职位ID
......@@ -60,6 +68,7 @@ public class StaffEntity extends StaffVo {
/**
* 职位名称
*/
@Excel(name = "职位名称")
private String positionName;
/**
* 员工类型(1.全职,2.兼职,3.实习)
......
......@@ -105,5 +105,9 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
return super.infoAfter(id, model, entity, context);
}
@Override
public void doExportBefore(Context context, StaffEntity query) throws AppException {
super.doExportBefore(context, query);
}
}
\ No newline at end of file
......@@ -74,6 +74,8 @@ INSERT INTO `mortals_xhx_resource` VALUES (null, '职位信息-菜单管理-维
-- ----------------------------
-- 职位信息参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '节点类型', 'Job', 'type', '1', '分组', 1, 4, 0, 'type', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '节点类型', 'Job', 'type', '2', '职位', 1, 4, 0, 'type', NULL, NULL, NULL);
-- ----------------------------
-- 员工黑名单信息菜单 SQL
-- ----------------------------
......
......@@ -10844,3 +10844,110 @@ msg|String|消息|-
Wi-Fi打卡. Wi-Fi打卡|Wi-Fi打卡. Wi-Fi打卡|-
蓝牙打卡. 蓝牙打卡|蓝牙打卡. 蓝牙打卡|-
考勤机打卡. 考勤机打卡|考勤机打卡. 考勤机打卡|-
查询员工假期记录信息
**请求URL:** attendance/vacation/record/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询员工假期记录信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:-------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
{
"page":1,
"size":10
}
**响应消息样例:**
```
{
"msg":"查询员工假期记录信息成功",
"code":1,
"data":{}
}
}
保存更新考勤组负责人员信息
**请求URL:** attendance/vacation/record/save
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新员工假期记录信息:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:-------
id|Long|保存后主键id
staffId|Long|否|员工id
type|请假类型
subAddType|增减类型
validityPeriod|有效期
subOrAddDays|增加或扣减天数
content|内容
reason|理由
remark|备注
rule|规则
&emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;updateUserId|Long|更新用户
&emsp;&emsp;updateTime|Date|更新时间
**请求样例:**
```
{
"id":6213,
"staffId":"7x4o6o",
"type":1,
"subAddType":"1",
"validityPeriod":2245,
"subOrAddDays":11,
"content":"12131",
"reason":"121",
"rule":"1212,
"remark":"iy13r3",
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;id|Long|保存后主键id
&emsp;entity|object|保存更新实体
&emsp;&emsp;id|Long|序号,主键,自增长
&emsp;&emsp;groupId|Long|考勤组
&emsp;&emsp;groupName|String|考勤组名称
&emsp;&emsp;responsibleId|Long|负责人ID
&emsp;&emsp;responsibleName|String|负责人名称
&emsp;&emsp;responsibleType|Integer|负责人类型(0. 主负责人,1. 子负责人)
&emsp;&emsp;remark|String|备注
&emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;updateUserId|Long|更新用户
&emsp;&emsp;updateTime|Date|更新时间
**响应消息样例:**
```
{
"msg":"新增记录成功",
"code":1,
"data":{}
}
}
\ No newline at end of file
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