package com.ruoyi.lavorissue.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.utils.DailyRedisCounter; import com.ruoyi.approve.utils.StartAndEndDateDto; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.lavorissue.dto.StatisticsLaborIssue; import com.ruoyi.lavorissue.mapper.LavorIssueMapper; import com.ruoyi.lavorissue.pojo.LaborIssue; import com.ruoyi.lavorissue.service.LavorIssueService; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.mapper.SysDeptMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; /** * @author :yys * @date : 2025/8/13 11:19 */ @RestController @Api(tags = "劳保发放") @RequestMapping("/lavorIssue") public class LavorIssueController extends BaseController { @Autowired private LavorIssueService laborIssueService; @Autowired private LavorIssueMapper lavorIssueMapper; @Autowired private SysDeptMapper sysDeptMapper; @GetMapping("/listPage") @Log(title = "劳保发放-分页查询", businessType = BusinessType.OTHER) @ApiOperation("劳保发放-分页查询") public AjaxResult listPage(Page page, LaborIssue laborIssue){ IPage listPage = laborIssueService.listPage(page, laborIssue); return AjaxResult.success(listPage); } @PostMapping("/add") @Log(title = "劳保发放-添加", businessType = BusinessType.INSERT) @ApiOperation("劳保发放-添加") @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody LaborIssue laborIssue){ String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); StartAndEndDateDto dateTime = DailyRedisCounter.getDateTime(); Long approveId = lavorIssueMapper.selectCount(new LambdaQueryWrapper() .gt(LaborIssue::getCreateTime, dateTime.getStartDate()) .lt(LaborIssue::getCreateTime, dateTime.getEndDate())); String formattedCount = String.format("%03d", approveId + 1); laborIssue.setOrderNo(today + formattedCount); List laborIssues = lavorIssueMapper.selectList(new LambdaQueryWrapper() .like(LaborIssue::getOrderNo, today)); if(!CollectionUtils.isEmpty(laborIssues)){ long l = Long.parseLong(laborIssues.get(laborIssues.size() - 1).getOrderNo()); laborIssue.setOrderNo(String.format("%03d", l + 1)); } boolean save = laborIssueService.save(laborIssue); return save ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @Log(title = "劳保发放-修改", businessType = BusinessType.UPDATE) @ApiOperation("劳保发放-修改") @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody LaborIssue laborIssue){ boolean update = laborIssueService.updateById(laborIssue); return update ? AjaxResult.success() : AjaxResult.error(); } @DeleteMapping("/delete") @Log(title = "劳保发放-删除", businessType = BusinessType.DELETE) @ApiOperation("劳保发放-删除") @Transactional(rollbackFor = Exception.class) public AjaxResult delete(@RequestBody List ids){ boolean delete = laborIssueService.removeBatchByIds(ids); return delete ? AjaxResult.success() : AjaxResult.error(); } @GetMapping("/statistics") @ApiOperation("劳保发放-统计") public AjaxResult statistics(StatisticsLaborIssue req) throws Exception { StatisticsLaborIssue statisticsLaborIssue = laborIssueService.statistics(req); return AjaxResult.success(statisticsLaborIssue); } /** * 劳保发放-导出 */ @Log(title = "劳保发放-导出", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation("劳保发放-导出") public void export(HttpServletResponse response) { Long tenantId = SecurityUtils.getLoginUser().getTenantId(); ExcelUtil util = new ExcelUtil(LaborIssue.class); List list = lavorIssueMapper.list(new LaborIssue()); SysDept sysDept = sysDeptMapper.selectDeptById(tenantId); if(sysDept == null){ throw new RuntimeException("部门不存在!"); } list.forEach(item -> { item.setDeptName(sysDept.getDeptName()); }); util.exportExcel(response, list , "劳保台账"); } /** * 劳保发放-导出 */ @Log(title = "劳保发放-导出", businessType = BusinessType.EXPORT) @PostMapping("/exportCopy") @ApiOperation("劳保发放-导出") public void exportCopy(HttpServletResponse response,LaborIssue laborIssue) throws UnsupportedEncodingException { laborIssueService.exportCopy(response,laborIssue); } }