diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemDownloadTemplateParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemDownloadTemplateParam.java
new file mode 100644
index 000000000..36edcd24b
--- /dev/null
+++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemDownloadTemplateParam.java
@@ -0,0 +1,24 @@
+package com.engine.salary.entity.salaryitem.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 薪资项目查询参数
+ *
Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SalaryItemDownloadTemplateParam {
+
+ //下载模板是否带数据
+ private boolean hasData;
+}
diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java
index 7e469e24b..15df4b07f 100644
--- a/src/com/engine/salary/service/SalaryItemService.java
+++ b/src/com/engine/salary/service/SalaryItemService.java
@@ -152,5 +152,8 @@ public interface SalaryItemService {
List getConfig(SalaryItemExportParam param);
+ Map preview(SalaryItemImportParam param);
+
ImportExcelResponse importSalaryItem(SalaryItemImportParam param);
+
}
diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java
index c294cb100..1354b6729 100644
--- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java
@@ -35,6 +35,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.IdGenerator;
import com.engine.salary.util.excel.ExcelParseHelper;
+import com.engine.salary.util.excel.ExcelSupport;
import com.engine.salary.util.excel.ImportExcelResponse;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
@@ -45,6 +46,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.BeanUtils;
import weaver.file.ImageFileManager;
@@ -533,6 +535,21 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
return getSalaryItemMapper().getConfig(param.getIds());
}
+ @Override
+ public Map preview(SalaryItemImportParam param) {
+ InputStream fileInputStream = null;
+ try {
+ fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
+ Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX);
+ Map apidatas = new HashMap();
+ apidatas.put("headers", ExcelSupport.getSheetHeader(sheet, 0));
+ apidatas.put("list", ExcelParseHelper.parse2List(sheet, 1));
+ return apidatas;
+ } finally {
+ IOUtils.closeQuietly(fileInputStream);
+ }
+ }
+
@Override
public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) {
diff --git a/src/com/engine/salary/web/SalaryItemController.java b/src/com/engine/salary/web/SalaryItemController.java
index fd6afad09..91fa153ad 100644
--- a/src/com/engine/salary/web/SalaryItemController.java
+++ b/src/com/engine/salary/web/SalaryItemController.java
@@ -14,6 +14,7 @@ import com.engine.salary.util.page.PageInfo;
import com.engine.salary.wrapper.SalaryItemWrapper;
import com.engine.salary.wrapper.SysSalaryItemWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.hrm.HrmUserVarify;
@@ -41,6 +42,7 @@ import java.util.Map;
* @author qiantao
* @version 1.0
**/
+@Slf4j
public class SalaryItemController {
private SalaryItemWrapper getSalaryItemWrapper(User user) {
@@ -209,10 +211,45 @@ public class SalaryItemController {
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("/downloadTemplate")
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemDownloadTemplateParam param) {
+ try {
+ User user = HrmUserVarify.getUser(request, response);
+ XSSFWorkbook workbook = getSalaryItemWrapper(user).downloadTemplate(param);
+ String time = LocalDate.now().toString();
+ String fileName = "薪资项目导入模板" + time;
+ try {
+ fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
+ } 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("/preview")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemImportParam importParam) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult>(user).run(getSalaryItemWrapper(user)::preview, importParam);
+ }
+
@POST
@Path("/import")
@Produces(MediaType.APPLICATION_JSON)
diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java
index cf3283b07..fcc7d91a7 100644
--- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java
+++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java
@@ -342,7 +342,44 @@ public class SalaryItemWrapper extends Service {
return ExcelUtil.genWorkbookV2(rows, "薪资项目");
}
+ public Map preview(SalaryItemImportParam param) {
+ return getSalaryItemService(user).preview(param);
+ }
public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) {
return getSalaryItemService(user).importSalaryItem(param);
}
+
+
+ public XSSFWorkbook downloadTemplate(SalaryItemDownloadTemplateParam param) {
+
+ List