package cn.timer.api.controller.kqgl; import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantLock; import cn.timer.api.aspect.lang.annotation.Log; import cn.timer.api.aspect.lang.enums.BusinessType; import cn.timer.api.bean.dzht.DzhtAssoMbzj; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Console; import cn.timer.api.bean.kqgl.KqglAssoKqjgly; import cn.timer.api.bean.kqgl.PunchRecord; import cn.timer.api.bean.kqgl.UserAttendanceRel; import cn.timer.api.bean.kqgl.UserEquiRelation; import cn.timer.api.bean.kqmk.KqglAssOvertimeVice; import cn.timer.api.bean.kqmk.KqglAssoBcsz; import cn.timer.api.bean.kqmk.KqglAssoDkdz; import cn.timer.api.bean.kqmk.KqglAssoDkjl; import cn.timer.api.bean.kqmk.KqglAssoDkmx; import cn.timer.api.bean.kqmk.KqglAssoDkwx; import cn.timer.api.bean.kqmk.KqglAssoKqj; import cn.timer.api.bean.kqmk.KqglAssoKqzdkfs; import cn.timer.api.bean.kqmk.KqglAssoLeaveBalance; import cn.timer.api.bean.kqmk.KqglAssoLeaveEmployeeBalance; import cn.timer.api.bean.kqmk.KqglAssoLeaveRules; import cn.timer.api.bean.kqmk.KqglAssoMonthPunchSummary; import cn.timer.api.bean.kqmk.KqglAssoOvertimeBasics; import cn.timer.api.bean.kqmk.KqglAssoOvertimeRange; import cn.timer.api.bean.kqmk.KqglAssoOvertimeRules; import cn.timer.api.bean.kqmk.KqglAssoPbmx; import cn.timer.api.bean.kqmk.KqglAssoRelationSummary; import cn.timer.api.bean.kqmk.KqglAssoRulesVice; import cn.timer.api.bean.kqmk.KqglAssoTeshu; import cn.timer.api.bean.kqmk.KqglAssoYhkqz; import cn.timer.api.bean.kqmk.KqglAssoYhsb; import cn.timer.api.bean.kqmk.KqglAssoZhoupaiban; import cn.timer.api.bean.kqmk.KqglMainKqz; import cn.timer.api.bean.yggl.YgglMainEmp; import cn.timer.api.config.annotation.CurrentUser; import cn.timer.api.config.annotation.UserBean; import cn.timer.api.config.exception.CustomException; import cn.timer.api.controller.kqgl.atttimer.RealTimeUpdate; import cn.timer.api.dao.kqgl.PunchRecordMapper; import cn.timer.api.dao.kqgl.UserAttendanceRelMapper; import cn.timer.api.dao.kqgl.UserEquiRelationMapper; import cn.timer.api.dao.kqmk.KqglAssOvertimeViceMapper; import cn.timer.api.dao.kqmk.KqglAssoBcszMapper; import cn.timer.api.dao.kqmk.KqglAssoDkdzMapper; import cn.timer.api.dao.kqmk.KqglAssoDkmxMapper; import cn.timer.api.dao.kqmk.KqglAssoDkwxMapper; import cn.timer.api.dao.kqmk.KqglAssoKqjMapper; import cn.timer.api.dao.kqmk.KqglAssoKqzdkfsMapper; import cn.timer.api.dao.kqmk.KqglAssoLeaveBalanceMapper; import cn.timer.api.dao.kqmk.KqglAssoLeaveRulesMapper; import cn.timer.api.dao.kqmk.KqglAssoMonthPunchSummaryMapper; import cn.timer.api.dao.kqmk.KqglAssoOvertimeRangeMapper; import cn.timer.api.dao.kqmk.KqglAssoOvertimeRulesMapper; import cn.timer.api.dao.kqmk.KqglAssoPbmxMapper; import cn.timer.api.dao.kqmk.KqglAssoRelationSummaryMapper; import cn.timer.api.dao.kqmk.KqglAssoRulesViceMapper; import cn.timer.api.dao.kqmk.KqglAssoTeshuMapper; import cn.timer.api.dao.kqmk.KqglAssoYhkqzMapper; import cn.timer.api.dao.kqmk.KqglAssoYhsbMapper; import cn.timer.api.dao.kqmk.KqglAssoZhoupaibanMapper; import cn.timer.api.dao.kqmk.KqglMainKqzMapper; import cn.timer.api.dto.kqmk.AdditionalDto; import cn.timer.api.dto.kqmk.AttLateLate; import cn.timer.api.dto.kqmk.AttMemberSettings; import cn.timer.api.dto.kqmk.AttSchedule; import cn.timer.api.dto.kqmk.AttSchedulingDto; import cn.timer.api.dto.kqmk.AttendanceAssistantDto; import cn.timer.api.dto.kqmk.AttendanceCardListDto; import cn.timer.api.dto.kqmk.AttendanceMachineStatus; import cn.timer.api.dto.kqmk.AttendanceSummaryQueryDto; import cn.timer.api.dto.kqmk.AttqueryCriteriaDto; import cn.timer.api.dto.kqmk.AttstateDate; import cn.timer.api.dto.kqmk.BalanceSheetDataDto; import cn.timer.api.dto.kqmk.CalendarDetailsDto; import cn.timer.api.dto.kqmk.CalendarPunchDetailsDto; import cn.timer.api.dto.kqmk.CalendarTableDataDto; import cn.timer.api.dto.kqmk.ChangePunchResultsDto; import cn.timer.api.dto.kqmk.CompensateDto; import cn.timer.api.dto.kqmk.DailyDetailsDto; import cn.timer.api.dto.kqmk.DetailsofbusinessDto; import cn.timer.api.dto.kqmk.EmployeeLeaveBalanceDto; import cn.timer.api.dto.kqmk.IndividualOvertimeRuleDto; import cn.timer.api.dto.kqmk.JiaqibalanceDto; import cn.timer.api.dto.kqmk.KqglAssoLeaveRulesDto; import cn.timer.api.dto.kqmk.KqglAssoMonthPunchSummaryDto; import cn.timer.api.dto.kqmk.KqglAssoOvertimeRulesDto; import cn.timer.api.dto.kqmk.KqglAssoPbmxDto; import cn.timer.api.dto.kqmk.KqglAssoRulesViceDto; import cn.timer.api.dto.kqmk.KqglMainKqzDto; import cn.timer.api.dto.kqmk.KqzAttendanceGroupSearchDto; import cn.timer.api.dto.kqmk.LeaveTypeDto; import cn.timer.api.dto.kqmk.MachinememberDto; import cn.timer.api.dto.kqmk.ModifyEmployeeBalanceDto; import cn.timer.api.dto.kqmk.OriginalRecordDto; import cn.timer.api.dto.kqmk.ResttryfixdayDto; import cn.timer.api.dto.kqmk.SetConditionsDto; import cn.timer.api.dto.kqmk.StartTimeRestDto; import cn.timer.api.dto.kqmk.UserAttendanceRelDto; import cn.timer.api.dto.kqmk.VacationInformationDto; import cn.timer.api.dto.kqmk.WorkbenchCalendarDto; import cn.timer.api.utils.DateUtil; import cn.timer.api.utils.ResponseResult; import cn.timer.api.utils.Result; import cn.timer.api.utils.ResultUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @Api(tags = "3.0[1]考勤模块") @RestController @Transactional @RequestMapping(value = "/kqmk", produces = { "application/json", "multipart/form-data" }) public class TimeCardController { @Value("${config-8timer.machine8timerUrl}") public String mac_command; // 回调地址 @Autowired private KqglAssoBcszMapper kqglassobcszmapper; @Autowired private KqglAssoOvertimeRulesMapper kqglassoovertimerulesmapper; @Autowired private KqglAssOvertimeViceMapper kqglassovertimevicemapper; //用户和考勤组关系 @Autowired private UserAttendanceRelMapper userattendancerelmapper; private static ReentrantLock lock= new ReentrantLock(); /** * 查询列表-获取班次数据-分页 */ @PostMapping(value = "/ShiftDataList") @ApiOperation(value = "1.获取班次数据-根据 组织机构代码-分页", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 1) public Result<Object> selectShifts(@CurrentUser UserBean userBean, @RequestBody AttqueryCriteriaDto attquerycriteriadto) { IPage<KqglAssoBcsz> page = new Page<KqglAssoBcsz>( attquerycriteriadto.getCurrentPage() == null ? 1 : attquerycriteriadto.getCurrentPage(), attquerycriteriadto.getTotalPage() == null ? 10 : attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); IPage<KqglAssoBcsz> pageAs = kqglassobcszmapper.selectPage(page, new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getQyid, userBean.getOrgCode()).orderByDesc(KqglAssoBcsz::getId)); List<KqglAssoBcsz> listAs = pageAs.getRecords(); return ResultUtil.data(pageAs, listAs, "操作成功!"); } /** * 新增班次信息 */ @PostMapping(value = "/Shif") @ApiOperation(value = "2:新增班次信息", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 2) public Result<KqglAssoBcsz> ShiftInformation(@CurrentUser UserBean userBean,@RequestBody KqglAssoBcsz shif) { String sdf = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); shif.setQyid(userBean.getOrgCode()); shif.setLusjTime(new Date().getTime()); shif.setLuryid(userBean.getEmpNum());//录入人员 boolean xbbydk = false; if(shif.getIsXbdk() == 1) { xbbydk = true; } if(shif.getSxbcs() == 1) { if(xbbydk) { shif.setXbdk1(""); String asd = ClockInTool.addtime(sdf+" "+shif.getSbdk1()+":00", "1").substring(11, 16); shif.setXbdk1(asd); } }else if(shif.getSxbcs() == 2) { if(xbbydk) { shif.setXbdk2(""); String asd = ClockInTool.addtime(sdf+" "+shif.getSbdk2()+":00", "1").substring(11, 16); shif.setXbdk2(asd); } }else { if(xbbydk) { shif.setXbdk3(""); String asd = ClockInTool.addtime(sdf+" "+shif.getSbdk3()+":00", "1").substring(11, 16); shif.setXbdk3(asd); } } // if(kqglassobcszmapper.insert(shif)>0){ // return ResultUtil.data(shif, "新增班次成功"); // }else{ // return ResultUtil.error("新增班次失败"); // } if (!shif.insert()) return ResultUtil.error("操作失败"); return ResultUtil.data(shif, "新增班次成功"); } /** * 删除班次信息 */ @DeleteMapping(value = "/Shif/{id}") @ApiOperation(value = "3:删除班次信息", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 3) public Result<Integer> deleteShiftInformation(@PathVariable("id") Integer id) { return KqglAssoBcsz.builder().id(id).build().deleteById() ? ResultUtil.success("删除成功!") : ResultUtil.error("没有找到该对象"); } /** * 根据班次id获取班次信息 */ @GetMapping(value="/Shifts/{id}") @ApiOperation(value = "4:获取班次信息-根据班次id", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 4) public Result<Object> getShiftCenter(@PathVariable("id") Integer id) { return ResultUtil.data(KqglAssoBcsz.builder().id(id).build().selectById(),"操作成功!"); } /** * 修改班次信息 */ @PutMapping(value = "/Shif") @ApiOperation(value = "5:修改班次信息", httpMethod = "PUT", notes = "接口发布说明") @ApiOperationSupport(order = 5) public Result<KqglAssoBcsz> updateShiftInformation(@CurrentUser UserBean userBean,@RequestBody KqglAssoBcsz shif) { shif.setQyid(userBean.getOrgCode());//企业id if (kqglassobcszmapper.update(shif) > 0) { return ResultUtil.data(shif,"修改班次信息成功"); } return ResultUtil.error("修改班次信息失败"); } /** * 查询列表-获取加班规则数据-分页 * @throws InvocationTargetException * @throws IllegalAccessException */ @PostMapping(value = "/select_overtime_rules") @ApiOperation(value = "6.获取加班规则数据-根据 组织机构代码-分页", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 6) public Result<Object> selectOvertimeRules(@CurrentUser UserBean userBean, @RequestBody AttqueryCriteriaDto attquerycriteriadto) throws IllegalAccessException, InvocationTargetException { IPage<KqglAssoOvertimeRules> page = new Page<KqglAssoOvertimeRules>( attquerycriteriadto.getCurrentPage() == null ? 1 : attquerycriteriadto.getCurrentPage(), attquerycriteriadto.getTotalPage() == null ? 10 : attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); IPage<KqglAssoOvertimeRules> pageAs = kqglassoovertimerulesmapper.selectPage(page, new QueryWrapper<KqglAssoOvertimeRules>().lambda().eq(KqglAssoOvertimeRules::getOrgCode, userBean.getOrgCode())); List<KqglAssoOvertimeRules> listAs = pageAs.getRecords(); List<KqglAssoOvertimeRulesDto> rulesdto = new ArrayList<KqglAssoOvertimeRulesDto>(); for (int i = 0, n = listAs.size(); i < n; i++) { String[] nary = null; String[] naryid = null; if(listAs.get(i).getAppliedScope() == 0) {//全公司 nary = new String[1];//用户名 // naryid = new String[1];//用户名 nary[0] = "未使用"; // naryid[0] = "0"; }else { List<KqglAssoOvertimeRange> overtim = kqglassoovertimerangemapper.selectList(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getOvertimeRulesId, listAs.get(i).getId())); nary = new String[overtim.size()];//用户名 naryid = new String[overtim.size()];//用户名 for(int y = 0,l = overtim.size(); y < l ; y++) { KqglMainKqz kqzmc = kqglmainkqzmapper.selectOne(new QueryWrapper<KqglMainKqz>().lambda().eq(KqglMainKqz::getId, overtim.get(y).getAttgroupId())); nary[y] = kqzmc.getName(); naryid[y] = String.valueOf(kqzmc.getId()); } } List<KqglAssOvertimeVice> vice = kqglassovertimevicemapper.selectList(new QueryWrapper<KqglAssOvertimeVice>().lambda().eq(KqglAssOvertimeVice::getOvertimeRulesId, listAs.get(i).getId())); StartTimeRestDto[] starttime = new StartTimeRestDto[vice.size()];//用户名; for(int r = 0,t = vice.size(); r < t ; r++) { StartTimeRestDto startt = new StartTimeRestDto(vice.get(r).getBreakStartTime(),vice.get(r).getBreakEndTime(),vice.get(r).getOverType()); starttime[r] = startt; } KqglAssoOvertimeRulesDto ruldto = KqglAssoOvertimeRulesDto.builder().build(); ruldto.setApplyrange(nary); ruldto.setApplyrangeid(naryid); ruldto.setStarttime(starttime); BeanUtil.copyProperties(listAs.get(i), ruldto , "starttime","applyrange","applyrangeid"); rulesdto.add(ruldto); } return ResultUtil.data(pageAs, rulesdto, "操作成功!"); } @Autowired private KqglAssoOvertimeRangeMapper kqglassoovertimerangemapper; /** * 新增/修改--加班规则 */ @PostMapping(value = "/overtime_rules") @ApiOperation(value = "7:新增/修改--加班规则", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 7) public Result<Object> InOvertimerules(@CurrentUser UserBean userBean,@RequestBody KqglAssoOvertimeRulesDto overrules) { overrules.setCreateTime(new Date().getTime()); overrules.setOrgCode(userBean.getOrgCode()); overrules.setCreateUserid(userBean.getEmpNum()); KqglAssoOvertimeRules rul = KqglAssoOvertimeRules.builder().build(); BeanUtil.copyProperties(overrules, rul , "starttime","applyrange"); if (!rul.insertOrUpdate()) return ResultUtil.error("操作失败"); Integer id = rul.getId(); Console.log("新增/修改加班规则id: " + id); List<KqglAssoOvertimeRange> overatts=new ArrayList<KqglAssoOvertimeRange>(); String[] launchs = overrules.getApplyrangeid(); if(launchs.length == 0) { KqglAssoOvertimeRange.builder().build().delete(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getOvertimeRulesId, id)); }else if(launchs != null && launchs.length>0){ for(int p=0;p<launchs.length;p++){ KqglAssoOvertimeRange.builder().build().delete(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getOvertimeRulesId, id)); KqglAssoOvertimeRange.builder().build().delete(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getAttgroupId, Integer.valueOf(launchs[p]))); KqglAssoOvertimeRange vice = KqglAssoOvertimeRange.builder().build(); vice.setOvertimeRulesId(id); vice.setAttgroupId(Integer.valueOf(launchs[p])); overatts.add(vice); //应用范围应用到相对应的考勤组************ KqglMainKqz.builder().id(Integer.valueOf(launchs[p])).overtimeRulesId(id).build().updateById(); } } if(overatts.size() > 0) { kqglassoovertimerangemapper.insertovertimerangelist(overatts); } List<KqglAssOvertimeVice> overtimes=new ArrayList<KqglAssOvertimeVice>(); StartTimeRestDto[] rest = overrules.getStarttime(); if(rest != null && rest.length>0){ for(int p=0;p<rest.length;p++){ if(rest[p].getStarttime() != null) { KqglAssOvertimeVice.builder().build().delete(new QueryWrapper<KqglAssOvertimeVice>().lambda().eq(KqglAssOvertimeVice::getOvertimeRulesId, id)); KqglAssOvertimeVice vice = new KqglAssOvertimeVice(); vice.setOvertimeRulesId(id); vice.setBreakStartTime(rest[p].getStarttime()); vice.setBreakEndTime(rest[p].getEndtime()); vice.setOverType(rest[p].getOvertype()); overtimes.add(vice); }else { continue; } } } if(overtimes.size()>0){ kqglassovertimevicemapper.insertovertimeviceList(overtimes); } return ResultUtil.data(rul, "操作成功!"); } /** * 根据加班规则id获取加班规则信息 */ @GetMapping(value="/Overtime/{id}") @ApiOperation(value = "8:根据加班规则id获取加班规则信息", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 8) public Result<IndividualOvertimeRuleDto> getOvertimeRules(@PathVariable("id") Integer id) { IndividualOvertimeRuleDto overrule = IndividualOvertimeRuleDto.builder().build(); KqglAssoOvertimeRules rules = KqglAssoOvertimeRules.builder().id(id).build().selectById(); List<KqglAssoOvertimeRange> overtim = kqglassoovertimerangemapper.selectList(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getOvertimeRulesId, rules.getId())); String[] arr = new String[overtim.size()];//用户名 for (int i = 0, n = overtim.size(); i < n; i++) { arr[i] = overtim.get(i).getAttgroupId().toString(); } KqglAssoOvertimeRulesDto ruldto = KqglAssoOvertimeRulesDto.builder().build(); ruldto.setApplyrange(arr); BeanUtil.copyProperties(rules, ruldto , "starttime","applyrange"); overrule.setRules(ruldto); List<KqglAssOvertimeVice> vice = new LambdaQueryChainWrapper<KqglAssOvertimeVice>(kqglassovertimevicemapper).eq(KqglAssOvertimeVice::getOvertimeRulesId, id).list(); overrule.setStarttime(vice); return ResultUtil.data(overrule,"操作成功!"); } /** * 删除加班规则 * @throws Exception */ @DeleteMapping(value = "/Overtime/{id}") @ApiOperation(value = "9:删除加班规则", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 9) public Result<Integer> deleteOvertimeRules(@PathVariable("id") Integer id) throws Exception { if(!KqglAssoOvertimeRules.builder().id(id).build().deleteById()) { throw new Exception(); }else { List<KqglAssoOvertimeRange> rans = kqglassoovertimerangemapper.selectList(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getOvertimeRulesId, id)); for(KqglAssoOvertimeRange ran:rans) { KqglMainKqz.builder().id(ran.getAttgroupId()).overtimeRulesId(0).build().updateById(); } KqglAssoOvertimeRange.builder().build().delete(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getOvertimeRulesId, id)); KqglAssOvertimeVice.builder().build().delete(new QueryWrapper<KqglAssOvertimeVice>().lambda().eq(KqglAssOvertimeVice::getOvertimeRulesId, id)); return ResultUtil.success("删除成功!"); } } /** * 编辑加班基础设置 */ @PostMapping(value = "/overtime_basic_settings") @ApiOperation(value = "10:编辑加班基础设置", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 10) public Result<Object> OvertimeBasicSettings(@CurrentUser UserBean userBean,@RequestBody KqglAssoOvertimeBasics overtiasics) { overtiasics.setModifyUserid(userBean.getEmpNum()); overtiasics.setModifyTime(new Date().getTime()); overtiasics.setOrgCode(userBean.getOrgCode()); return overtiasics.insertOrUpdate() ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!"); } @Autowired private KqglAssoLeaveRulesMapper kqglassoleaverulesmapper; /** * 初始化假期数据 */ @PostMapping(value = "/initialization_data") @ApiOperation(value = "11:初始化假期数据", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 11) public Result<Object> InitializationData(@CurrentUser UserBean userBean) { //获取模板数据 List<KqglAssoLeaveRules> ruless = new LambdaQueryChainWrapper<KqglAssoLeaveRules>(kqglassoleaverulesmapper).eq(KqglAssoLeaveRules::getOrgCode, 0).list(); //查询当前公司是否已初始化 KqglAssoLeaveRules rule = kqglassoleaverulesmapper.selectOne(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, userBean.getOrgCode()) .eq(KqglAssoLeaveRules::getLeaveType, 1).last("LIMIT 1")); if(rule == null) { List<KqglAssoLeaveRules> rullist = new ArrayList<KqglAssoLeaveRules>(); for(KqglAssoLeaveRules rul : ruless){ KqglAssoLeaveRules vice = KqglAssoLeaveRules.builder().name(rul.getName()).company(rul.getCompany()).leaveType(rul.getLeaveType()) .apply(rul.getApply()).createTime(new Date().getTime()).createUserid(userBean.getEmpNum()).orgCode(userBean.getOrgCode()) .isOpen(rul.getIsOpen()).leaveBalance(rul.getLeaveBalance()).rulesType(rul.getRulesType()).build(); rullist.add(vice); } if(rullist.size() > 0) { kqglassoleaverulesmapper.insertleaverulesList(rullist); } return ResultUtil.success("操作成功!"); }else { return ResultUtil.success("重复初始化数据!"); } } @Autowired private KqglAssoRulesViceMapper kqglassorulesvicemapper; /** * 新增/修改--假期规则 */ @PostMapping(value = "/leave_rules") @ApiOperation(value = "12:新增/修改--假期规则", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 12) public Result<Object> LeaveRules(@CurrentUser UserBean userBean,@RequestBody KqglAssoLeaveRulesDto leaverules) { String current_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); leaverules.setCreateTime(new Date().getTime()); leaverules.setOrgCode(userBean.getOrgCode()); leaverules.setCreateUserid(userBean.getEmpNum()); leaverules.setIsOpen(1);//是否开启 0:否;1:是 [只针对系统项] KqglAssoLeaveRules learul = KqglAssoLeaveRules.builder().build(); // 克隆 KqglAssoOvertimeRulesDto对象 到 KqglAssoOvertimeRules对象 BeanUtil.copyProperties(leaverules, learul , "starttime"); if (!learul.insertOrUpdate()) return ResultUtil.error("操作失败"); Integer id = learul.getId(); Console.log("新增/修改--假期规则id: " + id); KqglAssoLeaveEmployeeBalance.builder().build().delete(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getLeaveRulesId, id) .eq(KqglAssoLeaveEmployeeBalance :: getOrgCode, userBean.getOrgCode())); List<YgglMainEmp> yggl = YgglMainEmp.builder().build().selectList(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode())); if(leaverules.getLeaveBalance() == 1) {//假期余额 0:关(该项余额为“不限余额”);1:开(该项余额为“0”) //该项公司员工余额为“0” for(YgglMainEmp ye:yggl) { KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(id).userid(ye.getEmpNum()).balanceDays(0.0).modifyUserid(userBean.getEmpNum()).modifyTimer(current_time).orgCode(userBean.getOrgCode()).build().insert(); } }else { for(YgglMainEmp ye:yggl) { KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(id).userid(ye.getEmpNum()).balanceDays(-1).modifyUserid(userBean.getEmpNum()).modifyTimer(current_time).orgCode(userBean.getOrgCode()).build().insert(); } } List<KqglAssoRulesVice> vices = new ArrayList<KqglAssoRulesVice>(); String[] rest = leaverules.getRange(); if(rest.length == 0) { KqglAssoRulesVice.builder().build().delete(new QueryWrapper<KqglAssoRulesVice>().lambda().eq(KqglAssoRulesVice::getLeaveRulesId, id)); }else if(rest != null && rest.length>0){ for(int p=0;p<rest.length;p++){ KqglAssoRulesVice.builder().build().delete(new QueryWrapper<KqglAssoRulesVice>().lambda().eq(KqglAssoRulesVice::getLeaveRulesId, id)); KqglAssoRulesVice vice = KqglAssoRulesVice.builder().build(); vice.setLeaveRulesId(id); vice.setAttgroupId(Integer.valueOf(rest[p])); vices.add(vice); } } if(vices.size()>0){ kqglassorulesvicemapper.insertrulesviceList(vices); } return ResultUtil.data(learul, "操作成功!"); } /** * 删除假期规则 * @throws Exception */ @DeleteMapping(value = "/leave_rule/{id}") @ApiOperation(value = "13: 删除假期规则", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 13) public Result<Integer> Deleteleaverule(@PathVariable("id") Integer id) throws Exception { if(!KqglAssoLeaveRules.builder().id(id).build().deleteById()) { throw new Exception(); }else { KqglAssoRulesVice.builder().build().delete(new QueryWrapper<KqglAssoRulesVice>().lambda().eq(KqglAssoRulesVice::getLeaveRulesId, id)); return ResultUtil.success("删除成功!"); } } /** * 根据假期规则id获取假期规则信息 */ @GetMapping(value="/Vacation_information/{id}") @ApiOperation(value = "14:根据假期规则id获取假期规则信息", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 14) public Result<VacationInformationDto> VacationInformation(@PathVariable("id") Integer id) { VacationInformationDto overrule = VacationInformationDto.builder().build(); KqglAssoLeaveRules rules = KqglAssoLeaveRules.builder().id(id).build().selectById(); overrule.setRules(rules); List<KqglAssoRulesViceDto> vice = kqglassorulesvicemapper.leaveRulesIdload(id); overrule.setRange(vice); return ResultUtil.data(overrule,"操作成功!"); } /** * 是否开启假期规则 */ @PutMapping(value = "/leave_rules_open") @ApiOperation(value = "14.1:是否开启假期规则 ", httpMethod = "PUT", notes = "接口发布说明") @ApiOperationSupport(order = 14) public Result<Object> leaveRulesOpen(@RequestBody KqglAssoLeaveRulesDto kqglAssoLeaveRulesDto) { UpdateWrapper<KqglAssoLeaveRules> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", kqglAssoLeaveRulesDto.getId()).set("is_open", kqglAssoLeaveRulesDto.getIsOpen()); KqglAssoLeaveRules.builder().build().update(updateWrapper); return ResultUtil.success(); } @Autowired private KqglAssoKqjMapper kqglassokqjmapper; @Autowired private KqglAssoYhsbMapper kqglassoyhsbmapper; @Autowired private KqglMainKqzMapper kqglmainkqzmapper; /** * 获取考勤机数据 */ @GetMapping(value="/AttMachine") @ApiOperation(value = "15:获取考勤机数据-根据 组织机构代码", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 15) public Result<Object> getAttMachineEquipment(@CurrentUser UserBean userBean){ List<KqglAssoKqj> attendanList = new LambdaQueryChainWrapper<KqglAssoKqj>(kqglassokqjmapper).eq(KqglAssoKqj::getQyid, userBean.getOrgCode()).list(); return ResultUtil.data(attendanList,"操作成功!"); } @PostMapping(value = "/att_machine_status") @ApiOperation(value = "15.1:获取考勤机状态", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 28) public Result<Object> AttendanceMachineStatus(@CurrentUser UserBean userBean,@RequestBody AttendanceMachineStatus balance) { String msg = ""; List<AttstateDate> stas = new ArrayList<AttstateDate>(); String[] state = balance.getState(); if(state.length > 0) { for(int p=0;p<state.length;p++){ AttstateDate sta = AttstateDate.builder().build(); String url = mac_command+"/getDevInfo"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", state[p]); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); com.alibaba.fastjson.JSONObject object = JSON.parseObject(request.getBody()); msg = object.get("message").toString(); sta.setCode(state[p]); sta.setState(Integer.valueOf(object.get("data").toString())); stas.add(sta); } catch (RestClientException e) { Logoutput("提示:考勤机服务出错-1"); return ResultUtil.success("失败"); } } } return ResultUtil.data(stas,"获取成功"); } @SuppressWarnings("all") @GetMapping(value="/synchrotime/{code}") @ApiOperation(value = "考勤机一键同步", httpMethod = "GET", notes = "接口发布说明") public Result<Object> SynchronizationTime(@CurrentUser UserBean userBean,@PathVariable("code") String code) { String url = mac_command+"/setTime"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", code); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); Logoutput(request.getBody()); } catch (RestClientException e) { Logoutput("提示:考勤机服务出错-2"); return ResultUtil.success("失败"); } return ResultUtil.success("成功"); } /** * 移除考勤机管理员 */ @SuppressWarnings("all") @PostMapping(value = "/removeadministrator/{kqjid}/{id}") @ApiOperation(value = "移除考勤机管理员", httpMethod = "POST", notes = "接口发布说明") public Result<Object> RemoveAdministrator(@PathVariable int kqjid,@PathVariable int id, @RequestBody Map<String,String> mmd) { String[] xgyh = mmd.get("a").split(","); if(xgyh.length > 0){ KqglAssoKqj kqj = KqglAssoKqj.builder().id(kqjid).build().selectById();//查询考勤机“序列号” for(int a=0;a<xgyh.length;a++){ String url = mac_command+"/addUserPrivilege"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", kqj.getCode()); params.add("userId", xgyh[a]); params.add("privilege", 1); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); Logoutput(request.getBody()); } catch (RestClientException e) { Logoutput("提示:考勤机服务出错-3"); return ResultUtil.success("失败"); } KqglAssoYhsb.builder().id(id).isGly(0).build().updateById(); } } return ResultUtil.success("成功"); } @SuppressWarnings("all") @PostMapping(value = "/modifyauthority/{kqjid}/{id}") @ApiOperation(value = "添加考勤机管理员", httpMethod = "POST", notes = "接口发布说明") public Result<Object> ModifyAuthority(@CurrentUser UserBean userBean,@PathVariable int kqjid,@PathVariable int id, @RequestBody Map<String,String> mmd) { String[] xgyh = mmd.get("a").split(","); if(xgyh.length > 0){ KqglAssoKqj kqj = KqglAssoKqj.builder().id(kqjid).build().selectById();//查询考勤机“序列号” for(int a=0;a<xgyh.length;a++){ String url = mac_command+"/addUserPrivilege"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", kqj.getCode()); params.add("userId", xgyh[a]); params.add("privilege", 2); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); Logoutput(request.getBody()); } catch (RestClientException e) { Logoutput("提示:考勤机服务出错-4"); return ResultUtil.success("失败"); } UserEquiRelation kqjry = new UserEquiRelation(); kqjry.setId(id); kqjry.setIsGly(1); userequirelationmapper.updateByPrimaryKeySelective(kqjry); } } return ResultUtil.success("成功"); } /** * 新增考勤机 */ @SuppressWarnings("all") @PostMapping(value = "/Attendance_machine") @ApiOperation(value = "16:新增考勤机", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 16) public Result<Object> AttendanceMachine(@CurrentUser UserBean userBean,@RequestBody KqglAssoKqj kqglassokqj) { kqglassokqj.setLuryid(userBean.getEmpNum()); kqglassokqj.setLusjTime(new Date().getTime()); kqglassokqj.setQyid(userBean.getOrgCode()); KqglAssoKqj kqj = KqglAssoKqj.builder().build().selectOne(new QueryWrapper<KqglAssoKqj>().lambda().eq(KqglAssoKqj::getCode, kqglassokqj.getCode())); if(kqj == null) { String msg = ""; if(!kqglassokqj.insert()) return ResultUtil.error("操作失败--新增考勤机"); String url = mac_command+"/addDev"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("orgCode", kqglassokqj.getType()); params.add("devId", kqglassokqj.getCode()); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); com.alibaba.fastjson.JSONObject object = JSON.parseObject(request.getBody()); msg = object.get("message").toString(); } catch (RestClientException e) { // Logoutputln("提示:考勤机服务出错"); return ResultUtil.success(msg); } return ResultUtil.data(kqglassokqj,msg); }else { return ResultUtil.error("考勤机已存在或已被使用"); } } /** * 删除考勤机信息 */ @DeleteMapping(value = "/attmachine/{id}") @ApiOperation(value = "17:删除考勤机信息", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 17) public Result<Integer> deattmachine(@PathVariable("id") Integer id) { return KqglAssoKqj.builder().id(id).build().deleteById() ? ResultUtil.success("删除成功!") : ResultUtil.error("没有找到该对象"); } /** * 考勤机内成员 */ @GetMapping(value="/aircraftmembers/{id}") @ApiOperation(value = "18:考勤机成员", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 18) public ResponseResult selectAircraftMembers(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) { List<MachinememberDto> kqjcys = kqglassoyhsbmapper.selectAircraftMembers(id,userBean.getOrgCode()); return new ResponseResult().success("考勤机成员", kqjcys); } /** * 获取考勤机数据-根据 组织机构代码 */ @GetMapping(value="/AttGroupMachine") @ApiOperation(value = "19:获取考勤机数据-根据 组织机构代码", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 19) public Result<Object> getAttGroupMachineList(@CurrentUser UserBean userBean) { List<KqglMainKqzDto> attmacList = kqglmainkqzmapper.selectAttGroupMachineByQyid(userBean.getOrgCode()); return ResultUtil.data(attmacList); } /*********打卡地址***********/ @Autowired private KqglAssoDkdzMapper kqglassodkdzmapper; /** * 获取打卡地址数据 */ @PostMapping(value = "/PunchAddress") @ApiOperation(value = "20:获取打卡地址数据-根据 组织机构代码-分页", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 20) public Result<Object> getPunchCardAddress(@CurrentUser UserBean userBean, @RequestBody AttqueryCriteriaDto attquerycriteriadto) { IPage<KqglAssoDkdz> page = new Page<KqglAssoDkdz>( attquerycriteriadto.getCurrentPage() == null ? 1 : attquerycriteriadto.getCurrentPage(), attquerycriteriadto.getTotalPage() == null ? 10 : attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); IPage<KqglAssoDkdz> pageAs = kqglassodkdzmapper.selectPage(page, new QueryWrapper<KqglAssoDkdz>().lambda().eq(KqglAssoDkdz::getQyid, userBean.getOrgCode()).orderByDesc(KqglAssoDkdz::getId)); List<KqglAssoDkdz> listAs = pageAs.getRecords(); return ResultUtil.data(pageAs, listAs, "操作成功!"); } /** * 根据打卡地址id获取打卡地址信息 */ @GetMapping(value="/PuAddress/{id}") @ApiOperation(value = "21:获取打卡地址信息-根据打卡地址id", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 21) public Result<Object> getPunchAddressByid(@PathVariable("id") Integer id) { return ResultUtil.data(KqglAssoDkdz.builder().id(id).build().selectById(),"操作成功!"); } /** * 新增/修改--打卡地址信息 */ @PostMapping(value = "/PunchAddress_addmod") @ApiOperation(value = "22:新增/修改--打卡地址信息", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 22) public Result<Object> PunchCardAddress(@CurrentUser UserBean userBean,@RequestBody KqglAssoDkdz kqglassodkdz) { kqglassodkdz.setLuryid(userBean.getEmpNum()); kqglassodkdz.setLusjTime(new Date().getTime()); kqglassodkdz.setQyid(userBean.getOrgCode()); return kqglassodkdz.insertOrUpdate() ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!"); } /** * 删除打卡地址信息 */ @DeleteMapping(value = "/PunchAddress/{id}") @ApiOperation(value = "23:删除打卡地址信息", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 23) public Result<Integer> deletePunchCardAddress(@PathVariable("id") Integer id) { return KqglAssoDkdz.builder().id(id).build().deleteById() ? ResultUtil.success("删除成功!") : ResultUtil.error("没有找到该对象"); } /*********打卡WIFI***********/ /** * 获取打卡WIFI数据 */ @Autowired private KqglAssoDkwxMapper kqglassodkwxmapper; @PostMapping(value = "/PunchWIFI") @ApiOperation(value = "24:获取打卡WIFI数据-根据 组织机构代码-分页", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 24) public Result<Object> getPunchCardWIFI(@CurrentUser UserBean userBean, @RequestBody AttqueryCriteriaDto attquerycriteriadto) { IPage<KqglAssoDkwx> page = new Page<KqglAssoDkwx>( attquerycriteriadto.getCurrentPage() == null ? 1 : attquerycriteriadto.getCurrentPage(), attquerycriteriadto.getTotalPage() == null ? 10 : attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); IPage<KqglAssoDkwx> pageAs = kqglassodkwxmapper.selectPage(page, new QueryWrapper<KqglAssoDkwx>().lambda().eq(KqglAssoDkwx::getQyid, userBean.getOrgCode()).orderByDesc(KqglAssoDkwx::getId)); List<KqglAssoDkwx> listAs = pageAs.getRecords(); return ResultUtil.data(pageAs, listAs, "操作成功!"); } /** * 根据打卡WIFIid获取打卡WIFI信息 */ @GetMapping(value="/PuWIFI/{id}") @ApiOperation(value = "25:获取打卡WIFI信息-根据打卡WIFIid", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 25) public Result<Object> getPunchWIFIByid(@PathVariable("id") Integer id) { return ResultUtil.data(KqglAssoDkwx.builder().id(id).build().selectById(),"操作成功!"); } /** * 新增/修改--打卡WIFI信息 */ @PostMapping(value = "/PunchWIFI_addmod") @ApiOperation(value = "26:新增/修改--打卡WIFI信息", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 26) public Result<Object> PunchCardWIFI(@CurrentUser UserBean userBean,@RequestBody KqglAssoDkwx kqglassodkwx) { List<KqglAssoDkwx> cxwifi = KqglAssoDkwx.builder().build().selectList(new QueryWrapper<KqglAssoDkwx>().lambda().eq(KqglAssoDkwx::getQyid, userBean.getOrgCode()).eq(KqglAssoDkwx::getMac, kqglassodkwx.getMac())); if(cxwifi.size() > 0 && kqglassodkwx.getId() == null) { return ResultUtil.error("此WiFi已存在"); } kqglassodkwx.setLuryid(userBean.getEmpNum()); kqglassodkwx.setLusjTime(new Date().getTime()); kqglassodkwx.setQyid(userBean.getOrgCode()); return kqglassodkwx.insertOrUpdate() ? ResultUtil.success("添加成功!") : ResultUtil.error("添加失败!"); } /** * 删除打卡WIFI信息 */ @DeleteMapping(value = "/PunchWIFI/{id}") @ApiOperation(value = "27:删除打卡地址信息", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 27) public Result<Integer> deletePunchCardWIFI(@PathVariable("id") Integer id) { return KqglAssoDkwx.builder().id(id).build().deleteById() ? ResultUtil.success("删除成功!") : ResultUtil.error("没有找到该对象"); } @Autowired private KqglAssoLeaveBalanceMapper kqglassoleavebalancemapper; /** * 新增/修改--员工假期余额 */ @PostMapping(value = "/Leave_balance") @ApiOperation(value = "28:新增/修改--员工假期余额", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 28) public Result<Object> LeaveBalance(@CurrentUser UserBean userBean,@RequestBody KqglAssoLeaveBalance balance) { balance.setModifyUserid(userBean.getEmpNum()); balance.setModifyTimer(new Date().getTime()); balance.setOrgCode(userBean.getOrgCode()); String balanceDays = "0"; if(balance.getModifyAction() == 1) {//增加 balanceDays = "+" + balance.getBalanceDays(); }else { balanceDays = "-" + balance.getBalanceDays(); } balance.setBalanceDays(balanceDays); KqglAssoLeaveBalance balan = kqglassoleavebalancemapper.selectOne(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getUserid, balance.getUserid()) .orderByDesc(KqglAssoLeaveBalance :: getModifyNumber).last("LIMIT 1")); if(balan != null) { balance.setModifyNumber(balan.getModifyNumber()+1); }else { balance.setModifyNumber(1); } //添加成功 if(balance.insert()) { //查询员工假期余额表中所对应的假期id KqglAssoLeaveEmployeeBalance emba = KqglAssoLeaveEmployeeBalance.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getLeaveRulesId, balance.getLeaveRulesId()) .eq(KqglAssoLeaveEmployeeBalance::getUserid, balance.getUserid()).eq(KqglAssoLeaveEmployeeBalance::getOrgCode, userBean.getOrgCode())); //获取最后得到的最终余额 double balance_days = kqglassoleavebalancemapper.Sumbalancedays(balance.getUserid(), userBean.getOrgCode(),balance.getLeaveRulesId()); if(emba != null && balance_days > 0) { if(emba.getBalanceDays() != -1) {//确认为限制余额的 //修改最终的余额数 KqglAssoLeaveEmployeeBalance.builder().id(emba.getId()).balanceDays(balance_days).build().updateById(); } }else{ if(emba.getBalanceDays() != -1) {//确认为限制余额的 //修改最终的余额数 KqglAssoLeaveEmployeeBalance.builder().id(emba.getId()).balanceDays(0).build().updateById(); } } } return ResultUtil.success("操作成功!") ; // return balance.insert() ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!"); } /** * 根据考勤余额id获取信息 ||大于“0”为有数字限制 ||为“-1”时为无数字限制 */ @GetMapping(value="/hqleavebalance/{id}") @ApiOperation(value = "根据考勤余额id获取信息", httpMethod = "GET", notes = "接口发布说明") public Result<Object> hqleavebalance(@PathVariable("id") Integer id,@CurrentUser UserBean userBean) { // JiaqibalanceDto leanemp = kqglassoleavebalancemapper.selectleavebalanceList(id,userBean.getEmpNum()); JiaqibalanceDto leanemp = JiaqibalanceDto.builder().build(); KqglAssoLeaveEmployeeBalance emba = KqglAssoLeaveEmployeeBalance.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getUserid, userBean.getEmpNum()) .eq(KqglAssoLeaveEmployeeBalance::getLeaveRulesId, id).eq(KqglAssoLeaveEmployeeBalance::getOrgCode, userBean.getOrgCode())); if(emba != null) { leanemp.setBalancedays(String.valueOf(emba.getBalanceDays())); } return ResultUtil.data(leanemp, "操作成功!"); } /** * 根据 组织机构代码获取员工假期余额表头 */ @GetMapping(value="/balance_header") @ApiOperation(value = "29:根据 组织机构代码获取员工假期余额表头", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 29) public Result<Object> BalanceHeader(@CurrentUser UserBean userBean) { // List<KqglAssoLeaveRules> balheas = new LambdaQueryChainWrapper<KqglAssoLeaveRules>(kqglassoleaverulesmapper).eq(KqglAssoLeaveRules :: getOrgCode,userBean.getOrgCode()) // .eq(KqglAssoLeaveRules :: getLeaveType, 2).or().eq(KqglAssoLeaveRules :: getIsOpen, 1).list(); List<KqglAssoLeaveRules> balheas = kqglassoleaverulesmapper.selHeaderdata(userBean.getOrgCode(), 2, 1); return ResultUtil.data(balheas, "操作成功!"); } /** * 查询列表-假期规则******************************************* */ @GetMapping(value = "/list_leave_rules") @ApiOperation(value = "30: 查询列表-假期规则", httpMethod = "GET", notes = " 查询列表-假期规则") @ApiOperationSupport(order = 30) public Result<Object> selectListLeaveRules(@CurrentUser UserBean userBean) { // List<KqglAssoLeaveRules> balheas = new LambdaQueryChainWrapper<KqglAssoLeaveRules>(kqglassoleaverulesmapper).eq(KqglAssoLeaveRules :: getOrgCode,userBean.getOrgCode()) // .eq(KqglAssoLeaveRules :: getLeaveType, 2).or().eq(KqglAssoLeaveRules :: getIsOpen, 1).list(); List<LeaveTypeDto> leas = new ArrayList<LeaveTypeDto>(); KqglAssoYhkqz yhd = KqglAssoYhkqz.builder().build().selectOne(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, userBean.getEmpNum()).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); if(yhd != null) { //获取假期适用全公司的 String company = ""; List<KqglAssoLeaveRules> whole = kqglassoleaverulesmapper.selCompanywidedata(userBean.getOrgCode(), 2, 1); for(KqglAssoLeaveRules rul : whole) { LeaveTypeDto lea = LeaveTypeDto.builder().build(); lea.setId(rul.getId()); lea.setValue(rul.getName()); if(rul.getCompany() == 1) { company = "天"; }else if(rul.getCompany() == 2) { company = "半天"; }else { company = "小时"; } lea.setCompany(company); leas.add(lea); } List<KqglAssoLeaveRules> assholi = kqglassoleaverulesmapper.AssociatedHolidays(yhd.getKqzid()); for(KqglAssoLeaveRules rul1 : assholi) { LeaveTypeDto lea = LeaveTypeDto.builder().build(); lea.setId(rul1.getId()); lea.setValue(rul1.getName()); if(rul1.getCompany() == 1) { company = "天"; }else if(rul1.getCompany() == 2) { company = "半天"; }else { company = "小时"; } lea.setCompany(company); leas.add(lea); } return ResultUtil.data(leas, "操作成功!"); }else { return ResultUtil.success("请先加入考勤组") ; } // List<KqglAssoLeaveRules> balheas = kqglassoleaverulesmapper.selHeaderdata(userBean.getOrgCode(), 2, 1); // List<LeaveTypeDto> leas = new ArrayList<LeaveTypeDto>(); // for(KqglAssoLeaveRules rul : balheas) { // LeaveTypeDto lea = LeaveTypeDto.builder().build(); // lea.setId(rul.getId()); // lea.setValue(rul.getName()); // leas.add(lea); // } } /** * 根据组织机构代码 获取考勤组 */ @GetMapping(value="/check_workatt") @ApiOperation(value = "31:根据组织机构代码 获取考勤组", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 31) public Result<Object> CheckWorkatt(@CurrentUser UserBean userBean) { List<KqglMainKqz> kqzs = KqglMainKqz.builder().build().selectList(new QueryWrapper<KqglMainKqz>().lambda().eq(KqglMainKqz::getQyid, userBean.getOrgCode())); List<LeaveTypeDto> leas = new ArrayList<LeaveTypeDto>(); for(KqglMainKqz rul : kqzs) { LeaveTypeDto lea = LeaveTypeDto.builder().build(); lea.setId(rul.getId()); lea.setValue(rul.getName()); leas.add(lea); } return ResultUtil.data(leas, "操作成功!"); } /** * 根据组织机构代码 获取加班基础设置信息 */ @PostMapping(value = "/overtime_basic_information") @ApiOperation(value = "32:根据组织机构代码 获取加班基础设置信息", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 32) public Result<Object> overtimebasicinformation(@CurrentUser UserBean userBean) { KqglAssoOvertimeBasics kqjdev = KqglAssoOvertimeBasics.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeBasics>().lambda().eq(KqglAssoOvertimeBasics::getOrgCode, userBean.getOrgCode())); return ResultUtil.data(kqjdev, "操作成功!"); } /** * 查询列表-获取假期规则数据-分页 */ @PostMapping(value = "/select_leave_rules") @ApiOperation(value = "33:获取假期规则数据-分页", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 33) public Result<Object> selectleaverules(@CurrentUser UserBean userBean, @RequestBody AttqueryCriteriaDto attquerycriteriadto) { IPage<KqglAssoLeaveRules> page = new Page<KqglAssoLeaveRules>( attquerycriteriadto.getCurrentPage() == null ? 1 : attquerycriteriadto.getCurrentPage(), attquerycriteriadto.getTotalPage() == null ? 10 : attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); IPage<KqglAssoLeaveRules> pageAs = kqglassoleaverulesmapper.selectPage(page, new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, userBean.getOrgCode())); List<KqglAssoLeaveRules> listAs = pageAs.getRecords(); List<KqglAssoLeaveRulesDto> leadto = new ArrayList<KqglAssoLeaveRulesDto>(); for (int i = 0, n = listAs.size(); i < n; i++) { String[] nary = null; if(listAs.get(i).getApply() == 0) {//全公司 nary = new String[1];//用户名 nary[0] = "全公司"; }else {//考勤组 List<KqglAssoRulesVice> vice = kqglassorulesvicemapper.selectList(new QueryWrapper<KqglAssoRulesVice>().lambda().eq(KqglAssoRulesVice::getLeaveRulesId, listAs.get(i).getId())); nary = new String[vice.size()];//用户名 for(int y = 0,l = vice.size(); y < l ; y++) { KqglMainKqz kqzmc = kqglmainkqzmapper.selectOne(new QueryWrapper<KqglMainKqz>().lambda().eq(KqglMainKqz::getId, vice.get(y).getAttgroupId())); nary[y] = kqzmc.getName(); } } KqglAssoLeaveRulesDto learul = KqglAssoLeaveRulesDto.builder().build(); learul.setApplyrange(nary); BeanUtil.copyProperties(listAs.get(i), learul , "range","applyrange"); leadto.add(learul); } return ResultUtil.data(pageAs, leadto, "操作成功!"); } /*****************考勤组***********************/ /** * 查询列表-考勤组-分页 */ @PostMapping(value = "/attendance_group") @ApiOperation(value = "34:查询列表-考勤组-分页", httpMethod = "POST", notes = "查询列表-考勤组-分页") @ApiOperationSupport(order = 34) public Result<Object> AttendanceGroup(@CurrentUser UserBean userBean, @Validated @RequestBody AttqueryCriteriaDto attquerycriteriadto){ IPage<KqglMainKqzDto> page = new Page<KqglMainKqzDto>( attquerycriteriadto.getCurrentPage() == null ? 1 : attquerycriteriadto.getCurrentPage(), attquerycriteriadto.getTotalPage() == null ? 10 : attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); // 缺-部门id 搜索 IPage<KqglMainKqzDto> pageAs = kqglmainkqzmapper.selectPageByQueryKqglMain(page, attquerycriteriadto); List<KqglMainKqzDto> listAs = pageAs.getRecords(); List<KqglMainKqzDto> sumlistAs = new ArrayList<KqglMainKqzDto>(); for(KqglMainKqzDto makq : listAs) { KqglMainKqzDto mas = KqglMainKqzDto.builder().build(); BeanUtil.copyProperties(makq, mas , "kqzdkfslist"); QueryWrapper<KqglAssoKqzdkfs> queryWrapper = new QueryWrapper<>(); queryWrapper.select("kqz_id","type","qyid","state").eq("qyid", userBean.getOrgCode()) .eq("kqz_id", mas.getId()).groupBy("kqz_id","type","qyid","state"); List<KqglAssoKqzdkfs> assfs = KqglAssoKqzdkfs.builder().build().selectList(queryWrapper); List<KqglAssoKqzdkfs> kqzdkfslist = new ArrayList<KqglAssoKqzdkfs>(); for(KqglAssoKqzdkfs fs : assfs) { KqglAssoKqzdkfs dkfs = KqglAssoKqzdkfs.builder().build(); dkfs.setKqzId(fs.getKqzId()); dkfs.setType(fs.getType()); kqzdkfslist.add(dkfs); } mas.setKqzdkfslist(kqzdkfslist); sumlistAs.add(mas); } return ResultUtil.data(pageAs, sumlistAs, "操作成功!"); } /** * 获取打卡地址数据 */ @GetMapping(value="/InGroupPunchAddress") @ApiOperation(value = "35:获取打卡地址数据", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 35) public Result<Object> getInGroupPunchAddress(@CurrentUser UserBean userBean) { List<KqglAssoDkdz> shiftList = KqglAssoDkdz.builder().build().selectList(new QueryWrapper<KqglAssoDkdz>().lambda().eq(KqglAssoDkdz::getQyid, userBean.getOrgCode())); return ResultUtil.data(shiftList); } /** * 获取打卡WIFI数据 */ @GetMapping(value="/InGroupPunchWIFI") @ApiOperation(value = "36:获取打卡WIFI数据", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 36) public Result<Object> getInGroupPunchWIFI(@CurrentUser UserBean userBean) { List<KqglAssoDkwx> shiftList = KqglAssoDkwx.builder().build().selectList(new QueryWrapper<KqglAssoDkwx>().lambda().eq(KqglAssoDkwx::getQyid, userBean.getOrgCode())); return ResultUtil.data(shiftList); } /** * 获取班次 */ @GetMapping(value="/AttShift") @ApiOperation(value = "37:获取班次-根据 组织机构代码", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 37) public Result<Object> getAttShiftList(@CurrentUser UserBean userBean) { List<KqglAssoBcsz> attshiftList = KqglAssoBcsz.builder().build().selectList(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getQyid, userBean.getOrgCode())); return ResultUtil.data(attshiftList); } /** * 获取员工数据 */ @GetMapping(value="/Employee") @ApiOperation(value = "38:获取员工数据-根据 组织机构代码", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 38) public Result<Object> getEmployeeData(@CurrentUser UserBean userBean) { lock.lock(); List<YgglMainEmp> yggl = YgglMainEmp.builder().build().selectList(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).ne(YgglMainEmp::getJobStatus, "3")); lock.unlock(); return ResultUtil.data(yggl); } //用户与设备关系表 @Autowired private UserEquiRelationMapper userequirelationmapper; /** * 删除考勤组 */ @SuppressWarnings("all") @DeleteMapping(value = "/AttendanceGroup/{id}") @ApiOperation(value = "39:删除考勤组", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 39) @Log(title = "考勤设置-删除考勤组", businessType = BusinessType.DELETE) public Result<Integer> DelAttendanceGroup(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) { List<UserAttendanceRel> attusers = userattendancerelmapper.selectAttendanceOfficerByKqzid(id, userBean.getOrgCode());//该考勤组人数 //该考勤组所绑定的考勤机 List<KqglAssoKqzdkfs> kqjs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, id).eq(KqglAssoKqzdkfs::getType, 1)); String DevId = ""; for(KqglAssoKqzdkfs abp:kqjs) { KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById();//查询考勤机“序列号” if(kqj != null) { DevId = kqj.getCode(); for(UserAttendanceRel user:attusers) { String user_id = user.getEmpnum();//"1692";//要删除的考勤组里面用户ID String url = mac_command+"/deleteUser"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", DevId); params.add("userId", user_id); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); Logoutput(request.getBody()); } catch (RestClientException e) { Logoutput("提示:考勤机服务出错-5"); return ResultUtil.error("删除失败:提示:考勤机服务出错"); } } } } List<AdditionalDto> userlist = kqglassoleavebalancemapper.RealTimeUpdate(userBean.getOrgCode(),id); if(KqglMainKqz.builder().id(id).build().deleteById()) { userequirelationmapper.deleteBykqzid(id); //删除考勤组绑定的打卡方式 KqglAssoKqzdkfs.builder().build().delete(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, id)); //删除用户和考勤组关系表 KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getKqzid, id)); //删除特殊日期表 KqglAssoTeshu.builder().build().delete(new QueryWrapper<KqglAssoTeshu>().lambda().eq(KqglAssoTeshu::getKqzid, id)); //删除排班明细表(自由排班) KqglAssoPbmx.builder().build().delete(new QueryWrapper<KqglAssoPbmx>().lambda().eq(KqglAssoPbmx::getKqzid, id)); //删除考勤周排班 KqglAssoZhoupaiban.builder().build().delete(new QueryWrapper<KqglAssoZhoupaiban>().lambda().eq(KqglAssoZhoupaiban::getKqzid, id)); //刪除加班规则-应用范围 KqglAssoOvertimeRange.builder().build().delete(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getAttgroupId, id)); //刪除假期规则-适用范围 KqglAssoRulesVice.builder().build().delete(new QueryWrapper<KqglAssoRulesVice>().lambda().eq(KqglAssoRulesVice::getAttgroupId, id)); try { realtimeupdate.AttendanceTask(userBean.getOrgCode(), 0, 3,userlist); } catch (ParseException e) { e.printStackTrace(); } return ResultUtil.data(id,"删除成功"); } return ResultUtil.error("删除失败"); } @Autowired private KqglAssoKqzdkfsMapper kqglassokqzdkfsmapper; @Autowired private KqglAssoYhkqzMapper kqglassoyhkqzmapper; @Autowired private KqglAssoZhoupaibanMapper kqglassozhoupaibanmapper; @Autowired private KqglAssoTeshuMapper kqglassoteshumapper; @Autowired private KqglAssoPbmxMapper kqglassopbmxmapper; @Autowired private RealTimeUpdate realtimeupdate; /** * 新建考勤组 */ @SuppressWarnings("all") @PostMapping(value = "/AttendanceGroup") @ApiOperation(value = "40:新增考勤组数据", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 40) public Result<Object> AttendanceGroupList(@CurrentUser UserBean userBean,@RequestBody AttendanceAssistantDto attass) { KqglMainKqz attgro = KqglMainKqz.builder().name(attass.getName()).kqbz(attass.getRemarks()).pbfs(attass.getAtttype()).qyid(userBean.getOrgCode()) .isWq(attass.getFieldpersonnel()).isFdjjr(attass.getLegalholidays()).isXzbcdk(attass.getOptscheduling()).sybc(String.join(",",attass.getAttShifts())) .isDqtx(attass.getAttRemind()).txry(String.join(",",attass.getAttRemindUserids())).txfs(attass.getAdvanceDays()).txxhts(attass.getRemCycleDays()) .txsjTime(attass.getReminderTime()).tsfs(String.join(",",attass.getPromptingMode())).isWpbsdk(attass.getAttRemind()).kqkssjTime(attass.getNewAttTime()) .zsgzsc(attass.getLeastworkTime()).zcgzsc(attass.getNormalWorkTime()).jbzdsc(attass.getMaxOvertimeTime()).overtimeRulesId(attass.getOvertimeRulesId()) .restdayclock(attass.getRestdayclock()).build(); // if (!attgro.insertOrUpdate()) if (!attgro.insert()) return ResultUtil.error("操作失败--新增考勤组"); Integer attid = attgro.getId(); Console.log("新增--考勤组id: " + attid); //添加加班规则 if(attass.getOvertimeRulesId() > 0) { KqglAssoOvertimeRange.builder().overtimeRulesId(attass.getOvertimeRulesId()).attgroupId(attid).build().insert(); } List<KqglAssoKqzdkfs> kqzdkfslist = new ArrayList<KqglAssoKqzdkfs>(); String[] attmac = attass.getAttmachines();//考勤机 if(attmac.length>0){ for (int i = 0; i < attmac.length; i++) { KqglAssoKqzdkfs attgbpmac = KqglAssoKqzdkfs.builder().dkfsid(Integer.valueOf(attmac[i])).kqzId(attid).type(1).qyid(userBean.getOrgCode()).state(1).build(); kqzdkfslist.add(attgbpmac); } } String[] atad = attass.getAttadds();//考勤地址 if(atad.length > 0){ for(int a=0;a<atad.length;a++){ KqglAssoKqzdkfs attgbpadd = KqglAssoKqzdkfs.builder().dkfsid(Integer.valueOf(atad[a])).kqzId(attid).type(2).qyid(userBean.getOrgCode()).state(1).build(); kqzdkfslist.add(attgbpadd); } } String[] atwf = attass.getAttwifis();//考勤WIFI if(atwf.length > 0){ for(int f=0;f<atwf.length;f++){ KqglAssoKqzdkfs attgbpwf = KqglAssoKqzdkfs.builder().dkfsid(Integer.valueOf(atwf[f])).kqzId(attid).type(3).qyid(userBean.getOrgCode()).state(1).build(); kqzdkfslist.add(attgbpwf); } } if(kqzdkfslist.size()>0){ kqglassokqzdkfsmapper.insertKqglAssokqzdKfsList(kqzdkfslist); } //用户和考勤组关系 List<KqglAssoYhkqz> yhkqzlist = new ArrayList<KqglAssoYhkqz>(); String[] attser = attass.getAttuserids(); if(attser.length>0){ for(int u=0;u<attser.length;u++){ if(attass.getAtttype() == 2){ KqglAssoPbmx.builder().build().delete(new QueryWrapper<KqglAssoPbmx>().lambda().eq(KqglAssoPbmx::getUserid, Integer.valueOf(attser[u]))); } KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, Integer.valueOf(attser[u])).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); KqglAssoYhkqz kquser = KqglAssoYhkqz.builder().kqzid(attid).userid(Integer.valueOf(attser[u])).qyid(userBean.getOrgCode()).build(); yhkqzlist.add(kquser); List<KqglAssoKqzdkfs> kqjs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, attid).eq(KqglAssoKqzdkfs::getType, 1)); for(KqglAssoKqzdkfs abp:kqjs) { KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById(); KqglAssoYhsb kqjry = KqglAssoYhsb.builder().build().selectOne(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, Integer.valueOf(attser[u])).eq(KqglAssoYhsb::getKqjid, kqj.getId())); if(kqjry == null) { YgglMainEmp yggluser = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).eq(YgglMainEmp::getEmpNum, attser[u])); String url = mac_command+"/addUserName"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", kqj.getCode()); params.add("userId", attser[u]); params.add("userName", yggluser.getName()); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); Logoutput(request.getBody()); KqglAssoYhsb.builder().build().delete(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, attser[u]).eq(KqglAssoYhsb::getKqjid, kqj.getId())); KqglAssoYhsb uskqj = KqglAssoYhsb.builder().userId(Integer.valueOf(attser[u])).kqjid(kqj.getId()).type(1).build(); UserEquiRelation isgly = userequirelationmapper.selectByuserId(Integer.valueOf(attser[u])); if(isgly != null) { uskqj.setIsGly(isgly.getIsGly()); }else { uskqj.setIsGly(0); } if (!uskqj.insert()) return ResultUtil.error("操作失败--新增用户与设备关系"); } } } } if(yhkqzlist.size()>0){ kqglassoyhkqzmapper.insertKqglAssoKqzdkfsList(yhkqzlist); } List<KqglAssoZhoupaiban> attweeklist = new ArrayList<KqglAssoZhoupaiban>();//固定排版周记录 String[] weektime = attass.getAttWeekdays();//周工作日【固定排班】 String[] weekshif = attass.getAttWeekdaysShifts();//周工作日班次【固定排班】 if(weektime.length>0 && weekshif.length>0 && attass.getAtttype() == 1){ for(int h=0;h<weektime.length;h++){ KqglAssoZhoupaiban attweek = KqglAssoZhoupaiban.builder().kqzid(attid).type(Integer.valueOf(weektime[h])).bcid(Integer.valueOf(weekshif[h])).build(); attweeklist.add(attweek); } } String[] attFrWorkdays = attass.getAttFreeWorkdays();// 周工作日【自由工时】 if(attFrWorkdays.length>0 && attass.getAtttype() == 3){ for(int w=0;w<attFrWorkdays.length;w++){ KqglAssoZhoupaiban attfrwor = KqglAssoZhoupaiban.builder().kqzid(attid).type(Integer.valueOf(attFrWorkdays[w])).bcid(0).build(); attweeklist.add(attfrwor); } } if(attweeklist.size()>0){ kqglassozhoupaibanmapper.insertKqglAssoZhoupaibanList(attweeklist); } List<KqglAssoTeshu> speclist = new ArrayList<KqglAssoTeshu>(); String[] attmuspudata = attass.getAttMustPunchData();// 必须打卡的日期【固定排班】 String[] attmuspushifid = attass.getAttMustPunchShifid();// 必须打卡的班次id【固定排班】 // String[] attnonpudata = attass.getAttNonPunchData();// 不用打卡的日期【固定排班】 ResttryfixdayDto[] attnonpudata = attass.getAttNonPunchData();// 不用打卡的日期【固定排班】 if(attmuspudata.length>0 && attmuspushifid.length>0 && attass.getAtttype() == 1){ for(int m=0;m<attmuspudata.length;m++){ KqglAssoTeshu mut = KqglAssoTeshu.builder().kqzid(attid).tsrq(attmuspudata[m]).bcid(Integer.valueOf(attmuspushifid[m])).lusjTime(new Date().getTime()).luryid(userBean.getEmpNum()).type(1).build(); speclist.add(mut); } } if(attnonpudata.length>0 && attass.getAtttype() == 1){ for(int n=0;n<attnonpudata.length;n++){ KqglAssoTeshu non = KqglAssoTeshu.builder().kqzid(attid).tsrq(attnonpudata[n].getDate()).legalday(attnonpudata[n].getWhether()).bcid(0).lusjTime(new Date().getTime()).luryid(userBean.getEmpNum()).type(2).build(); speclist.add(non); } } if(speclist.size()>0){ speclist.forEach(t ->{ kqglassoteshumapper.insert(t); }); } //记录排班(排班制) List<KqglAssoPbmxDto> schlist=new ArrayList<KqglAssoPbmxDto>(); KqglAssoPbmxDto[] schedules = attass.getSchedules();// 排班日期【排班制】--班次id、日期 if(schedules.length>0 && attass.getAtttype() == 2){ for(int p=0;p<schedules.length;p++){ KqglAssoPbmxDto sch = KqglAssoPbmxDto.builder().userid(schedules[p].getUserid()).data(schedules[p].getData()).bcid(schedules[p].getBcid()).kqzid(attid).build(); schlist.add(sch); } } if(schlist.size()>0){ kqglassopbmxmapper.insertKqglAssoPbmxList(schlist); } try { realtimeupdate.AttendanceTask(userBean.getOrgCode(), attid, 1,null); } catch (ParseException e) { e.printStackTrace(); } return ResultUtil.data(attgro,"操作成功!"); } @GetMapping(value="/Overtime_rule_default") @ApiOperation(value = "获取当前公司的默认加班规则", httpMethod = "GET", notes = "接口发布说明") public Result<Object> Overtime_rule_default(@CurrentUser UserBean userBean) { KqglAssoOvertimeRules defovwe = KqglAssoOvertimeRules.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeRules>().lambda().eq(KqglAssoOvertimeRules::getOrgCode, userBean.getOrgCode()) .eq(KqglAssoOvertimeRules::getOvertimeruledefault, 1)); return ResultUtil.data(defovwe,"操作成功!"); } /** * 获取当前考勤组所有人员 */ @GetMapping(value="/AttUserGroupList/{id}") @ApiOperation(value = "获取当前考勤组所有人员", httpMethod = "GET", notes = "接口发布说明") public Result<Object> getAttUserGroupList(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) { UserAttendanceRelDto usatt = UserAttendanceRelDto.builder().build(); List<UserAttendanceRel> userattgor = userattendancerelmapper.selectAttendanceOfficerByKqzid(id,userBean.getOrgCode()); usatt.setUseratts(userattgor); KqglMainKqz kqztypeid = kqglmainkqzmapper.selectOne(new QueryWrapper<KqglMainKqz>().lambda().eq(KqglMainKqz::getId, id)); usatt.setTypeid(kqztypeid.getPbfs()); return ResultUtil.data(usatt); } // @SuppressWarnings("all") @PostMapping(value = "/setmembers") @ApiOperation(value = "考勤设置成员", httpMethod = "POST", notes = "接口发布说明") public Result<Object> Attsetmembers(@CurrentUser UserBean userBean,@RequestBody AttMemberSettings attsetuser) { KqglMainKqz kqzm = KqglMainKqz.builder().id(attsetuser.getAttgroupid()).build().selectById(); List<AdditionalDto> userlist = new ArrayList<AdditionalDto>(); List<KqglAssoKqzdkfs> qtdkfs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().ne(KqglAssoKqzdkfs::getType, 1).eq(KqglAssoKqzdkfs::getKqzId, attsetuser.getAttgroupid())); if(qtdkfs.size() > 0) { //考勤组新增员工 String[] addmember = attsetuser.getAddMember(); for(int a=0;a<addmember.length;a++){ if(kqzm.getPbfs() == 2){ KqglAssoPbmx.builder().build().delete(new QueryWrapper<KqglAssoPbmx>().lambda().eq(KqglAssoPbmx::getUserid, Integer.valueOf(addmember[a]))); } KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, Integer.valueOf(addmember[a])).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); KqglAssoYhkqz.builder().kqzid(attsetuser.getAttgroupid()).userid(Integer.valueOf(addmember[a])).qyid(userBean.getOrgCode()).build().insert(); } //考勤组减少员工 String[] removemember = attsetuser.getRemoveMember(); for(int r=0;r<removemember.length;r++){ //用户和考勤组关系表 KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getKqzid, attsetuser.getAttgroupid()).eq(KqglAssoYhkqz::getUserid, removemember[r])); } } //确认当前考勤组是否存在考勤机打卡 List<KqglAssoKqzdkfs> dkfs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getType, 1).eq(KqglAssoKqzdkfs::getKqzId, attsetuser.getAttgroupid())); if(dkfs.size() > 0) { for(KqglAssoKqzdkfs fss:dkfs) { String DevId = null; int kqjid = 0; KqglAssoKqj kqj = KqglAssoKqj.builder().id(fss.getDkfsid()).build().selectById();//查询考勤机“序列号” if(kqj != null) { DevId = kqj.getCode(); kqjid = kqj.getId(); }else { return ResultUtil.error("考勤机不存在"); } //考勤组新增员工 String[] addmember = attsetuser.getAddMember(); String urladd = mac_command+"/addUserName"; for(int a=0;a<addmember.length;a++){ HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", DevId); params.add("userId", addmember[a]); YgglMainEmp yggluser = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).eq(YgglMainEmp::getEmpNum, addmember[a])); params.add("userName", yggluser.getName()); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); ResponseEntity<String> request = restTemplate.postForEntity(urladd, httpEntity, String.class); Logoutput(request.getBody()); //需要改下下 KqglAssoYhsb uskqj = KqglAssoYhsb.builder().userId(Integer.valueOf(addmember[a])).kqjid(kqjid).type(1).isGly(0).build(); if (!uskqj.insert()) return ResultUtil.error("操作失败--新增用户与设备关系"); if(kqzm.getPbfs() == 2){ KqglAssoPbmx.builder().build().delete(new QueryWrapper<KqglAssoPbmx>().lambda().eq(KqglAssoPbmx::getUserid, Integer.valueOf(addmember[a]))); } KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, Integer.valueOf(addmember[a])).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); KqglAssoYhkqz.builder().kqzid(attsetuser.getAttgroupid()).userid(Integer.valueOf(addmember[a])).qyid(userBean.getOrgCode()).build().insert(); } //考勤组减少员工 String[] removemember = attsetuser.getRemoveMember(); String urlre = mac_command+"/deleteUser"; for(int r=0;r<removemember.length;r++){ HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", DevId); params.add("userId", removemember[r]); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); ResponseEntity<String> request = restTemplate.postForEntity(urlre, httpEntity, String.class); Logoutput(request.getBody()); //用户与设备关系表 KqglAssoYhsb.builder().build().delete(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, removemember[r]).eq(KqglAssoYhsb::getKqjid, kqjid).eq(KqglAssoYhsb::getType, 1)); //考勤机管理员 KqglAssoKqjgly.builder().build().delete(new QueryWrapper<KqglAssoKqjgly>().lambda().eq(KqglAssoKqjgly::getKqjid, kqjid).eq(KqglAssoKqjgly::getUserid, removemember[r])); //用户和考勤组关系表 KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getKqzid, attsetuser.getAttgroupid()).eq(KqglAssoYhkqz::getUserid, removemember[r])); } } } try { realtimeupdate.AttendanceTask(userBean.getOrgCode(), attsetuser.getAttgroupid(), 1,null); } catch (ParseException e) { e.printStackTrace(); } return ResultUtil.success("成功"); } @PutMapping(value="/switch") @ApiOperation(value = "41:设置假期规则开关", httpMethod = "PUT", notes = "接口发布说明") @ApiOperationSupport(order = 41) public Result<Object> setswitch(@CurrentUser UserBean userBean, @RequestBody SetConditionsDto setconditionsdto) { return KqglAssoLeaveRules.builder().id(setconditionsdto.getId()).isOpen(setconditionsdto.getParameters()).build().updateById() ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!"); } /** * 获取修改的排班明细--【修改考勤组】-------------------------------------------------------------------------------------- */ @PostMapping(value = "/AttGroupSchedulingList") @ApiOperation(value = "42:获取修改的排班明细", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 42) public Result<Object> getAttGroupSchedulingList(@CurrentUser UserBean userBean,@RequestBody AttSchedulingDto attscheduling) { String str = new SimpleDateFormat("yyyy-MM").format(new Date()); if(("").equals(attscheduling.getDate()) || attscheduling.getDate() == null){ attscheduling.setDate(str); } attscheduling.setQyid(userBean.getOrgCode()); List<KqglAssoPbmxDto> schlist = kqglassopbmxmapper.selectAttGroupScheduling(attscheduling); return ResultUtil.data(schlist); } /** * 根据考勤组id获取班次信息--【修改考勤组】 */ @GetMapping(value="/roster/{id}/{date}") @ApiOperation(value = "43:根据考勤组id获取班次信息", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 43) public Result<Object> getRosterList(@PathVariable("id") Integer id,@PathVariable("date") String date) { KqzAttendanceGroupSearchDto jycx = KqzAttendanceGroupSearchDto.builder().overall(date).qyid(id).build(); List<KqglAssoBcsz> shifs = kqglassobcszmapper.selectRosterByKqzid(jycx); return ResultUtil.data(shifs); } private SimpleDateFormat mat = new SimpleDateFormat("yyyy-MM-dd"); //打卡记录 @Autowired private PunchRecordMapper punchrecordmapper; @PostMapping(value = "/leave_balance_list") @ApiOperation(value = "45:获取假期余额列表数据", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 45) public Result<Object> LeaveBalanceList(@CurrentUser UserBean userBean, @Validated @RequestBody AttqueryCriteriaDto attquerycriteriadto) { IPage<EmployeeLeaveBalanceDto> page = new Page<EmployeeLeaveBalanceDto>(attquerycriteriadto.getCurrentPage(),attquerycriteriadto.getTotalPage()); attquerycriteriadto.setOrgCode(userBean.getOrgCode()); attquerycriteriadto.setEmpNum(userBean.getEmpNum()); // 缺-部门id 搜索 IPage<EmployeeLeaveBalanceDto> pageAs = kqglassoleavebalancemapper.selectPageByQueryLeaveBalance(page, attquerycriteriadto); List<EmployeeLeaveBalanceDto> listAs = pageAs.getRecords(); List<EmployeeLeaveBalanceDto> sumlist = new ArrayList<EmployeeLeaveBalanceDto>(); for(EmployeeLeaveBalanceDto endo : listAs) { EmployeeLeaveBalanceDto dets = EmployeeLeaveBalanceDto.builder().build(); BeanUtil.copyProperties(endo, dets , "balanceTo"); List<KqglAssoLeaveEmployeeBalance> empye = KqglAssoLeaveEmployeeBalance.builder().build().selectList(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getUserid, endo.getEmpnum()) .eq(KqglAssoLeaveEmployeeBalance::getOrgCode, endo.getOrgcode())); List<BalanceSheetDataDto> balanceTo = new ArrayList<BalanceSheetDataDto>(); for(KqglAssoLeaveEmployeeBalance empyes : empye) { BalanceSheetDataDto bal = BalanceSheetDataDto.builder().build(); bal.setBalancedays(empyes.getBalanceDays()); bal.setLeaverulesid(empyes.getLeaveRulesId()); balanceTo.add(bal); } dets.setBalanceTo(balanceTo); sumlist.add(dets); } return ResultUtil.data(pageAs, sumlist, "操作成功!"); } /** * 移除考勤机管理员 */ @SuppressWarnings("all") @PostMapping(value = "/removeemp/{kqjid}/{id}") @ApiOperation(value = "删除考勤机内成员", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 46) public Result<Object> RemoveEmp(@PathVariable int kqjid,@PathVariable int id, @RequestBody Map<String,String> mmd) { String[] xgyh = mmd.get("a").split(","); if(xgyh.length > 0){ KqglAssoKqj kqj = KqglAssoKqj.builder().id(kqjid).build().selectById();//查询考勤机“序列号” for(int a=0;a<xgyh.length;a++){ String url = mac_command+"/deleteUser"; HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); params.add("devId", kqj.getCode()); params.add("userId", xgyh[a]); RestTemplate restTemplate = new RestTemplate(); HttpEntity httpEntity = new HttpEntity(params, headers); try { ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class); if (!StringUtils.isEmpty(request) && request.getStatusCode() == HttpStatus.OK) { Logoutput(request.getBody()); JSONObject jsonObj = JSON.parseObject(request.getBody()); if (!"200".equals(jsonObj.getString("code"))) { return ResultUtil.error(jsonObj.getString("message")); } } } catch (RestClientException e) { Logoutput("提示:考勤机服务出错-3"); return ResultUtil.success("失败"); } KqglAssoYhsb.builder().id(id).build().deleteById(); } } return ResultUtil.success("成功"); } /** * 根据用户id和假期id查询余额具体数据 */ @PostMapping(value = "/modify_employee_balance") @ApiOperation(value = "根据用户id和假期id查询余额具体数据", httpMethod = "POST", notes = "接口发布说明") // @ApiOperationSupport(order = 45) public Result<Object> ModifyEmployeeBalance(@RequestBody ModifyEmployeeBalanceDto bala) { List<KqglAssoLeaveBalance> ballist = kqglassoleavebalancemapper.selectList(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getLeaveRulesId, bala.getLeaverulesid()).eq(KqglAssoLeaveBalance::getUserid, bala.getEmpnum())); return ResultUtil.data(ballist,"操作成功!"); } /** * 考勤原始记录-根据 模糊 + 高級查詢-分页 * @throws ParseException */ @PostMapping(value = "/attendancecalendar") @ApiOperation(value = "考勤原始记录-根据 模糊 + 高級查詢-分页", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 34) public Result<Object> AttendanceCalendar(@CurrentUser UserBean userBean, @Validated @RequestBody OriginalRecordDto originalrecorddto) throws ParseException{ IPage<PunchRecord> page = new Page<PunchRecord>( originalrecorddto.getCurrentPage() == null ? 1 : originalrecorddto.getCurrentPage(), originalrecorddto.getTotalPage() == null ? 10 : originalrecorddto.getTotalPage()); originalrecorddto.setQyid(userBean.getOrgCode()); if(!originalrecorddto.getStart().equals("") && !originalrecorddto.getEnd().equals("") && originalrecorddto.getStart() != null && originalrecorddto.getEnd() != null) { String sdaet = originalrecorddto.getStart() + " 00:00:00"; String staapptime = ClockInTool.dateToStamp(sdaet); originalrecorddto.setStart(staapptime); String edate = originalrecorddto.getEnd() + " 23:59:59"; String endapptime = ClockInTool.dateToStamp(edate); originalrecorddto.setEnd(endapptime); } IPage<PunchRecord> pageAs = punchrecordmapper.QueryOriginalRecord(page, originalrecorddto); List<PunchRecord> listAs = pageAs.getRecords(); return ResultUtil.data(pageAs, listAs, "操作成功!"); } @PostMapping(value = "/exportattendancecalendar") @ApiOperation(value = "", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 34) public Result<Object> exportattendancecalendar(@CurrentUser UserBean userBean, @Validated @RequestBody OriginalRecordDto originalrecorddto) throws ParseException{ originalrecorddto.setQyid(userBean.getOrgCode()); if(!originalrecorddto.getStart().equals("") && !originalrecorddto.getEnd().equals("") && originalrecorddto.getStart() != null && originalrecorddto.getEnd() != null) { String sdaet = originalrecorddto.getStart() + " 00:00:00"; String staapptime = ClockInTool.dateToStamp(sdaet); originalrecorddto.setStart(staapptime); String edate = originalrecorddto.getEnd() + " 23:59:59"; String endapptime = ClockInTool.dateToStamp(edate); originalrecorddto.setEnd(endapptime); } List<PunchRecord> listAs = punchrecordmapper.exportQueryOriginalRecord(originalrecorddto); return ResultUtil.data(listAs,"操作成功!"); } /** * 获取考勤组所需加班规则 */ @GetMapping(value="/attovertimerules") @ApiOperation(value = "获取考勤组所需加班规则", httpMethod = "GET", notes = "接口发布说明") @ApiOperationSupport(order = 15) public Result<Object> getAttOvertimeRules(@CurrentUser UserBean userBean){ List<KqglAssoOvertimeRules> attoverrul = new LambdaQueryChainWrapper<KqglAssoOvertimeRules>(kqglassoovertimerulesmapper).eq(KqglAssoOvertimeRules::getOrgCode, userBean.getOrgCode()).list(); return ResultUtil.data(attoverrul,"操作成功!"); } @Autowired private KqglAssoMonthPunchSummaryMapper kqglassomonthpunchsummarymapper; @PostMapping(value = "/Summary_data") @ApiOperation(value = "获取考勤报表汇总数据", httpMethod = "POST", notes = "接口发布说明") public Result<Object> SummarydataList(@CurrentUser UserBean userBean, @Validated @RequestBody AttendanceSummaryQueryDto attesummqueto) throws ParseException { IPage<KqglAssoMonthPunchSummaryDto> page = new Page<KqglAssoMonthPunchSummaryDto>( attesummqueto.getCurrentPage(),attesummqueto.getTotalPage()); attesummqueto.setOrgCode(userBean.getOrgCode()); String year = null,month = null; String staapptime = null,endapptime = null,time_ = null; if(attesummqueto.getTimes() != null && !("").equals(attesummqueto.getTimes())) { year = attesummqueto.getTimes().substring(0, 4); month = attesummqueto.getTimes().substring(5, 7); time_ = attesummqueto.getTimes(); String time = attesummqueto.getTimes()+"-01"; String sdaet = ClockInTool.getMinMonthDate(time); staapptime = String.valueOf(ClockInTool.getStartTime(0,ClockInTool.getStringTime(sdaet,"yyyy-MM-dd")).getTime()); String edate = ClockInTool.getMaxMonthDate(time); endapptime = String.valueOf(ClockInTool.getnowEndTime(23,ClockInTool.getStringTime(edate,"yyyy-MM-dd")).getTime()); }else { year = new SimpleDateFormat("yyyy").format(new Date()).toString(); month = new SimpleDateFormat("MM").format(new Date()).toString(); time_ = new SimpleDateFormat("yyyy-MM").format(new Date()).toString(); Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 String first = mat.format(c.getTime()); staapptime = String.valueOf(DateUtil.getStartTime(0,DateUtil.getStringTime(first,"yyyy-MM-dd")).getTime()); //获取当前月最后一天 Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); String last = mat.format(ca.getTime()); endapptime = String.valueOf(DateUtil.getnowEndTime(23,DateUtil.getStringTime(last,"yyyy-MM-dd")).getTime()); } attesummqueto.setYear(year); attesummqueto.setMonth(month); attesummqueto.setStaapptime(staapptime); attesummqueto.setEndapptime(endapptime); attesummqueto.setTimes(time_); // 缺-部门id 搜索 IPage<KqglAssoMonthPunchSummaryDto> pageAs = kqglassomonthpunchsummarymapper.AttendanceSummaryData(page, attesummqueto); List<KqglAssoMonthPunchSummaryDto> listAs = pageAs.getRecords(); List<KqglAssoMonthPunchSummaryDto> sumlist = new ArrayList<KqglAssoMonthPunchSummaryDto>(); for(KqglAssoMonthPunchSummaryDto endo : listAs) { KqglAssoMonthPunchSummaryDto dets = KqglAssoMonthPunchSummaryDto.builder().build(); BeanUtil.copyProperties(endo, dets , "balanceTo"); // List<KqglAssoLeaveEmployeeBalance> empye = KqglAssoLeaveEmployeeBalance.builder().build().selectList(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getUserid, endo.getNum()) // .eq(KqglAssoLeaveEmployeeBalance::getOrgCode, endo.getOrgCode())); List<BalanceSheetDataDto> empye = kqglassomonthpunchsummarymapper.MonthlySummaryLeave(endo.getOrgCode(), endo.getNum(), attesummqueto.getTimes()); List<BalanceSheetDataDto> balanceTo = new ArrayList<BalanceSheetDataDto>(); for(BalanceSheetDataDto empyes : empye) { BalanceSheetDataDto bal = BalanceSheetDataDto.builder().build(); bal.setBalancedays(empyes.getBalancedays()); bal.setLeaverulesid(empyes.getLeaverulesid()); balanceTo.add(bal); } dets.setBalanceTo(balanceTo); sumlist.add(dets); } return ResultUtil.data(pageAs, sumlist, "操作成功!"); } @PostMapping(value = "/Daily_details") @ApiOperation(value = "获取考勤每日详情数据", httpMethod = "POST", notes = "接口发布说明") public Result<Object> DailydetailsList(@CurrentUser UserBean userBean, @Validated @RequestBody AttendanceSummaryQueryDto attesummqueto) throws ParseException { IPage<DailyDetailsDto> page = new Page<DailyDetailsDto>( attesummqueto.getCurrentPage() == null ? 1 : attesummqueto.getCurrentPage(), attesummqueto.getTotalPage() == null ? 10 : attesummqueto.getTotalPage()); attesummqueto.setOrgCode(userBean.getOrgCode()); String year = null,month = null,time = null; if(attesummqueto.getTimes() != null && !("").equals(attesummqueto.getTimes())) { year = attesummqueto.getTimes().substring(0, 4); month = attesummqueto.getTimes().substring(5, 7); time = attesummqueto.getTimes(); }else { year = new SimpleDateFormat("yyyy").format(new Date()).toString(); month = new SimpleDateFormat("MM").format(new Date()).toString(); time = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).toString(); } attesummqueto.setYear(year); attesummqueto.setMonth(month); attesummqueto.setTimes(time); // 缺-部门id 搜索 IPage<DailyDetailsDto> pageAs = kqglassomonthpunchsummarymapper.Dailydetails(page, attesummqueto); List<DailyDetailsDto> listAs = pageAs.getRecords(); List<DailyDetailsDto> sumlist = new ArrayList<DailyDetailsDto>(); //多条 for(DailyDetailsDto endo : listAs) { DailyDetailsDto dets = DailyDetailsDto.builder().build(); BeanUtil.copyProperties(endo, dets , "balanceTo"); // List<KqglAssoLeaveEmployeeBalance> empye = KqglAssoLeaveEmployeeBalance.builder().build().selectList(new QueryWrapper<KqglAssoLeaveEmployeeBalance>().lambda().eq(KqglAssoLeaveEmployeeBalance::getUserid, endo.getNum()) // .eq(KqglAssoLeaveEmployeeBalance::getOrgCode, endo.getOrgcode())); List<BalanceSheetDataDto> empye = kqglassomonthpunchsummarymapper.AttenSumDailyDetails(endo.getOrgcode(), endo.getNum(), attesummqueto.getTimes()); List<BalanceSheetDataDto> balanceTo = new ArrayList<BalanceSheetDataDto>(); for(BalanceSheetDataDto empyes : empye) { BalanceSheetDataDto bal = BalanceSheetDataDto.builder().build(); bal.setBalancedays(empyes.getBalancedays()); bal.setLeaverulesid(empyes.getLeaverulesid()); balanceTo.add(bal); } dets.setBalanceTo(balanceTo); sumlist.add(dets); } return ResultUtil.data(pageAs, sumlist, "操作成功!"); } @Autowired private KqglAssoDkmxMapper kqglassodkmxmapper; /** * 更改打卡结果 * @throws ParseException */ @PostMapping(value = "/change_punch_results") @ApiOperation(value = "更改打卡结果", httpMethod = "POST", notes = "接口发布说明") public Result<Object> ChangePunchResults(@CurrentUser UserBean userBean,@RequestBody ChangePunchResultsDto chpunchr) throws ParseException { String data = chpunchr.getData();//应更改时间yyyy-MMM-dd Long startDate = DateUtil.getStartTime(0,DateUtil.getStringTime(data,"yyyy-MM-dd")).getTime(); String attdate_ = new SimpleDateFormat("yy-MM-dd").format(Double.valueOf(startDate));//转换打卡时间格式 String punchattdate = new SimpleDateFormat("yyyy-MM-dd").format(Double.valueOf(startDate));//转换打卡时间格式 String minutes = chpunchr.getMinutes();//更改分钟数 KqglAssoBcsz dkbc = kqglassobcszmapper.selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, chpunchr.getBcszid())); String clock_time = null;//应打卡时间 long clock_time_ = 0l; long changed_time = 0l;//改过的最终时间 int results = 0;//打卡结果 if(dkbc != null){ if(chpunchr.getClocktype() == 1) { clock_time = (data+" "+dkbc.getSbdk1()+":00").replaceAll("\r|\n", ""); }else if(chpunchr.getClocktype() == 2) { clock_time = (data+" "+dkbc.getXbdk1()+":00").replaceAll("\r|\n", ""); }else if(chpunchr.getClocktype() == 3) { clock_time = (data+" "+dkbc.getSbdk2()+":00").replaceAll("\r|\n", ""); }else if(chpunchr.getClocktype() == 4) { clock_time = (data+" "+dkbc.getXbdk2()+":00").replaceAll("\r|\n", ""); }else if(chpunchr.getClocktype() == 5) { clock_time = (data+" "+dkbc.getSbdk3()+":00").replaceAll("\r|\n", ""); }else { clock_time = (data+" "+dkbc.getXbdk3()+":00").replaceAll("\r|\n", ""); } if(chpunchr.getAtttype() == 1) {//正常 changed_time = Long.valueOf(ClockInTool.dateToStamp(clock_time)); }else if(chpunchr.getAtttype() == 2) {//迟到 changed_time = Long.valueOf(ClockInTool.dateToStamp(ClockInTool.addtime(clock_time, minutes))); results = Integer.valueOf(minutes); }else {//早退 changed_time = Long.valueOf(ClockInTool.dateToStamp(ClockInTool.addtime(clock_time, "-"+minutes))); results = Integer.valueOf(minutes); } long sbdk1 = 0,xbdk1 = 0,sbdk2 = 0,xbdk2 = 0,sbdk3 = 0,xbdk3 = 0; int sbdk1jg = 0,xbdk1jg = 0,sbdk2jg = 0,xbdk2jg = 0,sbdk3jg = 0,xbdk3jg = 0; int dkmxid = 0; //kqgl_asso_dkmx 打卡明细是否存在打卡记录 KqglAssoDkmx dkmx = kqglassodkmxmapper.selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getData, chpunchr.getData()).eq(KqglAssoDkmx::getUserid, chpunchr.getNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode())); if(dkmx != null) { dkmxid = dkmx.getId(); if(chpunchr.getClocktype() == 1) { sbdk1 = changed_time; sbdk1jg = results; KqglAssoDkmx.builder().id(dkmx.getId()).sbdk1(sbdk1).sbdk1jg(sbdk1jg).dktj1(2).build().updateById(); }else if(chpunchr.getClocktype() == 2) { xbdk1 = changed_time; xbdk1jg = results; KqglAssoDkmx.builder().id(dkmx.getId()).xbdk1(xbdk1).xbdk1jg(xbdk1jg).dktj2(2).build().updateById(); }else if(chpunchr.getClocktype() == 3) { sbdk2 = changed_time; sbdk2jg = results; KqglAssoDkmx.builder().id(dkmx.getId()).sbdk2(sbdk2).sbdk2jg(sbdk2jg).dktj3(2).build().updateById(); }else if(chpunchr.getClocktype() == 4) { xbdk2 = changed_time; xbdk2jg = results; KqglAssoDkmx.builder().id(dkmx.getId()).xbdk2(xbdk2).xbdk2jg(xbdk2jg).dktj4(2).build().updateById(); }else if(chpunchr.getClocktype() == 5) { sbdk3 = changed_time; sbdk3jg = results; KqglAssoDkmx.builder().id(dkmx.getId()).sbdk3(sbdk3).sbdk3jg(sbdk3jg).dktj5(2).build().updateById(); }else { xbdk3 = changed_time; xbdk3jg = results; KqglAssoDkmx.builder().id(dkmx.getId()).xbdk3(xbdk3).xbdk3jg(xbdk3jg).dktj6(2).build().updateById(); } }else { KqglAssoDkmx pcd = KqglAssoDkmx.builder().userid(chpunchr.getNum()).data(data).qyid(userBean.getOrgCode()).dksj(startDate).ydkcs(dkbc.getSxbcs()*2) .gzsc(0d).build(); if(chpunchr.getClocktype() == 1) { sbdk1 = changed_time; sbdk1jg = results; pcd.setSbdk1(sbdk1); pcd.setSbdk1jg(sbdk1jg); pcd.setDktj1(2); if (!pcd.insert()) { throw new CustomException("打卡明细-新增异常-1"); } }else if(chpunchr.getClocktype() == 2) { xbdk1 = changed_time; xbdk1jg = results; pcd.setXbdk1(xbdk1); pcd.setXbdk1jg(xbdk1jg); pcd.setDktj2(2); if (!pcd.insert()) { throw new CustomException("打卡明细-新增异常-1"); } }else if(chpunchr.getClocktype() == 3) { sbdk2 = changed_time; sbdk2jg = results; pcd.setSbdk2(sbdk2); pcd.setSbdk2jg(sbdk2jg); pcd.setDktj3(2); if (!pcd.insert()) { throw new CustomException("打卡明细-新增异常-1"); } }else if(chpunchr.getClocktype() == 4) { xbdk2 = changed_time; xbdk2jg = results; pcd.setXbdk2(xbdk2); pcd.setXbdk2jg(xbdk2jg); pcd.setDktj4(2); if (!pcd.insert()) { throw new CustomException("打卡明细-新增异常-1"); } }else if(chpunchr.getClocktype() == 5) { sbdk3 = changed_time; sbdk3jg = results; pcd.setSbdk3(sbdk3); pcd.setSbdk3jg(sbdk3jg); pcd.setDktj5(2); if (!pcd.insert()) { throw new CustomException("打卡明细-新增异常-1"); } }else { xbdk3 = changed_time; xbdk3jg = results; pcd.setXbdk3(xbdk3); pcd.setXbdk3jg(xbdk3jg); pcd.setDktj6(2); if (!pcd.insert()) { throw new CustomException("打卡明细-新增异常-1"); } } dkmxid = pcd.getId(); } double gzsc = 0; long rest_time = 0; if(dkbc.getStartTime() != null && !("").equals(dkbc.getStartTime()) && dkbc.getEndTime() != null && !("").equals(dkbc.getEndTime())) { long kaishixiuxi = Long.valueOf(ClockInTool.dateToStamp(punchattdate + " " +dkbc.getStartTime()+":00")); long jieshuxiuxi = Long.valueOf(ClockInTool.dateToStamp(punchattdate + " " +dkbc.getEndTime()+":00")); rest_time = (jieshuxiuxi - kaishixiuxi)/1000/60;//休息时间 } //请假时长 KqglAssoRelationSummary qjsc = kqglassorelationsummarymapper.Businessdayclockin(userBean.getEmpNum(), 2, punchattdate, userBean.getOrgCode()); //计算工作时长 KqglAssoDkmx dkgzsc = KqglAssoDkmx.builder().id(dkmxid).build().selectById(); if(dkgzsc.getYdkcs() == 2 || dkgzsc.getYdkcs() == 4 || dkgzsc.getYdkcs() == 6) { if(dkgzsc.getSbdk1() != null && dkgzsc.getXbdk1() != null) { gzsc = gzsc + (dkgzsc.getXbdk1() - dkgzsc.getSbdk1())/1000/60; } } if(dkgzsc.getYdkcs() == 4 || dkgzsc.getYdkcs() == 6) { if(dkgzsc.getSbdk2() != null && dkgzsc.getXbdk2() != null) { gzsc = gzsc + (dkgzsc.getXbdk2() - dkgzsc.getSbdk2())/1000/60; } } if(dkgzsc.getYdkcs() == 6) { if(dkgzsc.getSbdk3() != null && dkgzsc.getXbdk3() != null) { gzsc = gzsc + (dkgzsc.getXbdk3() - dkgzsc.getSbdk3())/1000/60; } } gzsc = gzsc - rest_time - qjsc.getDuration(); KqglAssoDkmx.builder().id(dkmxid).gzsc(gzsc).build().updateById(); //打卡记录表 clock_time_ = Long.valueOf(ClockInTool.dateToStamp(clock_time)); int type = 0; //0:打卡无效:此记录已被更新 1:正常 2:异常 3:迟到 4:早退 5:补卡 6:请假 7:加班 8:调休 //9:管理员改为正常 10:管理员改为迟到 11:管理员改为早退 12:补卡通过/正常 13:补卡通过/迟到 14:补卡通过/早退 int status = 2; if((chpunchr.getClocktype())%2 > 0){ type = 1; if(results == 0) { status = 9; }else { status = 10; } }else { type = 2; if(results == 0) { status = 9; }else { status = 11; } } KqglAssoDkjl pre = KqglAssoDkjl.builder().dktime(changed_time).results(results).userId(chpunchr.getNum()).type(type).status(status).sort(chpunchr.getClocktype()) .cardType(0).qyid(userBean.getOrgCode()).attdate(attdate_+" "+ClockInTool.dateToWeek2(data)).attime(clock_time_).dkmxid(dkmxid).bcid(chpunchr.getBcszid()).remarks("管理员更改操作").punchmode(0) .punchequipment("").build(); if (!pre.insert()) { throw new CustomException("打卡记录-新增异常"); } return ResultUtil.success("操作成功!"); }else { return ResultUtil.error("操作失败,检查班次是否存在"); } } // @GetMapping(value = "/summary_report") // @ApiOperation(value = "考勤汇总报表(暂时不用)", httpMethod = "GET", notes = "接口发布说明") // public Result<Object> attendance_summary_report() { // Map<String, Object> map = new HashMap<String, Object>(); // // return ResultUtil.data(map); // } /** * 查询列表-加班补偿方式 */ @GetMapping(value = "/overtime_type") @ApiOperation(value = "222: 加班类型", httpMethod = "GET", notes = " 查询列表-加班补偿方式") public Result<Object> overtimetypelist(@CurrentUser UserBean userBean) { KqglMainKqz attgro = kqglmainkqzmapper.getAttendanceGroupInformationByUserid(userBean.getEmpNum(),userBean.getOrgCode()); //考勤组信息 if(attgro != null) { List<CompensateDto> coms = new ArrayList<CompensateDto>(); KqglAssoYhkqz yhd = KqglAssoYhkqz.builder().build().selectOne(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, userBean.getEmpNum()).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); if(yhd != null) { KqglAssoOvertimeRange timeran = KqglAssoOvertimeRange.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getAttgroupId, yhd.getKqzid())); if(timeran != null) { KqglAssoOvertimeRules rul = KqglAssoOvertimeRules.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeRules>().lambda().eq(KqglAssoOvertimeRules::getId, timeran.getOvertimeRulesId()).eq(KqglAssoOvertimeRules::getOrgCode, userBean.getOrgCode())); if(rul != null) { if(rul.getIsWorkovertime() == 1) { CompensateDto com = CompensateDto.builder().build(); com.setId(1); com.setValue("工作日加班"); coms.add(com); } if(rul.getIsRestovertime() == 1) { CompensateDto com2 = CompensateDto.builder().build(); com2.setId(2); com2.setValue("休息日加班"); coms.add(com2); } if(rul.getIsHolidays() == 1) { CompensateDto com3 = CompensateDto.builder().build(); com3.setId(3); com3.setValue("节假日加班"); coms.add(com3); } } } } return ResultUtil.data(coms, "操作成功!"); }else { return ResultUtil.success("操作失败,请先加入考勤组"); } } /**************************/ /** * 查询列表-加班补偿方式 id: */ @GetMapping(value = "/list_compensate/{id}") @ApiOperation(value = "222: 查询列表-加班补偿方式", httpMethod = "GET", notes = " 查询列表-加班补偿方式") public Result<Object> selectListCompensate(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) { KqglMainKqz attgro = kqglmainkqzmapper.getAttendanceGroupInformationByUserid(userBean.getEmpNum(),userBean.getOrgCode()); //考勤组信息 if(attgro != null) { List<CompensateDto> coms = new ArrayList<CompensateDto>(); KqglAssoYhkqz yhd = KqglAssoYhkqz.builder().build().selectOne(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, userBean.getEmpNum()).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); if(yhd != null) { KqglAssoOvertimeRange timeran = KqglAssoOvertimeRange.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getAttgroupId, yhd.getKqzid())); if(timeran != null) { KqglAssoOvertimeRules rul = KqglAssoOvertimeRules.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeRules>().lambda().eq(KqglAssoOvertimeRules::getId, timeran.getOvertimeRulesId())); if(rul != null) { if(id == 1) { if(rul.getIsWorkovertime() == 1 && rul.getWorkSwitch() == 1) { if(!("0").equals(rul.getWorkOne())) { CompensateDto com = CompensateDto.builder().build(); com.setId(1); com.setValue("调休"); coms.add(com); } if(rul.getWorkTwo() != 0) { CompensateDto com2 = CompensateDto.builder().build(); com2.setId(2); com2.setValue("加班费"); coms.add(com2); } if(!("0").equals(rul.getWorkThree())) { CompensateDto com3 = CompensateDto.builder().build(); com3.setId(3); com3.setValue("调休"); coms.add(com3); CompensateDto com4 = CompensateDto.builder().build(); com4.setId(4); com4.setValue("加班费"); coms.add(com4); } } }else if(id == 2) { if(rul.getIsRestovertime() == 1 && rul.getRestSwitch() == 1) { if(!("0").equals(rul.getRestOne())) { CompensateDto com = CompensateDto.builder().build(); com.setId(1); com.setValue("调休"); coms.add(com); } if(rul.getRestTwo() != 0) { CompensateDto com2 = CompensateDto.builder().build(); com2.setId(2); com2.setValue("加班费"); coms.add(com2); } if(!("0").equals(rul.getRestThree())) { CompensateDto com3 = CompensateDto.builder().build(); com3.setId(3); com3.setValue("调休"); coms.add(com3); CompensateDto com4 = CompensateDto.builder().build(); com4.setId(4); com4.setValue("加班费"); coms.add(com4); } } }else { if(rul.getIsHolidays() == 1 && rul.getHolidaysSwitch() == 1) { if(!("0").equals(rul.getHolidaysOne())) { CompensateDto com = CompensateDto.builder().build(); com.setId(1); com.setValue("调休"); coms.add(com); } if(rul.getHolidaysTwo() != 0) { CompensateDto com2 = CompensateDto.builder().build(); com2.setId(2); com2.setValue("加班费"); coms.add(com2); } if(!("0").equals(rul.getHolidaysThree())) { CompensateDto com3 = CompensateDto.builder().build(); com3.setId(3); com3.setValue("调休"); coms.add(com3); CompensateDto com4 = CompensateDto.builder().build(); com4.setId(4); com4.setValue("加班费"); coms.add(com4); } } } } } } return ResultUtil.data(coms, "操作成功!"); }else { return ResultUtil.error("操作失败,请先加入考勤组"); } } public AttendanceCardListDto MethodCall(int qyid,int userid,String date) throws ParseException { AttendanceCardListDto attcar = new AttendanceCardListDto(); String str = null; if(!("").equals(date)){ str = date; }else{ Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); str = sdf.format(d); } // Long startDate = DateUtil.getStartTime(0,DateUtil.getStringTime(str,"yyyy-MM-dd")).getTime(); // Long endDate = DateUtil.getnowEndTime(23,DateUtil.getStringTime(str,"yyyy-MM-dd")).getTime(); KqglMainKqz attgro = kqglmainkqzmapper.getAttendanceGroupInformationByUserid(userid,qyid); //考勤组信息 //pbfs:排班方式 1:固定排班;2:自由排班;3:自由工时 if(attgro != null){//判断当前用户是否加入到考勤组 //排班制 KqglAssoPbmxDto jrpb = kqglassopbmxmapper.getScheduleSpecificAttendance(attgro.getId(),userid,str); //固定排班 int week = Integer.valueOf(ClockInTool.dateToWeek(str));//4 KqglAssoZhoupaiban atwek = KqglAssoZhoupaiban.builder().build().selectOne(new QueryWrapper<KqglAssoZhoupaiban>().lambda().eq(KqglAssoZhoupaiban::getKqzid, attgro.getId()) .eq(KqglAssoZhoupaiban::getType, week).ne(KqglAssoZhoupaiban::getBcid, 0)); if(attgro.getPbfs() == 1){//固定排班 if(atwek != null){//有固定周排班 KqglAssoTeshu rest = KqglAssoTeshu.builder().build().selectOne(new QueryWrapper<KqglAssoTeshu>().lambda().eq(KqglAssoTeshu::getKqzid, attgro.getId()) .eq(KqglAssoTeshu::getTsrq, str).eq(KqglAssoTeshu::getBcid, 0)); if(rest != null){//今天休息 Sort返回0【特殊日期--休息】 List<AttSchedule> atts = new ArrayList<AttSchedule>(); AttSchedule as = AttSchedule.builder().id(0).sort(0).time(0l).starttime(0l).endtime(0l).build(); atts.add(as); attcar.setAttsch(atts); }else{//今天上班 KqglAssoBcsz bcz = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, atwek.getBcid())); if(bcz != null){ Getshiftinformationbatch(bcz,attcar,str); } } }else{//必须打卡 KqglAssoTeshu tsri = KqglAssoTeshu.builder().build().selectOne(new QueryWrapper<KqglAssoTeshu>().lambda().eq(KqglAssoTeshu::getKqzid, attgro.getId()) .eq(KqglAssoTeshu::getTsrq, str).ne(KqglAssoTeshu::getBcid, 0)); if(tsri != null){ KqglAssoBcsz tsrq = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, tsri.getBcid())); if(tsrq!=null){ Getshiftinformationbatch(tsrq,attcar,str); } }else{//休息 List<AttSchedule> atts = new ArrayList<AttSchedule>(); AttSchedule as = AttSchedule.builder().id(0).sort(0).time(0l).starttime(0l).endtime(0l).build(); atts.add(as); attcar.setAttsch(atts); } } }else if(attgro.getPbfs() == 2){//自由排班 //未排班时,员工可选择班次打卡 // if(attgro.getIsXzbcdk() == 1){ // attcar.setOptscheduling(true); // }else{ // attcar.setOptscheduling(false); // } if(jrpb != null){ if(jrpb.getBcid() != 0){//有班次时("Bcid"不为0时) KqglAssoBcsz tsrq = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, jrpb.getBcid())); /**已简化**/ Getshiftinformationbatch(tsrq,attcar,str); }else{//当天排班为休息 List<AttSchedule> atts1 = new ArrayList<AttSchedule>(); AttSchedule as = AttSchedule.builder().id(0).sort(0).time(0l).starttime(0l).endtime(0l).build(); atts1.add(as); attcar.setAttsch(atts1); } } }else{//自由工时 KqglAssoZhoupaiban wekz = KqglAssoZhoupaiban.builder().build().selectOne(new QueryWrapper<KqglAssoZhoupaiban>().lambda().eq(KqglAssoZhoupaiban::getKqzid, attgro.getId()) .eq(KqglAssoZhoupaiban::getBcid, 0).eq(KqglAssoZhoupaiban::getType, week)); if(wekz != null){// String dada = str+" "+attgro.getKqkssjTime()+":00"; attcar.setStapclotime(Long.valueOf(ClockInTool.dateToStamp(dada))); } if(!("").equals(attgro.getJbzdsc())){ attcar.setCanpunchworkdate(Double.valueOf(attgro.getJbzdsc()));//上班打卡后多久大下班卡 } } if(jrpb != null || atwek != null){ KqglAssoBcsz shif = KqglAssoBcsz.builder().build(); if(attgro.getPbfs() == 1){ shif = shif.selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, atwek.getBcid())); }else if(attgro.getPbfs() == 2){ shif = shif.selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, jrpb.getBcid())); } if(shif != null){ if(shif.getIsXbdk() == 1){ attcar.setNoclockout(true);// 下班不用打卡 }else{ attcar.setNoclockout(false);// 下班不用打卡 } attcar.setAllowlate(shif.getYxcdfzs());// 允许迟到分钟数 attcar.setSeriouslate(shif.getYzcdfzs());// 严重迟到分钟数 attcar.setAbsenteeismlate(shif.getKgcdfzs());// 旷工迟到分钟数 if(shif.getIsWzwd() == 1){ attcar.setIslatelate(true);// 晚走晚到 List<AttLateLate> atwzwd = new ArrayList<AttLateLate>(); int p = 0; if(!("").equals(shif.getXbwz1()) && !("").equals(shif.getSbwd1())){p = 2;} if(!("").equals(shif.getXbwz1()) && !("").equals(shif.getSbwd1()) && !("").equals(shif.getXbwz2()) && !("").equals(shif.getSbwd2())){p = 4;} if(!("").equals(shif.getXbwz1()) && !("").equals(shif.getSbwd1()) && !("").equals(shif.getXbwz2()) && !("").equals(shif.getSbwd2()) && !("").equals(shif.getXbwz3()) && !("").equals(shif.getSbwd3())){p = 6;} AttLateLate ala = AttLateLate.builder().build(); ala.setLatewalk(shif.getXbwz1()); ala.setArrivelate(shif.getSbwd1()); atwzwd.add(ala); if(p == 4 || p == 6){ AttLateLate alat = AttLateLate.builder().build(); alat.setLatewalk(shif.getXbwz2()); alat.setArrivelate(shif.getSbwd2()); atwzwd.add(alat); } if(p == 6){ AttLateLate alas = AttLateLate.builder().build(); alas.setLatewalk(shif.getXbwz3()); alas.setArrivelate(shif.getSbwd3()); atwzwd.add(alas); } attcar.setAttlat(atwzwd); }else{ attcar.setIslatelate(false);// 晚走晚到 } } } attcar.setAttgrouptype(attgro.getPbfs());//1:固定排班;2:自由排班;3:自由工时 }else{ attcar.setAttgrouptype(0);//1:固定排班;2:自由排班;3:自由工时 } return attcar; } public void Getshiftinformationbatch(KqglAssoBcsz shiftm,AttendanceCardListDto attcar,String str){ int isXbdk1Cr = shiftm.getIsXbdk1Cr();//下班1是否次日(0:否;1:是) int isSbdk2Cr = shiftm.getIsSbdk2Cr();//上班2是否次日(0:否;1:是) int isXbdk2Cr = shiftm.getIsXbdk2Cr();//下班2是否次日(0:否;1:是) int isSbdk3Cr = shiftm.getIsSbdk3Cr();//上班3是否次日(0:否;1:是) int isXbdk3Cr = shiftm.getIsXbdk3Cr();//下班3是否次日(0:否;1:是) //次日专用 String next_day = ClockInTool.requires_extra_times(str,1,2,1); List<AttSchedule> atts = new ArrayList<AttSchedule>(); if(shiftm.getSxbcs() == 1 || shiftm.getSxbcs() == 2 || shiftm.getSxbcs() == 3){//1次上下班 for(int o=0;o<2;o++){ if(o==0){ AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(1).time(Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbdk1()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getSbqjks1()) || shiftm.getSbqjks1() == null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbqjks1()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getSbqjjs1()) || shiftm.getSbqjjs1() == null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbqjjs1()+":00").replaceAll("\r|\n", "")))) .nextday(0).build(); atts.add(as); }else{ //次日 if(isXbdk1Cr > 0) { AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(2).time(Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbdk1()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getXbqjks1()) || shiftm.getXbqjks1() == null ? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbqjks1()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getXbqjjs1()) || shiftm.getXbqjjs1() ==null ? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbqjjs1()+":00").replaceAll("\r|\n", "")))) .nextday(1).build(); atts.add(as); }else { AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(2).time(Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbdk1()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getXbqjks1()) || shiftm.getXbqjks1() == null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbqjks1()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getXbqjjs1()) || shiftm.getXbqjjs1() ==null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbqjjs1()+":00").replaceAll("\r|\n", "")))) .nextday(0).build(); atts.add(as); } } } attcar.setAttsch(atts); } if(shiftm.getSxbcs() == 2 || shiftm.getSxbcs() == 3){//2次上下班 for(int o=0;o<2;o++){ if(o==0){ if(isSbdk2Cr > 0) {//次日 AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(3).time(Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getSbdk2()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getSbqjks2())|| shiftm.getSbqjks2()== null ? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getSbqjks2()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getSbqjjs2()) || shiftm.getSbqjjs2()== null ? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getSbqjjs2()+":00").replaceAll("\r|\n", "")))) .nextday(1).build(); atts.add(as); }else { AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(3).time(Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbdk2()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getSbqjks2())|| shiftm.getSbqjks2()== null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbqjks2()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getSbqjjs2()) || shiftm.getSbqjjs2()== null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbqjjs2()+":00").replaceAll("\r|\n", "")))) .nextday(0).build(); atts.add(as); } }else{ if(isXbdk2Cr > 0) {//次日 AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(4).time(Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbdk2()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getXbqjks2()) || shiftm.getXbqjks2()== null? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbqjks2()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getXbqjjs2()) || shiftm.getXbqjjs2()== null? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbqjjs2()+":00").replaceAll("\r|\n", "")))) .nextday(1).build(); atts.add(as); }else { AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(4).time(Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbdk2()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getXbqjks2()) || shiftm.getXbqjks2()== null? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbqjks2()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getXbqjjs2()) || shiftm.getXbqjjs2()== null? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbqjjs2()+":00").replaceAll("\r|\n", "")))) .nextday(0).build(); atts.add(as); } } } attcar.setAttsch(atts); } if(shiftm.getSxbcs() == 3){//3次上下班 for(int o=0;o<2;o++){ if(o==0){ if(isSbdk3Cr > 0) {//次日 AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(5).time(Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getSbdk3()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getSbqjks3()) || shiftm.getSbqjks3() == null? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getSbqjks3()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getSbqjjs3()) || shiftm.getSbqjjs3() == null ? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getSbqjjs3()+":00").replaceAll("\r|\n", "")))) .nextday(1).build(); atts.add(as); }else { AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(5).time(Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbdk3()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getSbqjks3()) || shiftm.getSbqjks3() == null? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbqjks3()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getSbqjjs3()) || shiftm.getSbqjjs3() == null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getSbqjjs3()+":00").replaceAll("\r|\n", "")))) .nextday(0).build(); atts.add(as); } }else{ if(isXbdk3Cr > 0) {//次日 AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(6).time(Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbdk3()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getXbqjks3()) || shiftm.getXbqjks3()== null ? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbqjks3()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getXbqjjs3()) || shiftm.getXbqjjs3() ==null? 0 : Long.valueOf(ClockInTool.dateToStamp((next_day+" "+shiftm.getXbqjjs3()+":00").replaceAll("\r|\n", "")))) .nextday(1).build(); atts.add(as); }else { AttSchedule as = AttSchedule.builder().id(shiftm.getId()).sort(6).time(Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbdk3()+":00").replaceAll("\r|\n", "")))) .starttime(("").equals(shiftm.getXbqjks3()) || shiftm.getXbqjks3()== null ? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbqjks3()+":00").replaceAll("\r|\n", "")))) .endtime(("").equals(shiftm.getXbqjjs3()) || shiftm.getXbqjjs3() ==null? 0 : Long.valueOf(ClockInTool.dateToStamp((str+" "+shiftm.getXbqjjs3()+":00").replaceAll("\r|\n", "")))) .nextday(0).build(); atts.add(as); } } } attcar.setAttsch(atts); } } /** * 工作台日历数据 * @param userBean * @return * @throws ParseException */ @GetMapping(value = "/workbench_calendar/{date}") @ApiOperation(value = "999: 工作台日历数据", httpMethod = "GET", notes = "查询数据") public Result<Object> Workbench_calendar(@CurrentUser UserBean userBean,@PathVariable("date") String date) throws ParseException { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 String current = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String yue = new SimpleDateFormat("yyyy-MM").format(new Date()); SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM"); Date date_; try { date_ = df1.parse(date); }catch (ParseException e){ e.printStackTrace(); date_=new Date(); } int dateOne= ClockInTool.getYearMonth(date_); int dangqian = ClockInTool.getYearMonth(new Date());//当前 List<WorkbenchCalendarDto> workcal = new ArrayList<WorkbenchCalendarDto>(); if(dateOne<=dangqian){ Long startMonth = 0l; Long endMonth = 0l; if(date == null || ("").equals(date)) { Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 String first = mat.format(c.getTime()); startMonth = DateUtil.getStartTime(0,DateUtil.getStringTime(first,"yyyy-MM-dd")).getTime(); endMonth = new Date().getTime(); // //获取当前月最后一天 // Calendar ca = Calendar.getInstance(); // ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); // String last = mat.format(ca.getTime()); // endMonth = DateUtil.getnowEndTime(23,DateUtil.getStringTime(last,"yyyy-MM-dd")).getTime(); }else { String time = date+"-01"; String sdaet = ClockInTool.getMinMonthDate(time); startMonth = ClockInTool.getStartTime(0,ClockInTool.getStringTime(sdaet,"yyyy-MM-dd")).getTime(); String edate = ClockInTool.getMaxMonthDate(time); endMonth = ClockInTool.getnowEndTime(23,ClockInTool.getStringTime(edate,"yyyy-MM-dd")).getTime(); if(date.equals(yue)) { endMonth = new Date().getTime(); } } String[] rangeArray=ClockInTool.listToString(ClockInTool.getDays(df.format(startMonth),df.format(endMonth))).split(";");//目前为止所有日期 String[] range=rangeArray[0].split(","); KqglMainKqz attgro = kqglmainkqzmapper.getAttendanceGroupInformationByUserid(userBean.getEmpNum(),userBean.getOrgCode()); //考勤组信息 int bcid = 0; // List<WorkbenchCalendarDto> workcal = new ArrayList<WorkbenchCalendarDto>(); for(String num : range) { Long start_time = DateUtil.getStartTime(0,DateUtil.getStringTime(num,"yyyy-MM-dd")).getTime(); Long end_time = DateUtil.getnowEndTime(23,DateUtil.getStringTime(num,"yyyy-MM-dd")).getTime(); WorkbenchCalendarDto wocal = WorkbenchCalendarDto.builder().build(); wocal.setDate(num); if(attgro != null) {//有无考勤组 AttendanceCardListDto attdate = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),num);//获取当天所打卡班次 List<AttSchedule> ashss = attdate.getAttsch();//获取今天应打卡时间 if(EmptyUtil.isNotEmpty(attdate.getAttsch())) {//班次不为空 if(date == null || ("").equals(date)) {//未输入 当月 if(current.equals(num)) { bcid = ashss.get(0).getId();//班次id } }else {//输入 if(date.equals(yue)) {//输入为当月 if(current.equals(num)) { bcid = ashss.get(0).getId();//班次id } }else {//输入不是当月 String time = date+"-01"; if(time.equals(num)) { bcid = ashss.get(0).getId();//班次id } } } KqglAssoBcsz bcsts = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, ashss.get(0).getId())); if(ashss.get(0).getId() != 0) { KqglAssoDkmx dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode()) .ge(KqglAssoDkmx::getDksj, start_time).le(KqglAssoDkmx::getDksj, end_time)); if(dkmc != null) { if(attdate.getAttsch().size() == 2 || attdate.getAttsch().size() == 4 || attdate.getAttsch().size() == 6) { if(dkmc.getSbdk1() != null && dkmc.getSbdk1jg() == 0 && dkmc.getXbdk1() != null && dkmc.getXbdk1jg() == 0) { wocal.setCalendar_status(1);//打卡正常 }else { if(dkmc.getXbdk1() == null && attdate.getAttsch().size() == 2) { if(bcsts.getIsXbdk()==1) {//下班不用打卡 wocal.setCalendar_status(1);//打卡正常 }else { wocal.setCalendar_status(3);//打卡异常 } }else { wocal.setCalendar_status(3);//打卡异常 } } } if(attdate.getAttsch().size() == 4 || attdate.getAttsch().size() == 6) { if(dkmc.getSbdk2() != null && dkmc.getSbdk2jg() == 0 && dkmc.getXbdk2() != null && dkmc.getXbdk2jg() == 0) { wocal.setCalendar_status(1);//打卡正常 }else { if(dkmc.getXbdk2() == null && attdate.getAttsch().size() == 4) { if(bcsts.getIsXbdk()==1) {//下班不用打卡 wocal.setCalendar_status(1);//打卡正常 }else { wocal.setCalendar_status(3);//打卡异常 } }else { wocal.setCalendar_status(3);//打卡异常 } } } if(attdate.getAttsch().size() == 6) { if(dkmc.getSbdk3() != null && dkmc.getSbdk3jg() == 0 && dkmc.getXbdk3() != null && dkmc.getXbdk3jg() == 0) { wocal.setCalendar_status(1);//打卡正常 }else { if(dkmc.getXbdk3() == null && attdate.getAttsch().size() == 6) { if(bcsts.getIsXbdk()==1) {//下班不用打卡 wocal.setCalendar_status(1);//打卡正常 }else { wocal.setCalendar_status(3);//打卡异常 } }else { wocal.setCalendar_status(3);//打卡异常 } } } // KqglAssoRelationSummary asssum = KqglAssoRelationSummary.builder().build().selectOne(new QueryWrapper<KqglAssoRelationSummary>().lambda().eq(KqglAssoRelationSummary::getUserId, userBean.getEmpNum()) // .eq(KqglAssoRelationSummary::getAppTime, num).last("LIMIT 1")); // if(asssum != null) { // wocal.setCalendar_status(2);//事务(请假,加班,调休,出差) // } }else { wocal.setCalendar_status(3);//打卡异常 } //事务(请假,加班,调休,出差) KqglAssoRelationSummary asssum = KqglAssoRelationSummary.builder().build().selectOne(new QueryWrapper<KqglAssoRelationSummary>().lambda().eq(KqglAssoRelationSummary::getUserId, userBean.getEmpNum()) .eq(KqglAssoRelationSummary::getAppTime, num).last("LIMIT 1")); if(asssum != null) { if(asssum.getApprovalType() == 5) {//补卡 wocal.setCalendar_status(1);//打卡正常 }else { wocal.setCalendar_status(2);//事务(请假,加班,调休,出差) } //0:无;1:事假;2:调休;3:病假;4:年假;5:产假;6:陪产假;7:婚假;8:例假;9:丧假;10:哺乳假;11:加班;12:出差;13:外出 if(asssum.getApprovalType() == 1) { wocal.setCalendar_status_type(11); }else if(asssum.getApprovalType() == 2) { //请假 KqglAssoLeaveRules rul = KqglAssoLeaveRules.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getId,asssum.getLeaveTypeId())); if(rul.getRulesType() == 1) { wocal.setCalendar_status_type(1); }else if(rul.getRulesType() == 2) { wocal.setCalendar_status_type(2); }else if(rul.getRulesType() == 3) { wocal.setCalendar_status_type(3); }else if(rul.getRulesType() == 4) { wocal.setCalendar_status_type(4); }else if(rul.getRulesType() == 5) { wocal.setCalendar_status_type(5); }else if(rul.getRulesType() == 6) { wocal.setCalendar_status_type(6); }else if(rul.getRulesType() == 7) { wocal.setCalendar_status_type(7); }else if(rul.getRulesType() == 8) { wocal.setCalendar_status_type(8); }else if(rul.getRulesType() == 9) { wocal.setCalendar_status_type(9); }else if(rul.getRulesType() == 10) { wocal.setCalendar_status_type(10); } }else if(asssum.getApprovalType() == 3) { wocal.setCalendar_status_type(12); }else if(asssum.getApprovalType() == 4) { wocal.setCalendar_status_type(13); } } }else { wocal.setCalendar_status(4);//休息 } }else { wocal.setCalendar_status(0);//无排班 } }else { wocal.setCalendar_status(0);//无排班 } workcal.add(wocal); } List<CalendarPunchDetailsDto> detailed = new ArrayList<CalendarPunchDetailsDto>(); CalendarPunchDetailsDto dets = CalendarPunchDetailsDto.builder().build(); // dets.setDate(current); // detailed.add(dets1); Long starttime = DateUtil.getStartTime(0,DateUtil.getStringTime(current,"yyyy-MM-dd")).getTime(); Long endtime = DateUtil.getnowEndTime(23,DateUtil.getStringTime(current,"yyyy-MM-dd")).getTime(); KqglAssoDkmx dkmc = KqglAssoDkmx.builder().build(); if(date == null || ("").equals(date)) {//未输入 当月 dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode()) .ge(KqglAssoDkmx::getDksj, starttime).le(KqglAssoDkmx::getDksj, endtime)); dets.setDate(current); }else {//输入 if(date.equals(yue)) {//输入为当月 dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode()) .ge(KqglAssoDkmx::getDksj, starttime).le(KqglAssoDkmx::getDksj, endtime)); dets.setDate(current); }else {//输入不是当月 String time = date+"-01"; Long starttime_ = DateUtil.getStartTime(0,DateUtil.getStringTime(time,"yyyy-MM-dd")).getTime(); Long endtime_ = DateUtil.getnowEndTime(23,DateUtil.getStringTime(time,"yyyy-MM-dd")).getTime(); dets.setDate(time); dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode()) .ge(KqglAssoDkmx::getDksj, starttime_).le(KqglAssoDkmx::getDksj, endtime_)); } } // KqglAssoDkmx dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode()) // .ge(KqglAssoDkmx::getDksj, starttime).le(KqglAssoDkmx::getDksj, endtime)); if(dkmc!=null && dkmc.getData() != null) { // CalendarPunchDetailsDto dets = CalendarPunchDetailsDto.builder().build(); dets.setSbdksj1(dkmc.getSbdk1() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getSbdk1()))); dets.setSbdksj1jg(dkmc.getSbdk1jg()); dets.setXbdksj1(dkmc.getXbdk1() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getXbdk1()))); dets.setXbdksj1jg(dkmc.getXbdk1jg()); dets.setSbdksj2(dkmc.getSbdk2() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getSbdk2()))); dets.setSbdksj2jg(dkmc.getSbdk2jg()); dets.setXbdksj2(dkmc.getXbdk2() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getXbdk2()))); dets.setXbdksj2jg(dkmc.getXbdk2jg()); dets.setSbdksj3(dkmc.getSbdk3() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getSbdk3()))); dets.setSbdksj3jg(dkmc.getSbdk3jg()); dets.setXbdksj3(dkmc.getXbdk3() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getXbdk3()))); dets.setXbdksj3jg(dkmc.getXbdk3jg()); // detailed.add(dets); } if(bcid > 0) { KqglAssoBcsz bcs = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, bcid)); if(bcs != null) { // CalendarPunchDetailsDto dets = CalendarPunchDetailsDto.builder().build(); dets.setClock_num(bcs.getSxbcs()*2); dets.setBcsbdk1(bcs.getSbdk1() == null ? "" : bcs.getSbdk1().replaceAll("\r|\n", "")); dets.setBcxbdk1(bcs.getXbdk1() == null ? "" : bcs.getXbdk1().replaceAll("\r|\n", "")); dets.setBcsbdk2(bcs.getSbdk2() == null ? "" : bcs.getSbdk2().replaceAll("\r|\n", "")); dets.setBcxbdk2(bcs.getXbdk2() == null ? "" : bcs.getXbdk2().replaceAll("\r|\n", "")); dets.setBcsbdk3(bcs.getSbdk3() == null ? "" : bcs.getSbdk3().replaceAll("\r|\n", "")); dets.setBcxbdk3(bcs.getXbdk3() == null ? "" : bcs.getXbdk3().replaceAll("\r|\n", "")); // detailed.add(dets); } } detailed.add(dets); WorkbenchCalendarDto wocal1 = WorkbenchCalendarDto.builder().build(); wocal1.setDetailed(detailed); workcal.add(wocal1); } return ResultUtil.data(workcal, "操作成功!"); } /** * @param userBean * @param date 日历年月日 * @return * @throws ParseException */ @GetMapping(value = "/Calendar_punch_details/{date}") @ApiOperation(value = "999: 日历打卡详情", httpMethod = "GET", notes = "查询数据") public Result<Object> Calendar_punch_details(@CurrentUser UserBean userBean,@PathVariable("date") String date) throws ParseException { KqglMainKqz kqza = null; KqglAssoYhkqz yhz = KqglAssoYhkqz.builder().build().selectOne(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, userBean.getEmpNum()).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode())); if(yhz != null) { kqza = KqglMainKqz.builder().id(yhz.getKqzid()).build().selectById(); } AttendanceCardListDto attdate = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),date);//获取当天所打卡班次 List<AttSchedule> ashss = attdate.getAttsch();//获取今天应打卡时间 int bcid = 0; if(EmptyUtil.isNotEmpty(attdate.getAttsch())) {//班次不为空 bcid = ashss.get(0).getId();//班次id } List<DetailsofbusinessDto> ils = new ArrayList<DetailsofbusinessDto>(); DetailsofbusinessDto iness = DetailsofbusinessDto.builder().build(); List<CalendarPunchDetailsDto> detslist = new ArrayList<CalendarPunchDetailsDto>(); CalendarPunchDetailsDto dets = CalendarPunchDetailsDto.builder().build(); dets.setDate(date); Long starttime = DateUtil.getStartTime(0,DateUtil.getStringTime(date,"yyyy-MM-dd")).getTime(); Long endtime = DateUtil.getnowEndTime(23,DateUtil.getStringTime(date,"yyyy-MM-dd")).getTime(); KqglAssoDkmx dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum()).eq(KqglAssoDkmx::getQyid, userBean.getOrgCode()) .ge(KqglAssoDkmx::getDksj, starttime).le(KqglAssoDkmx::getDksj, endtime)); if(dkmc!=null) { dets.setSbdksj1(dkmc.getSbdk1() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getSbdk1()))); dets.setSbdksj1jg(dkmc.getSbdk1jg()); dets.setXbdksj1(dkmc.getXbdk1() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getXbdk1()))); dets.setXbdksj1jg(dkmc.getXbdk1jg()); dets.setSbdksj2(dkmc.getSbdk2() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getSbdk2()))); dets.setSbdksj2jg(dkmc.getSbdk2jg()); dets.setXbdksj2(dkmc.getXbdk2() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getXbdk2()))); dets.setXbdksj2jg(dkmc.getXbdk2jg()); dets.setSbdksj3(dkmc.getSbdk3() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getSbdk3()))); dets.setSbdksj3jg(dkmc.getSbdk3jg()); dets.setXbdksj3(dkmc.getXbdk3() == null ? "" : ClockInTool.stampToDate3(String.valueOf(dkmc.getXbdk3()))); dets.setXbdksj3jg(dkmc.getXbdk3jg()); } if(kqza != null && kqza.getPbfs() == 1) { KqglAssoTeshu tss = KqglAssoTeshu.builder().build().selectOne(new QueryWrapper<KqglAssoTeshu>().lambda().eq(KqglAssoTeshu::getKqzid, kqza.getId()).eq(KqglAssoTeshu::getTsrq, date)); if(tss != null) { bcid = tss.getBcid(); } } if(bcid > 0) { KqglAssoBcsz bcs = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, bcid)); if(bcs != null) { dets.setClock_num(bcs.getSxbcs()*2); dets.setBcsbdk1(bcs.getSbdk1() == null ? "" : bcs.getSbdk1().replaceAll("\r|\n", "")); dets.setBcxbdk1(bcs.getXbdk1() == null ? "" : bcs.getXbdk1().replaceAll("\r|\n", "")); dets.setBcsbdk2(bcs.getSbdk2() == null ? "" : bcs.getSbdk2().replaceAll("\r|\n", "")); dets.setBcxbdk2(bcs.getXbdk2() == null ? "" : bcs.getXbdk2().replaceAll("\r|\n", "")); dets.setBcsbdk3(bcs.getSbdk3() == null ? "" : bcs.getSbdk3().replaceAll("\r|\n", "")); dets.setBcxbdk3(bcs.getXbdk3() == null ? "" : bcs.getXbdk3().replaceAll("\r|\n", "")); } } detslist.add(dets); iness.setCaldet(detslist);//当天打卡详情 KqglAssoOvertimeBasics bais = KqglAssoOvertimeBasics.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeBasics>().lambda().eq(KqglAssoOvertimeBasics::getOrgCode, userBean.getOrgCode())); String company = ""; if(bais != null) { if(bais.getMinimumUnit() == 1) { company = "分钟"; }else if(bais.getMinimumUnit() == 2) { company = "半小时"; }else if(bais.getMinimumUnit() == 3) { company = "小时"; }else if(bais.getMinimumUnit() == 4) { company = "半天"; }else if(bais.getMinimumUnit() == 5) { company = "天"; } } List<CalendarDetailsDto> tais = new ArrayList<CalendarDetailsDto>(); List<KqglAssoRelationSummary> sums = KqglAssoRelationSummary.builder().build().selectList(new QueryWrapper<KqglAssoRelationSummary>().lambda().eq(KqglAssoRelationSummary::getUserId, userBean.getEmpNum()) .eq(KqglAssoRelationSummary::getAppTime, date).eq(KqglAssoRelationSummary::getOrgCode, userBean.getOrgCode())); if(sums.size() > 0) { for(KqglAssoRelationSummary suu : sums) { CalendarDetailsDto ta = CalendarDetailsDto.builder().build(); String content = ""; if(suu.getApprovalType() == 1) {//加班 ta.setAffair_type(1); content = suu.getStartTime()+"-"+suu.getEndTime()+"加班"+suu.getDuration()+company; }else if(suu.getApprovalType() == 2) {//请假 ta.setAffair_type(2); content = suu.getStartTime()+"-"+suu.getEndTime()+"请假"+suu.getDuration()+"天"; }else if(suu.getApprovalType() == 3) {//出差 ta.setAffair_type(3); content = suu.getStartTime()+"-"+suu.getEndTime()+"出差"+suu.getDuration()+"天"; }else if(suu.getApprovalType() == 4) {//外出 ta.setAffair_type(4); content = suu.getStartTime()+"-"+suu.getEndTime()+"外出"+suu.getDuration()+"天"; }else if(suu.getApprovalType() == 5) {//补卡 ta.setAffair_type(5); ta.setStart_time(suu.getStartTime()); content = suu.getStartTime()+"已补卡"; } ta.setDuration(String.valueOf(suu.getDuration())); if(suu.getApprovalType() != 5) { ta.setStart_time(suu.getStartTime()); ta.setEnd_time(suu.getEndTime()); } ta.setContent(content); tais.add(ta); } } iness.setCalils(tais); ils.add(iness); return ResultUtil.data(ils, "操作成功!"); } @Autowired private KqglAssoRelationSummaryMapper kqglassorelationsummarymapper; @GetMapping(value = "/worktable_attendance_from/{date}") @ApiOperation(value = "999:工作台考勤表格", httpMethod = "GET", notes = "查询数据") public Result<Object> worktable_attendance_from(@CurrentUser UserBean userBean,@PathVariable("date") String date) throws ParseException { CalendarTableDataDto tabl = CalendarTableDataDto.builder().build(); String belongyear = null; String belongmonth = null; String ttstr = null;// if(date == null || ("").equals(date)) { belongyear = new SimpleDateFormat("yyyy").format(new Date()); belongmonth = new SimpleDateFormat("MM").format(new Date()); ttstr = new SimpleDateFormat("yyyy-MM").format(new Date()).toString();// }else { belongyear = date.substring(0, 4); belongmonth = date.substring(5, 7); ttstr = date; } //1:加班 2:请假 3:出差 4:外出 5:补卡 KqglAssoRelationSummary qjj = kqglassorelationsummarymapper.selectTabledata(userBean.getEmpNum(), 2, ttstr); KqglAssoMonthPunchSummary punsum = KqglAssoMonthPunchSummary.builder().build().selectOne(new QueryWrapper<KqglAssoMonthPunchSummary>().lambda().eq(KqglAssoMonthPunchSummary::getNum, userBean.getEmpNum()) .eq(KqglAssoMonthPunchSummary::getOrgCode, userBean.getOrgCode()).eq(KqglAssoMonthPunchSummary::getBelongYear, belongyear).eq(KqglAssoMonthPunchSummary::getBelongMonth, belongmonth)); BalanceSheetDataDto empye = kqglassomonthpunchsummarymapper.FormMonthlySummaryLeave(userBean.getOrgCode(), userBean.getEmpNum(), ttstr); tabl.setAttendance(punsum == null ? "" : String.valueOf(punsum.getDaysOnDuty()));// 应出勤 tabl.setAttended(punsum == null ? "" : String.valueOf(punsum.getActualAttDays()));// 已出勤 tabl.setLeave(qjj == null ? "" : String.valueOf(empye.getBalancedays()));// 请假******************* tabl.setLackworkcard(punsum == null ? "" : String.valueOf(punsum.getNumberWorkCardShortage()));// 上班缺卡 tabl.setWorkovertime(punsum == null ? "" : String.valueOf(punsum.getTotalOvertimeHours()));// 加班 tabl.setCompensatoryleave(punsum == null ? "" : String.valueOf(punsum.getDaysOff()));// 休息天数 tabl.setEvection(punsum == null ? "" : String.valueOf(punsum.getLengthBusinessTrip()));// 出差 tabl.setOffdutycardshortage(punsum == null ? "" : String.valueOf(punsum.getNumberDutyCardShortage()));// 下班缺卡 return ResultUtil.data(tabl, "操作成功!"); } @PostMapping(value = "/isitused") @ApiOperation(value = "(加班规则)当选择加班规则范围中存在已使用的考勤组时,在用户确认后给用户一个提示,提示用户哪个考勤组已被使用,是否修改", httpMethod = "POST", notes = "接口发布说明") public Result<Object> Isitused(@CurrentUser UserBean userBean,@RequestBody KqglAssoOvertimeRulesDto overrules) { String msg = ""; String[] launchs = overrules.getApplyrangeid(); if(launchs.length > 0) { for(int p=0;p<launchs.length;p++){ KqglAssoOvertimeRange ran = KqglAssoOvertimeRange.builder().build().selectOne(new QueryWrapper<KqglAssoOvertimeRange>().lambda().eq(KqglAssoOvertimeRange::getAttgroupId, launchs[p])); if(ran != null) { KqglMainKqz kqz = KqglMainKqz.builder().build().selectOne(new QueryWrapper<KqglMainKqz>().lambda().eq(KqglMainKqz::getId, ran.getAttgroupId())); if(p == 0) { msg += kqz.getName(); }else { msg += "、"+kqz.getName(); } } } } return ResultUtil.data(msg, "操作成功!"); } @GetMapping(value="/overtime_verification/{workovertimetype}/{starttime}/{endtime}") @ApiOperation(value = "加班验证", httpMethod = "GET", notes = "接口发布说明") public Result<Object> Overtime_verification(@CurrentUser UserBean userBean,@PathVariable("workovertimetype") Integer workovertimetype, @PathVariable("starttime") String starttime,@PathVariable("endtime") String endtime) { String msg = ""; //workovertimetype:1=工作日加班 2=休息日加班 3=节假日加班 Integer ending = 0; String starttime_ = ClockInTool.Str_Time_formatting(starttime,"yyyy-MM-dd"); String endtime_ = ClockInTool.Str_Time_formatting(endtime,"yyyy-MM-dd"); if((starttime_).equals(endtime_)) { try { AttendanceCardListDto attdate = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),starttime_);//获取当天所打卡班次 List<AttSchedule> ashss = attdate.getAttsch();//获取今天应打卡时间 if(EmptyUtil.isNotEmpty(attdate.getAttsch())) {//班次不为空 if(ashss.get(0).getId() != 0) { //工作日 ending = 1; }else { //休息 ending = 2; } }else { //未排班 ending = 99; } } catch (ParseException e) { e.printStackTrace(); } }else {//不同日期 try { AttendanceCardListDto attdateone = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),starttime_);//获取当天所打卡班次 AttendanceCardListDto attdatetwo = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),endtime_);//获取当天所打卡班次 List<AttSchedule> ashone = attdateone.getAttsch();//获取今天应打卡时间 List<AttSchedule> ashtwo = attdatetwo.getAttsch();//获取今天应打卡时间 if(EmptyUtil.isNotEmpty(attdateone.getAttsch()) && EmptyUtil.isNotEmpty(attdatetwo.getAttsch())) {//班次不为空 if(ashone.get(0).getId() != 0 && ashtwo.get(0).getId() != 0) { //工作日 ending = 1; }else { //休息 ending = 2; } }else { //未排班 ending = 99; } } catch (ParseException e) { e.printStackTrace(); } } if(ending != workovertimetype) { //所选日期范围与加班类型不匹配,请重新选择 msg = "所选日期范围与加班类型不匹配,请重新选择"; } if(ending == 99) { //所选日期范围暂无排班,请联系管理员 msg = "所选日期范围暂无排班,请联系管理员"; } return ResultUtil.data(msg,"操作成功!"); } @GetMapping(value = "/Weekly_attendance_data/{date}") @ApiOperation(value = "考勤周数据--app接口", httpMethod = "GET", notes = "查询数据") public Result<Object> Weekly_attendance_data(@CurrentUser UserBean userBean,@PathVariable("date") String date) throws ParseException { return ResultUtil.data(null,"操作成功!"); } /** * 删除考勤机 */ @DeleteMapping(value = "/attendance/{code}") @ApiOperation(value = "删除考勤机", httpMethod = "DELETE", notes = "接口发布说明") @ApiOperationSupport(order = 3) public Result<Integer> DeleteAttendance(@PathVariable("code") String code) { KqglAssoKqj kqj = KqglAssoKqj.builder().build().selectOne(new QueryWrapper<KqglAssoKqj>().lambda().eq(KqglAssoKqj::getCode, code)); int kqjid = kqj.getId(); if(KqglAssoKqj.builder().id(kqjid).build().deleteById()) { KqglAssoYhsb.builder().build().delete(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getKqjid, kqjid)); KqglAssoKqjgly.builder().build().delete(new QueryWrapper<KqglAssoKqjgly>().lambda().eq(KqglAssoKqjgly::getKqjid, kqjid)); } return ResultUtil.data(null,"操作成功!"); } @Value("${config-8timer.environmental-science}") public String environmental_science; public void Logoutput(String science) { if(!("pro").equals(environmental_science)) { System.out.println(science); }else { System.out.println(""); } } }