Compare commits

...

19 Commits

Author SHA1 Message Date
钱涛 1a0df26e0b 汇通版本 2025-12-02 10:43:23 +08:00
钱涛 12c5e8b3b9 Merge branch 'release/2.19.1.2501.01' into custom/汇通建设集团
# Conflicts:
#	src/com/engine/salary/service/SIAccountService.java
#	src/com/engine/salary/service/SalaryAcctRecordService.java
#	src/com/engine/salary/service/impl/SIAccountServiceImpl.java
#	src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
#	src/com/engine/salary/web/SalaryAcctController.java
#	src/com/engine/salary/web/SalaryBillController.java
#	src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java
#	src/com/engine/salary/wrapper/SalarySendWrapper.java
2025-12-02 10:39:21 +08:00
钱涛 cb423962a2 报表穿透,按照薪资所属月排序 2025-12-02 10:22:14 +08:00
钱涛 00fc87ffd8 修复生成年终奖申报表null 2025-11-28 15:41:42 +08:00
钱涛 85e0b85871 批量操作 2025-11-24 17:20:11 +08:00
钱涛 6a061592e5 处理pg脚本 2025-11-13 11:37:46 +08:00
钱涛 e6a474261c 补缴信息提示优化 2025-11-06 11:27:41 +08:00
钱涛 3dd8db37dc 账套sql类型的人员范围接入状态 2025-11-03 13:35:06 +08:00
钱涛 b4994dab3f 常用sql 2025-10-29 15:46:24 +08:00
钱涛 f1bd47f8b7 修复核算多条件问题 2025-10-27 11:22:51 +08:00
钱涛 953a590cca 常用sql 2025-10-21 16:55:42 +08:00
钱涛 014cdd7618 增加有序map 2025-10-17 17:29:31 +08:00
钱涛 e3d6cbe5a1 批量锁定人员列 2025-09-30 16:40:20 +08:00
钱涛 fbce286c17 修复字段管理分权问题 2025-09-18 16:31:58 +08:00
钱涛 1ae436e91a 修复社保批量核算 2025-09-16 10:07:16 +08:00
钱涛 f224916aac 社保台账:
1、批量新建核算记录并核算。
2、批量归档
3、批量重新核算
薪资核算:
1、批量新建核算记录并核算。
2、批量归档
3、批量重新核算
工资单:
1、批量发放
2、批量撤回
申报表:
1、批量申报
2025-09-16 10:07:16 +08:00
钱涛 2767114bfb 社保台账:
1、批量新建核算记录并核算。
2、批量归档
3、批量重新核算
薪资核算:
1、批量新建核算记录并核算。
2、批量归档
3、批量重新核算
工资单:
1、批量发放
2、批量撤回
申报表:
1、批量申报
2025-09-16 10:07:15 +08:00
Harryxzy 0762fbee4d 社保StringUtils修改为lang3包中 2025-09-12 15:59:40 +08:00
Harryxzy 24676fe027 考勤引用多语言修复 2025-09-10 11:45:43 +08:00
21 changed files with 122 additions and 73 deletions

View File

@ -1,5 +1,5 @@
log=false
defaultCloseNonStandard149=true
AESEncryptScrect=990EB004A1C862721C1513AE90038C9E
version=2.19.1.2501.01
version=2.19.1.2501.01.s
openFormulaForcedEditing=false

View File

