员工信息改版
This commit is contained in:
parent
fa130c345a
commit
e1a99ad2e5
@ -13,7 +13,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
*/
|
||||
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
||||
@EnableScheduling
|
||||
@MapperScan({"com.evo.**.mapper"})
|
||||
@MapperScan({"com.evo.**.mapper.**.**"})
|
||||
public class EvoApplication
|
||||
{
|
||||
public static void main(String[] args)
|
||||
|
||||
@ -102,6 +102,7 @@ public class Constants
|
||||
public static final String DELETE_FLAG_0 = "0"; //添加信息
|
||||
public static final String DELETE_FLAG_1 = "1"; //删除信息
|
||||
public static final String JOB_STATIS_0 = "0"; //员工 试用
|
||||
public static final String JOB_STATIS_1 = "1"; //员工 正式
|
||||
public static final String SYS_COMPANY = "sys_company"; //公司简称
|
||||
public static final String SYS_CONTRACT = "sys_contract"; //合同年限
|
||||
public static final String SYS_LEVEL = "sys_level"; //学历
|
||||
@ -111,6 +112,7 @@ public class Constants
|
||||
public static final String SEIZE_A_SEAT_1 = "00"; //占位符
|
||||
public static final String SEIZE_A_SEAT_2 = "000"; //占位符
|
||||
public static final String SYS_SENIORITY_SUBSIDIES = "50"; //工龄补助
|
||||
public static final Integer SYS_CONTRACT_SUBSIDY = 50; //合同补助的基数
|
||||
public static final String SYS_CONTRACT_0 = "50"; //一年期合同补助
|
||||
public static final String SYS_CONTRACT_1 = "150"; //三年期合同补助
|
||||
public static final String SYS_SOCIAL_SUBSIDIES = "400"; //新农合社保补助
|
||||
|
||||
@ -7,6 +7,7 @@ import java.util.Map;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.evo.common.utils.Collections;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
@ -52,6 +53,9 @@ public class BaseEntity implements Serializable
|
||||
@TableField(exist = false)
|
||||
private Map<String, Object> params;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Map<String, Object> extendeds;
|
||||
|
||||
public String getSearchValue()
|
||||
{
|
||||
return searchValue;
|
||||
@ -121,6 +125,14 @@ public class BaseEntity implements Serializable
|
||||
return params;
|
||||
}
|
||||
|
||||
public Map<String, Object> getExtendeds() {
|
||||
if (extendeds == null)
|
||||
{
|
||||
extendeds = Collections.emptyMap();
|
||||
}
|
||||
return extendeds;
|
||||
}
|
||||
|
||||
public void setParams(Map<String, Object> params)
|
||||
{
|
||||
this.params = params;
|
||||
|
||||
@ -0,0 +1,68 @@
|
||||
package com.evo.common.handler;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import com.evo.common.constant.Constants;
|
||||
import com.evo.common.utils.DateUtils;
|
||||
import com.evo.common.utils.SecurityUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @desc: 修改和新增自定义注解
|
||||
* @ClassName:InsertAndUpdateMybatisHandler
|
||||
* @date: 2025年04月17日 9:03
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class InsertAndUpdateMybatisHandler implements MetaObjectHandler {
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
try {
|
||||
String userName = SecurityUtils.getUsername();
|
||||
if(StringUtils.isEmpty(userName)){
|
||||
log.info("当前操作未登录, 无需执行");
|
||||
return;
|
||||
}
|
||||
if(ObjectUtils.isNotEmpty(metaObject)){
|
||||
mySetFieldValByName("createBy",SecurityUtils.getUsername(),metaObject);
|
||||
mySetFieldValByName("createTime",DateUtils.getNowDate(),metaObject);
|
||||
mySetFieldValByName("delFlag",Constants.DELETE_FLAG_0,metaObject);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("自动填充拦截器异常=====insert,对象信息:{}, 异常信息:{}", JSONObject.toJSONString(metaObject), e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void mySetFieldValByName(String filedName, Object fieldVal, MetaObject metaObject) {
|
||||
Object createType = getFieldValByName(filedName,metaObject);
|
||||
if(ObjectUtils.isEmpty(createType)){
|
||||
setFieldValByName(filedName,fieldVal,metaObject);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
try {
|
||||
String userName = SecurityUtils.getUsername();
|
||||
if(StringUtils.isEmpty(userName)){
|
||||
log.info("当前操作未登录, 无需执行");
|
||||
return;
|
||||
}
|
||||
if(ObjectUtils.isNotEmpty(metaObject)){
|
||||
mySetFieldValByName("updateBy",userName,metaObject);
|
||||
mySetFieldValByName("updateTime",DateUtils.getNowDate(),metaObject);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("自动填充拦截器异常=====update,对象信息:{}, 异常信息:{}", JSONObject.toJSONString(metaObject),e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
300
evo-admin/src/main/java/com/evo/common/utils/Collections.java
Normal file
300
evo-admin/src/main/java/com/evo/common/utils/Collections.java
Normal file
@ -0,0 +1,300 @@
|
||||
package com.evo.common.utils;
|
||||
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @DES 集合类型工具类
|
||||
* @author andy.shi
|
||||
* @createDate 2020年12月25日下午2:16:13
|
||||
* @typeName Collections
|
||||
*/
|
||||
public class Collections implements Serializable{
|
||||
|
||||
static Logger log = LoggerFactory.getLogger(Collections.class);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -611031509912595162L;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ts
|
||||
* @return
|
||||
*/
|
||||
public static <T> boolean isEmpty(T[] ts) {
|
||||
return ts == null || ts.length == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ts
|
||||
* @return
|
||||
*/
|
||||
public static <T> boolean isNotEmpty(T[] ts) {
|
||||
return ! isEmpty(ts);
|
||||
}
|
||||
|
||||
/************************ 以上为公共方法 以下为list ************************************************/
|
||||
/**
|
||||
* @DES 检查集合为空
|
||||
* @author andy.shi
|
||||
* @createDate 2020年12月25日下午2:14:43
|
||||
* @methodName Collections.isEmpty
|
||||
* @param list
|
||||
* @return
|
||||
* @returnType boolean
|
||||
*/
|
||||
public static boolean isEmpty(Collection list) {
|
||||
return list == null || list.size() == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @DES 检查集合不为空
|
||||
* @author andy.shi
|
||||
* @createDate 2020年12月25日下午2:15:07
|
||||
* @methodName Collections.isNotEmpty
|
||||
* @param collection
|
||||
* @return
|
||||
* @returnType boolean
|
||||
*/
|
||||
public static boolean isNotEmpty(Collection collection) {
|
||||
return ! (isEmpty(collection));
|
||||
}
|
||||
|
||||
/**
|
||||
* 将list进行分页
|
||||
* @author Andy.shi
|
||||
* @date 2020年9月15日上午9:37:07
|
||||
* @param <T> 泛型, 根据传入的对对象类型,返回类型
|
||||
* @param list 需要分组的集合
|
||||
* @param pageNum 当前页数
|
||||
* @param pageSize 每页显示的条数
|
||||
* @return
|
||||
*/
|
||||
public static <T> List<T> pageList(List<T> list, Integer pageNum, Integer pageSize){
|
||||
if(isEmpty(list)) {
|
||||
log.warn(String.format("[info " + Collections.class.getName() + " 执行信息] : list info: [%s] 为空", new Object[]{list}));
|
||||
return list;
|
||||
}
|
||||
try {
|
||||
//如果当前页为0, 更改为1
|
||||
if(pageNum == 0)
|
||||
pageNum = 1;
|
||||
//计算formIndex
|
||||
Integer fromIndex = ((pageNum-1)*pageSize);
|
||||
//计算toIndex
|
||||
Integer toIndex = fromIndex + pageSize;
|
||||
//防止下标越界
|
||||
if(toIndex > list.size())
|
||||
toIndex = list.size();
|
||||
log.info(String.format("[info " + Collections.class.getName() + " 执行信息] : list info: [%s] and pageNum info:[%s] and pageSize info: [%s]", new Object[]{list, pageNum, pageSize}));
|
||||
return list.subList(fromIndex, toIndex);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
log.error(String.format("Class {%s}, Method {%s}", new Object[]{Collections.class.getName(), "pageList"}),e);
|
||||
throw new RuntimeException(String.format("EntityInfo --- " + Collections.class.getName() + " error: list info: [%s] and pageNum info:[%s] and pageSize info: [%s] ", new Object[]{list, pageNum, pageSize}), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建对象
|
||||
* @author Andy.shi
|
||||
* @date 2020年9月15日上午9:37:07
|
||||
* @param <T>
|
||||
* @return
|
||||
*/
|
||||
public static <T> List<T> emptyList() {
|
||||
return new LinkedList<T>();
|
||||
}
|
||||
|
||||
/**
|
||||
* @DES 数组转对象
|
||||
* @author andy.shi
|
||||
* @createDate 2020年12月25日下午2:09:14
|
||||
* @methodName Collections.asList
|
||||
* @param objs
|
||||
* @return
|
||||
* @returnType List<T>
|
||||
*/
|
||||
public static <T> List<T> asList(T... objs) {
|
||||
if (isEmpty(objs))
|
||||
return emptyList();
|
||||
|
||||
List<T> list = emptyList();
|
||||
for (T obj : objs)
|
||||
list.add(obj);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param objs
|
||||
* @return
|
||||
*/
|
||||
public static <T> List<T> asList(Collection<T> objs) {
|
||||
if (isEmpty(objs))
|
||||
return emptyList();
|
||||
|
||||
List<T> list = emptyList();
|
||||
list.addAll(objs);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 去除集合的重复项
|
||||
* @author Andy.shi
|
||||
* @date 2020年9月24日上午9:09:07
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param list1 去重的集合1
|
||||
* @param list2 去重的集合2
|
||||
* @return list 去重后的对象
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> List<T> removeDuplicatesList(List<T> list1, List<T> list2){
|
||||
return removeDuplicatesList(new List[] {list1, list2});
|
||||
}
|
||||
|
||||
/**
|
||||
* 去除集合的重复项
|
||||
* @author Andy.shi
|
||||
* @date 2020年9月24日上午9:13:09
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param listArray 去重的集合数组
|
||||
* @return list 去重后的对象
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> List<T> removeDuplicatesList(List<T>... listArray){
|
||||
try {
|
||||
List<T> listAll = emptyList();
|
||||
if(listArray == null || listArray.length == 0) {
|
||||
log.warn("[info " + Collections.class.getName() + " 执行信息] : 数据集合为空, 返回空对象 ");
|
||||
return emptyList();
|
||||
}
|
||||
for (List<T> list : listArray) {
|
||||
if(isNotEmpty(list)) {
|
||||
listAll.addAll(list);
|
||||
}
|
||||
}
|
||||
return (List<T>) listAll.stream().distinct().collect(Collectors.toList());
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
log.error(String.format("Class {%s}, Method {%s}", new Object[]{Collections.class.getName(), "removeDuplicatesList"}),e);
|
||||
throw new RuntimeException(String.format("EntityInfo --- " + Collections.class.getName() + " error: listArray info: [%s] 去除重复数据异常; ", new Object[]{listArray}), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取重复数据
|
||||
* @author Andy.shi
|
||||
* @date 2020年9月24日上午9:46:03
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param list1 查重的集合1
|
||||
* @param list2 查重的集合1
|
||||
* @return 并集的数据集合
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> List<T> findDuplicatesList(List<T> list1, List<T> list2){
|
||||
return findDuplicatesList(new List[] {list1, list2});
|
||||
}
|
||||
/**
|
||||
* 获取重复数据
|
||||
* @author Andy.shi
|
||||
* @date 2020年9月24日上午9:44:30
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param listArray 需要查重的集合数组
|
||||
* @return 并集的数据集合
|
||||
*/
|
||||
public static <T> List<T> findDuplicatesList(List<T>... listArray){
|
||||
try {
|
||||
if(listArray == null || listArray.length == 0) {
|
||||
log.warn("[info " + Collections.class.getName() + " 执行信息] : 数据集合为空, 返回空对象 ");
|
||||
return emptyList();
|
||||
}
|
||||
|
||||
if(listArray.length == 1) {
|
||||
log.warn("[info " + Collections.class.getName() + " 执行信息] : 集合数组只有一个, 不存在重复数据 ");
|
||||
return listArray[0];
|
||||
}
|
||||
List<T> firstList = listArray[0];
|
||||
|
||||
for (int i = 1; i < listArray.length; i++) {
|
||||
firstList.retainAll(listArray[i]);
|
||||
}
|
||||
return firstList;
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
log.error(String.format("Class {%s}, Method {%s}", new Object[]{Collections.class.getName(), "findDuplicatesList"}),e);
|
||||
throw new RuntimeException(String.format("EntityInfo --- " + Collections.class.getName() + " error: listArray info: [%s] 获取重复数据异常; ", new Object[]{listArray}), e);
|
||||
}
|
||||
}
|
||||
|
||||
/********************** 以上操作list 以下操作map **************************************/
|
||||
/**
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public static boolean isNotEmpty(Map<?, ?> map) {
|
||||
return ! isEmpty(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public static boolean isEmpty(Map<?, ?> map) {
|
||||
return map == null || map.size() == 0;
|
||||
}
|
||||
/**
|
||||
* @DES 创建空的map对象
|
||||
* @author andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @createDate 2020年12月25日下午1:36:35
|
||||
* @methodName MapLists.emptyMap
|
||||
* @return
|
||||
* @returnType Map<k,v>
|
||||
*/
|
||||
public static final <K, V> Map<K, V> emptyMap() {
|
||||
return new LinkedHashMap<K, V>();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @DES 组装map数据对象
|
||||
* @author andy.shi
|
||||
* @createDate 2020年12月25日下午1:37:05
|
||||
* @methodName MapLists.createMap
|
||||
* @param args
|
||||
* @return
|
||||
* @returnType Map<k,v>
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <K, V> Map<K, V> asMap(Object... args) {
|
||||
Map<K, V> map = emptyMap();
|
||||
if (args == null || args.length == 0) {
|
||||
log.warn(String.format("[info " + Collections.class.getName() + " 执行信息] : params的参数不为偶数; args length: [%s]; args info: [%s] ", new Object[]{args.length, args}));
|
||||
return map;
|
||||
} else if (args.length % 2 != 0) {
|
||||
throw new RuntimeException(String.format("EntityInfo --- " + Collections.class.getName() + " error: args must completely match: even param is key, odd param is value, please check your arguments. args length [%s]; args info: [%s]; ", new Object[]{args.length, args}));
|
||||
}
|
||||
for (int i=0; i<args.length;i+=2) {
|
||||
Object key = args[i];
|
||||
Object val = i + 1 < args.length ? args[i+1] : null;
|
||||
map.put( (K) key, (V) val);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/********************** 以上操作map 以下操作公共方法 **************************************/
|
||||
|
||||
}
|
||||
@ -8,6 +8,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
|
||||
@ -188,4 +189,20 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||
ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
|
||||
return Date.from(zdt.toInstant());
|
||||
}
|
||||
|
||||
|
||||
public static Integer getBetweenYear(Date start, Date end){
|
||||
Calendar currentDate = Calendar.getInstance();
|
||||
currentDate.setTime(start);
|
||||
int startYear = currentDate.get(Calendar.YEAR);
|
||||
|
||||
// 将输入的Date转换为Calendar以便获取年月信息
|
||||
Calendar inputCalendar = Calendar.getInstance();
|
||||
inputCalendar.setTime(end);
|
||||
int endYear = inputCalendar.get(Calendar.YEAR);
|
||||
return endYear-startYear;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -235,7 +235,13 @@ public class IpUtils
|
||||
*/
|
||||
public static String getServerUrl()
|
||||
{
|
||||
return ServletUtils.getRequest().getRequestURL().toString();
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
String protocol = request.getScheme()+"://";
|
||||
try {
|
||||
return protocol+InetAddress.getLocalHost().getHostAddress()+":"+request.getServerPort();
|
||||
} catch (Exception e) {
|
||||
return protocol+request.getServerName()+":"+request.getServerPort();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
28
evo-admin/src/main/java/com/evo/common/vo/OptionVo.java
Normal file
28
evo-admin/src/main/java/com/evo/common/vo/OptionVo.java
Normal file
@ -0,0 +1,28 @@
|
||||
package com.evo.common.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:OptionVo
|
||||
* @date: 2025年05月22日 8:49
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
public class OptionVo {
|
||||
|
||||
Long key;
|
||||
|
||||
String value;
|
||||
|
||||
public OptionVo() {
|
||||
}
|
||||
|
||||
public OptionVo(Long key, String value) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,5 @@
|
||||
package com.evo.finance.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import com.evo.attendance.domain.RzAttendance;
|
||||
import com.evo.attendance.domain.RzAttendanceStatistical;
|
||||
import com.evo.attendance.domain.RzSpecialOverTime;
|
||||
@ -17,8 +11,11 @@ import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.utils.DateUtils;
|
||||
import com.evo.common.utils.SecurityUtils;
|
||||
import com.evo.common.utils.StringUtils;
|
||||
import com.evo.finance.domain.RzSalaryDetail;
|
||||
import com.evo.finance.domain.RzSalaryStatistics;
|
||||
import com.evo.finance.mapper.RzSalaryDetailMapper;
|
||||
import com.evo.finance.mapper.RzSalaryStatisticsMapper;
|
||||
import com.evo.finance.service.IRzSalaryDetailService;
|
||||
import com.evo.personnelMatters.domain.RzHoliday;
|
||||
import com.evo.personnelMatters.mapper.RzHolidayMapper;
|
||||
import com.evo.restaurant.domain.RzRestaurantStatistics;
|
||||
@ -29,13 +26,16 @@ import com.evo.system.mapper.SysDeptMapper;
|
||||
import com.evo.system.mapper.SysStaffDetailMapper;
|
||||
import com.evo.system.mapper.SysStaffMapper;
|
||||
import com.evo.utils.DateUtil;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.evo.finance.mapper.RzSalaryDetailMapper;
|
||||
import com.evo.finance.domain.RzSalaryDetail;
|
||||
import com.evo.finance.service.IRzSalaryDetailService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 工资详情Service业务层处理
|
||||
@ -154,19 +154,19 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService
|
||||
rzSalaryDetail.setMonthSalary(salaryDetail.getBasicSalary()); //基本工资
|
||||
rzSalaryDetail.setAbsenteeismSalary(salaryDetail.getAbsenteeismSalary()); //请假扣除工资
|
||||
rzSalaryDetail.setOvertimeSalary(salaryDetail.getOverWages()); //加班工资
|
||||
rzSalaryDetail.setNightSubsidies(salaryDetail.getNightShiftSubsidies()); //夜班补助
|
||||
rzSalaryDetail.setDinnerSubsidies(salaryDetail.getDinnerSubsidies()); //夜餐补助
|
||||
rzSalaryDetail.setMiddleSubsidies(salaryDetail.getMiddleSubsidies()); //中班补助
|
||||
// rzSalaryDetail.setNightSubsidies(salaryDetail.getNightShiftSubsidies()); //夜班补助
|
||||
// rzSalaryDetail.setDinnerSubsidies(salaryDetail.getDinnerSubsidies()); //夜餐补助
|
||||
// rzSalaryDetail.setMiddleSubsidies(salaryDetail.getMiddleSubsidies()); //中班补助
|
||||
//查询员工详情
|
||||
SysStaffDetail sysStaffDetail = sysStaffDetailMapper.selectSysStaffDetailByStaffId(sysStaff.getUserId());
|
||||
rzSalaryDetail.setFullSubsidies(sysStaffDetail.getFullFrequentlySubsidies()); //全勤奖
|
||||
rzSalaryDetail.setLevelSubsidies(sysStaffDetail.getLevelOfEducationSubsidies()); //学历
|
||||
rzSalaryDetail.setContractSubsidies(sysStaffDetail.getContractSubsidies()); //合同
|
||||
rzSalaryDetail.setSocialSubsidies(sysStaffDetail.getSocialSecuritySubsidies()); //社保
|
||||
// rzSalaryDetail.setFullSubsidies(sysStaffDetail.getFullFrequentlySubsidies()); //全勤奖
|
||||
// rzSalaryDetail.setLevelSubsidies(sysStaffDetail.getLevelOfEducationSubsidies()); //学历
|
||||
// rzSalaryDetail.setContractSubsidies(sysStaffDetail.getContractSubsidies()); //合同
|
||||
// rzSalaryDetail.setSocialSubsidies(sysStaffDetail.getSocialSecuritySubsidies()); //社保
|
||||
rzSalaryDetail.setSubsidyOrBonus(sysStaffDetail.getOtherSubsidies().add(sysStaffDetail.getFixedAllowance())); //其他补助
|
||||
//补助扣除 TODO 福利扣除百分比
|
||||
rzSalaryDetail.setAbsenteeismSubsidies(sysStaffDetail.getLevelOfEducationSubsidies().add(sysStaffDetail.getContractSubsidies())
|
||||
.add(sysStaffDetail.getSenioritySubsidies()).add(sysStaffDetail.getSocialSecuritySubsidies()).multiply(salaryDetail.getAbsenteeismSubsidies()));
|
||||
// rzSalaryDetail.setAbsenteeismSubsidies(sysStaffDetail.getLevelOfEducationSubsidies().add(sysStaffDetail.getContractSubsidies())
|
||||
// .add(sysStaffDetail.getSenioritySubsidies()).add(sysStaffDetail.getSocialSecuritySubsidies()).multiply(salaryDetail.getAbsenteeismSubsidies()));
|
||||
rzSalaryDetail.setDeductions(sysStaffDetail.getDeductions()); //其他扣款
|
||||
//计算工龄,以每月10号社保缴纳计算
|
||||
int years = sbrq.getYear() - sysStaff.getEmploymentDate().getYear();
|
||||
@ -178,11 +178,11 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService
|
||||
if(months == 0 && days < 0){
|
||||
years -= 1;
|
||||
}
|
||||
if(years > 10){
|
||||
rzSalaryDetail.setSenioritySalary(sysStaffDetail.getSenioritySubsidies().multiply(new BigDecimal("10.0"))); //工龄
|
||||
}else{
|
||||
rzSalaryDetail.setSenioritySalary(sysStaffDetail.getSenioritySubsidies().multiply(new BigDecimal(years))); //工龄
|
||||
}
|
||||
// if(years > 10){
|
||||
// rzSalaryDetail.setSenioritySalary(sysStaffDetail.getSenioritySubsidies().multiply(new BigDecimal("10.0"))); //工龄
|
||||
// }else{
|
||||
// rzSalaryDetail.setSenioritySalary(sysStaffDetail.getSenioritySubsidies().multiply(new BigDecimal(years))); //工龄
|
||||
// }
|
||||
//餐费
|
||||
RzRestaurantStatistics rzRestaurantStatistics = rzRestaurantStatisticsMapper.selectRzRestaurantStatisticsByUserIdAndDate(sysStaff.getUserId(),rzSalaryDetail.getMonth());
|
||||
rzSalaryDetail.setMealFee(rzRestaurantStatistics.getPersonalSumConsumption()); //餐费扣除
|
||||
@ -389,8 +389,8 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService
|
||||
}else{
|
||||
sysStaffDetail.setAbsenteeismSubsidies(new BigDecimal("1.00"));
|
||||
}
|
||||
sysStaffDetail.setNightShiftSubsidies(sysStaffDetail.getNightShiftSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getNightNumber())));
|
||||
sysStaffDetail.setDinnerSubsidies(sysStaffDetail.getDinnerSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getNightNumber())));
|
||||
// sysStaffDetail.setNightShiftSubsidies(sysStaffDetail.getNightShiftSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getNightNumber())));
|
||||
// sysStaffDetail.setDinnerSubsidies(sysStaffDetail.getDinnerSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getNightNumber())));
|
||||
//是否打卡
|
||||
if("否".equals(sysStaff.getClockIn())){
|
||||
return sysStaffDetail;
|
||||
@ -423,33 +423,33 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService
|
||||
}
|
||||
sysStaffDetail.setOverWages(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP).multiply(rzAttendanceStatistical.getWorkOvertimeNumber()));
|
||||
sysStaffDetail.setAbsenteeismSalary(new BigDecimal("0.00"));
|
||||
sysStaffDetail.setMiddleSubsidies(sysStaffDetail.getMiddleSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getMiddleShiftNumber())));
|
||||
// sysStaffDetail.setMiddleSubsidies(sysStaffDetail.getMiddleSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getMiddleShiftNumber())));
|
||||
}
|
||||
//判断是小时工
|
||||
if(sysStaffDetail.getHoursSalary().doubleValue() > 0) {
|
||||
//额薪资日期在工资月下一个月
|
||||
calendar.set(Calendar.MONTH,1);
|
||||
//全额薪资日期在工资月以前
|
||||
if(sysStaff.getWagesRatioDate().before(month)) {
|
||||
sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())));
|
||||
}else if(sysStaff.getWagesRatioDate().after(calendar.getTime())) {
|
||||
sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD)));
|
||||
}else {
|
||||
//根据转正日期,查询员工的打卡信息
|
||||
BigDecimal att_work = new BigDecimal("0.0");
|
||||
for (RzAttendance rzAttendance : att_list) {
|
||||
if(rzAttendance.getAttendanceDate().before(sysStaff.getWagesRatioDate())) {
|
||||
att_work = att_work.add(rzAttendance.getWorkSum());
|
||||
}
|
||||
}
|
||||
//未转正需要扣除的工资
|
||||
BigDecimal work = sysStaffDetail.getHoursSalary().multiply(att_work).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD_1));
|
||||
sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).subtract(work));
|
||||
}
|
||||
sysStaffDetail.setOverWages(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getWorkOvertimeNumber()));
|
||||
sysStaffDetail.setAbsenteeismSalary(new BigDecimal("0.00"));
|
||||
sysStaffDetail.setMiddleSubsidies(sysStaffDetail.getMiddleSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getMiddleShiftNumber())));
|
||||
}
|
||||
// if(sysStaffDetail.getHoursSalary().doubleValue() > 0) {
|
||||
// //额薪资日期在工资月下一个月
|
||||
// calendar.set(Calendar.MONTH,1);
|
||||
// //全额薪资日期在工资月以前
|
||||
// if(sysStaff.getWagesRatioDate().before(month)) {
|
||||
// sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())));
|
||||
// }else if(sysStaff.getWagesRatioDate().after(calendar.getTime())) {
|
||||
// sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD)));
|
||||
// }else {
|
||||
// //根据转正日期,查询员工的打卡信息
|
||||
// BigDecimal att_work = new BigDecimal("0.0");
|
||||
// for (RzAttendance rzAttendance : att_list) {
|
||||
// if(rzAttendance.getAttendanceDate().before(sysStaff.getWagesRatioDate())) {
|
||||
// att_work = att_work.add(rzAttendance.getWorkSum());
|
||||
// }
|
||||
// }
|
||||
// //未转正需要扣除的工资
|
||||
// BigDecimal work = sysStaffDetail.getHoursSalary().multiply(att_work).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD_1));
|
||||
// sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).subtract(work));
|
||||
// }
|
||||
// sysStaffDetail.setOverWages(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getWorkOvertimeNumber()));
|
||||
// sysStaffDetail.setAbsenteeismSalary(new BigDecimal("0.00"));
|
||||
// sysStaffDetail.setMiddleSubsidies(sysStaffDetail.getMiddleSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getMiddleShiftNumber())));
|
||||
// }
|
||||
//判断是月工资
|
||||
if(sysStaffDetail.getBasicSalary().doubleValue() > 0 || sysStaffDetail.getJobsSalary().longValue() > 0) {
|
||||
//额薪资日期在工资月下一个月
|
||||
@ -478,7 +478,7 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService
|
||||
.add(sysStaffDetail.getBasicSalary().multiply(new BigDecimal(Constants.SUBSIDY_PERIOD)))
|
||||
.divide(new BigDecimal(days).multiply(new BigDecimal("8.00")),2, RoundingMode.HALF_UP);
|
||||
sysStaffDetail.setAbsenteeismSalary(evrymoney.multiply(rzAttendanceStatistical.getShouldAttendance().subtract(rzAttendanceStatistical.getRealAttendance())));
|
||||
sysStaffDetail.setMiddleSubsidies(new BigDecimal("0.00"));
|
||||
// sysStaffDetail.setMiddleSubsidies(new BigDecimal("0.00"));
|
||||
//根据用户获取当前的加班情况
|
||||
RzSpecialOverTime rSpecialOverTime = rzSpecialOverTimeMapper.selectRzSpecialOverTimeByUserIdAndDate(sysStaff.getUserId(),month);
|
||||
if(StringUtils.isNull(rSpecialOverTime)){
|
||||
|
||||
@ -0,0 +1,116 @@
|
||||
package com.evo.personnelMatters.controller;
|
||||
|
||||
import com.evo.common.annotation.Log;
|
||||
import com.evo.common.core.controller.BaseController;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.core.page.TableDataInfo;
|
||||
import com.evo.common.enums.BusinessType;
|
||||
import com.evo.common.utils.poi.ExcelUtil;
|
||||
import com.evo.personnelMatters.domain.RzSubsidy;
|
||||
import com.evo.personnelMatters.domain.RzSubsidyInfo;
|
||||
import com.evo.personnelMatters.service.IRzSubsidyInfoService;
|
||||
import com.evo.personnelMatters.service.IRzSubsidyService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 补助管理Controller
|
||||
*
|
||||
* @author chenyj
|
||||
* @date 2024-08-27
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/personnelMatters/subsidyInfo")
|
||||
public class RzSubsidyInfoController extends BaseController
|
||||
{
|
||||
@Resource
|
||||
private IRzSubsidyInfoService rzSubsidyInfoService;
|
||||
|
||||
/**
|
||||
* 查询补助管理列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('personnelMatters:subsidyInformation:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(RzSubsidyInfo rzSubsidy)
|
||||
{
|
||||
startPage();
|
||||
List<RzSubsidyInfo> list = rzSubsidyInfoService.selectRzSubsidyInfoList(rzSubsidy);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出补助管理列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('personnelMatters:subsidyInformation:export')")
|
||||
@Log(title = "补助管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, RzSubsidyInfo rzSubsidy)
|
||||
{
|
||||
List<RzSubsidyInfo> list = rzSubsidyInfoService.selectRzSubsidyInfoList(rzSubsidy);
|
||||
ExcelUtil<RzSubsidyInfo> util = new ExcelUtil<RzSubsidyInfo>(RzSubsidyInfo.class);
|
||||
util.exportExcel(response, list, "补助管理数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取补助管理详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('personnelMatters:subsidyInformation:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return success(rzSubsidyInfoService.selectRzSubsidyInfoById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增补助管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('personnelMatters:subsidyInformation:add')")
|
||||
@Log(title = "补助信息管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody RzSubsidyInfo rzSubsidy)
|
||||
{
|
||||
return rzSubsidyInfoService.insertRzSubsidyInfo(rzSubsidy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改补助管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('personnelMatters:subsidyInformation:edit')")
|
||||
@Log(title = "补助信息管理", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody RzSubsidyInfo rzSubsidy)
|
||||
{
|
||||
return toAjax(rzSubsidyInfoService.updateRzSubsidyInfo(rzSubsidy));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除补助管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('personnelMatters:subsidyInformation:remove')")
|
||||
@Log(title = "补助信息管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public AjaxResult remove(@PathVariable Long id)
|
||||
{
|
||||
return toAjax(rzSubsidyInfoService.deleteRzSubsidyInfoById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查补助是否存在
|
||||
*/
|
||||
@PostMapping("/checkName")
|
||||
public AjaxResult checkName(@RequestBody RzSubsidyInfo rzSubsidy)
|
||||
{
|
||||
return AjaxResult.success(rzSubsidyInfoService.existsSubsidyName(rzSubsidy));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getOption")
|
||||
public AjaxResult getOption()
|
||||
{
|
||||
return AjaxResult.success(rzSubsidyInfoService.getOption());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package com.evo.personnelMatters.domain;
|
||||
|
||||
import com.evo.common.annotation.Excel;
|
||||
import com.evo.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
/**
|
||||
*补助信息对象 rz_subsidy_info 不同于学历补助
|
||||
* @ClassName:RzSubsidyInfo
|
||||
* @date: 2025年05月21日 14:50
|
||||
* @author: andy.shi
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
public class RzSubsidyInfo extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
private Long id;
|
||||
|
||||
/** 补助名称 */
|
||||
@Excel(name = "补助名称")
|
||||
private String name;
|
||||
|
||||
/** 补助金额 */
|
||||
@Excel(name = "补助金额")
|
||||
private BigDecimal value;
|
||||
|
||||
/** 备注 */
|
||||
@Excel(name = "备注")
|
||||
private String remarks;
|
||||
|
||||
/** 删除标识 */
|
||||
private String delFlag;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("name", getName())
|
||||
.append("value", getValue())
|
||||
.append("remarks", getRemarks())
|
||||
.append("delFlag", getDelFlag())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package com.evo.personnelMatters.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evo.personnelMatters.domain.RzSubsidyInfo;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:RzSubsidyInfoMapper
|
||||
* @date: 2025年05月21日 14:55
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
|
||||
public interface RzSubsidyInfoMapper extends BaseMapper<RzSubsidyInfo> {
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
package com.evo.personnelMatters.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.vo.OptionVo;
|
||||
import com.evo.personnelMatters.domain.RzSubsidy;
|
||||
import com.evo.personnelMatters.domain.RzSubsidyInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 补助管理Service接口
|
||||
*
|
||||
* @author chenyj
|
||||
* @date 2024-08-27
|
||||
*/
|
||||
public interface IRzSubsidyInfoService extends IService<RzSubsidyInfo>
|
||||
{
|
||||
/**
|
||||
* 查询补助管理
|
||||
*
|
||||
* @param id 补助管理主键
|
||||
* @return 补助管理
|
||||
*/
|
||||
public RzSubsidyInfo selectRzSubsidyInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询补助管理列表
|
||||
*
|
||||
* @param rzSubsidy 补助管理
|
||||
* @return 补助管理集合
|
||||
*/
|
||||
public List<RzSubsidyInfo> selectRzSubsidyInfoList(RzSubsidyInfo rzSubsidy);
|
||||
|
||||
/**
|
||||
* 新增补助管理
|
||||
*
|
||||
* @param rzSubsidy 补助管理
|
||||
* @return 结果
|
||||
*/
|
||||
public AjaxResult insertRzSubsidyInfo(RzSubsidyInfo rzSubsidy);
|
||||
|
||||
/**
|
||||
* 修改补助管理
|
||||
*
|
||||
* @param rzSubsidy 补助管理
|
||||
* @return 结果
|
||||
*/
|
||||
public Boolean updateRzSubsidyInfo(RzSubsidyInfo rzSubsidy);
|
||||
|
||||
/**
|
||||
* 删除补助管理信息
|
||||
*
|
||||
* @param id 补助管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
public Boolean deleteRzSubsidyInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查看补助是否存在
|
||||
*
|
||||
* @param rzSubsidy 补助管理
|
||||
* @return 结果
|
||||
*/
|
||||
public Boolean existsSubsidyName(RzSubsidyInfo rzSubsidy);
|
||||
|
||||
public List<OptionVo> getOption();
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
package com.evo.personnelMatters.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.utils.ip.IpUtils;
|
||||
import com.evo.common.vo.OptionVo;
|
||||
import com.evo.personnelMatters.domain.RzSubsidyInfo;
|
||||
import com.evo.personnelMatters.mapper.RzSubsidyInfoMapper;
|
||||
import com.evo.personnelMatters.service.IRzSubsidyInfoService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:RzSubsidyInfoServiceImpl
|
||||
* @date: 2025年05月21日 14:55
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Service
|
||||
public class RzSubsidyInfoServiceImpl extends ServiceImpl<RzSubsidyInfoMapper, RzSubsidyInfo> implements IRzSubsidyInfoService {
|
||||
|
||||
|
||||
@Override
|
||||
public RzSubsidyInfo selectRzSubsidyInfoById(Long id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RzSubsidyInfo> selectRzSubsidyInfoList(RzSubsidyInfo rzSubsidy) {
|
||||
return list(new LambdaQueryWrapper<RzSubsidyInfo>().eq(RzSubsidyInfo::getDelFlag,0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult insertRzSubsidyInfo(RzSubsidyInfo rzSubsidy) {
|
||||
return (save(rzSubsidy) ? AjaxResult.success() : AjaxResult.error());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateRzSubsidyInfo(RzSubsidyInfo rzSubsidy) {
|
||||
return updateById(rzSubsidy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deleteRzSubsidyInfoById(Long id) {
|
||||
return getBaseMapper().update(new RzSubsidyInfo(), new UpdateWrapper<RzSubsidyInfo>().set("del_flag", 1).eq("id", id)) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean existsSubsidyName(RzSubsidyInfo rzSubsidy) {
|
||||
return getBaseMapper().selectCount(new LambdaQueryWrapper<RzSubsidyInfo>().eq(RzSubsidyInfo::getName, rzSubsidy.getName()).select(RzSubsidyInfo::getId)) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionVo> getOption() {
|
||||
return list(new LambdaQueryWrapper<RzSubsidyInfo>().eq(RzSubsidyInfo::getDelFlag,0).select(RzSubsidyInfo::getId, RzSubsidyInfo::getName)).stream().map(d ->new OptionVo(d.getId(), d.getName())).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@ -88,13 +88,13 @@ public class RzRestaurantStatisticsServiceImpl implements IRzRestaurantStatistic
|
||||
rzRestaurantStatistics.setName(sysStaff.getName());
|
||||
rzRestaurantStatistics.setMonth(DateUtils.getNowDate());
|
||||
//查询早午晚三餐消费
|
||||
for (SysStaffDetail sysStaffDetail : dt_list) {
|
||||
if(sysStaff.getUserId() == sysStaffDetail.getStaffId()){
|
||||
rzRestaurantStatistics.setBreakfastExpend(sysStaffDetail.getBreakfastExpend());
|
||||
rzRestaurantStatistics.setLunchExpend(sysStaffDetail.getLunchExpend());
|
||||
rzRestaurantStatistics.setSupperExpend(sysStaffDetail.getSupperExpend());
|
||||
}
|
||||
}
|
||||
// for (SysStaffDetail sysStaffDetail : dt_list) {
|
||||
// if(sysStaff.getUserId() == sysStaffDetail.getStaffId()){
|
||||
// rzRestaurantStatistics.setBreakfastExpend(sysStaffDetail.getBreakfastExpend());
|
||||
// rzRestaurantStatistics.setLunchExpend(sysStaffDetail.getLunchExpend());
|
||||
// rzRestaurantStatistics.setSupperExpend(sysStaffDetail.getSupperExpend());
|
||||
// }
|
||||
// }
|
||||
rzRestaurantStatistics.setCreateTime(DateUtils.getNowDate());
|
||||
rzRestaurantStatistics.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
rzRestaurantStatistics.setCreateBy("admin");
|
||||
|
||||
@ -3,6 +3,8 @@ package com.evo.system.controller;
|
||||
import java.util.List;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.evo.system.domain.SysStaff;
|
||||
import com.evo.system.domain.vo.SysStaffVo;
|
||||
import com.evo.system.service.ISysStaffService;
|
||||
|
||||
@ -49,6 +49,16 @@ public class SysStaffDetailController extends BaseController
|
||||
return success(sysStaffDetailService.selectSysStaffDetailById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取员工详情详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:staffDetail:query')")
|
||||
@GetMapping(value = "/byUser/{id}")
|
||||
public AjaxResult getInfobyUser(@PathVariable("id") Long id)
|
||||
{
|
||||
return success(sysStaffDetailService.selectSysStaffDetailByUserId(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改员工详情
|
||||
*/
|
||||
|
||||
@ -1,10 +1,14 @@
|
||||
package com.evo.system.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.evo.common.annotation.Excel;
|
||||
import com.evo.common.core.domain.BaseEntity;
|
||||
import org.springframework.data.redis.core.TimeToLive;
|
||||
|
||||
/**
|
||||
* 员工详情对象 sys_staff_detail
|
||||
@ -12,6 +16,7 @@ import com.evo.common.core.domain.BaseEntity;
|
||||
* @author evo
|
||||
* @date 2024-11-22
|
||||
*/
|
||||
@Data
|
||||
public class SysStaffDetail extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
@ -35,39 +40,39 @@ public class SysStaffDetail extends BaseEntity
|
||||
@Excel(name = "日薪")
|
||||
private BigDecimal dailyWage;
|
||||
|
||||
/** 时薪 */
|
||||
@Excel(name = "时薪")
|
||||
private BigDecimal hoursSalary;
|
||||
// /** 时薪 */
|
||||
// @Excel(name = "时薪")
|
||||
// private BigDecimal hoursSalary;
|
||||
//
|
||||
// /** 全勤奖 */
|
||||
// @Excel(name = "全勤奖")
|
||||
// private BigDecimal fullFrequentlySubsidies;
|
||||
//
|
||||
// /** 学历补助 */
|
||||
// @Excel(name = "学历补助")
|
||||
// private BigDecimal levelOfEducationSubsidies;
|
||||
//
|
||||
// /** 合同补助 */
|
||||
// @Excel(name = "合同补助")
|
||||
// private BigDecimal contractSubsidies;
|
||||
//
|
||||
// /** 工龄补助 */
|
||||
// @Excel(name = "工龄补助")
|
||||
// private BigDecimal senioritySubsidies;
|
||||
//
|
||||
// /** 社保补助 */
|
||||
// @Excel(name = "社保补助")
|
||||
// private BigDecimal socialSecuritySubsidies;
|
||||
// @Excel(name = "中班补助")
|
||||
// private BigDecimal middleSubsidies;
|
||||
//
|
||||
// /** 夜班补助 */
|
||||
// @Excel(name = "夜班补助")
|
||||
// private BigDecimal nightShiftSubsidies;
|
||||
|
||||
/** 全勤奖 */
|
||||
@Excel(name = "全勤奖")
|
||||
private BigDecimal fullFrequentlySubsidies;
|
||||
|
||||
/** 学历补助 */
|
||||
@Excel(name = "学历补助")
|
||||
private BigDecimal levelOfEducationSubsidies;
|
||||
|
||||
/** 合同补助 */
|
||||
@Excel(name = "合同补助")
|
||||
private BigDecimal contractSubsidies;
|
||||
|
||||
/** 工龄补助 */
|
||||
@Excel(name = "工龄补助")
|
||||
private BigDecimal senioritySubsidies;
|
||||
|
||||
/** 社保补助 */
|
||||
@Excel(name = "社保补助")
|
||||
private BigDecimal socialSecuritySubsidies;
|
||||
@Excel(name = "中班补助")
|
||||
private BigDecimal middleSubsidies;
|
||||
|
||||
/** 夜班补助 */
|
||||
@Excel(name = "夜班补助")
|
||||
private BigDecimal nightShiftSubsidies;
|
||||
|
||||
/** 夜餐补助 */
|
||||
@Excel(name = "夜餐补助")
|
||||
private BigDecimal dinnerSubsidies;
|
||||
// /** 夜餐补助 */
|
||||
// @Excel(name = "夜餐补助")
|
||||
// private BigDecimal dinnerSubsidies;
|
||||
|
||||
/** 固定补助 */
|
||||
@Excel(name = "固定补助")
|
||||
@ -77,17 +82,17 @@ public class SysStaffDetail extends BaseEntity
|
||||
@Excel(name = "其他补助")
|
||||
private BigDecimal otherSubsidies;
|
||||
|
||||
/** 早餐消费 */
|
||||
@Excel(name = "早餐消费")
|
||||
private BigDecimal breakfastExpend;
|
||||
|
||||
/** 午餐消费 */
|
||||
@Excel(name = "午餐消费")
|
||||
private BigDecimal lunchExpend;
|
||||
|
||||
/** 晚餐消费 */
|
||||
@Excel(name = "晚餐消费")
|
||||
private BigDecimal supperExpend;
|
||||
// /** 早餐消费 */
|
||||
// @Excel(name = "早餐消费")
|
||||
// private BigDecimal breakfastExpend;
|
||||
//
|
||||
// /** 午餐消费 */
|
||||
// @Excel(name = "午餐消费")
|
||||
// private BigDecimal lunchExpend;
|
||||
//
|
||||
// /** 晚餐消费 */
|
||||
// @Excel(name = "晚餐消费")
|
||||
// private BigDecimal supperExpend;
|
||||
|
||||
/** 离职扣款 */
|
||||
@Excel(name = "离职扣款")
|
||||
@ -162,431 +167,14 @@ public class SysStaffDetail extends BaseEntity
|
||||
/** 备注 */
|
||||
@Excel(name = "备注")
|
||||
private String remarks;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal OverWages; //加班工资
|
||||
@TableField(exist = false)
|
||||
private BigDecimal absenteeismSalary; //请假扣款
|
||||
@TableField(exist = false)
|
||||
private BigDecimal absenteeismSubsidies; //补助扣除
|
||||
|
||||
/** 删除标识 */
|
||||
private String delFlag;
|
||||
|
||||
public BigDecimal getMiddleSubsidies() {
|
||||
return middleSubsidies;
|
||||
}
|
||||
|
||||
public void setMiddleSubsidies(BigDecimal middleSubsidies) {
|
||||
this.middleSubsidies = middleSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getCountInsurance() {
|
||||
return countInsurance;
|
||||
}
|
||||
|
||||
public void setCountInsurance(BigDecimal countInsurance) {
|
||||
this.countInsurance = countInsurance;
|
||||
}
|
||||
|
||||
public BigDecimal getAbsenteeismSubsidies() {
|
||||
return absenteeismSubsidies;
|
||||
}
|
||||
|
||||
public void setAbsenteeismSubsidies(BigDecimal absenteeismSubsidies) {
|
||||
this.absenteeismSubsidies = absenteeismSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getAbsenteeismSalary() {
|
||||
return absenteeismSalary;
|
||||
}
|
||||
|
||||
public void setAbsenteeismSalary(BigDecimal absenteeismSalary) {
|
||||
this.absenteeismSalary = absenteeismSalary;
|
||||
}
|
||||
|
||||
public BigDecimal getOverWages() {
|
||||
return OverWages;
|
||||
}
|
||||
|
||||
public void setOverWages(BigDecimal overWages) {
|
||||
OverWages = overWages;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setStaffId(Long staffId)
|
||||
{
|
||||
this.staffId = staffId;
|
||||
}
|
||||
|
||||
public Long getStaffId()
|
||||
{
|
||||
return staffId;
|
||||
}
|
||||
public void setBasicSalary(BigDecimal basicSalary)
|
||||
{
|
||||
this.basicSalary = basicSalary;
|
||||
}
|
||||
|
||||
public BigDecimal getBasicSalary()
|
||||
{
|
||||
return basicSalary;
|
||||
}
|
||||
public void setJobsSalary(BigDecimal jobsSalary)
|
||||
{
|
||||
this.jobsSalary = jobsSalary;
|
||||
}
|
||||
|
||||
public BigDecimal getJobsSalary()
|
||||
{
|
||||
return jobsSalary;
|
||||
}
|
||||
public void setDailyWage(BigDecimal dailyWage)
|
||||
{
|
||||
this.dailyWage = dailyWage;
|
||||
}
|
||||
|
||||
public BigDecimal getDailyWage()
|
||||
{
|
||||
return dailyWage;
|
||||
}
|
||||
public void setHoursSalary(BigDecimal hoursSalary)
|
||||
{
|
||||
this.hoursSalary = hoursSalary;
|
||||
}
|
||||
|
||||
public BigDecimal getHoursSalary()
|
||||
{
|
||||
return hoursSalary;
|
||||
}
|
||||
public void setFullFrequentlySubsidies(BigDecimal fullFrequentlySubsidies)
|
||||
{
|
||||
this.fullFrequentlySubsidies = fullFrequentlySubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getFullFrequentlySubsidies()
|
||||
{
|
||||
return fullFrequentlySubsidies;
|
||||
}
|
||||
public void setLevelOfEducationSubsidies(BigDecimal levelOfEducationSubsidies)
|
||||
{
|
||||
this.levelOfEducationSubsidies = levelOfEducationSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getLevelOfEducationSubsidies()
|
||||
{
|
||||
return levelOfEducationSubsidies;
|
||||
}
|
||||
public void setContractSubsidies(BigDecimal contractSubsidies)
|
||||
{
|
||||
this.contractSubsidies = contractSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getContractSubsidies()
|
||||
{
|
||||
return contractSubsidies;
|
||||
}
|
||||
public void setSenioritySubsidies(BigDecimal senioritySubsidies)
|
||||
{
|
||||
this.senioritySubsidies = senioritySubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getSenioritySubsidies()
|
||||
{
|
||||
return senioritySubsidies;
|
||||
}
|
||||
public void setSocialSecuritySubsidies(BigDecimal socialSecuritySubsidies)
|
||||
{
|
||||
this.socialSecuritySubsidies = socialSecuritySubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getSocialSecuritySubsidies()
|
||||
{
|
||||
return socialSecuritySubsidies;
|
||||
}
|
||||
public void setNightShiftSubsidies(BigDecimal nightShiftSubsidies)
|
||||
{
|
||||
this.nightShiftSubsidies = nightShiftSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getNightShiftSubsidies()
|
||||
{
|
||||
return nightShiftSubsidies;
|
||||
}
|
||||
public void setDinnerSubsidies(BigDecimal dinnerSubsidies)
|
||||
{
|
||||
this.dinnerSubsidies = dinnerSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getDinnerSubsidies()
|
||||
{
|
||||
return dinnerSubsidies;
|
||||
}
|
||||
public void setFixedAllowance(BigDecimal fixedAllowance)
|
||||
{
|
||||
this.fixedAllowance = fixedAllowance;
|
||||
}
|
||||
|
||||
public BigDecimal getFixedAllowance()
|
||||
{
|
||||
return fixedAllowance;
|
||||
}
|
||||
public void setOtherSubsidies(BigDecimal otherSubsidies)
|
||||
{
|
||||
this.otherSubsidies = otherSubsidies;
|
||||
}
|
||||
|
||||
public BigDecimal getOtherSubsidies()
|
||||
{
|
||||
return otherSubsidies;
|
||||
}
|
||||
public void setBreakfastExpend(BigDecimal breakfastExpend)
|
||||
{
|
||||
this.breakfastExpend = breakfastExpend;
|
||||
}
|
||||
|
||||
public BigDecimal getBreakfastExpend()
|
||||
{
|
||||
return breakfastExpend;
|
||||
}
|
||||
public void setLunchExpend(BigDecimal lunchExpend)
|
||||
{
|
||||
this.lunchExpend = lunchExpend;
|
||||
}
|
||||
|
||||
public BigDecimal getLunchExpend()
|
||||
{
|
||||
return lunchExpend;
|
||||
}
|
||||
public void setSupperExpend(BigDecimal supperExpend)
|
||||
{
|
||||
this.supperExpend = supperExpend;
|
||||
}
|
||||
|
||||
public BigDecimal getSupperExpend()
|
||||
{
|
||||
return supperExpend;
|
||||
}
|
||||
public void setSubsidyDeductMoney(BigDecimal subsidyDeductMoney)
|
||||
{
|
||||
this.subsidyDeductMoney = subsidyDeductMoney;
|
||||
}
|
||||
|
||||
public BigDecimal getSubsidyDeductMoney()
|
||||
{
|
||||
return subsidyDeductMoney;
|
||||
}
|
||||
public void setDeductions(BigDecimal deductions)
|
||||
{
|
||||
this.deductions = deductions;
|
||||
}
|
||||
|
||||
public BigDecimal getDeductions()
|
||||
{
|
||||
return deductions;
|
||||
}
|
||||
public void setEndowmentInsurance(BigDecimal endowmentInsurance)
|
||||
{
|
||||
this.endowmentInsurance = endowmentInsurance;
|
||||
}
|
||||
|
||||
public BigDecimal getEndowmentInsurance()
|
||||
{
|
||||
return endowmentInsurance;
|
||||
}
|
||||
public void setMedicalInsurance(BigDecimal medicalInsurance)
|
||||
{
|
||||
this.medicalInsurance = medicalInsurance;
|
||||
}
|
||||
|
||||
public BigDecimal getMedicalInsurance()
|
||||
{
|
||||
return medicalInsurance;
|
||||
}
|
||||
public void setEmploymentInjuryInsurance(BigDecimal employmentInjuryInsurance)
|
||||
{
|
||||
this.employmentInjuryInsurance = employmentInjuryInsurance;
|
||||
}
|
||||
|
||||
public BigDecimal getEmploymentInjuryInsurance()
|
||||
{
|
||||
return employmentInjuryInsurance;
|
||||
}
|
||||
public void setMaternityInsurance(BigDecimal maternityInsurance)
|
||||
{
|
||||
this.maternityInsurance = maternityInsurance;
|
||||
}
|
||||
|
||||
public BigDecimal getMaternityInsurance()
|
||||
{
|
||||
return maternityInsurance;
|
||||
}
|
||||
public void setUnemploymentInsurance(BigDecimal unemploymentInsurance)
|
||||
{
|
||||
this.unemploymentInsurance = unemploymentInsurance;
|
||||
}
|
||||
|
||||
public BigDecimal getUnemploymentInsurance()
|
||||
{
|
||||
return unemploymentInsurance;
|
||||
}
|
||||
public void setAccumulationFund(BigDecimal accumulationFund)
|
||||
{
|
||||
this.accumulationFund = accumulationFund;
|
||||
}
|
||||
|
||||
public BigDecimal getAccumulationFund()
|
||||
{
|
||||
return accumulationFund;
|
||||
}
|
||||
public void setChildrenEducation(BigDecimal childrenEducation)
|
||||
{
|
||||
this.childrenEducation = childrenEducation;
|
||||
}
|
||||
|
||||
public BigDecimal getChildrenEducation()
|
||||
{
|
||||
return childrenEducation;
|
||||
}
|
||||
public void setSupportTheOld(BigDecimal supportTheOld)
|
||||
{
|
||||
this.supportTheOld = supportTheOld;
|
||||
}
|
||||
|
||||
public BigDecimal getSupportTheOld()
|
||||
{
|
||||
return supportTheOld;
|
||||
}
|
||||
public void setHousingLoans(BigDecimal housingLoans)
|
||||
{
|
||||
this.housingLoans = housingLoans;
|
||||
}
|
||||
|
||||
public BigDecimal getHousingLoans()
|
||||
{
|
||||
return housingLoans;
|
||||
}
|
||||
public void setHousingRents(BigDecimal housingRents)
|
||||
{
|
||||
this.housingRents = housingRents;
|
||||
}
|
||||
|
||||
public BigDecimal getHousingRents()
|
||||
{
|
||||
return housingRents;
|
||||
}
|
||||
public void setAdultEducation(BigDecimal adultEducation)
|
||||
{
|
||||
this.adultEducation = adultEducation;
|
||||
}
|
||||
|
||||
public BigDecimal getAdultEducation()
|
||||
{
|
||||
return adultEducation;
|
||||
}
|
||||
public void setTreatmentForSeriousDisease(BigDecimal treatmentForSeriousDisease)
|
||||
{
|
||||
this.treatmentForSeriousDisease = treatmentForSeriousDisease;
|
||||
}
|
||||
|
||||
public BigDecimal getTreatmentForSeriousDisease()
|
||||
{
|
||||
return treatmentForSeriousDisease;
|
||||
}
|
||||
public void setSpecialDeduction(BigDecimal specialDeduction)
|
||||
{
|
||||
this.specialDeduction = specialDeduction;
|
||||
}
|
||||
|
||||
public BigDecimal getSpecialDeduction()
|
||||
{
|
||||
return specialDeduction;
|
||||
}
|
||||
public void setTotalWages(BigDecimal totalWages)
|
||||
{
|
||||
this.totalWages = totalWages;
|
||||
}
|
||||
|
||||
public BigDecimal getTotalWages()
|
||||
{
|
||||
return totalWages;
|
||||
}
|
||||
public void setAggregatePersonalIncomeTax(BigDecimal aggregatePersonalIncomeTax)
|
||||
{
|
||||
this.aggregatePersonalIncomeTax = aggregatePersonalIncomeTax;
|
||||
}
|
||||
|
||||
public BigDecimal getAggregatePersonalIncomeTax()
|
||||
{
|
||||
return aggregatePersonalIncomeTax;
|
||||
}
|
||||
public void setRemarks(String remarks)
|
||||
{
|
||||
this.remarks = remarks;
|
||||
}
|
||||
|
||||
public String getRemarks()
|
||||
{
|
||||
return remarks;
|
||||
}
|
||||
public void setDelFlag(String delFlag)
|
||||
{
|
||||
this.delFlag = delFlag;
|
||||
}
|
||||
|
||||
public String getDelFlag()
|
||||
{
|
||||
return delFlag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("staffId", getStaffId())
|
||||
.append("basicSalary", getBasicSalary())
|
||||
.append("jobsSalary", getJobsSalary())
|
||||
.append("dailyWage", getDailyWage())
|
||||
.append("hoursSalary", getHoursSalary())
|
||||
.append("fullFrequentlySubsidies", getFullFrequentlySubsidies())
|
||||
.append("levelOfEducationSubsidies", getLevelOfEducationSubsidies())
|
||||
.append("contractSubsidies", getContractSubsidies())
|
||||
.append("senioritySubsidies", getSenioritySubsidies())
|
||||
.append("socialSecuritySubsidies", getSocialSecuritySubsidies())
|
||||
.append("nightShiftSubsidies", getNightShiftSubsidies())
|
||||
.append("dinnerSubsidies", getDinnerSubsidies())
|
||||
.append("fixedAllowance", getFixedAllowance())
|
||||
.append("otherSubsidies", getOtherSubsidies())
|
||||
.append("breakfastExpend", getBreakfastExpend())
|
||||
.append("lunchExpend", getLunchExpend())
|
||||
.append("supperExpend", getSupperExpend())
|
||||
.append("subsidyDeductMoney", getSubsidyDeductMoney())
|
||||
.append("deductions", getDeductions())
|
||||
.append("endowmentInsurance", getEndowmentInsurance())
|
||||
.append("medicalInsurance", getMedicalInsurance())
|
||||
.append("employmentInjuryInsurance", getEmploymentInjuryInsurance())
|
||||
.append("maternityInsurance", getMaternityInsurance())
|
||||
.append("unemploymentInsurance", getUnemploymentInsurance())
|
||||
.append("accumulationFund", getAccumulationFund())
|
||||
.append("childrenEducation", getChildrenEducation())
|
||||
.append("supportTheOld", getSupportTheOld())
|
||||
.append("housingLoans", getHousingLoans())
|
||||
.append("housingRents", getHousingRents())
|
||||
.append("adultEducation", getAdultEducation())
|
||||
.append("treatmentForSeriousDisease", getTreatmentForSeriousDisease())
|
||||
.append("specialDeduction", getSpecialDeduction())
|
||||
.append("totalWages", getTotalWages())
|
||||
.append("aggregatePersonalIncomeTax", getAggregatePersonalIncomeTax())
|
||||
.append("remarks", getRemarks())
|
||||
.append("delFlag", getDelFlag())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,17 +1,14 @@
|
||||
package com.evo.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evo.common.core.domain.entity.RzUpload;
|
||||
import com.evo.common.core.domain.entity.SysDept;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 部门管理 数据层
|
||||
* 文件管理 数据层
|
||||
*
|
||||
* @author evo
|
||||
*/
|
||||
public interface RzUploadMapper
|
||||
public interface RzUploadMapper extends BaseMapper<RzUpload>
|
||||
{
|
||||
/**
|
||||
* 新增文件信息
|
||||
@ -29,10 +26,4 @@ public interface RzUploadMapper
|
||||
* @return
|
||||
*/
|
||||
public int updateUploadValidByBusinessId(RzUpload upload);
|
||||
/***
|
||||
* 根据id查询
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public RzUpload selectById(Long id);
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.evo.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evo.system.domain.SysStaffDetail;
|
||||
|
||||
import java.util.List;
|
||||
@ -10,7 +11,7 @@ import java.util.List;
|
||||
* @author evo
|
||||
* @date 2024-11-22
|
||||
*/
|
||||
public interface SysStaffDetailMapper
|
||||
public interface SysStaffDetailMapper extends BaseMapper<SysStaffDetail>
|
||||
{
|
||||
/**
|
||||
* 查询员工详情
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.evo.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evo.system.domain.SysStaff;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@ -12,7 +13,7 @@ import java.util.List;
|
||||
* @author evo
|
||||
* @date 2024-11-21
|
||||
*/
|
||||
public interface SysStaffMapper
|
||||
public interface SysStaffMapper extends BaseMapper<SysStaff>
|
||||
{
|
||||
/**
|
||||
* 查询员工管理
|
||||
|
||||
@ -20,6 +20,13 @@ public interface ISysStaffDetailService
|
||||
*/
|
||||
public SysStaffDetail selectSysStaffDetailById(Long id);
|
||||
|
||||
/**
|
||||
* 查询员工详情
|
||||
*
|
||||
* @param id 员工详情主键
|
||||
* @return 员工详情
|
||||
*/
|
||||
public SysStaffDetail selectSysStaffDetailByUserId(Long id);
|
||||
/**
|
||||
* 查询员工详情列表
|
||||
*
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.evo.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evo.common.annotation.DataScope;
|
||||
import com.evo.common.constant.UserConstants;
|
||||
import com.evo.common.core.domain.TreeSelect;
|
||||
@ -31,14 +32,12 @@ import java.util.stream.Collectors;
|
||||
* @author evo
|
||||
*/
|
||||
@Service
|
||||
public class RzUploadServiceImpl implements RzUploadService
|
||||
public class RzUploadServiceImpl extends ServiceImpl<RzUploadMapper, RzUpload> implements RzUploadService
|
||||
{
|
||||
@Resource
|
||||
private RzUploadMapper rzUploadMapper;
|
||||
|
||||
@Override
|
||||
public RzUpload selectById(Long id) {
|
||||
return rzUploadMapper.selectById(id);
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -49,7 +48,7 @@ public class RzUploadServiceImpl implements RzUploadService
|
||||
@Override
|
||||
public int insertUpload(RzUpload upload)
|
||||
{
|
||||
return rzUploadMapper.insertUpload(upload);
|
||||
return getBaseMapper().insertUpload(upload);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,9 +59,9 @@ public class RzUploadServiceImpl implements RzUploadService
|
||||
@Override
|
||||
public int updateUploadBusinessId(RzUpload upload)
|
||||
{
|
||||
rzUploadMapper.updateUploadBusinessId(upload);
|
||||
getBaseMapper().updateUploadBusinessId(upload);
|
||||
upload.setValid("valid");
|
||||
rzUploadMapper.updateUploadValidByBusinessId(upload);
|
||||
getBaseMapper().updateUploadValidByBusinessId(upload);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@ -2,12 +2,19 @@ package com.evo.system.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evo.common.constant.Constants;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.core.domain.entity.SysDictData;
|
||||
import com.evo.common.utils.DateUtils;
|
||||
import com.evo.common.utils.SecurityUtils;
|
||||
import com.evo.common.utils.StringUtils;
|
||||
import com.evo.personnelMatters.domain.RzSubsidyInfo;
|
||||
import com.evo.personnelMatters.service.IRzSubsidyInfoService;
|
||||
import com.evo.personnelMatters.service.impl.RzSubsidyInfoServiceImpl;
|
||||
import com.evo.restaurant.domain.RzRestaurantStatistics;
|
||||
import com.evo.restaurant.mapper.RzRestaurantStatisticsMapper;
|
||||
import com.evo.system.domain.SysStaff;
|
||||
@ -16,6 +23,8 @@ import com.evo.system.mapper.SysDictDataMapper;
|
||||
import com.evo.system.mapper.SysStaffDetailMapper;
|
||||
import com.evo.system.mapper.SysStaffMapper;
|
||||
import com.evo.system.service.ISysStaffDetailService;
|
||||
import com.evo.system.service.ISysStaffService;
|
||||
import com.evo.system.utils.SubsidyCalculationUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@ -26,17 +35,16 @@ import javax.annotation.Resource;
|
||||
* @date 2024-11-22
|
||||
*/
|
||||
@Service
|
||||
public class SysStaffDetailServiceImpl implements ISysStaffDetailService
|
||||
public class SysStaffDetailServiceImpl extends ServiceImpl<SysStaffDetailMapper, SysStaffDetail> implements ISysStaffDetailService
|
||||
{
|
||||
@Resource
|
||||
private SysStaffDetailMapper sysStaffDetailMapper;
|
||||
@Resource
|
||||
private SysStaffMapper sysStaffMapper; //员工信息
|
||||
private ISysStaffService sysStaffService; //员工信息
|
||||
@Resource
|
||||
private SysDictDataMapper sysDictDataMapper; //数据字典
|
||||
@Resource
|
||||
private RzRestaurantStatisticsMapper rzRestaurantStatisticsMapper; //餐饮统计
|
||||
|
||||
@Resource
|
||||
private IRzSubsidyInfoService rzSubsidyInfoService;
|
||||
/**
|
||||
* 查询员工详情
|
||||
*
|
||||
@ -46,7 +54,12 @@ public class SysStaffDetailServiceImpl implements ISysStaffDetailService
|
||||
@Override
|
||||
public SysStaffDetail selectSysStaffDetailById(Long id)
|
||||
{
|
||||
return sysStaffDetailMapper.selectSysStaffDetailById(id);
|
||||
return getBaseMapper().selectSysStaffDetailById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysStaffDetail selectSysStaffDetailByUserId(Long id) {
|
||||
return SubsidyCalculationUtils.subsidyCalculation(sysStaffService.selectSysStaffByUserId(id),getOne(new LambdaQueryWrapper<SysStaffDetail>().eq(SysStaffDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(SysStaffDetail::getStaffId, id).orderByDesc(SysStaffDetail::getCreateTime), false), rzSubsidyInfoService.list());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -58,7 +71,12 @@ public class SysStaffDetailServiceImpl implements ISysStaffDetailService
|
||||
@Override
|
||||
public List<SysStaffDetail> selectSysStaffDetailList(SysStaffDetail sysStaffDetail)
|
||||
{
|
||||
return sysStaffDetailMapper.selectSysStaffDetailList(sysStaffDetail);
|
||||
SysStaff sysStaff = sysStaffService.selectSysStaffByUserId(sysStaffDetail.getStaffId());
|
||||
List<RzSubsidyInfo> subsidyInfoList = rzSubsidyInfoService.list();
|
||||
List<SysStaffDetail> list = getBaseMapper().selectSysStaffDetailList(sysStaffDetail).stream().map(d-> {
|
||||
return SubsidyCalculationUtils.subsidyCalculation(sysStaff,d, subsidyInfoList);
|
||||
}).collect(Collectors.toList());
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -73,64 +91,64 @@ public class SysStaffDetailServiceImpl implements ISysStaffDetailService
|
||||
//餐饮
|
||||
List<SysDictData> cy_list = sysDictDataMapper.selectDictDataByType(Constants.SYS_RESTAUTANT);
|
||||
//根据员工ID查询员工信息
|
||||
SysStaff sysStaff = sysStaffMapper.selectSysStaffByUserId(sysStaffDetail.getStaffId());
|
||||
SysStaff sysStaff = sysStaffService.selectSysStaffByUserId(sysStaffDetail.getStaffId());
|
||||
//判断员工的住宿和工资类型填写餐补费用,住宿,早,午,晚:2,3,3
|
||||
if("是".equals(sysStaff.getZsFlag())){
|
||||
for (SysDictData sysDictData : cy_list) {
|
||||
if("个人早餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
}
|
||||
}else {
|
||||
//非住宿,月工资
|
||||
if(StringUtils.isNotNull(sysStaffDetail.getBasicSalary())){
|
||||
for (SysDictData sysDictData : cy_list) {
|
||||
if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for (SysDictData sysDictData : cy_list) {
|
||||
if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("晚餐消费".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// if("是".equals(sysStaff.getZsFlag())){
|
||||
// for (SysDictData sysDictData : cy_list) {
|
||||
// if("个人早餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// }
|
||||
// }else {
|
||||
// //非住宿,月工资
|
||||
// if(StringUtils.isNotNull(sysStaffDetail.getBasicSalary())){
|
||||
// for (SysDictData sysDictData : cy_list) {
|
||||
// if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// }
|
||||
// }else{
|
||||
// for (SysDictData sysDictData : cy_list) {
|
||||
// if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("晚餐消费".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
sysStaffDetail.setUpdateTime(DateUtils.getNowDate());
|
||||
sysStaffDetail.setUpdateBy(SecurityUtils.getUsername());
|
||||
//根据员工ID查询当前餐饮详情,反写个人消费信息
|
||||
RzRestaurantStatistics rzRestaurantStatistics = rzRestaurantStatisticsMapper.selectRzRestaurantStatisticsByUserIdAndDate(sysStaff.getUserId(),DateUtils.getNowDate());
|
||||
if(StringUtils.isNotNull(rzRestaurantStatistics)){
|
||||
rzRestaurantStatistics.setBreakfastExpend(sysStaffDetail.getBreakfastExpend());
|
||||
rzRestaurantStatistics.setLunchExpend(sysStaffDetail.getLunchExpend());
|
||||
rzRestaurantStatistics.setSupperExpend(sysStaffDetail.getSupperExpend());
|
||||
rzRestaurantStatisticsMapper.updateRzRestaurantStatistics(rzRestaurantStatistics);
|
||||
}
|
||||
return sysStaffDetailMapper.updateSysStaffDetail(sysStaffDetail);
|
||||
// if(StringUtils.isNotNull(rzRestaurantStatistics)){
|
||||
// rzRestaurantStatistics.setBreakfastExpend(sysStaffDetail.getBreakfastExpend());
|
||||
// rzRestaurantStatistics.setLunchExpend(sysStaffDetail.getLunchExpend());
|
||||
// rzRestaurantStatistics.setSupperExpend(sysStaffDetail.getSupperExpend());
|
||||
// rzRestaurantStatisticsMapper.updateRzRestaurantStatistics(rzRestaurantStatistics);
|
||||
// }
|
||||
return getBaseMapper().updateSysStaffDetail(sysStaffDetail);
|
||||
}
|
||||
|
||||
|
||||
public AjaxResult clearAllSubsidy(){
|
||||
int i = sysStaffDetailMapper.clearAllSubsidy();
|
||||
int i = getBaseMapper().clearAllSubsidy();
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
|
||||
@ -6,12 +6,16 @@ import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Period;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evo.attendance.domain.RzAttendance;
|
||||
import com.evo.attendance.domain.RzAttendanceStatistical;
|
||||
import com.evo.attendance.mapper.RzAttendanceMapper;
|
||||
@ -22,6 +26,7 @@ import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.core.domain.entity.RzUpload;
|
||||
import com.evo.common.core.domain.entity.SysDept;
|
||||
import com.evo.common.core.domain.entity.SysDictData;
|
||||
import com.evo.common.utils.Collections;
|
||||
import com.evo.common.utils.DateUtils;
|
||||
import com.evo.common.utils.SecurityUtils;
|
||||
import com.evo.common.utils.StringUtils;
|
||||
@ -47,6 +52,7 @@ import com.evo.system.service.ISysStaffService;
|
||||
import com.evo.system.service.RzUploadService;
|
||||
import com.evo.utils.DateUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
@ -65,10 +71,8 @@ import javax.annotation.Resource;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SysStaffServiceImpl implements ISysStaffService
|
||||
public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> implements ISysStaffService
|
||||
{
|
||||
@Resource
|
||||
private SysStaffMapper sysStaffMapper;
|
||||
@Resource
|
||||
private SysStaffDetailMapper sysStaffDetailMapper; //员工详情
|
||||
@Resource
|
||||
@ -96,7 +100,11 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@Override
|
||||
public SysStaff selectSysStaffByUserId(Long userId)
|
||||
{
|
||||
return sysStaffMapper.selectSysStaffByUserId(userId);
|
||||
SysStaff sysStaff = getBaseMapper().selectOne(new LambdaQueryWrapper<SysStaff>().eq(SysStaff::getUserId, userId));
|
||||
if(StringUtils.isNotEmpty(sysStaff.getSubsidys())){
|
||||
sysStaff.setSubsidyList(Collections.asList(sysStaff.getSubsidys().split(",")).stream().map(Long::valueOf).collect(Collectors.toList()));
|
||||
}
|
||||
return sysStaff;
|
||||
}
|
||||
/**
|
||||
* 查询员工管理列表
|
||||
@ -108,7 +116,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@DataScope(deptAlias = "d")
|
||||
public List<SysStaff> selectSysStaffList(SysStaff sysStaff)
|
||||
{
|
||||
List<SysStaff> res_list = sysStaffMapper.selectSysStaffList(sysStaff);
|
||||
List<SysStaff> res_list = getBaseMapper().selectSysStaffList(sysStaff);
|
||||
for (SysStaff staff : res_list) {
|
||||
staff.setDeptName(deptMapper.selectDeptById(staff.getDeptId()).getDeptName());
|
||||
}
|
||||
@ -125,7 +133,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
public AjaxResult insertSysStaff(SysStaff sysStaff)
|
||||
{
|
||||
//根据省份证号查询是否已经录入
|
||||
SysStaff p_staff = sysStaffMapper.queryysStaffByIdCard(sysStaff.getIdCard());
|
||||
SysStaff p_staff = getBaseMapper().queryysStaffByIdCard(sysStaff.getIdCard());
|
||||
if(StringUtils.isNotNull(p_staff)){
|
||||
return AjaxResult.error("此人录入过!!");
|
||||
}
|
||||
@ -151,7 +159,12 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
sysStaff.setCreateTime(DateUtils.getNowDate());
|
||||
sysStaff.setCreateBy(SecurityUtils.getUsername());
|
||||
sysStaff.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
int i = sysStaffMapper.insertSysStaff(sysStaff);
|
||||
|
||||
if(CollectionUtils.isNotEmpty(sysStaff.getSubsidyList())){
|
||||
sysStaff.setSubsidys(sysStaff.getSubsidyList().stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
}
|
||||
|
||||
int i = getBaseMapper().insertSysStaff(sysStaff);
|
||||
if(i < 1){
|
||||
return AjaxResult.error("员工添加失败");
|
||||
}
|
||||
@ -159,7 +172,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
//员工详情
|
||||
createStaffDetail(sysStaff);
|
||||
//打卡统计,打卡详情
|
||||
createRzAttendance(sysStaff);
|
||||
createRzAttendance(sysStaff, getMonthAndDays());
|
||||
//处理餐饮信息
|
||||
createRestaurantStatistics(sysStaff);
|
||||
//处理考勤机相关信息
|
||||
@ -228,48 +241,8 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
if(StringUtils.isNull(sysStaffDetail)){
|
||||
sysStaffDetail = new SysStaffDetail();
|
||||
}
|
||||
|
||||
//合同补助
|
||||
BigDecimal contractSubsidies = new BigDecimal(0);
|
||||
//学历补助
|
||||
BigDecimal levelOfEducationSubsidies = new BigDecimal(0);
|
||||
//新农合补助
|
||||
BigDecimal socialSecuritySubsidies = new BigDecimal(0);
|
||||
//正式员工
|
||||
if("1".equals(sysStaff.getStatus())){
|
||||
//查询学历
|
||||
String dictLabel = sysDictDataMapper.selectDictLabel(Constants.SYS_LEVEL, sysStaff.getLevel());
|
||||
//学历补助
|
||||
if(org.apache.commons.lang3.StringUtils.isNotEmpty(dictLabel)){
|
||||
RzSubsidy rzSubsidy = rzSubsidyMapper.selectRzSubsidyByName(dictLabel);
|
||||
if(StringUtils.isNotNull(rzSubsidy)){
|
||||
levelOfEducationSubsidies= rzSubsidy.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
//合同补助 1年期合同
|
||||
if("1".equals(sysStaff.getContractType())){
|
||||
contractSubsidies = new BigDecimal(Constants.SYS_CONTRACT_0);
|
||||
}else if("3".equals(sysStaff.getContractType())){ //3年期合同
|
||||
contractSubsidies = new BigDecimal(Constants.SYS_CONTRACT_1);
|
||||
}
|
||||
|
||||
//社保补助 判断是否是新农合 ,是社保补助400元
|
||||
if("新农合".equals(sysStaff.getSocialType()) && "是".equals(sysStaff.getSocialSubsidy())){
|
||||
socialSecuritySubsidies = new BigDecimal(Constants.SYS_SOCIAL_SUBSIDIES);
|
||||
}
|
||||
}
|
||||
|
||||
sysStaffDetail.setLevelOfEducationSubsidies(levelOfEducationSubsidies);
|
||||
sysStaffDetail.setContractSubsidies(contractSubsidies);
|
||||
sysStaffDetail.setSocialSecuritySubsidies(socialSecuritySubsidies);
|
||||
|
||||
|
||||
if(StringUtils.isNull(sysStaffDetail.getStaffId())){
|
||||
sysStaffDetail.setStaffId(sysStaff.getUserId());
|
||||
//sysStaffDetail.setSenioritySubsidies(new BigDecimal(Constants.SYS_SENIORITY_SUBSIDIES));
|
||||
//关于工龄补贴, 初始新增员工, 工龄补贴全部为0
|
||||
sysStaffDetail.setSenioritySubsidies(new BigDecimal(0));
|
||||
sysStaffDetail.setCreateBy(SecurityUtils.getUsername());
|
||||
sysStaffDetail.setCreateTime(DateUtils.getNowDate());
|
||||
sysStaffDetail.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
@ -284,7 +257,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
* 创建打卡考勤信息
|
||||
* @param sysStaff
|
||||
*/
|
||||
private void createRzAttendance(SysStaff sysStaff){
|
||||
private void createRzAttendance(SysStaff sysStaff, List<String> dayList){
|
||||
//根据员工ID查询当月的统计信息统计信息
|
||||
RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(sysStaff.getUserId(),DateUtils.getNowDate());
|
||||
if(StringUtils.isNotNull(rzAttendanceStatistical)){
|
||||
@ -317,26 +290,16 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
rzAttendanceStatistical.setCreateTime(DateUtils.getNowDate());
|
||||
rzAttendanceStatisticalMapper.insertRzAttendanceStatistical(rzAttendanceStatistical);
|
||||
//新增考勤详情
|
||||
//获取当月天数
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
||||
SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM");
|
||||
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd");
|
||||
RzAttendance rzAttendance = null;
|
||||
List<RzAttendance> pa_list = new ArrayList<RzAttendance>();
|
||||
for(int p=1;p<=days;p++){
|
||||
for(String day: dayList){
|
||||
rzAttendance = new RzAttendance();
|
||||
rzAttendance.setDeptId(sysStaff.getDeptId());
|
||||
rzAttendance.setName(sysStaff.getName());
|
||||
rzAttendance.setStaffId(sysStaff.getUserId());
|
||||
try{
|
||||
String rq = sdfm.format(DateUtils.getNowDate());
|
||||
if(p < 10){
|
||||
rq += "-" + Constants.SEIZE_A_SEAT_0 + p;
|
||||
}else {
|
||||
rq += "-" + p;
|
||||
}
|
||||
rzAttendance.setAttendanceDate(sdfd.parse(rq));
|
||||
rzAttendance.setAttendanceDate(sdfd.parse(day));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -347,6 +310,27 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
}
|
||||
rzAttendanceMapper.insertBatchRzAttendance(pa_list);
|
||||
}
|
||||
|
||||
public List<String> getMonthAndDays(){
|
||||
List<String> dayList = new ArrayList<String>();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
||||
SimpleDateFormat sdfm = new SimpleDateFormat("yyyy-MM");
|
||||
for(int p=1;p<=days;p++){
|
||||
try{
|
||||
String rq = sdfm.format(DateUtils.getNowDate())+"-";
|
||||
if(p < 10){
|
||||
rq += Constants.SEIZE_A_SEAT_0 + p;
|
||||
}else {
|
||||
rq += p;
|
||||
}
|
||||
dayList.add(rq);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return dayList;
|
||||
}
|
||||
/**
|
||||
* 创建餐饮统计
|
||||
* @param sysStaff
|
||||
@ -368,9 +352,9 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
rzRestaurantStatistics.setMonth(DateUtils.getNowDate());
|
||||
SysStaffDetail sysStaffDetail = sysStaffDetailMapper.selectSysStaffDetailByStaffId(sysStaff.getUserId());
|
||||
if(StringUtils.isNotNull(sysStaffDetail)){
|
||||
rzRestaurantStatistics.setBreakfastExpend(sysStaffDetail.getBreakfastExpend());
|
||||
rzRestaurantStatistics.setLunchExpend(sysStaffDetail.getLunchExpend());
|
||||
rzRestaurantStatistics.setSupperExpend(sysStaffDetail.getSupperExpend());
|
||||
// rzRestaurantStatistics.setBreakfastExpend(sysStaffDetail.getBreakfastExpend());
|
||||
// rzRestaurantStatistics.setLunchExpend(sysStaffDetail.getLunchExpend());
|
||||
// rzRestaurantStatistics.setSupperExpend(sysStaffDetail.getSupperExpend());
|
||||
}
|
||||
rzRestaurantStatistics.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
rzRestaurantStatistics.setCreateBy(SecurityUtils.getUsername());
|
||||
@ -423,12 +407,16 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@Transactional
|
||||
public AjaxResult updateSysStaff(SysStaff sysStaff)
|
||||
{
|
||||
|
||||
if(CollectionUtils.isNotEmpty(sysStaff.getSubsidyList())){
|
||||
sysStaff.setSubsidys(sysStaff.getSubsidyList().stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
}
|
||||
//判断是否有离职时间,有则为离职
|
||||
if(StringUtils.isNotNull(sysStaff.getQuitDate())){
|
||||
//离职时间小于当前,说明离职了
|
||||
if(sysStaff.getQuitDate().getTime() < DateUtils.getNowDate().getTime()){
|
||||
sysStaff.setStatus("-1");
|
||||
int i = sysStaffMapper.updateSysStaff(sysStaff);
|
||||
int i = getBaseMapper().updateSysStaff(sysStaff);
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
@ -440,7 +428,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
//离职时间小于当前,说明离职了
|
||||
if(sysStaff.getRegularDate().getTime() < DateUtils.getNowDate().getTime()){
|
||||
sysStaff.setStatus("1");
|
||||
int i = sysStaffMapper.updateSysStaff(sysStaff);
|
||||
int i = getBaseMapper().updateSysStaff(sysStaff);
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
@ -456,14 +444,14 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
sysStaff.setSex("0");
|
||||
}
|
||||
//根据员工ID查询原来的数据信息
|
||||
SysStaff old_staff = sysStaffMapper.selectSysStaffByUserId(sysStaff.getUserId());
|
||||
SysStaff old_staff = getBaseMapper().selectSysStaffByUserId(sysStaff.getUserId());
|
||||
//判断员工更换公司
|
||||
if(!old_staff.getCompanyName().equals(sysStaff.getCompanyName())){
|
||||
//保存旧公司数据存档
|
||||
old_staff.setDelFlag(Constants.DELETE_FLAG_1);
|
||||
old_staff.setUpdateBy(SecurityUtils.getUsername());
|
||||
old_staff.setUpdateTime(DateUtils.getNowDate());
|
||||
int i = sysStaffMapper.updateSysStaff(old_staff);
|
||||
int i = getBaseMapper().updateSysStaff(old_staff);
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
@ -486,14 +474,14 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
|
||||
sysStaff.setUpdateTime(DateUtils.getNowDate());
|
||||
sysStaff.setUpdateBy(SecurityUtils.getUsername());
|
||||
int i= sysStaffMapper.updateSysStaff(sysStaff);
|
||||
int i= getBaseMapper().updateSysStaff(sysStaff);
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
//修改员工详情
|
||||
createStaffDetail(sysStaff);
|
||||
//修改考勤统计
|
||||
createRzAttendance(sysStaff);
|
||||
createRzAttendance(sysStaff, getMonthAndDays());
|
||||
//餐饮统计
|
||||
createRestaurantStatistics(sysStaff);
|
||||
}
|
||||
@ -504,12 +492,12 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
*/
|
||||
private void createNewStaff(SysStaff sysStaff){
|
||||
//根据身份证查询员工是否已经入职过现在的公司
|
||||
SysStaff param_staff = sysStaffMapper.queryysStaffByIdCardAndDeptId(sysStaff.getIdCard(),sysStaff.getDeptId());
|
||||
SysStaff param_staff = getBaseMapper().queryysStaffByIdCardAndDeptId(sysStaff.getIdCard(),sysStaff.getDeptId());
|
||||
if(StringUtils.isNotNull(param_staff)){
|
||||
param_staff.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
param_staff.setUpdateBy(SecurityUtils.getUsername());
|
||||
param_staff.setUpdateTime(DateUtils.getNowDate());
|
||||
sysStaffMapper.updateSysStaff(param_staff);
|
||||
getBaseMapper().updateSysStaff(param_staff);
|
||||
return;
|
||||
}
|
||||
sysStaff.setCode(getCodeByCompanyName(sysStaff.getCompanyName()));
|
||||
@ -518,11 +506,11 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
sysStaff.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
//清除原来的ID
|
||||
sysStaff.setUserId(null);
|
||||
sysStaffMapper.insertSysStaff(sysStaff);
|
||||
getBaseMapper().insertSysStaff(sysStaff);
|
||||
//添加员工详情
|
||||
createStaffDetail(sysStaff);
|
||||
//修改考勤统计
|
||||
createRzAttendance(sysStaff);
|
||||
createRzAttendance(sysStaff, getMonthAndDays());
|
||||
//餐饮统计
|
||||
createRestaurantStatistics(sysStaff);
|
||||
}
|
||||
@ -535,7 +523,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@Override
|
||||
public int deleteSysStaffByUserId(Long userId)
|
||||
{
|
||||
SysStaff sysStaff = sysStaffMapper.selectSysStaffByUserId(userId);
|
||||
SysStaff sysStaff = getBaseMapper().selectSysStaffByUserId(userId);
|
||||
//判断员工是否为领导,是反写部门
|
||||
if("是".equals(sysStaff.getIsLeader())){
|
||||
//根据ID查询部门信息
|
||||
@ -550,14 +538,14 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
sysStaff.setUpdateTime(DateUtils.getNowDate());
|
||||
sysStaff.setUpdateBy(SecurityUtils.getUsername());
|
||||
sysStaff.setDelFlag(Constants.DELETE_FLAG_1);
|
||||
return sysStaffMapper.updateSysStaff(sysStaff);
|
||||
return getBaseMapper().updateSysStaff(sysStaff);
|
||||
}
|
||||
/**
|
||||
* 查询所有的在职员工信息
|
||||
* @return
|
||||
*/
|
||||
public List<SysStaff> selectSysStaffListAll(){
|
||||
List<SysStaff> res_list = sysStaffMapper.selectSysStaffListAll();
|
||||
List<SysStaff> res_list = getBaseMapper().selectSysStaffListAll();
|
||||
for (SysStaff sysStaff : res_list) {
|
||||
sysStaff.setDeptName(deptMapper.selectDeptById(sysStaff.getDeptId()).getDeptName());
|
||||
}
|
||||
@ -639,7 +627,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
continue;
|
||||
}
|
||||
//根据身份证号查询员工
|
||||
sysStaff = sysStaffMapper.queryysStaffByIdCard(row.getCell(2).getStringCellValue());
|
||||
sysStaff = getBaseMapper().queryysStaffByIdCard(row.getCell(2).getStringCellValue());
|
||||
//没有此员工继续下一条
|
||||
if(StringUtils.isNull(sysStaff)){
|
||||
continue;
|
||||
@ -724,7 +712,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
public List<SysStaffVo> selectSysStaffDetailList(SysStaff sysStaff){
|
||||
List<SysStaffVo> res_list = new ArrayList<SysStaffVo>();
|
||||
//查询员工信息
|
||||
List<SysStaff> yg_list = sysStaffMapper.selectSysStaffList(sysStaff);
|
||||
List<SysStaff> yg_list = getBaseMapper().selectSysStaffList(sysStaff);
|
||||
List<SysDictData> sub_list = sysDictDataMapper.selectDictDataByType("sys_level");
|
||||
List<SysDictData> zz_list = sysDictDataMapper.selectDictDataByType("sys_worker_status");
|
||||
SysStaffVo sysStaffVo = null;
|
||||
@ -787,7 +775,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
BeanUtils.copyProperties(Staffvo,sysStaff);
|
||||
BeanUtils.copyProperties(Staffvo,sysStaffDetail);
|
||||
// 验证是否存在这个员工
|
||||
SysStaff staff = sysStaffMapper.queryysStaffByIdCard(sysStaff.getIdCard());
|
||||
SysStaff staff = getBaseMapper().queryysStaffByIdCard(sysStaff.getIdCard());
|
||||
//员工存在
|
||||
if(StringUtils.isNotNull(staff)){
|
||||
continue;
|
||||
@ -844,52 +832,52 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
sysStaff.setCreateTime(DateUtils.getNowDate());
|
||||
sysStaff.setCreateBy(SecurityUtils.getUsername());
|
||||
sysStaff.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
int i = sysStaffMapper.insertSysStaff(sysStaff);
|
||||
int i = getBaseMapper().insertSysStaff(sysStaff);
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
//获取三餐数据
|
||||
//判断员工的住宿和工资类型填写餐补费用,住宿,早,午,晚:2,3,3
|
||||
if("是".equals(sysStaff.getZsFlag())){
|
||||
for (SysDictData sysDictData : cy_list) {
|
||||
if("个人早餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
}
|
||||
}else {
|
||||
//非住宿,月工资
|
||||
if(StringUtils.isNotNull(sysStaffDetail.getBasicSalary())){
|
||||
for (SysDictData sysDictData : cy_list) {
|
||||
if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for (SysDictData sysDictData : cy_list) {
|
||||
if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
if("晚餐消费".equals(sysDictData.getDictLabel())){
|
||||
sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// if("是".equals(sysStaff.getZsFlag())){
|
||||
// for (SysDictData sysDictData : cy_list) {
|
||||
// if("个人早餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// }
|
||||
// }else {
|
||||
// //非住宿,月工资
|
||||
// if(StringUtils.isNotNull(sysStaffDetail.getBasicSalary())){
|
||||
// for (SysDictData sysDictData : cy_list) {
|
||||
// if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人晚餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// }
|
||||
// }else{
|
||||
// for (SysDictData sysDictData : cy_list) {
|
||||
// if("早餐消费".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setBreakfastExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("个人午餐".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setLunchExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// if("晚餐消费".equals(sysDictData.getDictLabel())){
|
||||
// sysStaffDetail.setSupperExpend(new BigDecimal(sysDictData.getDictValue()));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
sysStaffDetail.setStaffId(sysStaff.getUserId());
|
||||
sysStaffDetail.setDelFlag(Constants.DELETE_FLAG_0);
|
||||
sysStaffDetail.setCreateTime(DateUtils.getNowDate());
|
||||
@ -898,7 +886,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
if(i < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
createRzAttendance(sysStaff);
|
||||
createRzAttendance(sysStaff, getMonthAndDays());
|
||||
//餐饮统计
|
||||
createRestaurantStatistics(sysStaff);
|
||||
}
|
||||
@ -915,7 +903,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
*/
|
||||
private String getCodeByCompanyName(String companyName){
|
||||
//根据公司名称查询当前公司下的最大编号
|
||||
SysStaff macCode = sysStaffMapper.querySysStaffOfMaxByCompany(companyName);
|
||||
SysStaff macCode = getBaseMapper().querySysStaffOfMaxByCompany(companyName);
|
||||
if(macCode == null){
|
||||
return companyName + "0001";
|
||||
}
|
||||
@ -936,10 +924,11 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@Override
|
||||
public void autoCreateAttendanceData(){
|
||||
//获取在职员工数据
|
||||
List<SysStaff> params_list = sysStaffMapper.selectSysStaffListAll();
|
||||
List<SysStaff> params_list = getBaseMapper().selectSysStaffListAll();
|
||||
List<String> dayList = getMonthAndDays();
|
||||
//循环在职员工生成考勤统计
|
||||
for (SysStaff sysStaff : params_list) {
|
||||
createRzAttendance(sysStaff);
|
||||
createRzAttendance(sysStaff, dayList);
|
||||
}
|
||||
}
|
||||
|
||||
@ -949,12 +938,12 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@Override
|
||||
public void autoRegularWorking(){
|
||||
//获取在职员工数据
|
||||
List<SysStaff> params_list = sysStaffMapper.selectSysStaffListAll();
|
||||
List<SysStaff> params_list = getBaseMapper().selectSysStaffListAll();
|
||||
for (SysStaff sysStaff : params_list) {
|
||||
//判断员工是否离职
|
||||
if(StringUtils.isNotNull(sysStaff.getQuitDate()) && sysStaff.getQuitDate().getTime() < DateUtils.getNowDate().getTime()){
|
||||
sysStaff.setStatus("-1");
|
||||
sysStaffMapper.updateSysStaff(sysStaff);
|
||||
getBaseMapper().updateSysStaff(sysStaff);
|
||||
return;
|
||||
}
|
||||
//判断转正时间,无转正日期自动计算转正日期(入职日期后一个月)
|
||||
@ -969,7 +958,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
if(sysStaff.getRegularDate().getTime() < DateUtils.getNowDate().getTime()){
|
||||
sysStaff.setStatus("1");
|
||||
}
|
||||
sysStaffMapper.updateSysStaff(sysStaff);
|
||||
getBaseMapper().updateSysStaff(sysStaff);
|
||||
}
|
||||
}
|
||||
|
||||
@ -986,7 +975,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
for (SysDept sysDept : d_list) {
|
||||
list.add(sysDept.getDeptId());
|
||||
}
|
||||
return sysStaffMapper.queryysStaffByDeptId(list);
|
||||
return getBaseMapper().queryysStaffByDeptId(list);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -995,7 +984,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
@Override
|
||||
public void calculationOfSeniority(){
|
||||
//获取在职员工数据
|
||||
List<SysStaff> params_list = sysStaffMapper.selectSysStaffListAll();
|
||||
List<SysStaff> params_list = getBaseMapper().selectSysStaffListAll();
|
||||
//当前日期减去一个月计算工龄,计算工资比实际工龄延后一个月
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.MONTH, -1);
|
||||
@ -1018,7 +1007,7 @@ public class SysStaffServiceImpl implements ISysStaffService
|
||||
}else{
|
||||
sysStaff.setSeniority(0l);
|
||||
}
|
||||
sysStaffMapper.updateSysStaff(sysStaff);
|
||||
getBaseMapper().updateSysStaff(sysStaff);
|
||||
}
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
@ -0,0 +1,73 @@
|
||||
package com.evo.system.utils;
|
||||
|
||||
import com.alibaba.fastjson2.util.BeanUtils;
|
||||
import com.evo.common.constant.Constants;
|
||||
import com.evo.common.core.domain.entity.SysDictData;
|
||||
import com.evo.common.utils.DateUtils;
|
||||
import com.evo.common.utils.spring.SpringUtils;
|
||||
import com.evo.personnelMatters.domain.RzSubsidy;
|
||||
import com.evo.personnelMatters.domain.RzSubsidyInfo;
|
||||
import com.evo.personnelMatters.mapper.RzSubsidyMapper;
|
||||
import com.evo.system.domain.SysStaff;
|
||||
import com.evo.system.domain.SysStaffDetail;
|
||||
import com.evo.system.mapper.SysDictDataMapper;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:SubsidyCalculationUtils
|
||||
* @date: 2025年05月22日 11:26
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
|
||||
public class SubsidyCalculationUtils {
|
||||
|
||||
public static final String ht = "12";
|
||||
public static final String gl = "14";
|
||||
|
||||
|
||||
public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List<RzSubsidyInfo> subsidyInfoList){
|
||||
//正式员工并且有补助信息
|
||||
if(Constants.JOB_STATIS_1.equals(staff.getStatus()) && StringUtils.isNotEmpty(staff.getSubsidys())){
|
||||
Map<Long, RzSubsidyInfo> map = subsidyInfoList.stream().collect(Collectors.toMap(RzSubsidyInfo::getId, d->d, (k1, K2)->k1));
|
||||
for(String subsidyId : staff.getSubsidys().split(",")){
|
||||
RzSubsidyInfo rzSubsidyInfo = map.get(Long.valueOf(subsidyId));
|
||||
String key = rzSubsidyInfo.getName();
|
||||
BigDecimal value = rzSubsidyInfo.getValue();
|
||||
if(ht.equals(subsidyId)){
|
||||
Integer year= DateUtils.getBetweenYear(staff.getContractStart(), staff.getContractEnd());
|
||||
value = value.multiply(new BigDecimal(year));
|
||||
}else if(gl.equals(subsidyId)){
|
||||
Integer year= DateUtils.getBetweenYear(staff.getEmploymentDate(), new Date());
|
||||
//最多只允许10年的工龄补贴
|
||||
if(year > 10) year=10;
|
||||
value = value.multiply(new BigDecimal(year));
|
||||
}
|
||||
staffDetail.getExtendeds().put(key, value);
|
||||
}
|
||||
//计算学历补助
|
||||
if(StringUtils.isNotEmpty(staff.getLevel())){
|
||||
//查询学历
|
||||
String label = SpringUtils.getBean(SysDictDataMapper.class).selectDictLabel(Constants.SYS_LEVEL, staff.getLevel());
|
||||
if(StringUtils.isNotEmpty(label)){
|
||||
RzSubsidy rzSubsidy = SpringUtils.getBean(RzSubsidyMapper.class).selectRzSubsidyByName(label);
|
||||
if(ObjectUtils.isNotEmpty(rzSubsidy)){
|
||||
staffDetail.getExtendeds().put("学历补助", rzSubsidy.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return staffDetail;
|
||||
}
|
||||
|
||||
}
|
||||
@ -80,7 +80,7 @@ mybatis-plus:
|
||||
map-underscore-to-camel-case: true
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
type-aliases-package: com.evo.**.domain
|
||||
mapper-locations: classpath*:mapper/**/*Mapper.xml
|
||||
mapper-locations: classpath:mapper/**/*Mapper.xml
|
||||
global-config:
|
||||
db-config:
|
||||
id-type: auto
|
||||
|
||||
@ -10,19 +10,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="basicSalary" column="basic_salary" />
|
||||
<result property="jobsSalary" column="jobs_salary" />
|
||||
<result property="dailyWage" column="daily_wage" />
|
||||
<result property="hoursSalary" column="hours_salary" />
|
||||
<result property="fullFrequentlySubsidies" column="full_frequently_subsidies" />
|
||||
<result property="levelOfEducationSubsidies" column="level_of_education_subsidies" />
|
||||
<result property="contractSubsidies" column="contract_subsidies" />
|
||||
<result property="senioritySubsidies" column="seniority_subsidies" />
|
||||
<result property="socialSecuritySubsidies" column="social_security_subsidies" />
|
||||
<result property="nightShiftSubsidies" column="night_shift_subsidies" />
|
||||
<result property="dinnerSubsidies" column="dinner_subsidies" />
|
||||
<!-- <result property="hoursSalary" column="hours_salary" />-->
|
||||
<!-- <result property="fullFrequentlySubsidies" column="full_frequently_subsidies" />-->
|
||||
<!-- <result property="levelOfEducationSubsidies" column="level_of_education_subsidies" />-->
|
||||
<!-- <result property="contractSubsidies" column="contract_subsidies" />-->
|
||||
<!-- <result property="senioritySubsidies" column="seniority_subsidies" />-->
|
||||
<!-- <result property="socialSecuritySubsidies" column="social_security_subsidies" />-->
|
||||
<!-- <result property="nightShiftSubsidies" column="night_shift_subsidies" />-->
|
||||
<!-- <result property="dinnerSubsidies" column="dinner_subsidies" />-->
|
||||
<result property="fixedAllowance" column="fixed_allowance" />
|
||||
<result property="otherSubsidies" column="other_subsidies" />
|
||||
<result property="breakfastExpend" column="breakfast_expend" />
|
||||
<result property="lunchExpend" column="lunch_expend" />
|
||||
<result property="supperExpend" column="supper_expend" />
|
||||
<!-- <result property="breakfastExpend" column="breakfast_expend" />-->
|
||||
<!-- <result property="lunchExpend" column="lunch_expend" />-->
|
||||
<!-- <result property="supperExpend" column="supper_expend" />-->
|
||||
<result property="subsidyDeductMoney" column="subsidy_deduct_money" />
|
||||
<result property="deductions" column="deductions" />
|
||||
<result property="endowmentInsurance" column="endowment_insurance" />
|
||||
@ -47,7 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="middleSubsidies" column="middle_subsidies" />
|
||||
<!-- <result property="middleSubsidies" column="middle_subsidies" />-->
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSysStaffDetailVo">
|
||||
@ -74,20 +74,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="basicSalary != null">basic_salary,</if>
|
||||
<if test="jobsSalary != null">jobs_salary,</if>
|
||||
<if test="dailyWage != null">daily_wage,</if>
|
||||
<if test="hoursSalary != null">hours_salary,</if>
|
||||
<if test="fullFrequentlySubsidies != null">full_frequently_subsidies,</if>
|
||||
<if test="levelOfEducationSubsidies != null">level_of_education_subsidies,</if>
|
||||
<if test="contractSubsidies != null">contract_subsidies,</if>
|
||||
<if test="senioritySubsidies != null">seniority_subsidies,</if>
|
||||
<if test="socialSecuritySubsidies != null">social_security_subsidies,</if>
|
||||
<if test="nightShiftSubsidies != null">night_shift_subsidies,</if>
|
||||
<if test="dinnerSubsidies != null">dinner_subsidies,</if>
|
||||
<!-- <if test="hoursSalary != null">hours_salary,</if>-->
|
||||
<!-- <if test="fullFrequentlySubsidies != null">full_frequently_subsidies,</if>-->
|
||||
<!-- <if test="levelOfEducationSubsidies != null">level_of_education_subsidies,</if>-->
|
||||
<!-- <if test="contractSubsidies != null">contract_subsidies,</if>-->
|
||||
<!-- <if test="senioritySubsidies != null">seniority_subsidies,</if>-->
|
||||
<!-- <if test="socialSecuritySubsidies != null">social_security_subsidies,</if>-->
|
||||
<!-- <if test="nightShiftSubsidies != null">night_shift_subsidies,</if>-->
|
||||
<!-- <if test="dinnerSubsidies != null">dinner_subsidies,</if>-->
|
||||
<if test="fixedAllowance != null">fixed_allowance,</if>
|
||||
<if test="otherSubsidies != null">other_subsidies,</if>
|
||||
<if test="breakfastExpend != null">breakfast_expend,</if>
|
||||
<if test="lunchExpend != null">lunch_expend,</if>
|
||||
<if test="supperExpend != null">supper_expend,</if>
|
||||
<if test="subsidyDeductMoney != null">subsidy_deduct_money,</if>
|
||||
<!-- <if test="lunchExpend != null">lunch_expend,</if>-->
|
||||
<!-- <if test="supperExpend != null">supper_expend,</if>-->
|
||||
<!-- <if test="subsidyDeductMoney != null">subsidy_deduct_money,</if>-->
|
||||
<if test="deductions != null">deductions,</if>
|
||||
<if test="endowmentInsurance != null">endowment_insurance,</if>
|
||||
<if test="medicalInsurance != null">medical_insurance,</if>
|
||||
@ -111,26 +111,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="countInsurance != null">count_insurance,</if>
|
||||
<if test="middleSubsidies != null">middle_subsidies,</if>
|
||||
<!-- <if test="middleSubsidies != null">middle_subsidies,</if>-->
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="staffId != null">#{staffId},</if>
|
||||
<if test="basicSalary != null">#{basicSalary},</if>
|
||||
<if test="jobsSalary != null">#{jobsSalary},</if>
|
||||
<if test="dailyWage != null">#{dailyWage},</if>
|
||||
<if test="hoursSalary != null">#{hoursSalary},</if>
|
||||
<if test="fullFrequentlySubsidies != null">#{fullFrequentlySubsidies},</if>
|
||||
<if test="levelOfEducationSubsidies != null">#{levelOfEducationSubsidies},</if>
|
||||
<if test="contractSubsidies != null">#{contractSubsidies},</if>
|
||||
<if test="senioritySubsidies != null">#{senioritySubsidies},</if>
|
||||
<if test="socialSecuritySubsidies != null">#{socialSecuritySubsidies},</if>
|
||||
<if test="nightShiftSubsidies != null">#{nightShiftSubsidies},</if>
|
||||
<if test="dinnerSubsidies != null">#{dinnerSubsidies},</if>
|
||||
<!-- <if test="hoursSalary != null">#{hoursSalary},</if>-->
|
||||
<!-- <if test="fullFrequentlySubsidies != null">#{fullFrequentlySubsidies},</if>-->
|
||||
<!-- <if test="levelOfEducationSubsidies != null">#{levelOfEducationSubsidies},</if>-->
|
||||
<!-- <if test="contractSubsidies != null">#{contractSubsidies},</if>-->
|
||||
<!-- <if test="senioritySubsidies != null">#{senioritySubsidies},</if>-->
|
||||
<!-- <if test="socialSecuritySubsidies != null">#{socialSecuritySubsidies},</if>-->
|
||||
<!-- <if test="nightShiftSubsidies != null">#{nightShiftSubsidies},</if>-->
|
||||
<!-- <if test="dinnerSubsidies != null">#{dinnerSubsidies},</if>-->
|
||||
<if test="fixedAllowance != null">#{fixedAllowance},</if>
|
||||
<if test="otherSubsidies != null">#{otherSubsidies},</if>
|
||||
<if test="breakfastExpend != null">#{breakfastExpend},</if>
|
||||
<if test="lunchExpend != null">#{lunchExpend},</if>
|
||||
<if test="supperExpend != null">#{supperExpend},</if>
|
||||
<!-- <if test="breakfastExpend != null">#{breakfastExpend},</if>-->
|
||||
<!-- <if test="lunchExpend != null">#{lunchExpend},</if>-->
|
||||
<!-- <if test="supperExpend != null">#{supperExpend},</if>-->
|
||||
<if test="subsidyDeductMoney != null">#{subsidyDeductMoney},</if>
|
||||
<if test="deductions != null">#{deductions},</if>
|
||||
<if test="endowmentInsurance != null">#{endowmentInsurance},</if>
|
||||
@ -155,7 +155,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="countInsurance != null">#{countInsurance},</if>
|
||||
<if test="middleSubsidies != null">#{middleSubsidies},</if>
|
||||
<!-- <if test="middleSubsidies != null">#{middleSubsidies},</if>-->
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
@ -166,19 +166,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="basicSalary != null">basic_salary = #{basicSalary},</if>
|
||||
<if test="jobsSalary != null">jobs_salary = #{jobsSalary},</if>
|
||||
<if test="dailyWage != null">daily_wage = #{dailyWage},</if>
|
||||
<if test="hoursSalary != null">hours_salary = #{hoursSalary},</if>
|
||||
<if test="fullFrequentlySubsidies != null">full_frequently_subsidies = #{fullFrequentlySubsidies},</if>
|
||||
<if test="levelOfEducationSubsidies != null">level_of_education_subsidies = #{levelOfEducationSubsidies},</if>
|
||||
<if test="contractSubsidies != null">contract_subsidies = #{contractSubsidies},</if>
|
||||
<if test="senioritySubsidies != null">seniority_subsidies = #{senioritySubsidies},</if>
|
||||
<if test="socialSecuritySubsidies != null">social_security_subsidies = #{socialSecuritySubsidies},</if>
|
||||
<if test="nightShiftSubsidies != null">night_shift_subsidies = #{nightShiftSubsidies},</if>
|
||||
<if test="dinnerSubsidies != null">dinner_subsidies = #{dinnerSubsidies},</if>
|
||||
<!-- <if test="hoursSalary != null">hours_salary = #{hoursSalary},</if>-->
|
||||
<!-- <if test="fullFrequentlySubsidies != null">full_frequently_subsidies = #{fullFrequentlySubsidies},</if>-->
|
||||
<!-- <if test="levelOfEducationSubsidies != null">level_of_education_subsidies = #{levelOfEducationSubsidies},</if>-->
|
||||
<!-- <if test="contractSubsidies != null">contract_subsidies = #{contractSubsidies},</if>-->
|
||||
<!-- <if test="senioritySubsidies != null">seniority_subsidies = #{senioritySubsidies},</if>-->
|
||||
<!-- <if test="socialSecuritySubsidies != null">social_security_subsidies = #{socialSecuritySubsidies},</if>-->
|
||||
<!-- <if test="nightShiftSubsidies != null">night_shift_subsidies = #{nightShiftSubsidies},</if>-->
|
||||
<!-- <if test="dinnerSubsidies != null">dinner_subsidies = #{dinnerSubsidies},</if>-->
|
||||
<if test="fixedAllowance != null">fixed_allowance = #{fixedAllowance},</if>
|
||||
<if test="otherSubsidies != null">other_subsidies = #{otherSubsidies},</if>
|
||||
<if test="breakfastExpend != null">breakfast_expend = #{breakfastExpend},</if>
|
||||
<if test="lunchExpend != null">lunch_expend = #{lunchExpend},</if>
|
||||
<if test="supperExpend != null">supper_expend = #{supperExpend},</if>
|
||||
<!-- <if test="breakfastExpend != null">breakfast_expend = #{breakfastExpend},</if>-->
|
||||
<!-- <if test="lunchExpend != null">lunch_expend = #{lunchExpend},</if>-->
|
||||
<!-- <if test="supperExpend != null">supper_expend = #{supperExpend},</if>-->
|
||||
<if test="subsidyDeductMoney != null">subsidy_deduct_money = #{subsidyDeductMoney},</if>
|
||||
<if test="deductions != null">deductions = #{deductions},</if>
|
||||
<if test="endowmentInsurance != null">endowment_insurance = #{endowmentInsurance},</if>
|
||||
@ -203,7 +203,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="countInsurance != null">count_insurance = #{countInsurance},</if>
|
||||
<if test="middleSubsidies != null">middle_subsidies = #{middleSubsidies},</if>
|
||||
<!-- <if test="middleSubsidies != null">middle_subsidies = #{middleSubsidies},</if>-->
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
select user_id,company_name, dept_id, code, name, id_card,is_leader, sex, age, phone, address, level, major, school, bank_number,social_subsidy, bank, employment_date, experience, worker_term, regular_date, quit_date, contract_start, contract_end, contract_type, social_type, seniority, is_overtime_pay, zs_flag, secrecy, injury, insurance, introducer, clock_in, status, wages_ratio_date, remarks, del_flag, create_by, create_time, update_by, update_time from sys_staff
|
||||
</sql>
|
||||
|
||||
<select id="selectSysStaffList" parameterType="SysStaff" resultMap="SysStaffResult">
|
||||
<select id="selectSysStaffList" parameterType="com.evo.system.domain.SysStaff" resultMap="SysStaffResult">
|
||||
<include refid="selectSysStaffVo"/>
|
||||
<where>
|
||||
del_flag = '0'
|
||||
@ -82,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<insert id="insertSysStaff" parameterType="SysStaff" useGeneratedKeys="true" keyProperty="userId">
|
||||
<insert id="insertSysStaff" parameterType="com.evo.system.domain.SysStaff" useGeneratedKeys="true" keyProperty="userId">
|
||||
insert into sys_staff
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="companyName != null">company_name,</if>
|
||||
@ -128,6 +128,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="socialSubsidy != null">social_subsidy,</if>
|
||||
<if test="imageUrl != null">image_url,</if>
|
||||
<if test="timeClock != null">time_clock,</if>
|
||||
<if test="subsidys != null">subsidys,</if>
|
||||
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="companyName != null">#{companyName},</if>
|
||||
@ -173,10 +175,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="socialSubsidy != null">#{socialSubsidy},</if>
|
||||
<if test="imageUrl != null">#{imageUrl},</if>
|
||||
<if test="timeClock != null">#{timeClock},</if>
|
||||
<if test="subsidys != null">#{subsidys},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateSysStaff" parameterType="SysStaff">
|
||||
<update id="updateSysStaff" parameterType="com.evo.system.domain.SysStaff">
|
||||
update sys_staff
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="companyName != null">company_name = #{companyName},</if>
|
||||
@ -222,6 +225,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="socialSubsidy != null">social_subsidy = #{socialSubsidy},</if>
|
||||
<if test="imageUrl != null">image_url = #{imageUrl},</if>
|
||||
<if test="timeClock != null">time_clock = #{timeClock},</if>
|
||||
<if test="subsidys != null">subsidys = #{subsidys},</if>
|
||||
</trim>
|
||||
where user_id = #{userId}
|
||||
</update>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user