package cn.timer.api.controller.kqgl.service; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.timer.api.bean.kqmk.KqglAssoLeaveBalance; import cn.timer.api.bean.kqmk.KqglAssoLeaveRules; import cn.timer.api.bean.kqmk.KqglAssoRelationSummary; import cn.timer.api.bean.yggl.YgglMainEmp; import cn.timer.api.controller.kqgl.ClockInTool; import cn.timer.api.dao.kqmk.KqglAssoLeaveBalanceMapper; import cn.timer.api.dto.kqmk.AttEvectionApprovalDto; import cn.timer.api.dto.kqmk.AttLeaveApprovalDto; import cn.timer.api.dto.kqmk.AttOvertimeApprovalDto; import cn.timer.api.dto.kqmk.AttRepairApprovalDto; /** * @author lal * 记录用户假期审批流程 对应减去剩余余额 */ @Service public class KqglServiceImpl implements KqglService { @Autowired private KqglAssoLeaveBalanceMapper kqglassoleavebalancemapper; /** * 考勤请假审批 */ @Override public boolean attleaveapproval(AttLeaveApprovalDto leaveappr) { String startdate = new SimpleDateFormat("yyyy-MM-dd").format(leaveappr.getStarttime()); String enddate = new SimpleDateFormat("yyyy-MM-dd").format(leaveappr.getEndtime()); String[] days=ClockInTool.listToString(ClockInTool.getDays(startdate,enddate)).split(","); for(String num : days) { //记入打卡月汇总关联表 KqglAssoRelationSummary.builder().userId(leaveappr.getUserid()).appTime(num).approvalId(leaveappr.getLeaveid()).approvalType(2).duration(leaveappr.getDuration()) .leaveTypeId(leaveappr.getLeavetype()).startTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(leaveappr.getStarttime())) .endTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(leaveappr.getEndtime())).build().insert(); } YgglMainEmp emp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, leaveappr.getUserid())); int modifynumber = 1; KqglAssoLeaveBalance balan = kqglassoleavebalancemapper.selectOne(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getUserid, leaveappr.getUserid()).eq(KqglAssoLeaveBalance::getOrgCode, leaveappr.getOrgcode()) .orderByDesc(KqglAssoLeaveBalance :: getModifyNumber).last("LIMIT 1")); if(balan != null) { modifynumber = balan.getModifyNumber()+1; } KqglAssoLeaveBalance.builder().leaveRulesId(leaveappr.getLeavetype()).userid(leaveappr.getUserid()).modifyAction(2).balanceDays("-"+leaveappr.getDuration()) .reason("系统按照规则自动").modifyUserid(emp.getEmpNum()).modifyTimer(new Date().getTime()).orgCode(emp.getOrgCode()).isAutomatic(1).modifyNumber(modifynumber).build().insert();//员工假期余额 return true; } /** * 考勤加班审批 */ @Override public boolean attovertimeapproval(AttOvertimeApprovalDto overappr) { String startdate = new SimpleDateFormat("yyyy-MM-dd").format(overappr.getStarttime()); String enddate = new SimpleDateFormat("yyyy-MM-dd").format(overappr.getEndtime()); String[] days=ClockInTool.listToString(ClockInTool.getDays(startdate,enddate)).split(","); for(String num : days) { //记入打卡月汇总关联表 KqglAssoRelationSummary.builder().userId(overappr.getUserid()).appTime(num).approvalId(overappr.getOvertimeid()).approvalType(1).duration(overappr.getDuration()) .overtimeTypeId(overappr.getOvertimetype()).compensateId(overappr.getCompensate()).startTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(overappr.getStarttime())) .endTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(overappr.getEndtime())).build().insert(); } YgglMainEmp emp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, overappr.getUserid()).eq(YgglMainEmp::getOrgCode, overappr.getOrgcode())); //查询当前公司调休的id KqglAssoLeaveRules learul = KqglAssoLeaveRules.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, emp.getOrgCode()).eq(KqglAssoLeaveRules::getRulesType, 2)); if(overappr.getCompensate() == 1) { int modifynumber = 1; KqglAssoLeaveBalance balan = kqglassoleavebalancemapper.selectOne(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getUserid, overappr.getUserid()).eq(KqglAssoLeaveBalance::getOrgCode, overappr.getOrgcode()) .orderByDesc(KqglAssoLeaveBalance :: getModifyNumber).last("LIMIT 1")); if(balan != null) { modifynumber = balan.getModifyNumber()+1; } KqglAssoLeaveBalance.builder().leaveRulesId(learul.getId()).userid(overappr.getUserid()).modifyAction(2).balanceDays("+"+overappr.getDuration()) .reason("系统按照规则自动(加班)").modifyUserid(emp.getEmpNum()).modifyTimer(new Date().getTime()).orgCode(emp.getOrgCode()).isAutomatic(1).modifyNumber(modifynumber).build().insert();//员工假期余额 } return true; } /** * 考勤出差外出审批 */ @Override public boolean attevectionapproval(AttEvectionApprovalDto evecappr) { if(evecappr.getEvectiontype() == 1) { //出差 String startdate = new SimpleDateFormat("yyyy-MM-dd").format(evecappr.getStarttime()); String enddate = new SimpleDateFormat("yyyy-MM-dd").format(evecappr.getEndtime()); String[] days=ClockInTool.listToString(ClockInTool.getDays(startdate,enddate)).split(","); for(String num : days) { //记入打卡月汇总关联表 KqglAssoRelationSummary.builder().userId(evecappr.getUserid()).appTime(num).approvalId(evecappr.getEvectionid()).approvalType(3) .startTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(evecappr.getStarttime())).endTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(evecappr.getEndtime())).build().insert(); } }else { //外出 String startdate = new SimpleDateFormat("yyyy-MM-dd").format(evecappr.getStarttime()); String enddate = new SimpleDateFormat("yyyy-MM-dd").format(evecappr.getEndtime()); String[] days=ClockInTool.listToString(ClockInTool.getDays(startdate,enddate)).split(","); for(String num : days) { //记入打卡月汇总关联表 KqglAssoRelationSummary.builder().userId(evecappr.getUserid()).appTime(num).approvalId(evecappr.getEvectionid()).approvalType(4) .startTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(evecappr.getStarttime())).endTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(evecappr.getEndtime())).build().insert(); } } return true; } /** * 考勤补卡审批 */ @Override public boolean attrepairapproval(AttRepairApprovalDto repaappr) { String cardrepltime = new SimpleDateFormat("yyyy-MM-dd").format(repaappr.getCardrepltime());//补卡时间 //记入打卡月汇总关联表 KqglAssoRelationSummary.builder().userId(repaappr.getUserid()).appTime(cardrepltime).approvalId(repaappr.getRepairid()).approvalType(5).startTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(repaappr.getCardrepltime())).build().insert(); return true; } }