package com.evo.attendance.controller; import com.evo.common.annotation.Log; import com.evo.common.annotation.RepeatSubmit; import com.evo.common.constant.HttpStatus; import com.evo.common.core.controller.BaseController; import com.evo.common.core.domain.AjaxResult; import com.evo.common.core.page.TableDataInfo; import com.evo.common.enums.BusinessType; import com.evo.common.utils.ParamUtils; import com.evo.common.utils.StringUtils; import com.evo.common.utils.poi.ExcelUtil; import com.evo.attendance.domain.RzAttendanceStatistical; import com.evo.attendance.service.IRzAttendanceStatisticalService; import com.evo.finance.service.IRzSalaryStatisticsService; import com.evo.system.service.ISysStatisticalOperationLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.List; /** * 考勤统计Controller * * @author chenyj * @date 2024-09-05 */ @RestController @RequestMapping("/attendance/statistical") public class RzAttendanceStatisticalController extends BaseController { @Resource private IRzAttendanceStatisticalService rzAttendanceStatisticalService; @Autowired private IRzSalaryStatisticsService rzSalaryStatisticsService; @Resource private ISysStatisticalOperationLogService sysStatisticalOperationLogService; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); /** * 查询考勤统计列表 */ @PreAuthorize("@ss.hasPermi('attendance:statistical:list')") @GetMapping("/list") public TableDataInfo list(RzAttendanceStatistical rzAttendanceStatistical) { startPage(); List list = rzAttendanceStatisticalService.selectRzAttendanceStatisticalList(rzAttendanceStatistical); List createMonth = rzSalaryStatisticsService.selectMonthList(); list.stream().forEach(data ->{ data.setAllowAdjustment(createMonth.contains(sdf.format(data.getMonth()))); }); return getDataTable(list); } /** * 导出考勤统计列表 */ @PreAuthorize("@ss.hasPermi('attendance:statistical:export')") @Log(title = "考勤统计", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, RzAttendanceStatistical rzAttendanceStatistical) { List list = rzAttendanceStatisticalService.selectRzAttendanceStatisticalList(rzAttendanceStatistical); ExcelUtil util = new ExcelUtil(RzAttendanceStatistical.class); util.exportExcel(response, list, "考勤统计数据"); } /** * 获取考勤统计详细信息 */ @PreAuthorize("@ss.hasPermi('attendance:statistical:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(rzAttendanceStatisticalService.selectRzAttendanceStatisticalById(id)); } /** * 修改考勤统计 */ @PreAuthorize("@ss.hasPermi('attendance:statistical:edit')") @Log(title = "考勤统计", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody RzAttendanceStatistical rzAttendanceStatistical) { return toAjax(rzAttendanceStatisticalService.updateRzAttendanceStatistical(rzAttendanceStatistical)); } /** * 校正数据 */ @PreAuthorize("@ss.hasPermi('attendance:statistical:correct')") @RequestMapping(value = "correct") @RepeatSubmit public AjaxResult correct(@RequestBody RzAttendanceStatistical rzAttendanceStatistical) { if (StringUtils.isNull(rzAttendanceStatistical) || StringUtils.isNull(rzAttendanceStatistical.getMonth())) { return AjaxResult.error("请输入校正日期!!"); } AjaxResult result = rzAttendanceStatisticalService.autoCalculateTheDayBeforeAttendance(rzAttendanceStatistical.getMonth()); //如果操作记录成功, 则打开统计的操作记录, 不写在service的原因是有定时器, 每天在执行 if(Integer.parseInt(String.valueOf(result.get(AjaxResult.CODE_TAG))) == HttpStatus.SUCCESS){ ParamUtils.updateLogOperation(true); } return result; } @PreAuthorize("@ss.hasPermi('attendance:statistical:import')") @PostMapping("/importData") public AjaxResult importData(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil(RzAttendanceStatistical.class); List attList = util.importExcel(file.getInputStream()); return rzAttendanceStatisticalService.importRzAttendanceStatistical(attList); } /** * 获取考勤统计的操作记录 */ @PreAuthorize("@ss.hasPermi('attendance:statistical:oper')") @GetMapping(value = "/oper/{id}") public AjaxResult getOper(@PathVariable("id") Long id) { return success(sysStatisticalOperationLogService.getOperationByBusinessId(id, RzAttendanceStatistical.class)); } }