diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..ddbcd048a --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +/weaver-hrm-salary.iml +/out/ +/.idea/ + +HELP.md +target/ + +### IntelliJ IDEA ### +.idea + +/src/test +/src/META-INF + +/log + diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index c58e7521b..55342838a 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -94,7 +94,7 @@ , t.tenant_key - + AND t.bill_month = #{param.billMonth} @@ -103,13 +103,33 @@ AND t.payment_status = #{param.paymentStatus} - - AND t.employee_id IN - - #{employeeId} - + + + + + AND + ( + e.lastname like CONCAT('%',#{param.userName},'%') + ) + + + AND + ( + e.lastname like '%'||#{param.userName}||'%' + ) + + + + + AND + ( + e.lastname like '%'+#{param.userName}+'%' + ) + + + @@ -415,28 +438,28 @@ FROM ( SELECT - e.username AS userName, - e.JOB_NUM AS jobNum, - e.DEPARTMENT AS departmentId, - d.`NAME` AS departmentName, + e.lastname AS userName, + e.jobtitle AS jobNum, + e.departmentid AS departmentId, + d.departmentname AS departmentName, e.`STATUS` AS userStatus, - e.POSITION AS position, + e.jobtitle AS position, h.payment_status AS paymentStatus, - e.HIREDATE AS hiredate, - l.DIMISSION_TIME AS dimissionDate, + e.companystartdate AS hiredate, + l.dismissdate AS dimissionDate, e.ID AS employeeId, e.MOBILE AS telephone FROM hrsa_bill_detail h - LEFT JOIN {$publicdb}.employee e ON e.ID = h.employee_id AND h.delete_type = 0 - LEFT JOIN {$publicdb}.dimission_log l ON e.ID = l.DIMISSION_ID - LEFT JOIN {$publicdb}.department d ON d.ID = e.DEPARTMENT + LEFT JOIN hrmresource e ON e.ID = h.employee_id AND h.delete_type = 0 + LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n + LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.`STATUS` = 'unavailable' AND h.payment_status = 0 + e.`STATUS` = 5 AND h.payment_status = 0 - AND e.username like CONCAT('%',#{userName},'%') + AND e.lastname like CONCAT('%',#{userName},'%') - AND(l.DIMISSION_TIME IS NOT NULL) + AND(l.dismissdate IS NOT NULL) )AS t LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0 LEFT JOIN hrsa_fund_archives fund ON t.employeeId = fund.employee_id AND fund.delete_type = 0 @@ -494,27 +517,27 @@ FROM ( SELECT - e.username AS userName, - e.JOB_NUM AS jobNum, - e.DEPARTMENT AS departmentId, - d.`NAME` AS departmentName, + e.lastname AS userName, + e.jobtitle AS jobNum, + e.departmentid AS departmentId, + d.departmentname AS departmentName, e.`STATUS` AS userStatus, - e.POSITION AS position, - e.HIREDATE AS hiredate, - l.DIMISSION_TIME AS dimissionDate, + e.jobtitle AS position, + e.companystartdate AS hiredate, + l.dismissdate AS dimissionDate, e.ID AS employeeId, e.MOBILE AS telephone FROM - {$publicdb}.employee e - LEFT JOIN {$publicdb}.dimission_log l ON e.ID = l.DIMISSION_ID - LEFT JOIN {$publicdb}.department d ON d.ID = e.DEPARTMENT + hrmresource e + LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n + LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.`STATUS` = 'normal' + e.`STATUS` not in (4,5,6,7) - AND e.username like CONCAT('%',#{userName},'%') + AND e.lastname like CONCAT('%',#{userName},'%') AND( - l.DIMISSION_TIME IS NULL OR l.DIMISSION_TIME = '' + l.dismissdate IS NULL OR l.dismissdate = '' ) )AS t LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0 @@ -584,28 +607,28 @@ FROM ( SELECT - e.username AS userName, - e.JOB_NUM AS jobNum, - e.DEPARTMENT AS departmentId, - d.NAME AS departmentName, - e.STATUS AS userStatus, - e.POSITION AS position, + e.lastname AS userName, + e.jobtitle AS jobNum, + e.departmentid AS departmentId, + d.departmentname AS departmentName, + e.`STATUS` AS userStatus, + e.jobtitle AS position, h.payment_status AS paymentStatus, - e.HIREDATE AS hiredate, - l.DIMISSION_TIME AS dimissionDate, + e.companystartdate AS hiredate, + l.dismissdate AS dimissionDate, e.ID AS employeeId, e.MOBILE AS telephone FROM hrsa_bill_detail h - LEFT JOIN {$publicdb}.employee e ON e.ID = h.employee_id AND h.delete_type = 0 - LEFT JOIN {$publicdb}.dimission_log l ON e.ID = l.DIMISSION_ID - LEFT JOIN {$publicdb}.department d ON d.ID = e.DEPARTMENT + LEFT JOIN hrmresource e ON e.ID = h.employee_id AND h.delete_type = 0 + LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n + LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.STATUS = 'unavailable' AND h.payment_status = 0 + e.STATUS = 5 AND h.payment_status = 0 - AND e.username like '%'||#{userName}||'%' + AND e.lastname like '%'||#{userName}||'%' - AND(l.DIMISSION_TIME IS NOT NULL) + AND(l.dismissdate IS NOT NULL) )AS t LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0 LEFT JOIN hrsa_fund_archives fund ON t.employeeId = fund.employee_id AND fund.delete_type = 0 @@ -663,27 +686,27 @@ FROM ( SELECT - e.username AS userName, - e.JOB_NUM AS jobNum, - e.DEPARTMENT AS departmentId, - d.NAME AS departmentName, - e.STATUS AS userStatus, - e.POSITION AS position, - e.HIREDATE AS hiredate, - l.DIMISSION_TIME AS dimissionDate, + e.lastname AS userName, + e.jobtitle AS jobNum, + e.departmentid AS departmentId, + d.departmentname AS departmentName, + e.`STATUS` AS userStatus, + e.jobtitle AS position, + e.companystartdate AS hiredate, + l.dismissdate AS dimissionDate, e.ID AS employeeId, e.MOBILE AS telephone FROM - {$publicdb}.employee e - LEFT JOIN {$publicdb}.dimission_log l ON e.ID = l.DIMISSION_ID - LEFT JOIN {$publicdb}.department d ON d.ID = e.DEPARTMENT + hrmresource e + LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n + LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.STATUS = 'normal' + e.STATUS not in (4,5,6,7) - AND e.username like '%'||#{userName}||'%' + AND e.lastname like '%'||#{userName}||'%' AND( - l.DIMISSION_TIME IS NULL OR l.DIMISSION_TIME = '' + l.dismissdate IS NULL OR l.dismissdate = '' ) )AS t LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0 @@ -754,28 +777,28 @@ FROM ( SELECT - e.username AS userName, - e.JOB_NUM AS jobNum, - e.DEPARTMENT AS departmentId, - d.NAME AS departmentName, - e.STATUS AS userStatus, - e.POSITION AS position, + e.lastname AS userName, + e.jobtitle AS jobNum, + e.departmentid AS departmentId, + d.departmentname AS departmentName, + e.`STATUS` AS userStatus, + e.jobtitle AS position, h.payment_status AS paymentStatus, - e.HIREDATE AS hiredate, - l.DIMISSION_TIME AS dimissionDate, + e.companystartdate AS hiredate, + l.dismissdate AS dimissionDate, e.ID AS employeeId, e.MOBILE AS telephone FROM hrsa_bill_detail h - LEFT JOIN {$publicdb}.employee e ON e.ID = h.employee_id AND h.delete_type = 0 - LEFT JOIN {$publicdb}.dimission_log l ON e.ID = l.DIMISSION_ID - LEFT JOIN {$publicdb}.department d ON d.ID = e.DEPARTMENT + LEFT JOIN hrmresource e ON e.ID = h.employee_id AND h.delete_type = 0 + LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n + LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.STATUS = 'unavailable' AND h.payment_status = 0 + e.STATUS = '5' AND h.payment_status = 0 - AND e.username like '%'+#{userName}+'%' + AND e.lastname like '%'+#{userName}+'%' - AND(l.DIMISSION_TIME IS NOT NULL) + AND(l.dismissdate IS NOT NULL) )AS t LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0 LEFT JOIN hrsa_fund_archives fund ON t.employeeId = fund.employee_id AND fund.delete_type = 0 @@ -833,27 +856,27 @@ FROM ( SELECT - e.username AS userName, - e.JOB_NUM AS jobNum, - e.DEPARTMENT AS departmentId, - d.NAME AS departmentName, - e.STATUS AS userStatus, - e.POSITION AS position, - e.HIREDATE AS hiredate, - l.DIMISSION_TIME AS dimissionDate, + e.lastname AS userName, + e.jobtitle AS jobNum, + e.departmentid AS departmentId, + d.departmentname AS departmentName, + e.`STATUS` AS userStatus, + e.jobtitle AS position, + e.companystartdate AS hiredate, + l.dismissdate AS dimissionDate, e.ID AS employeeId, e.MOBILE AS telephone FROM - {$publicdb}.employee e - LEFT JOIN {$publicdb}.dimission_log l ON e.ID = l.DIMISSION_ID - LEFT JOIN {$publicdb}.department d ON d.ID = e.DEPARTMENT + hrmresource e + LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n + LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.STATUS = 'normal' + e.STATUS not in (4,5,6,7) - AND e.username like '%'+#{userName}+'%' + AND e.lastname like '%'+#{userName}+'%' AND( - l.DIMISSION_TIME IS NULL OR l.DIMISSION_TIME = '' + l.dismissdate IS NULL OR l.dismissdate = '' ) )AS t LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0 diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index 30f6cc512..310db4225 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -49,10 +49,13 @@ FROM hrsa_fund_archives t WHERE delete_type = 0 - AND employee_id IN - - #{employeeIds} - + + AND employee_id IN + + #{employeeId} + + + @@ -60,10 +63,13 @@ UPDATE hrsa_fund_archives SET delete_type = 1 WHERE delete_type = 0 - AND employee_id IN - - #{employeeIds} - + + AND employee_id IN + + #{employeeId} + + + diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index e30a30ff8..09b1f6fa0 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -45,10 +45,13 @@ FROM hrsa_other_archives t WHERE delete_type = 0 - AND employee_id IN - - #{employeeIds} - + + AND employee_id IN + + #{employeeId} + + + @@ -58,9 +61,12 @@ SET delete_type = 1 WHERE delete_type = 0 AND employee_id IN - - #{employeeIds} - + + + #{employeeId} + + + diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java index ff844327a..2c5d09126 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java @@ -36,7 +36,7 @@ public interface SocialSchemeMapper { void batchSave(@Param("socialSchemePOS") List singletonList); /** - * + * 人员档案信息 * @param param * @return */ @@ -47,4 +47,8 @@ public interface SocialSchemeMapper { * @return */ List tips(); + + + List queryEmployeeList(@Param("param") InsuranceArchivesListParam param); + } diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 82336e375..b745a1bb3 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -47,10 +47,12 @@ FROM hrsa_social_archives t WHERE delete_type = 0 - AND employee_id IN - - #{employeeIds} - + + AND employee_id IN + + #{employeeId} + + @@ -58,10 +60,12 @@ UPDATE hrsa_social_archives SET delete_type = 1 WHERE delete_type = 0 - AND employee_id IN - - #{employeeIds} - + + AND employee_id IN + + #{employeeId} + + @@ -285,4 +289,146 @@ social_start_time is not null and social_end_time is null + + + + + + AND + ( + userName like CONCAT('%',#{param.keyword},'%') + OR jobNum = #{param.keyword} + ) + + + AND userName like CONCAT('%',#{param.userName},'%') + + + AND jobNum = #{param.jobNum} + + + AND departmentId IN + + #{departmentId} + + + + AND userStatus IN + + #{userStatus} + + + + AND position IN + + #{position} + + + + AND hiredate > #{param.hiredateStart} + + + AND hiredate < #{param.hiredateEnd} + + + AND dimissionDate > #{param.dimissionDateStart} + + + AND dimissionDate < #{param.dimissionDateEnd} + + + AND siSchemeId = #{param.siSchemeId} + + + AND fundSchemeId = #{param.fundSchemeId} + + + AND otherSchemeId = #{param.otherSchemeId} + + + AND employeeId IN + + #{item} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index ee144f651..c9aac6447 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -2,7 +2,10 @@ package com.engine.salary.service; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import java.util.List; import java.util.Map; /** @@ -24,4 +27,25 @@ public interface SIArchivesService { Map listPage(InsuranceArchivesListParam insuranceArchivesListParam); Map getSearchCondition(Map stringObjectMap); + + /** + * 根据高级搜索框或者员工id集合导出档案 + * + * @param param 请求报文 + * @return map + */ + XSSFWorkbook export(InsuranceArchivesListParam param); + + + /** + * 获取员工的基本信息 + *

