diff --git a/src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java b/src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java new file mode 100644 index 000000000..f30f4f758 --- /dev/null +++ b/src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.extemp.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: sy + * @Description: 非系统人员导入参数 + * @Date: 2023/7/26 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExtEmpImportParam { + //上传文件id + @DataCheck(require = true,message = "imageId为空") + String imageId; +} diff --git a/src/com/engine/salary/service/ExtEmpService.java b/src/com/engine/salary/service/ExtEmpService.java index d6f3b2d7d..ff5879c3f 100644 --- a/src/com/engine/salary/service/ExtEmpService.java +++ b/src/com/engine/salary/service/ExtEmpService.java @@ -1,14 +1,17 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Collection; import java.util.List; +import java.util.Map; public interface ExtEmpService { @@ -45,4 +48,10 @@ public interface ExtEmpService { Collection listAllForReport(); ExtEmpPO getById(Long id); + + XSSFWorkbook exportImportTemplate(); + + Map previewImportExtEmp(ExtEmpImportParam param); + + Map importExtEmp(ExtEmpImportParam param); } \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index 8de9513ee..4615942fd 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; @@ -13,13 +14,17 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.extemp.ExternalEmployeeMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelComment; +import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -203,4 +208,43 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { return employee; }).collect(Collectors.toList()); } + + @Override + public XSSFWorkbook exportImportTemplate() { + + // 模板表头 + List headerList = Lists.newArrayList( + SalaryI18nUtil.getI18nLabel(25034, "姓名"), + SalaryI18nUtil.getI18nLabel(27511, "部门"), + SalaryI18nUtil.getI18nLabel(33553, "分部"), + SalaryI18nUtil.getI18nLabel(1516, "入职日期"), + SalaryI18nUtil.getI18nLabel(125238, "手机号"), + SalaryI18nUtil.getI18nLabel(1933, "工号"), + SalaryI18nUtil.getI18nLabel(1887, "身份证号码"), + SalaryI18nUtil.getI18nLabel(0, "本人开户的银行卡卡号"), + SalaryI18nUtil.getI18nLabel(0, "本人开户的银行卡开户支行全称")); + List dataIndexList = Lists.newArrayList("username", "departmentName", "subcompanyName", "companystartdate", "mobile", "workcode", "idNo", "bankCardNum", "bankName"); + + // excel导出的数据 + List> rows = new ArrayList<>(); + rows.add(headerList); + + // 注释 + List excelComments = Lists.newArrayList(); + excelComments.add(new ExcelComment(0, 0, 1, 2, SalaryI18nUtil.getI18nLabel(30036, "必填"))); + excelComments.add(new ExcelComment(3, 0, 4, 2, SalaryI18nUtil.getI18nLabel(542348, "格式样例为'2022-01-01'、'2022/1/1'"))); + + String sheetName = "非系统人员导入模板"; + return ExcelUtilPlus.genWorkbookV2(rows, sheetName, excelComments); + } + + @Override + public Map previewImportExtEmp(ExtEmpImportParam param) { + return null; + } + + @Override + public Map importExtEmp(ExtEmpImportParam param) { + return null; + } } diff --git a/src/com/engine/salary/web/ExtEmpController.java b/src/com/engine/salary/web/ExtEmpController.java index 9be31acf7..4e6225435 100644 --- a/src/com/engine/salary/web/ExtEmpController.java +++ b/src/com/engine/salary/web/ExtEmpController.java @@ -1,13 +1,17 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.ExtEmpWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -16,7 +20,13 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; import java.util.Collection; +import java.util.Map; /** * 外部人员 @@ -26,6 +36,7 @@ import java.util.Collection; * @author qiantao * @version 1.0 **/ +@Slf4j public class ExtEmpController { private ExtEmpWrapper getExtEmpWrapper(User user) { @@ -72,6 +83,50 @@ public class ExtEmpController { return new ResponseResult(user).run(getExtEmpWrapper(user)::detail, id); } + // **********************************非系统人员导入 start*********************************/ + //导出导入模板 + @GET + @Path("/importtemplate/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getExtEmpWrapper(user).exportImportTemplate(); + String time = LocalDate.now().toString(); + String fileName = SalaryI18nUtil.getI18nLabel(0, "非系统人员导入模板") + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("非系统人员导入模板导出异常", e); + throw e; + } + } + //导入非系统人员 + @POST + @Path("/importExtEmp") + @Produces(MediaType.APPLICATION_JSON) + public String importExtEmp(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ExtEmpImportParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getExtEmpWrapper(user)::importExtEmp, param); + } + + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String previewImportExtEmp(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ExtEmpImportParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getExtEmpWrapper(user)::previewImportExtEmp, param); + } + // **********************************非系统人员导入 end*********************************/ } diff --git a/src/com/engine/salary/wrapper/ExtEmpWrapper.java b/src/com/engine/salary/wrapper/ExtEmpWrapper.java index f78f0e2ec..fd936d61d 100644 --- a/src/com/engine/salary/wrapper/ExtEmpWrapper.java +++ b/src/com/engine/salary/wrapper/ExtEmpWrapper.java @@ -2,15 +2,18 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.impl.ExtEmpServiceImpl; import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; import java.util.Collection; +import java.util.Map; /** * 累计专项 @@ -46,4 +49,17 @@ public class ExtEmpWrapper extends Service { public ExtEmpPO detail(Long id) { return getExtEmpService(user).getById(id); } + + public XSSFWorkbook exportImportTemplate() { + return getExtEmpService(user).exportImportTemplate(); + } + + public Map previewImportExtEmp(ExtEmpImportParam param) { + return getExtEmpService(user).previewImportExtEmp(param); + } + + public Map importExtEmp(ExtEmpImportParam param) { + return getExtEmpService(user).importExtEmp(param); + } + }