package com.ruoyi.staff.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.staff.service.IStaffJoinLeaveRecordService; import com.ruoyi.staff.service.IStaffOnJobService; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 员工台账/合同管理 */ @RestController @RequestMapping("/staff/staffOnJob") public class StaffOnJobController { @Resource private IStaffOnJobService staffOnJobService; /** * 在职员工台账分页查询 * @param page * @param staffOnJob * @return */ @GetMapping("/listPage") public AjaxResult staffOnJobListPage(Page page, StaffOnJob staffOnJob) { return AjaxResult.success(staffOnJobService.staffOnJobListPage(page, staffOnJob)); } /** * 在职员工下拉(新增离职用) * @return */ @GetMapping("/list") public AjaxResult staffOnJobList() { return AjaxResult.success(staffOnJobService.staffOnJobList()); } /** * 在职员工详情 * @param staffNo * @return */ @GetMapping("/staffNo") public AjaxResult staffOnJobDetail(String staffNo) { return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo)); } /** * 在职员工导入 */ @PostMapping("/import") @Log(title = "在职员工导入", businessType = BusinessType.IMPORT) public AjaxResult importData(@RequestPart("file") MultipartFile file) { Boolean b = staffOnJobService.importData(file); if (b) { return AjaxResult.success("导入成功"); } return AjaxResult.error("导入失败"); } /** * 在职员工导出 * @param response * @param staffOnJob */ @PostMapping("/export") public void staffOnJobExport(HttpServletResponse response,StaffOnJob staffOnJob) { staffOnJobService.staffOnJobExport(response, staffOnJob); } /** * 新增在职员工 */ @PostMapping public AjaxResult add(@RequestBody StaffOnJob staffOnJob) { if (staffOnJob.getStaffState() == null) { staffOnJob.setStaffState(1); } return staffOnJobService.save(staffOnJob) ? AjaxResult.success() : AjaxResult.error("新增失败"); } /** * 修改在职员工 */ @PutMapping("/{id}") public AjaxResult update(@PathVariable Long id, @RequestBody StaffOnJob staffOnJob) { staffOnJob.setId(id); return staffOnJobService.updateById(staffOnJob) ? AjaxResult.success() : AjaxResult.error("修改失败"); } /** * 删除在职员工 */ @DeleteMapping("/del") public AjaxResult del(@RequestBody List ids) { return staffOnJobService.removeByIds(ids) ? AjaxResult.success() : AjaxResult.error("删除失败"); } /** * 在职员工统计(在职人数 / 薪资合计) */ @GetMapping("/statistics") public AjaxResult statistics() { List list = staffOnJobService.list(); long onJobCount = list.stream() .filter(s -> s.getStaffState() != null && s.getStaffState() == 1).count(); java.math.BigDecimal salaryTotal = list.stream() .filter(s -> s.getStaffState() != null && s.getStaffState() == 1 && s.getSalary() != null) .map(StaffOnJob::getSalary) .reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add); java.util.Map map = new java.util.HashMap<>(); map.put("onJobCount", onJobCount); map.put("salaryTotal", salaryTotal); return AjaxResult.success(map); } }