工资单及福利问题修复

This commit is contained in:
MustangDeng 2022-06-01 19:13:20 +08:00
parent 4430d50492
commit da2a0e5d22
3 changed files with 117 additions and 42 deletions

View File

@ -5,7 +5,8 @@
<select id="listEmployee" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.ID as employeeId,
e.LASTNAME as username,
d.DEPARTMENTNAME as departmentName
d.DEPARTMENTNAME as departmentName,
e.STATUS as status
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
where e.status not in (7)

View File

@ -30,6 +30,7 @@ import com.engine.salary.entity.sischeme.param.SISchemaImportParam;
import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO;
import com.engine.salary.entity.sischeme.po.InsuranceSchemePO;
import com.engine.salary.entity.taxrate.TaxAgent;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.datacollection.AttendQuoteSourceTypeEnum;
import com.engine.salary.enums.sicategory.*;
import com.engine.salary.exception.SalaryRunTimeException;
@ -602,9 +603,10 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
cellData.put("index", j);
singleAccount.add(cellData);
}
isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap,
paymentNameIdMap,
creator);
creator, i + 1);
if (isError) {
errorCount += 1;
// 添加错误数据
@ -650,30 +652,41 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
return getICategoryMapper().listAll().stream().collect(Collectors.toMap(ICategoryPO::getId, ICategoryPO::getInsuranceName));
}
private String userStateExchange(String userState) {
UserStatusEnum[] values = UserStatusEnum.values();
for (UserStatusEnum value : values) {
if(value.getDescription().equals(userState)) {
return value.getValue() + "";
}
}
return userState;
}
public boolean singleAccountCheck(List<Map<String, Object>> singleAccount, Map<Long, String> welfareMap, List<InsuranceArchivesAccountPO> insuranceArchivesAccountPOS,
List<DataCollectionEmployee> employeeByIds,
List<Map<String, String>> excelComments, int i, Map<String, Long> schemeNameIdMap, Map<String, Long> paymentNameIdMap, Long creator
List<Map<String, String>> excelComments, int i, Map<String, Long> schemeNameIdMap, Map<String, Long> paymentNameIdMap, Long creator, int index
) {
boolean isError = false;
String userName = (String) singleAccount.get(0).get(SalaryI18nUtil.getI18nLabel(85429, "姓名"));
String deparmentName = (String) singleAccount.get(1).get(SalaryI18nUtil.getI18nLabel(86185, "部门"));
String telephone = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "手机号"));
String userStatus = (String) singleAccount.get(3).get(SalaryI18nUtil.getI18nLabel(86187, "员工状态"));
String rowIndex = "" + index + "";
if (StringUtils.isBlank(userName) && StringUtils.isBlank(deparmentName) && StringUtils.isBlank(telephone) && StringUtils.isBlank(userStatus)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100303, "不能同时为空"));
errorMessageMap.put("message", rowIndex + " 用户名、部门名称、手机号、用户状态" +SalaryI18nUtil.getI18nLabel(100303, "不能同时为空"));
excelComments.add(errorMessageMap);
isError = true;
}
String exchangeUserStatus = userStateExchange(userStatus);
List<Long> employees = employeeByIds.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName))
&& (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName))
&& (StringUtils.isBlank(telephone) || Objects.equals(e.getMobile(), telephone))
&& (StringUtils.isBlank(userStatus) || e.getStatus() == null || Objects.equals(e.getStatus(), userStatus))).map(DataCollectionEmployee::getEmployeeId)
&& (StringUtils.isBlank(exchangeUserStatus) || e.getStatus() == null || Objects.equals(e.getStatus(), exchangeUserStatus))).map(DataCollectionEmployee::getEmployeeId)
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(employees) || employees.size() > 1) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100304, "员工信息不存在或者存在多个员工"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100304, "员工信息不存在或者存在多个员工"));
excelComments.add(errorMessageMap);
isError = true;
}
@ -698,56 +711,81 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
(String) fundMap.get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")))
&& StringUtils.isBlank((String) otherMap.get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")))) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100312, "社保,公积金,其他福利方案名称不可同时为空"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "社保,公积金,其他福利方案名称不可同时为空"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) socialStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月"))) && !SalaryDateUtil.checkYearMonth(
(String) socialStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")))) {
String socialStartMonth = (String) socialStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月"));
if(StringUtils.isNotBlank(socialStartMonth) && socialStartMonth.length() > 7) {
socialStartMonth = socialStartMonth.substring(0, 7);
}
if (StringUtils.isNotBlank(socialStartMonth) && !SalaryDateUtil.checkYearMonth(socialStartMonth)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100315, "社保起始缴纳时间格式错误,正确格式为YYYY-MM"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100315, "社保起始缴纳时间格式错误,正确格式为YYYY-MM"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) socialEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月"))) && !SalaryDateUtil.checkYearMonth(
(String) socialEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")))) {
String socialEndMonth = (String) socialEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月"));
if(StringUtils.isNotBlank(socialEndMonth) && socialEndMonth.length() > 7) {
socialEndMonth = socialEndMonth.substring(0, 7);
}
if (StringUtils.isNotBlank(socialEndMonth) && !SalaryDateUtil.checkYearMonth(socialEndMonth)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100316, "社保最后缴纳时间格式错误,正确格式为YYYY-MM"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100316, "社保最后缴纳时间格式错误,正确格式为YYYY-MM"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) fundStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月"))) && !SalaryDateUtil.checkYearMonth(
(String) fundStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月")))) {
String fundStartMonth = (String) fundStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月"));
if(StringUtils.isNotBlank(fundStartMonth) && socialEndMonth.length() > 7) {
fundStartMonth = fundStartMonth.substring(0, 7);
}
if (StringUtils.isNotBlank(fundStartMonth) && !SalaryDateUtil.checkYearMonth(fundStartMonth)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100317, "公积金起始缴纳时间格式错误,正确格式为YYYY-MM"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100317, "公积金起始缴纳时间格式错误,正确格式为YYYY-MM"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) fundEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月"))) && !SalaryDateUtil.checkYearMonth(
(String) fundEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")))) {
String fundEndMonth = (String) fundEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月"));
if(StringUtils.isNotBlank(fundEndMonth) && fundEndMonth.length() > 7) {
fundEndMonth = fundEndMonth.substring(0, 7);
}
if (StringUtils.isNotBlank(fundEndMonth) && !SalaryDateUtil.checkYearMonth(fundEndMonth)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100319, "公积金最后缴纳时间格式错误,正确格式为YYYY-MM"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100319, "公积金最后缴纳时间格式错误,正确格式为YYYY-MM"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) otherStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月"))) && !SalaryDateUtil.checkYearMonth(
(String) otherStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")))) {
String otherStartMonth = (String) otherStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月"));
if(StringUtils.isNotBlank(otherStartMonth) && otherStartMonth.length() > 7) {
otherStartMonth = otherStartMonth.substring(0, 7);
}
if (StringUtils.isNotBlank(otherStartMonth) && !SalaryDateUtil.checkYearMonth(otherStartMonth)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100320, "其他福利起始缴纳时间格式错误,正确格式为YYYY-MM"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100320, "其他福利起始缴纳时间格式错误,正确格式为YYYY-MM"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) otherEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月"))) && !SalaryDateUtil.checkYearMonth(
(String) otherEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")))) {
String otherEndMonth = (String) otherEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月"));
if(StringUtils.isNotBlank(otherEndMonth) && otherEndMonth.length() > 7) {
otherEndMonth = otherEndMonth.substring(0, 7);
}
if (StringUtils.isNotBlank(otherEndMonth) && !SalaryDateUtil.checkYearMonth(otherEndMonth)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100321, "其他福利最后缴纳时间格式错误,正确格式为YYYY-MM"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100321, "其他福利最后缴纳时间格式错误,正确格式为YYYY-MM"));
excelComments.add(errorMessageMap);
isError = true;
}
if (StringUtils.isNotBlank((String) socialMap.get(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")))
&& schemeNameIdMap.get((String) socialMap.get(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"))) == null) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100322, "社保方案不存在"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100322,
"社保方案不存在"));
excelComments.add(errorMessageMap);
isError = true;
} else {
@ -756,7 +794,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
if (StringUtils.isNotBlank((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")))
&& schemeNameIdMap.get((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"))) == null) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100323, "公积金方案不存在"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100323, "公积金方案不存在"));
excelComments.add(errorMessageMap);
isError = true;
} else {
@ -765,7 +803,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
if (StringUtils.isNotBlank((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")))
&& schemeNameIdMap.get((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))) == null) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100324, "其他福利方案不存在"));
errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100324, "其他福利方案不存在"));
excelComments.add(errorMessageMap);
isError = true;
} else {
@ -804,10 +842,18 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
insuranceArchivesSocialSchemePO.setSocialSchemeId(schemeNameIdMap.get(
(String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel( 91323, "社保方案名称")).get(
SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"))));
insuranceArchivesSocialSchemePO.setSocialStartTime((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")));
insuranceArchivesSocialSchemePO.setSocialEndTime((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")));
String socialStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月"));
if(StringUtils.isNotBlank(socialStartDate) && socialStartDate.length() > 7) {
socialStartDate = socialStartDate.substring(0, 7);
}
insuranceArchivesSocialSchemePO.setSocialStartTime(socialStartDate);
String socialEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月"));
if(StringUtils.isNotBlank(socialEndDate) && socialEndDate.length() > 7) {
socialEndDate = socialEndDate.substring(0, 7);
}
insuranceArchivesSocialSchemePO.setSocialEndTime(socialEndDate);
insuranceArchivesSocialSchemePO.setTenantKey("");
insuranceArchivesSocialSchemePO.setWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue());
insuranceArchivesSocialSchemePO.setUpdateTime(new Date());
@ -861,10 +907,19 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
SalaryI18nUtil.getI18nLabel(91486, "公积金账号")));
insuranceArchivesFundSchemePO.setSupplementFundAccount((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")).get(
SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")));
insuranceArchivesFundSchemePO.setFundStartTime((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月")).get(
SalaryI18nUtil.getI18nLabel( 91483, "公积金起始缴纳月")));
insuranceArchivesFundSchemePO.setFundEndTime((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")));
String fundStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月")).get(
SalaryI18nUtil.getI18nLabel( 91483, "公积金起始缴纳月"));
if(StringUtils.isNotBlank(fundStartDate) && fundStartDate.length() > 7) {
fundStartDate = fundStartDate.substring(0, 7);
}
insuranceArchivesFundSchemePO.setFundStartTime(fundStartDate);
String fundEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月"));
if(StringUtils.isNotBlank(fundEndDate) && fundEndDate.length() > 7) {
fundEndDate = fundEndDate.substring(0, 7);
}
insuranceArchivesFundSchemePO.setFundEndTime(fundEndDate);
insuranceArchivesFundSchemePO.setWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue());
insuranceArchivesFundSchemePO.setPaymentOrganization(paymentNameIdMap.get(
(String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91488, "公积金缴纳组织")).get(
@ -909,10 +964,18 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
insuranceArchivesOtherSchemePO.setOtherSchemeId(
schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")).get(
SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))));
insuranceArchivesOtherSchemePO.setOtherStartTime((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")));
insuranceArchivesOtherSchemePO.setOtherEndTime((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")));
String otherStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月"));
if(StringUtils.isNotBlank(otherStartDate) && otherStartDate.length() > 7) {
otherStartDate = otherStartDate.substring(0, 7);
}
insuranceArchivesOtherSchemePO.setOtherStartTime(otherStartDate);
String otherEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")).get(
SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月"));
if(StringUtils.isNotBlank(otherEndDate) && otherEndDate.length() > 7) {
otherEndDate = otherEndDate.substring(0, 7);
}
insuranceArchivesOtherSchemePO.setOtherEndTime(otherEndDate);
insuranceArchivesOtherSchemePO.setPaymentOrganization(paymentNameIdMap.get(
(String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91497, "其他福利缴纳组织")).get(
SalaryI18nUtil.getI18nLabel(91497, "其他福利缴纳组织"))));

View File

@ -13,6 +13,7 @@ import com.engine.salary.wrapper.SalarySendWrapper;
import com.engine.salary.wrapper.SalaryTemplateWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
@ -30,6 +31,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description: 工资单
@ -383,12 +385,21 @@ public class SalaryBillController {
*
* @return
*/
@POST
@GET
@Path("/send/exportDetailList")
@Produces(MediaType.APPLICATION_JSON)
public Response exportDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySendDetailQueryParam queryParam) {
public Response exportDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
SalarySendDetailQueryParam queryParam = new SalarySendDetailQueryParam();
String salarySendId = request.getParameter("salarySendId");
String ids = request.getParameter("ids");
if(StringUtils.isNotBlank(ids)) {
queryParam.setIds(Arrays.asList(ids.split(",")).stream().map(Long::new).collect(Collectors.toList()));
}
if(StringUtils.isNotBlank(salarySendId)) {
queryParam.setSalarySendId(Long.parseLong(salarySendId));
}
XSSFWorkbook workbook = getSalarySendWrapper(user).exportDetailList(queryParam);
String fileName = "工资单发放详情列表";