|
@@ -1,23 +1,48 @@
|
|
|
package cn.ezhizao.project.business.socialSecurity.controller;
|
|
|
|
|
|
+import cn.ezhizao.common.utils.PdfUtil;
|
|
|
import cn.ezhizao.common.utils.SecurityUtils;
|
|
|
import cn.ezhizao.framework.web.controller.BaseController;
|
|
|
import cn.ezhizao.framework.web.domain.AjaxResult;
|
|
|
import cn.ezhizao.framework.web.page.TableDataInfo;
|
|
|
import cn.ezhizao.project.business.company.domain.BizCompany;
|
|
|
import cn.ezhizao.project.business.company.service.IBizCompanyService;
|
|
|
+import cn.ezhizao.project.business.housingFund.domain.BizHousingFundConfirmDetail;
|
|
|
+import cn.ezhizao.project.business.housingFund.domain.BizHousingFundConfirmDetailEmployee;
|
|
|
+import cn.ezhizao.project.business.salary.domain.BizFinancialSalaryDetail;
|
|
|
+import cn.ezhizao.project.business.salary.domain.BizFinancialSalaryDetailEmployee;
|
|
|
import cn.ezhizao.project.business.socialSecurity.domain.*;
|
|
|
import cn.ezhizao.project.business.socialSecurity.service.*;
|
|
|
import cn.ezhizao.project.business.workOrder.domain.BizWorkOrderRecord;
|
|
|
import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderRecordService;
|
|
|
+import cn.hutool.core.io.IoUtil;
|
|
|
+import cn.hutool.poi.excel.ExcelWriter;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import freemarker.template.Template;
|
|
|
+import freemarker.template.TemplateException;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
+import org.apache.poi.ss.usermodel.CellStyle;
|
|
|
+import org.apache.poi.ss.usermodel.Font;
|
|
|
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
|
|
+import org.apache.poi.ss.usermodel.VerticalAlignment;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.StringWriter;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.io.Writer;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -39,6 +64,12 @@ public class SocialSecurityConfirmController extends BaseController {
|
|
|
@Resource
|
|
|
IBizSocialSecurityConfirmDetailEmployeeService socialSecurityConfirmDetailEmployeeService;
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成pdf
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private FreeMarkerConfigurer freeMarkerConfigurer;
|
|
|
+
|
|
|
@Resource
|
|
|
IBizSocialSecurityDeclareService socialSecurityDeclareService;
|
|
|
@Resource
|
|
@@ -317,18 +348,18 @@ public class SocialSecurityConfirmController extends BaseController {
|
|
|
return toAjax(bool);
|
|
|
}
|
|
|
|
|
|
- @PreAuthorize("@ss.hasPermi('business:socialSecurityConfirm:turnBack')")
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:socialSecurityConfirm:verify')")
|
|
|
@PostMapping("/turnBackDetail")
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public AjaxResult turnBackDetail(@RequestBody BizSocialSecurityConfirmDetail detail) {
|
|
|
// 先判断是否社保申报完成,申报完成状态不能进行工资退回
|
|
|
BizSocialSecurityDeclareDetail financialReceiveTicketDetail = socialSecurityDeclareDetailService.query().eq("company_id", detail.getCompanyId()).eq("year", detail.getYear()).eq("month", detail.getMonth()).one();
|
|
|
if (financialReceiveTicketDetail != null && financialReceiveTicketDetail.getStatus() == 3) {
|
|
|
- return error("清先进行社保申报退回操作再进行人员信息退回。");
|
|
|
+ return error("请先进行社保申报退回操作再进行人员信息退回。");
|
|
|
} else {
|
|
|
detail.setStatus(2);
|
|
|
}
|
|
|
- return toAjax(socialSecurityConfirmDetailService.updateById(detail) && addRecord(detail.getSocialSecurityConfirmId(), detail.getYear(), detail.getMonth(), SecurityUtils.getUserId(), "工资退回"));
|
|
|
+ return toAjax(socialSecurityConfirmDetailService.updateById(detail) && addRecord(detail.getSocialSecurityConfirmId(), detail.getYear(), detail.getMonth(), SecurityUtils.getUserId(), "社保人员退回"));
|
|
|
}
|
|
|
|
|
|
private boolean addRecord(Long mainId, String year, String month, Long recorderId, String description) {
|
|
@@ -375,4 +406,135 @@ public class SocialSecurityConfirmController extends BaseController {
|
|
|
bizWorkOrderRecordService.updateById(fromRecord);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @ApiOperation("导出公积金人员信息")
|
|
|
+ @PostMapping("/exportSocialSecurityExcel")
|
|
|
+ public void exportDetailExcel(@RequestParam Long id, HttpServletResponse response) {
|
|
|
+ BizSocialSecurityConfirmDetail socialSecurityConfirm = socialSecurityConfirmDetailService.getById(id);
|
|
|
+ BizCompany company;
|
|
|
+
|
|
|
+ if (null != socialSecurityConfirm) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("socialSecurityConfirmDetailId", socialSecurityConfirm.getId());
|
|
|
+ List<BizSocialSecurityConfirmDetailEmployee> socialSecurityDetailEmployeeList = socialSecurityConfirmDetailEmployeeService.getList(map);
|
|
|
+ socialSecurityConfirm.setDetails(socialSecurityDetailEmployeeList);
|
|
|
+ company = companyService.getById(socialSecurityConfirm.getCompanyId());
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true);
|
|
|
+ writer.merge(0, 0, 0, 4, "公积金人员信息", true);
|
|
|
+ writer.merge(1, 1, 0, 2, company.getName(), false);
|
|
|
+ writer.merge(1, 1, 3, 4, socialSecurityConfirm.getYear() + "年 第" + socialSecurityConfirm.getMonth() + "期", false);
|
|
|
+ writer.writeCellValue(0, 2, "员工名");
|
|
|
+ writer.writeCellValue(1, 2, "电话号码");
|
|
|
+ writer.writeCellValue(2, 2, "基数");
|
|
|
+ writer.writeCellValue(3, 2, "医疗基数");
|
|
|
+ writer.writeCellValue(4, 2, "备注");
|
|
|
+
|
|
|
+ int row = 0;
|
|
|
+ for (int i = 0; i < socialSecurityConfirm.getDetails().size(); i++) {
|
|
|
+ writer.writeCellValue(0, i + 3, socialSecurityConfirm.getDetails().get(i).getEmployeeName());
|
|
|
+ writer.writeCellValue(1, i + 3, socialSecurityConfirm.getDetails().get(i).getPhone());
|
|
|
+ writer.writeCellValue(2, i + 3, socialSecurityConfirm.getDetails().get(i).getCardinalNumber());
|
|
|
+ writer.writeCellValue(3, i + 3, socialSecurityConfirm.getDetails().get(i).getMedicalCardinalNumber());
|
|
|
+ writer.writeCellValue(4, i + 3, socialSecurityConfirm.getDetails().get(i).getRemark());
|
|
|
+
|
|
|
+ row = i + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之
|
|
|
+ writer.setOnlyAlias(true);
|
|
|
+ // 设置列宽行高
|
|
|
+ writer.setDefaultRowHeight(22);
|
|
|
+
|
|
|
+ // 设置所有列宽自适应
|
|
|
+ writer.autoSizeColumnAll();
|
|
|
+ // 设置 列宽
|
|
|
+ writer.setColumnWidth(0, 10);
|
|
|
+ writer.setColumnWidth(1, 15);
|
|
|
+ writer.setColumnWidth(2, 10);
|
|
|
+ writer.setColumnWidth(3, 10);
|
|
|
+ writer.setColumnWidth(4, 10);
|
|
|
+
|
|
|
+ //设置标题单元格 样式
|
|
|
+ Font headFont = writer.createFont();
|
|
|
+ // 设置字体大小,加载到样式中
|
|
|
+ headFont.setFontHeightInPoints((short) 11);
|
|
|
+ headFont.setFontName("楷体_GB2312");
|
|
|
+ headFont.setBold(true);
|
|
|
+ CellStyle headCellStyle = writer.getStyleSet().getHeadCellStyle();
|
|
|
+ headCellStyle.setFont(headFont);
|
|
|
+ headCellStyle.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ headCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
+ //设置普通单元格 样式
|
|
|
+ Font contentFont = writer.createFont();
|
|
|
+ // 设置字体大小,加载到样式中
|
|
|
+ contentFont.setFontHeightInPoints((short) 11);
|
|
|
+ contentFont.setFontName("宋体");
|
|
|
+ CellStyle cellstyle = writer.getStyleSet().getCellStyle();
|
|
|
+ cellstyle.setFont(contentFont);
|
|
|
+ cellstyle.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ cellstyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
+ writer.setRowHeight(1, 22);
|
|
|
+ // headSize 为表格 标题 和 表头所占的 行数
|
|
|
+ int headSize = 3;
|
|
|
+
|
|
|
+ //out为OutputStream,需要写出到的目标流 response为HttpServletResponse对象
|
|
|
+ response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
|
|
+ //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");
|
|
|
+ ServletOutputStream out = null;
|
|
|
+ try {
|
|
|
+ out = response.getOutputStream();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ writer.flush(out, true);
|
|
|
+ // 关闭writer,释放内存
|
|
|
+ writer.close();
|
|
|
+ //此处记得关闭输出Servlet流
|
|
|
+ IoUtil.close(out);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @ApiOperation("打印工资信息")
|
|
|
+ @PostMapping("/SocialSecurityPdf")
|
|
|
+ public void SocialSecurityPdf(@RequestParam Long id, HttpServletResponse response) throws IOException, TemplateException {
|
|
|
+ BizSocialSecurityConfirmDetail socialSecurityConfirm = socialSecurityConfirmDetailService.getById(id);
|
|
|
+ BizCompany company;
|
|
|
+
|
|
|
+ if (null != socialSecurityConfirm) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("socialSecurityConfirmDetailId", socialSecurityConfirm.getId());
|
|
|
+ List<BizSocialSecurityConfirmDetailEmployee> socialSecurityDetailEmployeeList = socialSecurityConfirmDetailEmployeeService.getList(map);
|
|
|
+ socialSecurityConfirm.setDetails(socialSecurityDetailEmployeeList);
|
|
|
+ company = companyService.getById(socialSecurityConfirm.getCompanyId());
|
|
|
+ socialSecurityConfirm.setCompanyName(company.getName());
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ paramMap.put("socialSecurityConfirm" , socialSecurityConfirm);
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
|
|
|
+ Writer out = new StringWriter();
|
|
|
+ //获取模板地址
|
|
|
+ Template template = freeMarkerConfigurer.getConfiguration().getTemplate("socialSecurityTemplate.html");
|
|
|
+ template.process(paramMap, out);
|
|
|
+ out.flush();
|
|
|
+ out.close();
|
|
|
+ String templateContent = out.toString();
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
+ response.setContentType("application/pdf");
|
|
|
+ String fileName ="工资表";
|
|
|
+ response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes(), "iso8859-1"));
|
|
|
+
|
|
|
+ byte[] resources = PdfUtil.html2Pdf(templateContent);
|
|
|
+ ServletOutputStream outputStream = response.getOutputStream();
|
|
|
+ outputStream.write(resources);
|
|
|
+ outputStream.close();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|