From 314dc8803c0b9e9e0448024d9ec593a39e42c000 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 27 Sep 2022 10:55:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-=E7=A6=8F?= =?UTF-8?q?=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E6=AD=A3=E5=B8=B8=E7=BC=B4?= =?UTF-8?q?=E7=BA=B3=E7=BA=BF=E4=B8=8B=E5=AF=B9=E6=AF=94=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/SIAccountService.java | 5 ++ .../service/impl/SIAccountServiceImpl.java | 85 +++++++++++++++++++ .../salary/web/SIAccountController.java | 39 +++++++++ 3 files changed, 129 insertions(+) diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java index 7f268fc89..5e1e3afae 100644 --- a/src/com/engine/salary/service/SIAccountService.java +++ b/src/com/engine/salary/service/SIAccountService.java @@ -227,5 +227,10 @@ public interface SIAccountService { * 导出“福利核算-补缴导入模板” */ XSSFWorkbook exportSupplyImportTemplate(InsuranceAcctDetailImportTemplateParam param); + + /** + * 导出“福利核算-线下对比导入模板” + */ + XSSFWorkbook exportComparisonWelfareTemplate(InsuranceAcctDetailImportTemplateParam param); } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 6f002bca2..244baf837 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -1303,6 +1303,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return ExcelUtil.genWorkbookV2(rows, sheetName); } + /** * 获取福利台账中的补缴数据 * @param billMonth 账单月份 @@ -1557,4 +1558,88 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } } + /** + * 导出“福利核算-线下对比导入模板” + */ + @Override + public XSSFWorkbook exportComparisonWelfareTemplate(InsuranceAcctDetailImportTemplateParam param) { + + List listAll = MapperProxyFactory.getProxy(ICategoryMapper.class).listAll(); + List socialWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 1).collect(Collectors.toList()); + List fundWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 2).collect(Collectors.toList()); + List otherWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 3).collect(Collectors.toList()); + List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), + SalaryI18nUtil.getI18nLabel(86185, "部门"), + SalaryI18nUtil.getI18nLabel(86186, "手机号"), +// SalaryI18nUtil.getI18nLabel(86317, "工号"), + SalaryI18nUtil.getI18nLabel(86187, "员工状态"), + SalaryI18nUtil.getI18nLabel(100377, "数据来源"), + SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")); + headerList.add(SalaryI18nUtil.getI18nLabel(91324, "社保账号")); + headerList.add(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")); +// "失业保险申报基数" +// "生育保险申报基数" +// "养老保险申报基数" +// "医疗保险申报基数" +// "工伤保险申报基数" + for (ICategoryPO po : socialWelfareList) { + headerList.add(po.getInsuranceName() + "申报基数"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(91486, "公积金账号")); + headerList.add(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")); + //组装公积金基数 + for (ICategoryPO po : fundWelfareList) { + headerList.add(po.getInsuranceName() + "申报基数"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")); + headerList.add(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")); + //组装其他福利基数 + for (ICategoryPO po : otherWelfareList) { + headerList.add(po.getInsuranceName() + "申报基数"); + } + //社保个人(生育保险个人、工伤保险个人、失业保险个人、养老保险个人、医疗保险个人) + for (ICategoryPO po : socialWelfareList) { + headerList.add(po.getInsuranceName() + "个人"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100388, "社保个人合计")); + //住房公积金个人、补充住房公积金个人 + for (ICategoryPO po : fundWelfareList) { + headerList.add(po.getInsuranceName() + "个人"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100390, "公积金个人合计")); + //其他个人(比如企业年金个人) + for (ICategoryPO po : otherWelfareList) { + headerList.add(po.getInsuranceName() + "个人"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100392, "其他福利个人合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100393, "个人合计")); + //社保单位(生育保险单位、工伤保险单位、失业保险单位、养老保险单位、医疗保险单位) + for (ICategoryPO po : socialWelfareList) { + headerList.add(po.getInsuranceName() + "单位"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100394, "社保单位合计")); + //住房公积金单位、补充住房公积金单位 + for (ICategoryPO po : fundWelfareList) { + headerList.add(po.getInsuranceName() + "单位"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100395, "公积金单位合计")); + //其他单位(比如企业年金单位) + for (ICategoryPO po : otherWelfareList) { + headerList.add(po.getInsuranceName() + "单位"); + } + headerList.add(SalaryI18nUtil.getI18nLabel(100396, "其他福利单位合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100397, "单位合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100398, "社保合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100399, "公积金合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(100400, "其他福利合计")); + headerList.add(SalaryI18nUtil.getI18nLabel(93278, "合计")); + + List> rows = new ArrayList<>(); + rows.add(headerList); + String sheetName = "福利核算-线下对比导入模板"; + + return ExcelUtil.genWorkbookV2(rows, sheetName); + } + + } diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index 4fac70a4c..72a2e9192 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -503,5 +503,44 @@ public class SIAccountController { } + // **********************************线下对比 start*********************************/ + /** + * 导出“福利核算导入”模板 + */ + @GET + @Path("/comparisonwelfare/importtemplate/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportComparisonWelfareTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam(); +// String welfareNames = request.getParameter("welfareNames"); +// if (StringUtils.isNotBlank(welfareNames)) { +// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList())); +// } + + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getService(user).exportComparisonWelfareTemplate(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; + } + + } + + + // **********************************线下对比 end*********************************/ }