@ -1,41 +1,42 @@
CREATE TABLE hrsa_hrm_snapshot (
ID bigint(0) NOT NULL,
CREATE TABLE hrsa_hrm_snapshot
(
ID bigint NOT NULL,
snapshot_time timestamp,
employee_id bigint(0),
employee_id bigint,
loginid varchar(100),
LASTNAME varchar(60),
SEX char(1),
BIRTHDAY char(10) ,
NATIONALITY int(0) ,
NATIONALITY int ,
MARITALSTATUS char(1) ,
TELEPHONE varchar(60),
MOBILE varchar(60) ,
MOBILECALL varchar(60) ,
EMAIL varchar(60),
LOCATIONID int(0),
LOCATIONID int,
WORKROOM varchar(60),
HOMEADDRESS varchar(100),
RESOURCETYPE char(1) ,
STARTDATE char(10) ,
ENDDATE char(10),
JOBTITLE int(0) ,
JOBTITLE int ,
JOBTITLENAME varchar(200) ,
JOBACTIVITYDESC varchar(200),
JOBLEVEL int(0) ,
SECLEVEL int(0) ,
DEPARTMENTID int(0) ,
JOBLEVEL int ,
SECLEVEL int ,
DEPARTMENTID int ,
DEPARTMENTNAME varchar(200) ,
SUBCOMPANYID1 int(0) ,
SUBCOMPANYID1 int ,
SUBCOMPANYNAME varchar(200) ,
COSTCENTERID int(0) ,
MANAGERID int(0) ,
ASSISTANTID int(0),
BANKID1 int(0) ,
COSTCENTERID int ,
MANAGERID int ,
ASSISTANTID int,
BANKID1 int ,
ACCOUNTID1 varchar(100) ,
LASTLOGINDATE char(10) ,
CERTIFICATENUM varchar(60) ,
NATIVEPLACE varchar(100) ,
EDUCATIONLEVEL int(0) ,
EDUCATIONLEVEL int ,
BEMEMBERDATE char(10) ,
BEPARTYDATE char(10) ,
WORKCODE varchar(60) ,
@ -44,8 +45,8 @@ CREATE TABLE hrsa_hrm_snapshot (
RESIDENTPLACE varchar(200) ,
POLICY varchar(30) ,
DEGREE varchar(30) ,
USEKIND int(0) ,
JOBCALL int(0) ,
USEKIND int ,
JOBCALL int ,
jobcallname varchar(200) ,
ACCUMFUNDACCOUNT varchar(30),
BIRTHPLACE varchar(60) ,
@ -54,14 +55,14 @@ CREATE TABLE hrsa_hrm_snapshot (
RESIDENTPOSTCODE varchar(60) ,
EXTPHONE varchar(50) ,
MANAGERSTR varchar(500),
STATUS int(0) ,
STATUS int ,
FAX varchar(60) ,
ISLABOUUNION char(1),
TEMPRESIDENTNUMBER varchar(60),
PROBATIONENDDATE char(10),
COUNTRYID int(0) ,
ACCOUNTTYPE int(0) ,
BELONGTO int(0) ,
COUNTRYID int ,
ACCOUNTTYPE int ,
BELONGTO int ,
ACCOUNTNAME varchar(200) ,
companystartdate varchar(10),
workstartdate varchar(10) ,

View File

@ -6,5 +6,5 @@ and employee_id not in
where tax_agent_id =id and delete_type = 0)
update hrsa_tax_agent_emp set delete_type = 3
update hrsa_tax_agent_emp set delete_type = 3 where delete_type = 0
where tax_agent_id=id and delete_type = 0 and employee_id not in (select employee_id from hrsa_salary_archive where tax_agent_id =id and delete_type = 0)

View File

@ -18,7 +18,8 @@ update hrsa_salary_archive set delete_type=3 where tax_agent_id=扣缴义务人
二、删除停薪员工档案
update hrsa_salary_archive set delete_type=3 where run_status in ('STOP_FROM_PENDING','STOP_FROM_SUSPEND')
update hrsa_salary_archive set delete_type=3 where delete_type=0 and run_status in ('STOP_FROM_PENDING','STOP_FROM_SUSPEND')
update hrsa_salary_archive_item set delete_type=3 where delete_type=0
二、删除停薪员工社保档案
update hrsa_insurance_base_info set delete_type=3 where run_status in ('4','5')
@ -28,10 +29,10 @@ update hrsa_insurance_base_info set delete_type=3 where run_status in ('4','5')
--删除社保福利档案
update hrsa_insurance_base_info set delete_type=3 WHERE employee_id = ? and payment_organization =?
update hrsa_social_archives set delete_type=3 WHERE employee_id = ? and payment_organization =?
update hrsa_fund_archives set delete_type=3 WHERE employee_id = ? and payment_organization =?
update hrsa_other_archives set delete_type=3 WHERE employee_id = ? and payment_organization =?
update hrsa_insurance_base_info set delete_type=3 WHERE delete_type=0 and employee_id = ? and payment_organization =?
update hrsa_social_archives set delete_type=3 WHERE delete_type=0 and employee_id = ? and payment_organization =?
update hrsa_fund_archives set delete_type=3 WHERE delete_type=0 and employee_id = ? and payment_organization =?
update hrsa_other_archives set delete_type=3 WHERE delete_type=0 and employee_id = ? and payment_organization =?
-- 删除薪资档案
update hrsa_salary_archive set delete_type=3 where employee_id = ? and tax_agent_id=?
@ -45,4 +46,13 @@ update hrsa_other_archives set delete_type=3;
update hrsa_tax_agent_emp set delete_type=3;
-- 删除核算记录
update hrsa_salary_acct_record set delete_type=3 where delete_type=0 and id= 核算记录id;
update hrsa_salary_acct_emp set delete_type=3 where delete_type=0 and salary_acct_record_id=核算记录id;
update hrsa_salary_acct_result set delete_type=3 where delete_type=0 and salary_acct_record_id = 核算记录id;
--删除工资单信息
update hrsa_salary_send set delete_type=3 where delete_type=0 and salary_accounting_id = 核算记录id;
update hrsa_salary_send_info set delete_type=3 where delete_type=0 and salary_acct_record_id = 核算记录id;

View File

@ -722,6 +722,7 @@ public class TaxDeclarationBO {
private static String findStringValue(String fieldCode, Map<Long, List<SalaryAcctResultPO>> resultMap, Map<String, Long> salaryItemMap) {
return resultMap.getOrDefault(salaryItemMap.getOrDefault(fieldCode, 0L), Collections.emptyList()).stream()
.map(SalaryAcctResultPO::getResultValue)
.filter(Objects::nonNull)
.findFirst().orElse("");
}

View File

@ -530,7 +530,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
throw new SalaryRunTimeException("该维度值中无数据!");
}
// 同一个人放在一起
listByDimensionValue = listByDimensionValue.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getEmployeeId)).collect(Collectors.toList());
listByDimensionValue = listByDimensionValue.stream().sorted((a,b)-> b.getSalaryMonth().compareTo(a.getSalaryMonth())).collect(Collectors.toList());
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), listByDimensionValue);
// 获取此分页的核算人员

