weaver-hrm-salary/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java

186 lines
8.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.biz.AddUpDeductionBiz;
import com.engine.salary.biz.EmployBiz;
import com.engine.salary.cmd.datacollection.*;
import com.engine.salary.entity.datacollection.AddUpDeduction;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO;
import com.engine.salary.entity.datacollection.param.AddUpDeductionQueryParam;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.datacollection.AddUpDeductionMapper;
import com.engine.salary.service.AddUpDeductionService;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelComment;
import com.engine.salary.util.excel.ExcelUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.general.Util;
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
public class AddUpDeductionServiceImpl extends Service implements AddUpDeductionService {
private AddUpDeductionMapper getAddUpDeductionMapper() {
return MapperProxyFactory.getProxy(AddUpDeductionMapper.class);
}
@Override
public Map<String, Object> list(Map<String, Object> params) {
return commandExecutor.execute(new AddUpDeductionListCmd(params, user));
}
@Override
public XSSFWorkbook export(Map<String, Object> params) {
AddUpDeductionQueryParam addUpDeductionQueryParam = (AddUpDeductionQueryParam) params.get("addUpDeductionQueryParam");
AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz();
XSSFWorkbook workbook = addUpDeductionBiz.export(addUpDeductionQueryParam);
return workbook;
// return commandExecutor.execute(new AddUpDeductionExportCmd(params, user));
}
@Override
public Map<String, Object> getSearchCondition(Map<String, Object> params) {
return commandExecutor.execute(new AddUpDeductionGetSearchConditionCmd(params, user));
}
@Override
public Map<String, Object> importAddUpDeduction(Map<String, Object> params) {
return commandExecutor.execute(new AddUpDeductionImportCmd(params, user));
}
@Override
public Map<String, Object> getDetailList(Map<String, Object> params) {
return commandExecutor.execute(new AddUpDeductionGetDetailListCmd(params, user));
}
@Override
public Map<String, Object> preview(Map<String, Object> params) {
return commandExecutor.execute(new AddUpDeductionPreviewCmd(params, user));
}
@Override
public XSSFWorkbook exportDetail(Map<String, Object> params) {
AddUpDeductionQueryParam queryParam = (AddUpDeductionQueryParam) params.get("addUpDeductionQueryParam");
EmployBiz employBiz = new EmployBiz();
AddUpDeductionBiz biz = new AddUpDeductionBiz();
Long id = queryParam.getAccumulatedSpecialAdditionalDeductionId();
if (id == null) {
throw new SalaryRunTimeException("id不能为空");
}
AddUpDeduction po = biz.getById(id);
if (po == null) {
throw new SalaryRunTimeException(String.format("累计专项附加扣除不存在"+"[id:%s]", id));
}
List<DataCollectionEmployee> employeeList = employBiz.getEmployeeByIds(Collections.singletonList(po.getEmployeeId()));
if (CollectionUtils.isEmpty(employeeList)) {
throw new SalaryRunTimeException("员工信息不存在");
}
//查询参数
queryParam.setEmployeeId(po.getEmployeeId());
//申报月份
List<String> declareMonth = queryParam.getDeclareMonth();
if (CollectionUtils.isNotEmpty(declareMonth)) {
queryParam.setDeclareMonth(declareMonth.stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList()));
}
XSSFWorkbook workbook = biz.exportDetail(queryParam);
return workbook;
// return commandExecutor.execute(new AddUpDeductionExportDetailCmd(params, user));
}
@Override
public List<AddUpDeduction> getAddUpDeductionList(YearMonth declareMonth, List<Long> employeeIds) {
AddUpDeductionBiz addUpDeductionBiz = new AddUpDeductionBiz();
if (declareMonth == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100342, "参数有误申报月份、租户key必传"));
}
return addUpDeductionBiz.listSome(AddUpDeduction.builder().declareMonth(SalaryDateUtil.toDateStartOfMonth(declareMonth)).employeeIds(employeeIds).build());
}
@Override
public XSSFWorkbook downloadTemplate(AddUpDeductionQueryParam queryParam) {
String sheetName = SalaryI18nUtil.getI18nLabel(101603, "累计专项附加扣除导入模板");
String[] header = {
SalaryI18nUtil.getI18nLabel(85429, "姓名"),
SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"),
SalaryI18nUtil.getI18nLabel(86185, "部门"),
SalaryI18nUtil.getI18nLabel(86186, "手机号"),
SalaryI18nUtil.getI18nLabel(86317, "工号"),
SalaryI18nUtil.getI18nLabel(86318, "证件号码"),
SalaryI18nUtil.getI18nLabel(86319, "入职日期"),
SalaryI18nUtil.getI18nLabel(86321, "累计子女教育"),
SalaryI18nUtil.getI18nLabel(86323, "累计继续教育"),
SalaryI18nUtil.getI18nLabel(86324, "累计住房贷款利息"),
SalaryI18nUtil.getI18nLabel(86325, "累计住房租金"),
SalaryI18nUtil.getI18nLabel(86326, "累计赡养老人"),
SalaryI18nUtil.getI18nLabel(105142, "累计大病医疗"),
SalaryI18nUtil.getI18nLabel(105142, "累计婴幼儿照护")
};
List<Object> headerList = Arrays.asList(header);
// 2.表头
if (queryParam.getDeclareMonth() != null) {
queryParam.setDeclareMonth(queryParam.getDeclareMonth().stream().map(e -> e + "-01 00:00:00").collect(Collectors.toList()));
}
// 获取累计专项附加扣除
List<AddUpDeductionDTO> list = getAddUpDeductionMapper().list(queryParam);
// 人员信息赋值
list.forEach(m -> {
// todo 身份证号
m.setIdNo("");
});
List<List<Object>> rows = new ArrayList<>();
rows.add(headerList);
for (AddUpDeductionDTO dto : list) {
List<Object> row = new ArrayList<>();
row.add(Util.null2String(dto.getUsername()));
row.add(Util.null2String(dto.getTaxAgentName()));
row.add(Util.null2String(dto.getDepartmentName()));
row.add(Util.null2String(dto.getMobile()));
row.add(Util.null2String(dto.getJobNum()));
row.add(Util.null2String(dto.getIdNo()));
row.add(Util.null2String(dto.getHiredate()));
row.add(Util.null2String(dto.getAddUpChildEducation()));
row.add(Util.null2String(dto.getAddUpContinuingEducation()));
row.add(Util.null2String(dto.getAddUpHousingLoanInterest()));
row.add(Util.null2String(dto.getAddUpHousingRent()));
row.add(Util.null2String(dto.getAddUpSupportElderly()));
row.add(Util.null2String(dto.getAddUpIllnessMedical()));
row.add(Util.null2String(dto.getAddUpInfantCare()));
rows.add(row);
}
// 4.注释
List<ExcelComment> excelComments = Lists.newArrayList();
excelComments.add(new ExcelComment(0, 0, 3, 2, SalaryI18nUtil.getI18nLabel(100344, "必填")));
excelComments.add(new ExcelComment(1, 0, 4, 2, SalaryI18nUtil.getI18nLabel(100344, "必填")));
excelComments.add(new ExcelComment(7, 0, 10, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
excelComments.add(new ExcelComment(8, 0, 11, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
excelComments.add(new ExcelComment(9, 0, 12, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
excelComments.add(new ExcelComment(10, 0, 13, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
excelComments.add(new ExcelComment(11, 0, 14, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
excelComments.add(new ExcelComment(12, 0, 15, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
excelComments.add(new ExcelComment(13, 0, 16, 2, SalaryI18nUtil.getI18nLabel(100344, "输入数字")));
XSSFWorkbook book = ExcelUtil.genWorkbookV2(rows, sheetName, excelComments);
return book;
}
}