发版调整
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);
|
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());
|
RzAttendanceDetail rzAttendanceDetail = rzAttendanceDetailMapper.selectLastRzAttendanceDetail(sysStaff.getUserId());
|
||||||
//判断最后一次打卡为下班卡或没有打卡记录,则打卡为上班卡
|
//判断最后一次打卡为下班卡或没有打卡记录,则打卡为上班卡
|
||||||
if(StringUtils.isNull(rzAttendanceDetail) || "下班卡".equals(rzAttendanceDetail.getButtonType()) || "撤销".equals(rzAttendanceDetail.getButtonType())){
|
if(StringUtils.isNull(rzAttendanceDetail) || "下班卡".equals(rzAttendanceDetail.getButtonType()) || "撤销".equals(rzAttendanceDetail.getButtonType())){
|
||||||
//如果最后一条数据的卡类型为下班卡,则返回上班卡和加班卡权限 or 检查当前人员是否存在特殊加班中 或者 检查当前人员部门是否开启加班
|
//如果最后一条数据的卡类型为下班卡,则返回上班卡和加班卡权限 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")))){
|
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,"验证通过", "111000000");
|
||||||
}
|
}
|
||||||
return initMessage(0,"验证通过", "111100000");
|
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.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,
|
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));
|
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.setName("");
|
||||||
result.setCompanyName("");
|
result.setCompanyName("");
|
||||||
return result;
|
return result;
|
||||||
@ -658,9 +666,12 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
|
|||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
List<List<SalaryVo>> companyLists = new ArrayList<>();
|
List<List<SalaryVo>> companyLists = new ArrayList<>();
|
||||||
List<List<SalaryVo>> deptLists = new ArrayList<>();
|
List<List<SalaryVo>> deptLists = new ArrayList<>();
|
||||||
|
|
||||||
List<String> allSheetNames = Collections.emptyList();
|
List<String> allSheetNames = Collections.emptyList();
|
||||||
List<SalaryVo> allList = new ArrayList<>();
|
|
||||||
allSheetNames.addAll(sheetCompanyNames);
|
allSheetNames.addAll(sheetCompanyNames);
|
||||||
|
List<SalaryVo> allList = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
for (String sheetCompanyName : sheetCompanyNames){
|
for (String sheetCompanyName : sheetCompanyNames){
|
||||||
List<SalaryVo> dataList = companyDataList.get(sheetCompanyName);
|
List<SalaryVo> dataList = companyDataList.get(sheetCompanyName);
|
||||||
if(sheetCompanyName.equals("河北伊特")){
|
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());
|
List<String> sheetDeptNames = deptDataList.keySet().stream().sorted((x,y) -> x.compareTo(y)).collect(Collectors.toList());
|
||||||
allSheetNames.addAll(sheetDeptNames);
|
allSheetNames.addAll(sheetDeptNames);
|
||||||
for (String sheetDeptName : sheetDeptNames){
|
for (String sheetDeptName : sheetDeptNames){
|
||||||
|
if(Collections.asList("生技部","装配车间","设备工段").contains(sheetDeptName)){
|
||||||
|
System.out.println(123213);
|
||||||
|
}
|
||||||
List<SalaryVo> depts = deptDataList.get(sheetDeptName);
|
List<SalaryVo> depts = deptDataList.get(sheetDeptName);
|
||||||
SalaryVo result = sumSalaryVo(depts);
|
SalaryVo result = sumSalaryVo(depts);
|
||||||
result.setDeptName(sheetDeptName);
|
result.setDeptName(sheetDeptName);
|
||||||
|
|||||||
@ -161,39 +161,48 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
|||||||
Map<String, Object> extensionMap = Collections.emptyMap();
|
Map<String, Object> extensionMap = Collections.emptyMap();
|
||||||
//先计算相差几个月
|
//先计算相差几个月
|
||||||
Integer betweenMonth = DateUtils.getBetweenMonth(rzLeaveDetail.getLeaveStartTime(), rzLeaveDetail.getLeaveEndTime());
|
Integer betweenMonth = DateUtils.getBetweenMonth(rzLeaveDetail.getLeaveStartTime(), rzLeaveDetail.getLeaveEndTime());
|
||||||
Date startDate = rzLeaveDetail.getLeaveStartTime();
|
if(betweenMonth == 0 && Long.valueOf(1).equals(DateUtils.getBetweenDays(rzLeaveDetail.getLeaveStartTime(),rzLeaveDetail.getLeaveEndTime())+1)){
|
||||||
for (int i = 0; i <= betweenMonth; i++) {
|
extensionMap.put("month"+m.format(rzLeaveDetail.getLeaveStartTime()), ym.format(rzLeaveDetail.getLeaveStartTime()));
|
||||||
startDate = DateUtils.addMonths(startDate, i>0 ? 1 : 0);
|
//如果只请1天, 则按照录入的时间计算, 如果
|
||||||
//获取月的开始时间和结束时间
|
extensionMap.put("hours"+m.format(rzLeaveDetail.getLeaveStartTime()), rzLeaveDetail.getLeaveHour());
|
||||||
Date firsDay = DateUtils.getMonthFirst(startDate);
|
}else{
|
||||||
if(firsDay.compareTo(rzLeaveDetail.getLeaveStartTime())<0){
|
Date startDate = rzLeaveDetail.getLeaveStartTime();
|
||||||
firsDay = 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));
|
rzLeaveDetail.setExtension(JSON.toJSONString(extensionMap));
|
||||||
getBaseMapper().updateById(rzLeaveDetail);
|
getBaseMapper().updateById(rzLeaveDetail);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,7 +50,7 @@ spring:
|
|||||||
# 国际化资源文件路径
|
# 国际化资源文件路径
|
||||||
basename: i18n/messages
|
basename: i18n/messages
|
||||||
profiles:
|
profiles:
|
||||||
active: dev
|
active: druid
|
||||||
# 文件上传
|
# 文件上传
|
||||||
servlet:
|
servlet:
|
||||||
multipart:
|
multipart:
|
||||||
|
|||||||
@ -92,4 +92,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
order by create_time
|
order by create_time
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
|
|||||||
@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<!-- <if test="dinnerSubsidies != null">dinner_subsidies,</if>-->
|
<!-- <if test="dinnerSubsidies != null">dinner_subsidies,</if>-->
|
||||||
<if test="fixedAllowance != null">fixed_allowance,</if>
|
<if test="fixedAllowance != null">fixed_allowance,</if>
|
||||||
<if test="otherSubsidies != null">other_subsidies,</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="lunchExpend != null">lunch_expend,</if>-->
|
||||||
<!-- <if test="supperExpend != null">supper_expend,</if>-->
|
<!-- <if test="supperExpend != null">supper_expend,</if>-->
|
||||||
<!-- <if test="subsidyDeductMoney != null">subsidy_deduct_money,</if>-->
|
<!-- <if test="subsidyDeductMoney != null">subsidy_deduct_money,</if>-->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user