View File

@ -275,7 +275,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
.collect(Collectors.toList());
effectiveFields.forEach(attendQuoteField -> {
header.add(attendQuoteField.getFieldName());
header.add(Util.formatMultiLang(attendQuoteField.getFieldName(), String.valueOf(user.getLanguage())));
}
);
}
@ -606,7 +606,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
header.add(SalaryI18nUtil.getI18nLabel(86317, "证件号码"));
// 动态列
for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) {
header.add(attendQuoteField.getFieldName());
header.add(Util.formatMultiLang(attendQuoteField.getFieldName(), String.valueOf(user.getLanguage())));
}
List<List<Object>> rows = new ArrayList<>();
rows.add(header);

View File

@ -27,6 +27,7 @@ import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.*;
@ -292,7 +293,7 @@ public class AttendQuoteFieldServiceImpl extends Service implements AttendQuoteF
Map<String, String> column = columnsOptional.get();
updates.add(AttendQuoteFieldPO.builder()
.code(column.get("code"))
.fieldName(column.get("name"))
.fieldName(Util.formatMultiLang(column.get("name"), String.valueOf(user.getLanguage())))
.updateTime(now)
.build());
}
@ -312,7 +313,7 @@ public class AttendQuoteFieldServiceImpl extends Service implements AttendQuoteF
Optional<Map<String, String>> columnsOptional = columns.stream().filter(column -> code.equals(column.get("code"))).findFirst();
if (columnsOptional.isPresent()) {
Map<String, String> column = columnsOptional.get();
saves.add(buildAttendQuoteField(column.get("code"), column.get("name")));
saves.add(buildAttendQuoteField(column.get("code"), Util.formatMultiLang(column.get("name"), String.valueOf(user.getLanguage()))));
}
}
if (CollectionUtils.isNotEmpty(saves)) {

View File

@ -34,6 +34,7 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.general.Util;
import weaver.hrm.User;
import java.lang.reflect.Field;
@ -476,7 +477,7 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic
List<FormulaVar> formulaVars = fields.stream().map(e -> {
FormulaVar formulaVar = new FormulaVar();
formulaVar.setFieldId(referenceEnum.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + e.getId());
formulaVar.setName(e.getFieldName());
formulaVar.setName(Util.formatMultiLang(e.getFieldName(), String.valueOf(user.getLanguage())));
formulaVar.setSource("" + referenceEnum.getValue());
formulaVar.setFieldType(DataType.NUMBER);
return formulaVar;

View File

@ -2529,7 +2529,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
// Long taxAgentId = 0L;
List<InsuranceAccountDetailPO> list = new ArrayList<>();
String username = (String) map.getOrDefault("姓名", "");
String billMonth = (String) map.getOrDefault("账单月份", "");
String taxAgentName = (String) map.getOrDefault("个税扣缴义务人", "");
String supplementaryMonth = (String) map.getOrDefault("补缴月份", "");
@ -2633,11 +2633,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
//校验补缴人员是否存在福利档案基础信息并且runStatus处于正在缴纳或者待减员
InsuranceArchivesBaseInfoPO insuranceBaseInfo = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(paymentOrganization, employeeId);
if (insuranceBaseInfo == null || !(insuranceBaseInfo.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue()) || insuranceBaseInfo.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue())) ) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "补缴人员中存在未设置福利档案人员或相关人员不在福利在缴人员中,不可新建补缴信息!"));
throw new SalaryRunTimeException(username + SalaryI18nUtil.getI18nLabel(0, "补缴未设置福利档案人员或不在福利在缴人员中,不可新建补缴信息!"));
}
List<Long> empIdsInPayMonthRange = listCanPayEmpIds(paymentOrganization, billMonth.substring(0, 7));
if (!empIdsInPayMonthRange.contains(employeeId)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99920, "无核算人员"));
throw new SalaryRunTimeException(username + SalaryI18nUtil.getI18nLabel(99920, "无核算人员"));
}
DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(employeeId);
// 封装InsuranceAccountDetailPO

