导入薪资项目、模板、预览
This commit is contained in:
parent
b8b9cbbe6c
commit
d30380e2e7
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -152,5 +152,8 @@ public interface SalaryItemService {
|
|||
|
||||
List<SalaryItemConfig> getConfig(SalaryItemExportParam param);
|
||||
|
||||
Map<String, Object> preview(SalaryItemImportParam param);
|
||||
|
||||
ImportExcelResponse importSalaryItem(SalaryItemImportParam param);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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, "薪资项目");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue