导入薪资项目、模板、预览

This commit is contained in:
钱涛 2024-08-07 14:23:35 +08:00
parent b8b9cbbe6c
commit d30380e2e7
5 changed files with 118 additions and 0 deletions

View File

@ -0,0 +1,24 @@
package com.engine.salary.entity.salaryitem.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 薪资项目查询参数
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryItemDownloadTemplateParam {
//下载模板是否带数据
private boolean hasData;
}

View File

@ -152,5 +152,8 @@ public interface SalaryItemService {
List<SalaryItemConfig> getConfig(SalaryItemExportParam param);
Map<String, Object> preview(SalaryItemImportParam param);
ImportExcelResponse importSalaryItem(SalaryItemImportParam param);
}

View File

@ -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<String, Object> preview(SalaryItemImportParam param) {
InputStream fileInputStream = null;
try {
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX);
Map<String, Object> apidatas = new HashMap<String, Object>();
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) {

View File

@ -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<SalaryItemImportParam, Map<String, Object>>(user).run(getSalaryItemWrapper(user)::preview, importParam);
}
@POST
@Path("/import")
@Produces(MediaType.APPLICATION_JSON)

View File

@ -342,7 +342,44 @@ public class SalaryItemWrapper extends Service {
return ExcelUtil.genWorkbookV2(rows, "薪资项目");
}
public Map<String, Object> preview(SalaryItemImportParam param) {
return getSalaryItemService(user).preview(param);
}
public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) {
return getSalaryItemService(user).importSalaryItem(param);
}
public XSSFWorkbook downloadTemplate(SalaryItemDownloadTemplateParam param) {
List<Object> titles = Lists.newArrayList();
List<String> dataIndexList = Lists.newArrayList();
ExcelUtil.parseHeader(SalaryItemExcelConfig.class, titles, dataIndexList);
List<List<Object>> rows = new ArrayList<>();
rows.add(titles);
if (param.isHasData()){
List<SalaryItemConfig> configs = getSalaryItemService(user).getConfig(SalaryItemExportParam.builder().build());
configs.forEach(e -> {
List<Object> row = new ArrayList<>();
row.add(e.getName());
row.add(SalaryOnOffEnum.parseByValue(e.getUseDefault()).getDefaultLabel());
row.add(SalaryOnOffEnum.parseByValue(e.getHideDefault()).getDefaultLabel());
row.add(SalaryRoundingModeEnum.parseByValue(e.getRoundingMode()).getDefaultLabel());
row.add(e.getPattern());
row.add(SalaryValueTypeEnum.parseByValue(e.getValueType()).getDefaultLabel());
row.add(SalaryDataTypeEnum.parseByValue(e.getDataType()).getDefaultLabel());
row.add(e.getFormula() == null ? "" : e.getFormula().getFormula());
row.add(e.getFormula() == null ? "" : JsonUtil.parseMap(Util.null2String(e.getFormula().getExtendParam()), String.class).getOrDefault("sqlReturnKey", ""));
row.add(e.getSortedIndex());
row.add(e.getWidth());
row.add(e.getDefaultValue());
row.add(e.getDescription());
rows.add(row);
});
}
return ExcelUtil.genWorkbookV2(rows, "薪资项目");
}
}