View File

@ -1,7 +1,6 @@
package com.engine.salary.service.impl;
import com.alibaba.fastjson.JSON;
import com.alipay.oceanbase.jdbc.StringUtils;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil;
@ -41,6 +40,7 @@ import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.Column;
import com.google.common.collect.Lists;
import com.engine.salary.util.db.IdGenerator;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import weaver.hrm.User;

View File

@ -11,6 +11,7 @@ import com.engine.salary.entity.salaryBill.po.SalarySendPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;

View File

@ -1,5 +1,6 @@
package com.engine.salary.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.hrmelog.entity.dto.LoggerContext;
@ -333,14 +334,25 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
if (CollectionUtils.isNotEmpty(otherConditions)) {
List<Long> items = SalaryEntityUtil.properties(otherConditions, SalaryAcctResultQueryParam.OtherCondition::getItemId, Collectors.toList());
List<SalaryAcctResultPO> list = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), items);
for (int i = 0; i < otherConditions.size(); i++) {
SalaryAcctResultQueryParam.OtherCondition otherCondition = otherConditions.get(i);
Long itemId = otherCondition.getItemId();
FilterEnum filter = otherCondition.getFilter();
List<String> params = otherCondition.getParams();
list = list.stream().filter(a -> Objects.equals(a.getSalaryItemId(), itemId)).filter(a -> filter.filter(params).test(a.getResultValue())).collect(Collectors.toList());
Map<Long, List<SalaryAcctResultPO>> acctEmpResultsMap = SalaryEntityUtil.group2Map(list, SalaryAcctResultPO::getSalaryAcctEmpId);
Set<Long> removeAcctEmpIds = new HashSet<>();
for (Long acctEmpId : acctEmpResultsMap.keySet()) {
List<SalaryAcctResultPO> acctEmpResults = acctEmpResultsMap.get(acctEmpId);
//如果有一个条件不成立就删除
for (int i = 0; i < otherConditions.size(); i++) {
SalaryAcctResultQueryParam.OtherCondition otherCondition = otherConditions.get(i);
Long itemId = otherCondition.getItemId();
FilterEnum filter = otherCondition.getFilter();
List<String> params = otherCondition.getParams();
for (SalaryAcctResultPO po : acctEmpResults) {
if(Objects.equals(po.getSalaryItemId(), itemId) && !filter.filter(params).test(po.getResultValue())){
removeAcctEmpIds.add(po.getSalaryAcctEmpId());
}
}
}
}
List<Long> salaryAcctEmpId = SalaryEntityUtil.properties(list, SalaryAcctResultPO::getSalaryAcctEmpId, Collectors.toList());
acctEmpResultsMap.keySet().removeAll(removeAcctEmpIds);
List<Long> salaryAcctEmpId = Lists.newArrayList(acctEmpResultsMap.keySet());
if (CollectionUtils.isEmpty(salaryAcctEmpId)) {
//条件不满足直接返回空列表
@ -1059,7 +1071,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
@Override
public void updateLockStatusByParam(SalaryAcctResultUpdateLockStatusParam updateParam) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId());
Set<Long> acctEmpIds = updateParam.getAcctEmpIds();
List<SalaryAcctEmployeePO> salaryAcctEmployees;
if (CollUtil.isNotEmpty(acctEmpIds)) {
salaryAcctEmployees = getSalaryAcctEmployeeService(user).listByIds(acctEmpIds);
} else {
salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId());
}
if (CollectionUtils.isEmpty(salaryAcctEmployees)) {
return;
}

View File

@ -656,8 +656,6 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
public XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) {
// 1.工作簿名称
String sheetName = SalaryI18nUtil.getI18nLabel(85368, "薪资项目调整记录");
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItems = salaryItemMapper.getCanAdjustSalaryItems();
String[] header = {
SalaryI18nUtil.getI18nLabel(85429, "姓名"),
SalaryI18nUtil.getI18nLabel(86187, "员工状态"),

View File

@ -560,7 +560,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
// 1.工作簿名称
String sheetName = SalaryI18nUtil.getI18nLabel(85368, "薪资档案");
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItems = salaryItemMapper.getCanAdjustSalaryItems();
List<SalaryItemPO> salaryItems = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
Object[] header = {
new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "", "", 0),
new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "", "", 0),

View File

@ -1,5 +1,6 @@
package com.engine.salary.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSON;
import com.api.formmode.mybatis.util.SqlProxyHandle;
@ -174,7 +175,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee
}
//外部人员
if(hasExtEmp){
if (hasExtEmp) {
List<SalarySobExtRangePO> salarySobExtRangePOS = getSalarySobExtRangeService(user).listBySalarySobId(salarySobId);
if (CollectionUtils.isNotEmpty(salarySobExtRangePOS)) {
List<Long> ids = SalaryEntityUtil.properties(salarySobExtRangePOS, SalarySobExtRangePO::getTargetId, Collectors.toList());
@ -418,20 +419,24 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee
result.addAll(employBiz.listByVirtualParams(virtualParams));
List<Long> empIds = new ArrayList<>();
includeQueryParams.stream()
.filter(param -> param.getTargetType().equals(TargetTypeEnum.SQL.name()))
.forEach(param -> {
String sql = param.getTarget();
RecordSet rs = new RecordSet();
if (rs.execute(sql)) {
while (rs.next()) {
empIds.add((long) rs.getInt("id"));
}
for (SalarySobRangeEmpQueryParam param:includeQueryParams) {
if(param.getTargetType().equals(TargetTypeEnum.SQL.name())){
List<Long> empIds = new ArrayList<>();
String sql = param.getTarget();
RecordSet rs = new RecordSet();
if (rs.execute(sql)) {
while (rs.next()) {
empIds.add((long) rs.getInt("id"));
}
});
List<DataCollectionEmployee> employees = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds);
result.addAll(employees);
}
if(CollUtil.isNotEmpty(empIds)){
Collection<String> employeeStatus = param.getEmployeeStatus();
List<DataCollectionEmployee> employeeByIdsAll = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds);
List<DataCollectionEmployee> collect = employeeByIdsAll.stream().filter(e -> employeeStatus.contains(e.getStatus())).collect(Collectors.toList());
result.addAll(collect);
}
}
}
// 从hrmresource和hrmresourcevirtual可能获取到重复人员数据需要根据人员id去重
result = result.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(DataCollectionEmployee::getEmployeeId))), ArrayList::new));

View File

