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<EmployeeDetailVO> 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<IPage<EmployeeDetailVO>> list(EmployeeSelectVO employeeSelectVO, Query query) {
|
IPage<EmployeeDTO> pages = this.employeeService.selectEmployeePage(Condition.getPage(query), employeeSelectVO);
|
return R.data(EmployeeWrapper.build().pageVO(pages));
|
}
|
|
@ApiOperationSupport(order = 2)
|
@GetResource({"/get/list"})
|
@ApiOperation("列表")
|
public R<List<EmployeeDetailVO>> selectList(EmployeeSelectVO employeeSelectVO) {
|
return R.data(EmployeeWrapper.build().listVO(this.employeeService.selectEmployeeList(employeeSelectVO)));
|
}
|
|
@ApiOperationSupport(order = 3)
|
@PostResource({"/submit"})
|
@ApiOperation("新增或更改员工信息")
|
@PreAuth
|
public R<EmployeeVO> submit(@Validated @RequestBody EmployeeSubmitVO employeeSubmitVO) {
|
EmployeeCache.clearEmployeeCache();
|
return R.data(this.employeeService.submit(employeeSubmitVO));
|
}
|
|
@ApiOperationSupport(order = 4)
|
@PostResource({"/remove"})
|
@ApiOperation("批量删除员工")
|
@PreAuth
|
public R<Boolean> 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<BladeFile> exportTemplate() {
|
return R.data(this.systemResourceService.getBusinessTemplateInfo(TemplateEnum.EMPLOYEE));
|
}
|
|
@ApiOperationSupport(order = 6)
|
@PostResource({"/import-employee"})
|
@ApiOperation("导入员工")
|
@PreAuth
|
public R<BladeFile> importEmployee(MultipartFile file, @ApiParam("组织code") String organizationCode) {
|
List<EmployeeImport> 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<BladeFile> exportEmployee(EmployeeSelectVO employeeSelectVO) {
|
IPage<EmployeeDTO> pages = this.employeeService.selectEmployeePage(Condition.getPage(new Query().setCurrent(1).setSize(-1)), employeeSelectVO);
|
List<EmployeeExcel> 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<Boolean> changeOrganization(@RequestParam("employeeIds") List<Long> 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<List<GroupTreeVO>> getUnbindEmployeeList(String employeeId) {
|
return R.data(this.employeeService.getUnbindEmployeeList(employeeId));
|
}
|
|
@GetResource({"/tree"})
|
@ApiOperation("树形结构")
|
public R<List<GroupTreeVO>> tree() {
|
return R.data(this.employeeService.tree());
|
}
|
|
@GetResource({"/hierarchy"})
|
@ApiOperation("查询员工的层级结构")
|
public R<HierarchyVO> getEmployeeHierarchy(Long employeeId) {
|
return R.data(this.employeeService.getEmployeeHierarchy(employeeId));
|
}
|
|
@PostResource({"/updatePart"})
|
@ApiOperation("第三方绑定时更新工号或pin码")
|
public R<Boolean> updatePart(@Validated @RequestBody EmployeeUpdatePartVO employeeUpdatePartVO) {
|
return R.data(this.employeeService.updatePart(employeeUpdatePartVO));
|
}
|
}
|