+ * 此处主要是一个公共接口,有多处引用。我们薪资系统只保存员工id(employeeId), + * 但是页面上需要展示员工的更多信息(姓名,部门,状态。。。), + * 所以这里主要是用于接收联表数据的一个接口 + * + * @param param 高级搜索条件,用于过滤数据 + * @return list + */ + List listPageEmployeePOS(InsuranceArchivesListParam param); } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 8300e1258..b63b9ae40 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -11,8 +11,6 @@ import com.engine.salary.biz.SIAccountBiz; import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; import com.engine.salary.entity.siaccount.bo.InsuranceAccountBO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountBatchListDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountTabDTO; @@ -162,6 +160,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List weaTableColumn = getColumnBuildService(user).buildCommonColumnsWithStyle(insuranceAccountDetailPOS, employeeId, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY, false); WeaTable table = new WeaTable(); + table.setPageUID(UUID.randomUUID().toString()); table.setColumns(weaTableColumn); List columns = weaTableColumn.stream().map(v -> new Column(v.getText(), v.getColumn(), v.getColumn())).collect(Collectors.toList()); pageInfos.setColumns(columns); @@ -172,7 +171,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { result.success(); datas.put("pageInfo", pageInfos); - datas.put("dataKey",result.getResultMap()); + //datas.put("dataKey",result.getResultMap()); return datas; } @@ -183,9 +182,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public Map listCommonPageByName(InsuranceAccountDetailParam queryParam) { //增加查询参数userName if (StringUtils.isNotBlank(queryParam.getUserName())) { - List employeeIdsByUserName = MapperProxyFactory.getProxy(EmployMapper.class).getEmployeeIdsByUserName(queryParam.getUserName()); - List employeeIds = employeeIdsByUserName.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); - queryParam.setEmployeeIds(employeeIds); + queryParam.setUserName(queryParam.getUserName()); } return listCommonPage(queryParam); } @@ -215,6 +212,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { SalaryWeaTable table = new SalaryWeaTable<>(user, InsuranceAccountDetailPO.class); table.setColumns(weaTableColumn); + List columns = weaTableColumn.stream().map(v -> new Column(v.getText(), v.getColumn(), v.getColumn())).collect(Collectors.toList()); + pageInfos.setColumns(columns); WeaResultMsg result = new WeaResultMsg(false); @@ -222,7 +221,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { result.success(); datas.put("pageInfo", pageInfos); - datas.put("dataKey",result.getResultMap()); + //datas.put("dataKey",result.getResultMap()); return datas; } @@ -232,9 +231,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public Map supplementaryByNameList(InsuranceAccountDetailParam queryParam) { //增加查询参数userName if (StringUtils.isNotBlank(queryParam.getUserName())) { - List employeeIdsByUserName = MapperProxyFactory.getProxy(EmployMapper.class).getEmployeeIdsByUserName(queryParam.getUserName()); - List employeeIds = employeeIdsByUserName.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); - queryParam.setEmployeeIds(employeeIds); + queryParam.setUserName(queryParam.getUserName()); } return listSupplementaryPage(queryParam); } @@ -570,8 +567,6 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { @Override public PageInfo overView(InsuranceAccountDetailParam queryParam) { PageInfo pageInfos = siAccountBiz.overView(queryParam); - pageInfos.setPageNum(queryParam.getCurrent()); - pageInfos.setPageSize(queryParam.getPageSize()); return pageInfos; } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 6a441c088..99eb40f24 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -1,16 +1,22 @@ package com.engine.salary.service.impl; +import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.core.impl.Service; import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.cmd.siarchives.SIArchivesTipsCmd; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO; import com.engine.salary.enums.sicategory.WelfareTypeEnum; +import com.engine.salary.mapper.siarchives.SocialSchemeMapper; import com.engine.salary.service.SIArchivesService; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelUtil; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.general.Util; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * @Author weaver_cl @@ -20,6 +26,8 @@ import java.util.Map; **/ public class SIArchivesServiceImpl extends Service implements SIArchivesService { + private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); + @Override public Map getTips(Map params) { return commandExecutor.execute(new SIArchivesTipsCmd(params,user)); @@ -70,5 +78,57 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService return apidatas; } + @Override + public XSSFWorkbook export(InsuranceArchivesListParam param) { + InsuranceArchivesListParam request = InsuranceArchivesListParam.builder().build(); + if (param.getHireDate() != null && param.getHireDate().length == 2) { + param.setHiredateStart(param.getHireDate()[0]); + param.setHiredateEnd(param.getHireDate()[1]); + } + if (param.getDimissionDate() != null && param.getDimissionDate().length == 2) { + param.setDimissionDateStart(param.getDimissionDate()[0]); + param.setDimissionDateEnd(param.getDimissionDate()[1]); + } + if (Objects.equals("fromQuickSearch", param.getDataSource())) { + request.setStatuses(param.getStatuses()); + request.setKeyword(param.getUserName()); + } else { + request = param; + } + request.setPageSize(null); + request.setStartNum(null); + List insuranceArchivesEmployeePOS = listPageEmployeePOS(request); + if (insuranceArchivesEmployeePOS == null) { + insuranceArchivesEmployeePOS = new ArrayList<>(); + } + List> records = siArchivesBiz.buildTableData(insuranceArchivesEmployeePOS); + List columns = siArchivesBiz.buildWeaTableColumns(insuranceArchivesEmployeePOS,user.getUID()); + + //工作簿list + List> excelSheetData = new ArrayList<>(); + + //工作簿名称 + String sheetName = SalaryI18nUtil.getI18nLabel(85368, "社保福利档案"); //表头 + //表头 + excelSheetData.add(Collections.singletonList(columns.stream().map(WeaTableColumn::getText).toArray(String[]::new))); + //工作簿数据 + List> rows = new LinkedList<>(); + for (Map recordData : records) { + List row = new LinkedList<>(); + for (WeaTableColumn column : columns) { + row.add(recordData.get(column.getColumn())); + } + rows.add(row); + } + excelSheetData.addAll(rows); + return ExcelUtil.genWorkbookV2(excelSheetData, sheetName); + + } + + @Override + public List listPageEmployeePOS(InsuranceArchivesListParam param) { + return MapperProxyFactory.getProxy(SocialSchemeMapper.class).listPageEmployeePOS(param); + } + } diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 02afe47e4..c2a7fd4a6 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -112,7 +112,7 @@ public class SIExportServiceImpl extends Service implements SIExportService { List> excelSheetData = new ArrayList<>(); //工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(85368, "社保福利档案"); //表头 - excelSheetData.add(Collections.singletonList(columns.stream().map(item -> item.getText()).toArray(String[]::new))); + excelSheetData.add(Collections.singletonList(columns.stream().map(WeaTableColumn::getText).toArray(String[]::new))); //工作簿数据 List> rows = new LinkedList<>(); for (Map recordData : records) { diff --git a/src/com/engine/salary/web/SIExportController.java b/src/com/engine/salary/web/SIExportController.java index 90c11a96e..4eeed12d4 100644 --- a/src/com/engine/salary/web/SIExportController.java +++ b/src/com/engine/salary/web/SIExportController.java @@ -1,6 +1,10 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.biz.SIAccountBiz; +import com.engine.salary.entity.siaccount.param.InspectAccountParam; +import com.engine.salary.entity.siaccount.po.InsuranceAccountInspectPO; +import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siexport.param.InsuranceExportParam; import com.engine.salary.enums.siaccount.PaymentStatusEnum; import com.engine.salary.service.SIAccountService; @@ -23,6 +27,8 @@ import javax.ws.rs.core.StreamingOutput; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.time.LocalDate; +import java.util.List; +import java.util.stream.Collectors; /** * @Author weaver_cl @@ -40,6 +46,56 @@ public class SIExportController { return ServiceUtil.getService(SIExportWrapper.class,user); } + @POST + @Path("/archives/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InsuranceArchivesListParam param) { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getSIExportWrapper(user).export(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(); + } + + @POST + @Path("/archives/exportInspect") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportInspect(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InspectAccountParam param) { + User user = HrmUserVarify.getUser(request, response); + SIAccountBiz siAccountBiz = new SIAccountBiz(); + List insuranceAccountInspectPOS = siAccountBiz.allInspects(param.getIds(), param.getBillMonth()); + InsuranceArchivesListParam req = new InsuranceArchivesListParam(); + req.setEmployeeIds(insuranceAccountInspectPOS.stream().map(InsuranceAccountInspectPO::getEmployeeId).distinct().collect(Collectors.toList())); + XSSFWorkbook workbook = getSIExportWrapper(user).export(req); + 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(); + } + + + @POST @Path("/common/export") diff --git a/src/com/engine/salary/wrapper/SIExportWrapper.java b/src/com/engine/salary/wrapper/SIExportWrapper.java index e808d4baf..f37eb9bf9 100644 --- a/src/com/engine/salary/wrapper/SIExportWrapper.java +++ b/src/com/engine/salary/wrapper/SIExportWrapper.java @@ -2,8 +2,11 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siexport.param.InsuranceExportParam; +import com.engine.salary.service.SIArchivesService; import com.engine.salary.service.SIExportService; +import com.engine.salary.service.impl.SIArchivesServiceImpl; import com.engine.salary.service.impl.SIExportServiceImpl; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; @@ -20,6 +23,10 @@ public class SIExportWrapper extends Service { return ServiceUtil.getService(SIExportServiceImpl.class, user); } + public SIArchivesService getSIArchivesService(User user) { + return ServiceUtil.getService(SIArchivesServiceImpl.class, user); + } + public XSSFWorkbook exportOverView(InsuranceExportParam param) { return getSIExportService(user).exportOverView(param); @@ -28,4 +35,10 @@ public class SIExportWrapper extends Service { public XSSFWorkbook exportAccount(Integer paymentStatus, InsuranceExportParam param) { return getSIExportService(user).exportAccount(paymentStatus,param); } + + public XSSFWorkbook export(InsuranceArchivesListParam param) { + return getSIArchivesService(user).export(param); + } + + }