@ -135,6 +135,15 @@ public class SalaryEntityUtil {
.collect(Collectors.toMap(keyMapper, valueMapper, (a, b) -> a));
}
public static <T, K, V> Map<K, V> convert2LinkedMap(Collection<T> objs, Function<T, K> keyMapper, Function<T, V> valueMapper) {
if (CollectionUtils.isEmpty(objs)) {
return Maps.newHashMap();
}
return objs.stream()
.filter(e -> valueMapper.apply(e) != null && keyMapper.apply(e) != null)
.collect(Collectors.toMap(keyMapper, valueMapper, (a, b) -> a, LinkedHashMap::new));
}
public static <R, T> Map<R, List<T>> group2Map(Collection<T> objs, Function<T, R> function) {
if (CollectionUtils.isEmpty(objs)) {
return Maps.newHashMap();

View File

@ -92,7 +92,7 @@ public class AttendQuoteDataWrapper extends Service {
attendQuoteFields.stream()
.filter(attendQuoteField->effectiveColumns.contains(Util.null2String(attendQuoteField.getId())))
.forEach(attendQuoteField -> {
columns.add(Column.builder().title(attendQuoteField.getFieldName())
columns.add(Column.builder().title(Util.formatMultiLang(attendQuoteField.getFieldName(), String.valueOf(user.getLanguage())))
.dataIndex(attendQuoteField.getId() + "_attendQuoteData")
.key(attendQuoteField.getId() + "_attendQuoteData").display(Boolean.TRUE).build());
}

View File

@ -11,6 +11,10 @@ import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;

View File

@ -541,9 +541,6 @@ public class SalaryArchiveWrapper extends Service {
return map;
}
public Map<String, Object> selectSalaryArchiveColumns(String importType) {
return getSalaryArchiveService(user).selectSalaryArchiveColumns(SalaryArchiveImportTypeEnum.parseByValue(importType));
}
public Map<String, Object> checkSalaryArchiveInit(SalaryArchiveImportActionParam importData) {

View File

@ -130,9 +130,9 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
list.stream().forEach(dto -> {
// 回算过但是查看的是普通工资单不能查看详情;回算过但是查看的是回算工资单可以发记录没回算过可以发
if(Objects.equals(dto.getSalaryAcctRecordType(), NumberUtils.INTEGER_ONE) && Objects.equals(dto.getSalaryAcctType(),NumberUtils.INTEGER_ZERO)){
if (Objects.equals(dto.getSalaryAcctRecordType(), NumberUtils.INTEGER_ONE) && Objects.equals(dto.getSalaryAcctType(), NumberUtils.INTEGER_ZERO)) {
dto.setCanSeeDetail(false);
}else{
} else {
dto.setCanSeeDetail(true);
}
});
@ -155,7 +155,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
e.setTemplate(NumberUtils.INTEGER_ONE.equals(e.getSalaryAcctType()) ? salaryTemplatePO.getReplenishName() : salaryTemplatePO.getName());
e.setTemplateId(salaryTemplatePO.getId());
if ((salaryTemplatePO.getAckFeedbackStatus() != null && salaryTemplatePO.getAckFeedbackStatus() == 1) ||
(salaryTemplatePO.getFeedbackStatus() != null && salaryTemplatePO.getFeedbackStatus() == 1) ) {
(salaryTemplatePO.getFeedbackStatus() != null && salaryTemplatePO.getFeedbackStatus() == 1)) {
e.setAckFeedbackStatus(1);
} else {
e.setAckFeedbackStatus(0);
@ -701,6 +701,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
/**
* 发送短信验证码
*
* @param param 短信验证码发送参数
*/
public void sendMobileCode(SMSCodeSendParam param) {
@ -709,6 +710,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
/**
* 校验短信验证码
*
* @param param
* @return
*/
@ -719,7 +721,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
public PayrollCheckTypeEnum payrollCheckType() {
SalarySysConfPO conf = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_PAYROLL_CHECK_TYPE);
if(conf == null){
if (conf == null) {
return PayrollCheckTypeEnum.PWD;
}
@ -727,14 +729,14 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
}
public void confirmSalaryBill(Long salaryInfoId) {
if(ObjectUtil.isNull(salaryInfoId)){
if (ObjectUtil.isNull(salaryInfoId)) {
throw new SalaryRunTimeException("工资单id不能为空");
}
getSalaryBillService(user).confirmSalaryBill(salaryInfoId);
}
public void feedBackSalaryBill(Long salaryInfoId) {
if(ObjectUtil.isNull(salaryInfoId)){
if (ObjectUtil.isNull(salaryInfoId)) {
throw new SalaryRunTimeException("工资单id不能为空");
}
getSalaryBillService(user).feedBackSalaryBill(salaryInfoId);