package com.qianwen.smartman.modules.cps.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.util.List; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.smartman.common.cache.cps.EmployeeCache; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.excel.util.ExcelUtil; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.annotation.PutResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tenant.annotation.NonDS; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.utils.DateUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.cps.convert.EmployeeConvert; import com.qianwen.smartman.modules.cps.dto.EmployeeDTO; import com.qianwen.smartman.modules.cps.entity.Employee; import com.qianwen.smartman.modules.cps.excel.EmployeeExcel; import com.qianwen.smartman.modules.cps.excel.EmployeeImport; import com.qianwen.smartman.modules.cps.service.IEmployeeService; import com.qianwen.smartman.modules.cps.vo.EmployeeDetailVO; import com.qianwen.smartman.modules.cps.vo.EmployeeSelectVO; import com.qianwen.smartman.modules.cps.vo.EmployeeSubmitVO; import com.qianwen.smartman.modules.cps.vo.EmployeeUpdatePartVO; import com.qianwen.smartman.modules.cps.vo.EmployeeVO; import com.qianwen.smartman.modules.cps.vo.GroupTreeVO; import com.qianwen.smartman.modules.cps.vo.HierarchyVO; import com.qianwen.smartman.modules.cps.wrapper.EmployeeExcelWrapper; import com.qianwen.smartman.modules.cps.wrapper.EmployeeWrapper; import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; import com.qianwen.smartman.modules.resource.enums.TemplateEnum; import com.qianwen.smartman.modules.resource.service.ISystemResourceService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @Api(value = "员工管理", tags = {"员工管理"}) @RestController @ApiResource({"smis/employee"}) @NonDS public class EmployeeController extends BladeController { private final IEmployeeService employeeService; private final OssBuilder ossBuilder; private final ISystemResourceService systemResourceService; public EmployeeController(final IEmployeeService employeeService, final OssBuilder ossBuilder, final ISystemResourceService systemResourceService) { this.employeeService = employeeService; this.ossBuilder = ossBuilder; this.systemResourceService = systemResourceService; } @ApiOperationSupport(order = 1) @GetResource({"/detail/{id}"}) @ApiOperation(value = "详情", notes = "传入id") public R detail(@PathVariable String id) { Employee employee = (Employee) this.employeeService.getById(id); return R.data(EmployeeWrapper.build().entityVO(EmployeeConvert.INSTANCE.convertToDTO(employee))); } @ApiOperationSupport(order = 2) @GetResource({"/list"}) @ApiOperation("分页") public R> list(EmployeeSelectVO employeeSelectVO, Query query) { IPage pages = this.employeeService.selectEmployeePage(Condition.getPage(query), employeeSelectVO); return R.data(EmployeeWrapper.build().pageVO(pages)); } @ApiOperationSupport(order = 2) @GetResource({"/get/list"}) @ApiOperation("列表") public R> selectList(EmployeeSelectVO employeeSelectVO) { return R.data(EmployeeWrapper.build().listVO(this.employeeService.selectEmployeeList(employeeSelectVO))); } @ApiOperationSupport(order = 3) @PostResource({"/submit"}) @ApiOperation("新增或更改员工信息") @PreAuth public R submit(@Validated @RequestBody EmployeeSubmitVO employeeSubmitVO) { EmployeeCache.clearEmployeeCache(); return R.data(this.employeeService.submit(employeeSubmitVO)); } @ApiOperationSupport(order = 4) @PostResource({"/remove"}) @ApiOperation("批量删除员工") @PreAuth public R remove(@RequestParam @ApiParam(value = "ids", required = true) String ids, @RequestParam("type") @ApiParam("删除传0 停用传1") Integer type) { EmployeeCache.clearEmployeeCache(); return R.data(this.employeeService.removeEmployee(Func.toLongList(ids), type)); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @GetResource({"/export-template"}) @ApiOperation("导出模板") @PreAuth public R exportTemplate() { return R.data(this.systemResourceService.getBusinessTemplateInfo(TemplateEnum.EMPLOYEE)); } @ApiOperationSupport(order = 6) @PostResource({"/import-employee"}) @ApiOperation("导入员工") @PreAuth public R importEmployee(MultipartFile file, @ApiParam("组织code") String organizationCode) { List data = ExcelUtil.read(file, 0, 2, EmployeeImport.class); return R.data(this.employeeService.importEmployee(data, organizationCode)); } @ApiOperationSupport(order = 7) @GetResource({"/export-employee"}) @ApiOperation("导出员工") @PreAuth public R exportEmployee(EmployeeSelectVO employeeSelectVO) { IPage pages = this.employeeService.selectEmployeePage(Condition.getPage(new Query().setCurrent(1).setSize(-1)), employeeSelectVO); List list = EmployeeExcelWrapper.build().pageVO(pages).getRecords(); String fileName = String.format("%s-%s.xlsx", "员工数据", DateUtil.time()); MultipartFile multipartFile = ExcelUtil.exportToMultipartFile(fileName, "员工数据表", list, EmployeeExcel.class); BladeFile bladeFile = this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile); return R.data(bladeFile); } @ApiOperationSupport(order = 8) @PutResource({"/change-organization"}) @ApiOperation("部门调整") @PreAuth public R changeOrganization(@RequestParam("employeeIds") List employeeIds, @RequestParam("organizationId") String organizationId) { EmployeeCache.clearEmployeeCache(); return R.data(this.employeeService.changeOrganization(employeeIds, Long.valueOf(Func.toLong(organizationId)))); } @GetResource({"/unbind-employee"}) @ApiOperation("查询未绑定的员工") public R> getUnbindEmployeeList(String employeeId) { return R.data(this.employeeService.getUnbindEmployeeList(employeeId)); } @GetResource({"/tree"}) @ApiOperation("树形结构") public R> tree() { return R.data(this.employeeService.tree()); } @GetResource({"/hierarchy"}) @ApiOperation("查询员工的层级结构") public R getEmployeeHierarchy(Long employeeId) { return R.data(this.employeeService.getEmployeeHierarchy(employeeId)); } @PostResource({"/updatePart"}) @ApiOperation("第三方绑定时更新工号或pin码") public R updatePart(@Validated @RequestBody EmployeeUpdatePartVO employeeUpdatePartVO) { return R.data(this.employeeService.updatePart(employeeUpdatePartVO)); } }