package com.evo.common.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.evo.attendance.service.IRzAttendanceService; import com.evo.attendance.service.IRzAttendanceStatisticalService; import com.evo.attendance.service.RzAttendanceDetailService; import com.evo.common.constant.Constants; import com.evo.common.core.domain.AjaxResult; import com.evo.common.utils.Collections; import com.evo.personnelMatters.mapper.RzOverTimeDetailMapper; import com.evo.personnelMatters.mapper.RzOverTimeMapper; import com.evo.restaurant.service.IRzRestaurantStatisticsService; import com.evo.system.domain.SysStaff; import com.evo.system.service.ISysStaffService; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** * 类 * * @ClassName:TestController * @date: 2025年06月04日 11:12 * @author: andy.shi * @contact: 17330188597 * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 */ @RestController @RequestMapping("/test") public class TestController { @Resource private RzOverTimeMapper rzOverTimeMapper; @Resource private RzOverTimeDetailMapper rzOverTimeDetailMapper; @Resource private ISysStaffService sysStaffService; @Resource IRzAttendanceStatisticalService rzAttendanceStatisticalService; @Resource IRzRestaurantStatisticsService rzRestaurantStatisticsService; @Resource private IRzAttendanceService rzAttendanceService; @Resource private RzAttendanceDetailService rzAttendanceDetailService; /** * 清洗加班 */ @GetMapping("/overTime") public AjaxResult overTime(Date date) { // rzOverTimeMapper.sele // RzOverTimeDetail rzOverTimeDetail = rzOverTimeDetailMapper.queryRzOverTimeDetailByDateAndOverId(rzOverTime.getId(),date); // rzOverTimeDetail.setOverTimeEnd(date); // //计算加班时长 小时 // double minutes = (rzOverTimeDetail.getOverTimeEnd().getTime() - rzOverTimeDetail.getOverTimeStart().getTime())/1000/60; // //计算小时, 保留2位小数 // double hours = new BigDecimal(minutes).divide(new BigDecimal(60),2,BigDecimal.ROUND_HALF_UP).doubleValue(); // //获取规则 // JSONObject deviceRules = ParamUtils.getDeviceOverTimeRules(sn); // //获取最大加班时长 // Integer maxOverTimeHour = deviceRules.getInteger("maxHour"); // //记录加班时长 // rzOverTimeDetail.setOverTimeHours(BigDecimal.valueOf(((hours > maxOverTimeHour) ? maxOverTimeHour : hours))); // if(rzOverTimeDetailMapper.updateRzOverTimeDetail(rzOverTimeDetail) < 1){ return AjaxResult.success(); } @GetMapping("/message") public String message(Model model, String code) { System.out.println(code); // String res = AccessTokenUtil.accessToken2("wx268e32962db19f5f", "84a6065165ec82862c5e03a010a6dc6c", code); // System.out.println(res); // JSONObject obj = JSONObject.parseObject(res); // String openid = obj.getString("openid"); SysStaff user = new SysStaff(); user.setOpenid(code); model.addAttribute("user", user); //model.addAttribute("openid", openid); // ErrorData templateData = new ErrorData(); // // templateData.setThing1((JSONObject)JSON.toJSON(Collections.asMap("value", "研发部"))); // templateData.setThing2((JSONObject)JSON.toJSON(Collections.asMap("value", "张三")));//动态跟换车牌号 // templateData.setConst4((JSONObject)JSON.toJSON(Collections.asMap("value", "昨天下班未打卡")));//动态跟换车牌号 // templateData.setTime6((JSONObject)JSON.toJSON(Collections.asMap("value", DateUtil.format(new Date(), "yyyy年MM月dd日"))));//动态跟换车牌号 // // MessageTemplateSendData sendData = new MessageTemplateSendData(); // sendData.setTouser(openid); // sendData.setTemplate_id("z9sy-38K-iC5MAWHbxcxwg1c-9oNTFWeCOoy6B6zdKY"); // sendData.setData((JSONObject)JSON.toJSON(templateData)); // TemplateMessageUtil.templateMessageSend(GZHAccessTokenService.gzhAccessToken(), sendData); return "user_info.html"; } /** * 清洗加班 */ @PostMapping("/attendanceStatistical") public AjaxResult attendanceStatistical(String userIds, String date) throws ParseException { Date d = new SimpleDateFormat("yyyy-MM-dd").parse(date); for (SysStaff sysStaff : sysStaffService.list(new LambdaQueryWrapper().in(SysStaff::getUserId, Collections.asList(userIds.split(","))))){ rzAttendanceStatisticalService.createRzAttendance(sysStaff, null, d); rzRestaurantStatisticsService.createRestaurantStatistics(sysStaff, d); } return AjaxResult.success(); } @PostMapping("/qxdk") public AjaxResult qxdk() throws ParseException { // Map snMap = sysStaffService.list(new LambdaQueryWrapper().eq(SysStaff::getDelFlag, Constants.DELETE_FLAG_0)).stream().filter(data->{ return (data.getUserId() != null && StringUtils.isNotEmpty(data.getTimeClock())); // }).collect(Collectors.toMap(SysStaff::getUserId, SysStaff::getTimeClock)); // // // Date d = new SimpleDateFormat("yyyy-MM-dd").parse("2025-07-08"); // Map timeMap = Collections.asMap("上班卡(倒班12时制)",12,"上班卡(单班制)",9,"上班卡(倒班8时制)",9); // List list = rzAttendanceService.list(new LambdaQueryWrapper() // .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) // .apply(" date_format(`attendance_date`,'%Y%m%d')=date_format({0},'%Y%m%d') ",d) // .apply(" work_start_time is not null ") // ).stream().map(data ->{ // data.setWorkEndTime(DateUtils.addHours(data.getWorkStartTime(), timeMap.get(data.getRules()))); // return data; // }).collect(Collectors.toList()); // // if(Collections.isNotEmpty(list)){ // //更新所有的卡时间 // rzAttendanceService.updateBatchById(list); // for (RzAttendance rzAttendance : list){ // List sbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%上班%")); // if(Collections.isEmpty(sbList)){ // rzAttendanceDetailService.addOrUpdateDetail(rzAttendance, rzAttendance.getRules(), snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkStartTime(), "系统清洗"); // }else if(sbList.size() > 1){ // sbList.remove(0); // rzAttendanceDetailService.removeByIds(sbList); // } // List xbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%下班%")); // if(ObjectUtils.isEmpty(xbList)){ // rzAttendanceDetailService.addOrUpdateDetail(rzAttendance, "下班卡", snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkEndTime(), "系统清洗"); // }else if(xbList.size() > 1){ // xbList.remove(0); // rzAttendanceDetailService.removeByIds(xbList); // } // } // } // // // // list = rzAttendanceService.list(new LambdaQueryWrapper() // .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) // .apply(" date_format(`attendance_date`,'%Y%m%d')=date_format({0},'%Y%m%d') ",new SimpleDateFormat("yyyy-MM-dd").parse("2025-07-09")) // .apply(" work_start_time is not null ") // ); // // if(Collections.isNotEmpty(list)){ // //更新所有的卡时间 // for (RzAttendance rzAttendance : list){ // List sbList = rzAttendanceDetailService.list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendanceDetail::getAttendanceId, rzAttendance.getId()).like(RzAttendanceDetail::getButtonType,"%上班%")); // if(Collections.isEmpty(sbList)){ // rzAttendanceDetailService.addOrUpdateDetail(rzAttendance, rzAttendance.getRules(), snMap.get(rzAttendance.getStaffId()), rzAttendance.getWorkStartTime(), "系统清洗"); // }else if(sbList.size() > 1){ // sbList.remove(0); // rzAttendanceDetailService.removeByIds(sbList); // } // } // } return AjaxResult.success(); } private String buildCode(Integer code){ if(code < 10){ return Constants.SEIZE_A_SEAT_3 + code; }else if(code < 100){ return Constants.SEIZE_A_SEAT_2 + code; }else if(code < 1000){ return Constants.SEIZE_A_SEAT_1 + code; }else if(code < 10000){ return Constants.SEIZE_A_SEAT_0 + code; }else{ return String.valueOf(code); } } @PostMapping("/qxCode") public AjaxResult qxCode() throws ParseException { AtomicReference code = new AtomicReference<>(6); List list = sysStaffService.list(new LambdaQueryWrapper().notIn(SysStaff::getName, Collections.asList("胡景昌","张敏","胡毅鹏","李雾","尹国峰")).orderByAsc(SysStaff::getEmploymentDate)).stream().map(data ->{ data.setCode(buildCode(code.get())); code.set(code.get() +1); return data; }).collect(Collectors.toList()); sysStaffService.updateBatchById(list,list.size()); return AjaxResult.success(); } @PostMapping("/jb") public AjaxResult jb() throws Exception{ // BufferedReader reader = new BufferedReader(new FileReader(new File("D:\\andy\\文档\\考勤\\7月8号加班数据清洗.txt"))); // String line = reader.readLine(); // while (line != null) { // String[] info = line.split("-"); // RzAttendanceDetail detail = rzAttendanceDetailService.getOne(new LambdaQueryWrapper() // .eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0) // .eq(RzAttendanceDetail::getName, info[0]) // .eq(RzAttendanceDetail::getButtonType,"下班卡") // .apply(" DATE_FORMAT(date_time,'%Y%m%d') = DATE_FORMAT({0},'%Y%m%d') ", "2025-07-08")); // // RzAttendance attendance= rzAttendanceService.getOne(new LambdaQueryWrapper() // .eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0) // .eq(RzAttendance::getName, info[0]) // .eq(RzAttendance::getAttendanceDate, "2025-07-08") // ); // System.out.println(info[0]); // SysStaff sysStaff = sysStaffService.getById(detail.getStaffId()); // RzOverTime rzOverTime = rzOverTimeMapper.selectRzOverTimeByNameAndMonth(sysStaff.getUserId(),detail.getDateTime()); // if(rzOverTime == null){ // rzOverTime = new RzOverTime(); // rzOverTime.setUserId(sysStaff.getUserId()); // rzOverTime.setOverHours(new BigDecimal("0.0")); // rzOverTime.setDeptId(sysStaff.getDeptId()); // rzOverTime.setName(sysStaff.getName()); // rzOverTime.setOverTimeMonth(detail.getDateTime()); // rzOverTimeMapper.insert(rzOverTime); // } // // detail = rzAttendanceDetailService.addOrUpdateDetail(attendance, "加班卡", detail.getEquipmentCode(), com.evo.common.utils.DateUtils.addSeconds(detail.getDateTime(), 10), "数据清洗"); // RzOverTimeDetail rzOverTimeDetail = new RzOverTimeDetail(); // rzOverTimeDetail.setOverTimeId(rzOverTime.getId()); // rzOverTimeDetail.setOverTimeStart(detail.getDateTime()); // rzOverTimeDetail.setName(sysStaff.getName()); // rzOverTimeDetail.setDelFlag(Constants.DELETE_FLAG_0); // rzOverTimeDetail.setCreateBy("admin"); // rzOverTimeDetail.setCreateTime(com.evo.common.utils.DateUtils.getNowDate()); // // detail = rzAttendanceDetailService.addOrUpdateDetail(attendance, "下班卡", detail.getEquipmentCode(), com.evo.common.utils.DateUtils.addMinutes(detail.getDateTime(), new BigDecimal(info[1]).multiply(new BigDecimal(60)).add(new BigDecimal(30)).intValue()), "数据清洗"); // rzOverTimeDetail.setOverTimeEnd(detail.getDateTime()); // rzOverTimeDetailMapper.insert(rzOverTimeDetail); // KqUtils.calculateOverTimeHours(rzOverTimeDetail, sysStaff.getUserId(), sysStaff.getTimeClock()); // rzOverTimeDetailMapper.updateRzOverTimeDetail(rzOverTimeDetail); // //加班修改统计 // rzOverTime.setOverHours(rzOverTime.getOverHours().add(rzOverTimeDetail.getOverTimeHours())); // rzOverTimeMapper.updateRzOverTime(rzOverTime); // line = reader.readLine(); // } return AjaxResult.success(); } public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new FileReader(new File("D:\\andy\\文档\\考勤\\岗位任职部门信息.txt"))); String line = reader.readLine(); while (line != null) { String[] configData = line.split("_"); System.out.println("update sys_dict_data set dict_value='"+line+"' where dict_value='"+configData[0]+"';\n"); line = reader.readLine(); } } }