新增员工添加部门推送,
新增员工添加重复提交验证 考勤上班打卡, 新增昨天打卡情况提醒 请假逻辑调整
This commit is contained in:
parent
8983c699ea
commit
b7ca5fcffd
@ -216,7 +216,19 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP
|
||||
}catch (Exception e){
|
||||
return initMessage(1, "打卡失败,"+e.getMessage());
|
||||
}
|
||||
return (rzAttendanceMapper.updateRzAttendance(attendance) > 0) ? initMessage(0, "打卡成功") : initMessage(1, "打卡失败");
|
||||
//查询昨天是否未打卡
|
||||
String notBeforeEndTimeMessage = "";
|
||||
try {
|
||||
RzAttendance beforeAttendance = rzAttendanceMapper.queryNowDayAttendanceByStatisticalIdAndDate(Long.valueOf(userId),DateUtils.addDays(date, -1));
|
||||
if(beforeAttendance.getWorkStartTime() != null && beforeAttendance.getWorkEndTime() == null){
|
||||
notBeforeEndTimeMessage = " - 昨天未打下班卡";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("查询前一天的打卡情况报错了");
|
||||
}
|
||||
|
||||
return (rzAttendanceMapper.updateRzAttendance(attendance) > 0) ? initMessage(0, "打卡成功"+notBeforeEndTimeMessage) : initMessage(1, "打卡失败"+notBeforeEndTimeMessage);
|
||||
}
|
||||
|
||||
// /*** 上班卡的下班卡
|
||||
|
||||
@ -20,6 +20,7 @@ import com.evo.personnelMatters.mapper.RzOverTimeMapper;
|
||||
import com.evo.personnelMatters.service.IRzLeaveDetailService;
|
||||
import com.evo.system.domain.SysStaff;
|
||||
import com.evo.system.service.ISysDictDataService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -97,38 +98,38 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
if(getBaseMapper().insert(rzLeaveDetail) < 1){
|
||||
return AjaxResult.error("请假详情新增失败");
|
||||
}
|
||||
return buildData(String.valueOf(rzLeaveDetail.getType()), rzLeave, rzLeaveDetail, rzLeaveDetail.getLeaveHour());
|
||||
return buildData(String.valueOf(rzLeaveDetail.getType()), rzLeave, rzLeaveDetail, rzLeaveDetail.getLeaveHour(), true);
|
||||
}
|
||||
|
||||
|
||||
public AjaxResult buildData(String type, RzLeave rzLeave, RzLeaveDetail rzLeaveDetail, Integer holidayHour){
|
||||
public AjaxResult buildData(String type, RzLeave rzLeave, RzLeaveDetail rzLeaveDetail, Integer holidayHour, Boolean isTs){
|
||||
switch (type){
|
||||
case "52":
|
||||
rzLeave.setSickHours(big(rzLeave.getSickHours() ,holidayHour));
|
||||
rzLeave.setSickHours(big(rzLeave.getSickHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "53":
|
||||
rzLeave.setAbsenceHours(big(rzLeave.getAbsenceHours() ,holidayHour));
|
||||
rzLeave.setAbsenceHours(big(rzLeave.getAbsenceHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "54":
|
||||
rzLeave.setAnnualHours(big(rzLeave.getAnnualHours() ,holidayHour));
|
||||
rzLeave.setAnnualHours(big(rzLeave.getAnnualHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "55":
|
||||
rzLeave.setCompensatoryHours(big(rzLeave.getCompensatoryHours() ,holidayHour));
|
||||
rzLeave.setCompensatoryHours(big(rzLeave.getCompensatoryHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "56":
|
||||
rzLeave.setMarriageHours(big(rzLeave.getMarriageHours() ,holidayHour));
|
||||
rzLeave.setMarriageHours(big(rzLeave.getMarriageHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "57":
|
||||
rzLeave.setMaternityHours(big(rzLeave.getMaternityHours() ,holidayHour));
|
||||
rzLeave.setMaternityHours(big(rzLeave.getMaternityHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "58":
|
||||
rzLeave.setPaternityHours(big(rzLeave.getPaternityHours() ,holidayHour));
|
||||
rzLeave.setPaternityHours(big(rzLeave.getPaternityHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "59":
|
||||
rzLeave.setFuneralHours(big(rzLeave.getFuneralHours() ,holidayHour));
|
||||
rzLeave.setFuneralHours(big(rzLeave.getFuneralHours() ,holidayHour, isTs));
|
||||
break;
|
||||
case "60":
|
||||
rzLeave.setWorkHours(big(rzLeave.getWorkHours() ,holidayHour));
|
||||
rzLeave.setWorkHours(big(rzLeave.getWorkHours() ,holidayHour, isTs));
|
||||
break;
|
||||
}
|
||||
if(rzLeaveMapper.updateRzLeave(rzLeave) < 0){
|
||||
@ -136,13 +137,16 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
}
|
||||
//不再反写考勤汇总, 由定时器, 每天执行查找
|
||||
//这里需要做特殊处理, 如果时间范围跨月了, 需要每个月的考勤都要处理
|
||||
if(isTs){
|
||||
buildExtension(rzLeaveDetail);
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
public Integer big(Integer baseNum, Integer addNum){
|
||||
return new BigDecimal(baseNum).add(new BigDecimal(addNum)).intValue();
|
||||
public Integer big(Integer baseNum, Integer addNum,Boolean isTs){
|
||||
return isTs ? new BigDecimal(baseNum).add(new BigDecimal(addNum)).intValue() : new BigDecimal(baseNum).subtract(new BigDecimal(addNum)).intValue();
|
||||
}
|
||||
|
||||
public void buildExtension(RzLeaveDetail rzLeaveDetail){
|
||||
@ -170,27 +174,40 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
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)));
|
||||
}
|
||||
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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// //获取相差天数 因为包含开始结束, 所以需要加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)));
|
||||
// }
|
||||
// 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;
|
||||
|
||||
|
||||
|
||||
|
||||
RzLeaveDetail newRzLeaveDetail = new RzLeaveDetail();
|
||||
BeanUtils.copyProperties(rzLeaveDetail, newRzLeaveDetail);
|
||||
newRzLeaveDetail.setLeaveStartTime(firsDay);
|
||||
newRzLeaveDetail.setLeaveStartTime(endDay);
|
||||
extensionMap.put("month"+m.format(firsDay), ym.format(firsDay));
|
||||
//如果只请1天, 则按照录入的时间计算, 如果
|
||||
extensionMap.put("hours"+m.format(firsDay), holidayNum*8);
|
||||
extensionMap.put("hours"+m.format(firsDay), calculationLeaveHour(newRzLeaveDetail).getLeaveHour());
|
||||
}
|
||||
}
|
||||
|
||||
@ -262,7 +279,7 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
overTimeMapper.updateById(rzOverTime);
|
||||
}
|
||||
}
|
||||
return buildData(String.valueOf(rzLeaveDetail.getType()), rzLeave, rzLeaveDetail, newHolidayHour);
|
||||
return buildData(String.valueOf(rzLeaveDetail.getType()), rzLeave, rzLeaveDetail, newHolidayHour, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -271,29 +288,18 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
* @return
|
||||
*/
|
||||
public AjaxResult deleteRzLeaveDetailById(Long id){
|
||||
// RzLeaveDetail rzLeaveDetail = getBaseMapper().selectRzLeaveDetailById(id);
|
||||
// rzLeaveDetail.setUpdateBy(SecurityUtils.getUsername());
|
||||
// rzLeaveDetail.setUpdateTime(DateUtils.getNowDate());
|
||||
// rzLeaveDetail.setDelFlag(Constants.DELETE_FLAG_1);
|
||||
// int r = getBaseMapper().updateRzLeaveDetail(rzLeaveDetail);
|
||||
// if(r < 1){
|
||||
// return AjaxResult.error();
|
||||
// }
|
||||
// //减少总时长
|
||||
// RzLeave rzLeave = rzLeaveMapper.selectRzLeaveById(rzLeaveDetail.getLeaveId());
|
||||
// r = rzLeaveMapper.updateRzLeave(rzLeave);
|
||||
// if(r < 1){
|
||||
// return AjaxResult.error();
|
||||
// }
|
||||
// //反写考勤汇总
|
||||
// RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(rzLeave.getUserId(),rzLeave.getLeaveDate());
|
||||
// rzAttendanceStatistical.setAbsenteeism(new BigDecimal(rzLeave.getWorkHours() + rzLeave.getFuneralHours() + rzLeave.getPaternityHours() + rzLeave.getMaternityHours()
|
||||
// + rzLeave.getMarriageHours() + rzLeave.getCompensatoryHours() + rzLeave.getAnnualHours() + rzLeave.getAbsenceHours() + rzLeave.getSickHours()));
|
||||
// r = rzAttendanceStatisticalMapper.updateRzAttendanceStatistical(rzAttendanceStatistical);
|
||||
// if(r < 1){
|
||||
// return AjaxResult.error();
|
||||
// }
|
||||
return AjaxResult.success();
|
||||
RzLeaveDetail rzLeaveDetail = getBaseMapper().selectRzLeaveDetailById(id);
|
||||
rzLeaveDetail.setUpdateBy(SecurityUtils.getUsername());
|
||||
rzLeaveDetail.setUpdateTime(DateUtils.getNowDate());
|
||||
rzLeaveDetail.setDelFlag(Constants.DELETE_FLAG_1);
|
||||
int r = getBaseMapper().updateRzLeaveDetail(rzLeaveDetail);
|
||||
if(r < 1){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
//减少总时长
|
||||
RzLeave rzLeave = rzLeaveMapper.selectRzLeaveById(rzLeaveDetail.getLeaveId());
|
||||
|
||||
return buildData(String.valueOf(rzLeaveDetail.getType()), rzLeave, rzLeaveDetail, rzLeaveDetail.getLeaveHour(), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -2,6 +2,7 @@ package com.evo.system.controller;
|
||||
|
||||
import com.evo.attendance.domain.vo.RzSalaryVo;
|
||||
import com.evo.common.annotation.Log;
|
||||
import com.evo.common.annotation.RepeatSubmit;
|
||||
import com.evo.common.core.controller.BaseController;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.core.page.TableDataInfo;
|
||||
@ -77,6 +78,7 @@ public class SysStaffController extends BaseController
|
||||
@PreAuthorize("@ss.hasPermi('system:staff:add')")
|
||||
@Log(title = "员工管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
@RepeatSubmit
|
||||
public AjaxResult add(@RequestBody SysStaff sysStaff)
|
||||
{
|
||||
return sysStaffService.insertSysStaff(sysStaff);
|
||||
|
||||
@ -198,7 +198,7 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
||||
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE); //公共
|
||||
dkj_list.add(sysStaff.getTimeClock());
|
||||
//下发照片
|
||||
eqSnDetailService.sendPhoto(dkj_list, Collections.asList(Collections.asMap("userId", String.valueOf(sysStaff.getUserId()), "name", sysStaff.getName(), "photoUrl", ParamUtils.getGlobalStaticUrl()+upload.getFileName())));
|
||||
eqSnDetailService.sendPhoto(dkj_list, Collections.asList(Collections.asMap("userId", String.valueOf(sysStaff.getUserId()), "name", sysStaff.getName(), "photoUrl", ParamUtils.getGlobalStaticUrl()+upload.getFileName(), "deptName", sysStaff.getDeptName())));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user