发版调整
This commit is contained in:
parent
8d832351ef
commit
deb4b535ec
@ -58,4 +58,12 @@ public interface RzAttendanceDetailMapper extends BaseMapper<RzAttendanceDetail>
|
||||
|
||||
|
||||
public List<RzAttendanceDetail> selectRzAttendanceDetailByMonth(Date date);
|
||||
|
||||
/***
|
||||
* 检查加班情况
|
||||
* @param userId
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
Long checkOverTimeCard(@Param("userId") Long userId, @Param("date") Date date);
|
||||
}
|
||||
|
||||
@ -91,9 +91,9 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP
|
||||
RzAttendanceDetail rzAttendanceDetail = rzAttendanceDetailMapper.selectLastRzAttendanceDetail(sysStaff.getUserId());
|
||||
//判断最后一次打卡为下班卡或没有打卡记录,则打卡为上班卡
|
||||
if(StringUtils.isNull(rzAttendanceDetail) || "下班卡".equals(rzAttendanceDetail.getButtonType()) || "撤销".equals(rzAttendanceDetail.getButtonType())){
|
||||
//如果最后一条数据的卡类型为下班卡,则返回上班卡和加班卡权限 or 检查当前人员是否存在特殊加班中 或者 检查当前人员部门是否开启加班
|
||||
if(ObjectUtils.isNotEmpty(eqOverStaffMapper.selectEqOverStaffByUserId(sysStaff.getUserId())) || ObjectUtils.isEmpty(sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getDeptId, sysStaff.getDeptId()).eq(SysDept::getIsOverTime,"1")))){
|
||||
//如果存在特殊加班, 或者当前部门没有开启加班, 则无法打加班卡
|
||||
//如果最后一条数据的卡类型为下班卡,则返回上班卡和加班卡权限 or 检查当前人员是否存在特殊加班中 或者 检查当前人员部门是否开启加班 or 当天打过加班卡
|
||||
if(ObjectUtils.isNotEmpty(eqOverStaffMapper.selectEqOverStaffByUserId(sysStaff.getUserId())) || ObjectUtils.isEmpty(sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getDeptId, sysStaff.getDeptId()).eq(SysDept::getIsOverTime,"1"))) || rzAttendanceDetailMapper.checkOverTimeCard(sysStaff.getUserId(), new Date()) > 0){
|
||||
//如果存在特殊加班, 或者当前部门没有开启加班 或者当天打过加班, 则无法打加班卡
|
||||
return initMessage(0,"验证通过", "111000000");
|
||||
}
|
||||
return initMessage(0,"验证通过", "111100000");
|
||||
|
||||
@ -625,6 +625,14 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
|
||||
x.getAnnualExemptionAmount().add(y.getAnnualExemptionAmount()),x.getSpecialDeduction().add(y.getSpecialDeduction()),x.getSlowDownTheDeduction().add(y.getSlowDownTheDeduction()),x.getAggregatePersonalIncomeTax().add(y.getAggregatePersonalIncomeTax()),
|
||||
x.getTaxPayable().add(y.getTaxPayable()),x.getNetPayroll().add(y.getNetPayroll()), x.getSalesCommission().add(y.getSalesCommission()))).orElse(new SalaryVo(BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,
|
||||
BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO,BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO));
|
||||
//添加此处的原因是, 如果部门中, 有且只有1人的情况下, stream().reduce() 不会创建新的对象, 只是把唯一的对象返回了,, 会对后续的数据展示产生影响, 所以重新创new新对象
|
||||
if(Collections.isNotEmpty(list) || list.size() == 1){
|
||||
SalaryVo newResult = new SalaryVo();
|
||||
BeanUtils.copyProperties(result,newResult);
|
||||
newResult.setShouldAttendance(null);
|
||||
newResult.setRealAttendance(null);
|
||||
result = newResult;
|
||||
}
|
||||
result.setName("");
|
||||
result.setCompanyName("");
|
||||
return result;
|
||||
@ -658,9 +666,12 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
|
||||
}).collect(Collectors.toList());
|
||||
List<List<SalaryVo>> companyLists = new ArrayList<>();
|
||||
List<List<SalaryVo>> deptLists = new ArrayList<>();
|
||||
|
||||
List<String> allSheetNames = Collections.emptyList();
|
||||
List<SalaryVo> allList = new ArrayList<>();
|
||||
allSheetNames.addAll(sheetCompanyNames);
|
||||
List<SalaryVo> allList = new ArrayList<>();
|
||||
|
||||
|
||||
for (String sheetCompanyName : sheetCompanyNames){
|
||||
List<SalaryVo> dataList = companyDataList.get(sheetCompanyName);
|
||||
if(sheetCompanyName.equals("河北伊特")){
|
||||
@ -668,6 +679,9 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
|
||||
List<String> sheetDeptNames = deptDataList.keySet().stream().sorted((x,y) -> x.compareTo(y)).collect(Collectors.toList());
|
||||
allSheetNames.addAll(sheetDeptNames);
|
||||
for (String sheetDeptName : sheetDeptNames){
|
||||
if(Collections.asList("生技部","装配车间","设备工段").contains(sheetDeptName)){
|
||||
System.out.println(123213);
|
||||
}
|
||||
List<SalaryVo> depts = deptDataList.get(sheetDeptName);
|
||||
SalaryVo result = sumSalaryVo(depts);
|
||||
result.setDeptName(sheetDeptName);
|
||||
|
||||
@ -161,39 +161,48 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
Map<String, Object> extensionMap = Collections.emptyMap();
|
||||
//先计算相差几个月
|
||||
Integer betweenMonth = DateUtils.getBetweenMonth(rzLeaveDetail.getLeaveStartTime(), rzLeaveDetail.getLeaveEndTime());
|
||||
Date startDate = rzLeaveDetail.getLeaveStartTime();
|
||||
for (int i = 0; i <= betweenMonth; i++) {
|
||||
startDate = DateUtils.addMonths(startDate, i>0 ? 1 : 0);
|
||||
//获取月的开始时间和结束时间
|
||||
Date firsDay = DateUtils.getMonthFirst(startDate);
|
||||
if(firsDay.compareTo(rzLeaveDetail.getLeaveStartTime())<0){
|
||||
firsDay = rzLeaveDetail.getLeaveStartTime();
|
||||
if(betweenMonth == 0 && Long.valueOf(1).equals(DateUtils.getBetweenDays(rzLeaveDetail.getLeaveStartTime(),rzLeaveDetail.getLeaveEndTime())+1)){
|
||||
extensionMap.put("month"+m.format(rzLeaveDetail.getLeaveStartTime()), ym.format(rzLeaveDetail.getLeaveStartTime()));
|
||||
//如果只请1天, 则按照录入的时间计算, 如果
|
||||
extensionMap.put("hours"+m.format(rzLeaveDetail.getLeaveStartTime()), rzLeaveDetail.getLeaveHour());
|
||||
}else{
|
||||
Date startDate = rzLeaveDetail.getLeaveStartTime();
|
||||
for (int i = 0; i <= betweenMonth; i++) {
|
||||
startDate = DateUtils.addMonths(startDate, i>0 ? 1 : 0);
|
||||
//获取月的开始时间和结束时间
|
||||
Date firsDay = DateUtils.getMonthFirst(startDate);
|
||||
if(firsDay.compareTo(rzLeaveDetail.getLeaveStartTime())<0){
|
||||
firsDay = rzLeaveDetail.getLeaveStartTime();
|
||||
}
|
||||
Date endDay = DateUtils.getMonthEnd(startDate);
|
||||
if(endDay.compareTo(rzLeaveDetail.getLeaveEndTime())>0){
|
||||
endDay = rzLeaveDetail.getLeaveEndTime();
|
||||
}
|
||||
//获取相差天数 因为包含开始结束, 所以需要加1
|
||||
Long dayNum = DateUtils.getBetweenDays(firsDay,endDay)+1;
|
||||
List<String> dayList = Collections.emptyList();
|
||||
for (int j = 0; j < dayNum; j++) {
|
||||
dayList.add(ymd.format(DateUtils.addDays(firsDay, j>0 ? 1 : 0)));
|
||||
}
|
||||
List<String> holidays = Collections.emptyList();
|
||||
if(ParamUtils.getLeaveTypeNotIncludedFaXiuAndPublicHoliday().contains(flag)){
|
||||
holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 0));
|
||||
}else if(ParamUtils.getLeaveTypeNotIncludedFaXiu().contains(flag)){
|
||||
holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 1));
|
||||
}else{
|
||||
holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 2));
|
||||
}
|
||||
//获取假期里的重复天数
|
||||
Integer doubleDayNum = Collections.findDuplicatesList(holidays, dayList).size();
|
||||
//计算实际放假天数
|
||||
Integer holidayNum = dayList.size()-doubleDayNum;
|
||||
extensionMap.put("month"+m.format(firsDay), ym.format(firsDay));
|
||||
//如果只请1天, 则按照录入的时间计算, 如果
|
||||
extensionMap.put("hours"+m.format(firsDay), holidayNum*8);
|
||||
}
|
||||
Date endDay = DateUtils.getMonthEnd(startDate);
|
||||
if(endDay.compareTo(rzLeaveDetail.getLeaveEndTime())>0){
|
||||
endDay = rzLeaveDetail.getLeaveEndTime();
|
||||
}
|
||||
//获取相差天数 因为包含开始结束, 所以需要加1
|
||||
Long dayNum = DateUtils.getBetweenDays(firsDay,endDay)+1;
|
||||
List<String> dayList = Collections.emptyList();
|
||||
for (int j = 0; j < dayNum; j++) {
|
||||
dayList.add(ymd.format(DateUtils.addDays(firsDay, j>0 ? 1 : 0)));
|
||||
}
|
||||
List<String> holidays = Collections.emptyList();
|
||||
if(ParamUtils.getLeaveTypeNotIncludedFaXiuAndPublicHoliday().contains(flag)){
|
||||
holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 0));
|
||||
}else if(ParamUtils.getLeaveTypeNotIncludedFaXiu().contains(flag)){
|
||||
holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 1));
|
||||
}else{
|
||||
holidays.addAll(ParamUtils.getHoliddayList(firsDay.getYear(), 2));
|
||||
}
|
||||
//获取假期里的重复天数
|
||||
Integer doubleDayNum = Collections.findDuplicatesList(holidays, dayList).size();
|
||||
//计算实际放假天数
|
||||
Integer holidayNum = dayList.size()-doubleDayNum;
|
||||
extensionMap.put("month"+m.format(firsDay), ym.format(firsDay));
|
||||
extensionMap.put("hours"+m.format(firsDay), holidayNum*8);
|
||||
}
|
||||
|
||||
|
||||
rzLeaveDetail.setExtension(JSON.toJSONString(extensionMap));
|
||||
getBaseMapper().updateById(rzLeaveDetail);
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ spring:
|
||||
# 国际化资源文件路径
|
||||
basename: i18n/messages
|
||||
profiles:
|
||||
active: dev
|
||||
active: druid
|
||||
# 文件上传
|
||||
servlet:
|
||||
multipart:
|
||||
|
||||
@ -92,4 +92,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
order by create_time
|
||||
</select>
|
||||
|
||||
<select id="checkOverTimeCard" resultType="java.lang.Long">
|
||||
select count(id) from rz_attendance_detail
|
||||
where del_flag = '0' and DATE_FORMAT( date_time, '%Y%m%d' ) = DATE_FORMAT(#{date} , '%Y%m%d' ) and staff_id = #{userId} and button_type = '加班卡'
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<!-- <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="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>-->
|
||||
|
||||
Loading…
Reference in New Issue
Block a user