Merge branch 'release/2.16.1.2410.01' into feature/次账号
# Conflicts: # src/com/engine/salary/service/impl/SalarySendServiceImpl.java
This commit is contained in:
commit
94bb1ede32
Binary file not shown.
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.entity.salaryBill.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -16,47 +17,18 @@ import java.util.Date;
|
|||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
////"我的工资单")
|
||||
//@TableOperates(value = {
|
||||
// @Operates(index = 0, text = "查看", labelId = 90821)
|
||||
//}, tableType = WeaTableTypeEnum.NONE)
|
||||
public class SalaryMySalaryBillListDTO {
|
||||
|
||||
// 主键id")
|
||||
// @WeaFormat(
|
||||
// label = "id",
|
||||
// tableColumn = @TableColumn(hide = "true")
|
||||
// )
|
||||
// @JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
// 薪资所属月")
|
||||
// @WeaFormat(
|
||||
// label = "薪资所属月",
|
||||
// labelId = 87614,
|
||||
// tableColumn = @TableColumn(width = "20%")
|
||||
// )
|
||||
// @JsonFormat(pattern = "yyyy-MM")
|
||||
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
|
||||
private Date salaryYearMonth;
|
||||
|
||||
// 核算次数")
|
||||
private String acctTimes;
|
||||
|
||||
// 个税扣缴义务人")
|
||||
// @WeaFormat(
|
||||
// label = "个税扣缴义务人",
|
||||
// labelId = 86184,
|
||||
// tableColumn = @TableColumn(width = "40%")
|
||||
// )
|
||||
private String taxAgent;
|
||||
|
||||
// 发放时间")
|
||||
// @WeaFormat(
|
||||
// label = "发放时间",
|
||||
// labelId = 93634,
|
||||
// tableColumn = @TableColumn(width = "40%")
|
||||
// )
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date sendTime;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.entity.salaryBill.dto;
|
||||
|
||||
import com.engine.salary.enums.salarybill.MonthTypeEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -19,6 +20,10 @@ import lombok.NoArgsConstructor;
|
|||
@AllArgsConstructor
|
||||
public class salaryBillViewingLimitSetting {
|
||||
|
||||
/**
|
||||
* 月份限制类型
|
||||
*/
|
||||
private MonthTypeEnum monthType;
|
||||
|
||||
/**
|
||||
* 查看几月内的工资单
|
||||
|
|
|
|||
|
|
@ -297,6 +297,8 @@ public class SalaryAcctResultBO {
|
|||
map.put("departmentId", e.getDepartmentId());
|
||||
} else if ("subcompanyName".equals(salarySobEmpField.getFieldCode())) {
|
||||
map.put("subcompanyName", e.getSubcompanyName());
|
||||
}else if ("subcompanyId".equals(salarySobEmpField.getFieldCode())) {
|
||||
map.put("subcompanyId", e.getSubcompanyId());
|
||||
} else if ("jobcall".equals(salarySobEmpField.getFieldCode())) {
|
||||
map.put("jobcall", e.getJobcall());
|
||||
} else if ("jobcallId".equals(salarySobEmpField.getFieldCode())) {
|
||||
|
|
|
|||
|
|
@ -119,29 +119,38 @@ public class SalaryAcctEmployeePO {
|
|||
* 分部
|
||||
*/
|
||||
@I18n
|
||||
@SalaryFormulaVar(defaultLabel = "分部", labelId = 86321, dataType = "string")
|
||||
private String subcompanyName;
|
||||
@SalaryFormulaVar(defaultLabel = "分部ID", labelId = 86321, dataType = "string")
|
||||
private Long subcompanyId;
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
@I18n
|
||||
@SalaryFormulaVar(defaultLabel = "部门", labelId = 86321, dataType = "string")
|
||||
private String departmentName;
|
||||
@SalaryFormulaVar(defaultLabel = "部门ID", labelId = 86321, dataType = "string")
|
||||
private Long departmentId;
|
||||
/**
|
||||
* 岗位
|
||||
*/
|
||||
@I18n
|
||||
@SalaryFormulaVar(defaultLabel = "岗位", labelId = 86321, dataType = "string")
|
||||
private String jobtitleName;
|
||||
@SalaryFormulaVar(defaultLabel = "岗位ID", labelId = 86321, dataType = "string")
|
||||
private Long jobtitleId;
|
||||
/**
|
||||
* 职称
|
||||
*/
|
||||
@I18n
|
||||
@SalaryFormulaVar(defaultLabel = "职称", labelId = 86321, dataType = "string")
|
||||
private String jobcall;
|
||||
@SalaryFormulaVar(defaultLabel = "职称ID", labelId = 86321, dataType = "string")
|
||||
private Long jobcallId;
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@SalaryFormulaVar(defaultLabel = "状态", labelId = 86321, dataType = "string")
|
||||
private String status;
|
||||
|
||||
//锁定的项目
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ public class SalaryFormulaEmployeeDTO {
|
|||
@SalaryFormulaVar(defaultLabel = "分部", labelId = 82465, dataType = "subcompanyBrowser")
|
||||
private String subcompanyName;
|
||||
|
||||
@SalaryFormulaVar(defaultLabel = "分部ID", labelId = 82465, dataType = "subcompanyBrowser")
|
||||
private Long subcompanyId;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
package com.engine.salary.enums.salarybill;
|
||||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 工资单限制月份类型
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public enum MonthTypeEnum implements BaseEnum<Integer> {
|
||||
|
||||
SALARY_DATE(0, "薪资所属月", 93286),
|
||||
SEND_DATE(1, "发放日期", 93212);
|
||||
|
||||
private int value;
|
||||
|
||||
private String defaultLabel;
|
||||
|
||||
private int labelId;
|
||||
|
||||
MonthTypeEnum(int value, String defaultLabel, int labelId) {
|
||||
this.value = value;
|
||||
this.defaultLabel = defaultLabel;
|
||||
this.labelId = labelId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultLabel() {
|
||||
return defaultLabel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getLabelId() {
|
||||
return labelId;
|
||||
}
|
||||
|
||||
public static String getDefaultLabelByValue(Integer value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
MonthTypeEnum[] enumAry = MonthTypeEnum.values();
|
||||
for(int i = 0; i < Arrays.asList(enumAry).size(); i++){
|
||||
if (Integer.valueOf(enumAry[i].getValue()).equals(value)) {
|
||||
return enumAry[i].getDefaultLabel();
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getNameByValue(Integer value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
MonthTypeEnum[] enumAry = MonthTypeEnum.values();
|
||||
for(int i = 0; i < Arrays.asList(enumAry).size(); i++){
|
||||
if (Integer.valueOf(enumAry[i].getValue()).equals(value)) {
|
||||
return enumAry[i].name();
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static MonthTypeEnum parseByValue(int value) {
|
||||
for (MonthTypeEnum e : MonthTypeEnum.values()) {
|
||||
if (Objects.equals(e.getValue(), value)) {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
return SALARY_DATE;
|
||||
}
|
||||
}
|
||||
|
|
@ -4,11 +4,6 @@ import com.engine.salary.enums.BaseEnum;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: 工资单开关项
|
||||
* @Author: wangxiangzhong
|
||||
* @Date: 2021/12/9 15:56
|
||||
*/
|
||||
public enum SalarySendStatusEnum implements BaseEnum<Integer> {
|
||||
|
||||
UNSEND(0, "未发放", 93286),
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
package com.engine.salary.enums.salarybill;
|
||||
|
||||
/**
|
||||
* @Description: 文本内容位置
|
||||
* @Author: wangxiangzhong
|
||||
* @Date: 2021/12/9 13:22
|
||||
*/
|
||||
public enum SalaryTemplateTextContentPositionEnum {
|
||||
BEFORE(1, "薪资项目前", 92937),
|
||||
AFTER(2, "薪资项目后", 92938);
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
package com.engine.salary.enums.salarybill;
|
||||
|
||||
/**
|
||||
* @Description: 工资单插入变量
|
||||
* @Author: wangxiangzhong
|
||||
* @Date: 2021/12/9 13:13
|
||||
*/
|
||||
public enum SalaryTemplateVarEnum {
|
||||
|
||||
CORPORATENAME("CORPORATENAME", "公司名称", 92936),
|
||||
|
|
|
|||
|
|
@ -2,11 +2,6 @@ package com.engine.salary.enums.salarybill;
|
|||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
|
||||
/**
|
||||
* @Description: 水印类型
|
||||
* @Author: wangxiangzhong
|
||||
* @Date: 2021/12/9 13:13
|
||||
*/
|
||||
public enum SalaryTemplateWatermarkTypeEnum implements BaseEnum<String> {
|
||||
|
||||
DEFAULT("DEFAULT", "系统默认水印", 220057),
|
||||
|
|
|
|||
|
|
@ -2,11 +2,6 @@ package com.engine.salary.enums.salarybill;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: 工资单开关项
|
||||
* @Author: wangxiangzhong
|
||||
* @Date: 2021/12/9 15:56
|
||||
*/
|
||||
public enum SalaryTemplateWhetherEnum {
|
||||
TRUE(1, "是", 84967),
|
||||
FALSE(0, "否", 84968);
|
||||
|
|
|
|||
|
|
@ -131,11 +131,10 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt
|
|||
|
||||
@Override
|
||||
public List<Map<String, String>> getDatas(Attend4Salary attend4Salary) {
|
||||
ValidUtil.doValidator(attend4Salary);
|
||||
log.info("salaryAttend开始获取的考勤数据,参数{}", attend4Salary);
|
||||
List<Map<String, String>> list = new ArrayList<>();
|
||||
|
||||
try {
|
||||
ValidUtil.doValidator(attend4Salary);
|
||||
Map<String, Object> paramsMap = new HashMap<String, Object>();
|
||||
paramsMap.put("pageIndex", 1);
|
||||
paramsMap.put("pageSize", 500);
|
||||
|
|
@ -152,6 +151,8 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt
|
|||
Map<String, Object> temp = new HashMap<String, Object>();
|
||||
temp.put("data", JSONObject.toJSONString(paramsMap));
|
||||
temp.put("reportType", "month");
|
||||
|
||||
log.info("salaryAttend开始获取的考勤数据,参数{}", temp);
|
||||
list = (List<Map<String, String>>) commandExecutor.execute(new GetKQReportCmd(temp, user)).get("datas");
|
||||
if (isLog) {
|
||||
log.info("salaryAttend获取的考勤数据,{}", JSONUtils.toJSONString(list));
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ import com.engine.salary.util.page.SalaryPageUtil;
|
|||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
|
@ -437,14 +436,11 @@ public class SalaryStatisticsReportWrapper extends Service {
|
|||
// 获取列头
|
||||
List<WeaTableColumnGroup> weaTableColumns = (List<WeaTableColumnGroup>) result.get("columns");
|
||||
PageInfo<Map<String, Object>> page = (PageInfo<Map<String, Object>>) result.get("pageInfo");
|
||||
// 组装合计
|
||||
Map<String, Object> countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID());
|
||||
Map<String, Object> countResultMap = (Map<String, Object>) result.get("countResult");
|
||||
List<Map<String, Object>> list = page.getList();
|
||||
if (CollectionUtils.isNotEmpty(list) && MapUtils.isNotEmpty(countResultMap)) {
|
||||
list.add(countResultMap);
|
||||
}
|
||||
// 获取数据
|
||||
List<Map<String, String>> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() + StringUtils.EMPTY))).collect(Collectors.toList());
|
||||
List<Map<String, Object>> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()))).collect(Collectors.toList());
|
||||
records.add(countResultMap);
|
||||
|
||||
List rows = new ArrayList<>();
|
||||
rows.add(weaTableColumns);
|
||||
|
|
@ -466,7 +462,7 @@ public class SalaryStatisticsReportWrapper extends Service {
|
|||
List<String> numberItemIds = salaryItemPOList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).map(salaryItemPO -> salaryItemPO.getId().toString()).collect(Collectors.toList());
|
||||
Map<String, SalaryStatisticsItemPO> salaryStatisticsItemMap = SalaryEntityUtil.convert2Map(salaryStatisticsItemList, statisticsItemPO -> statisticsItemPO.getId().toString());
|
||||
|
||||
for (Map<String, String> map : records) {
|
||||
for (Map<String, Object> map : records) {
|
||||
List<Object> row = Lists.newArrayListWithExpectedSize(records.size());
|
||||
head.forEach(k -> {
|
||||
// 获取是数值还是文本
|
||||
|
|
@ -476,7 +472,7 @@ public class SalaryStatisticsReportWrapper extends Service {
|
|||
SalaryStatisticsItemPO salaryStatisticsItemPO = salaryStatisticsItemMap.get(salaryItemId);
|
||||
if (salaryStatisticsItemPO != null) {
|
||||
Optional<String> textItemOptional = Arrays.stream(salaryStatisticsItemPO.getItemValue().split(",")).filter(itemId -> !numberItemIds.contains(itemId)).findFirst();
|
||||
row.add((!textItemOptional.isPresent() && NumberUtils.isCreatable(map.getOrDefault(k, StringUtils.EMPTY).replace(",", ""))) ? new BigDecimal(map.get(k).replace(",", "")) : map.getOrDefault(k, StringUtils.EMPTY));
|
||||
row.add((!textItemOptional.isPresent() && NumberUtils.isCreatable(Utils.null2String(map.get(k)))) ? new BigDecimal(Utils.null2String(map.get(k))) : map.getOrDefault(k, StringUtils.EMPTY));
|
||||
} else {
|
||||
row.add(map.getOrDefault(k, StringUtils.EMPTY));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
|
|||
List<Long> employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList());
|
||||
List<SalaryArchiveDataDTO> salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId);
|
||||
// 转换成薪资核算人员po
|
||||
Date salaryDate = SalaryDateUtil.dateStrToLocalTime(salaryYearMonth + "-01");
|
||||
Date salaryDate = SalaryDateUtil.dateStrToLocalDate(salaryYearMonth + "-01");
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, SalaryAcctRecordPO.builder().salarySobId(salarySobId).salaryMonth(salaryDate).build(), salaryArchiveDataDTOS, (long) user.getUID());
|
||||
|
||||
//过滤掉不属于当前账套扣缴义务人的人员
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ import org.apache.poi.ss.usermodel.Sheet;
|
|||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.StopWatch;
|
||||
import weaver.file.ImageFileManager;
|
||||
import weaver.hrm.User;
|
||||
|
|
@ -1401,11 +1402,18 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
deleteResults = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, excelSalaryItemIds);
|
||||
getSalaryAcctResultService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, excelSalaryItemIds);
|
||||
//删除报表
|
||||
getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, excelSalaryItemIds);
|
||||
// getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, excelSalaryItemIds);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(salaryAcctResults)) {
|
||||
// 处理导入薪资项的回算值
|
||||
handleOriginResultValue(deleteResults, salaryAcctResults);
|
||||
// 备份一份加密前的值
|
||||
List<SalaryAcctResultPO> list4log = new ArrayList<>();
|
||||
salaryAcctResults.forEach(source -> {
|
||||
SalaryAcctResultPO target = new SalaryAcctResultPO();
|
||||
BeanUtils.copyProperties(source, target);
|
||||
list4log.add(target);
|
||||
});
|
||||
getSalaryAcctResultService(user).batchSave(salaryAcctResults);
|
||||
|
||||
// 记录操作日志
|
||||
|
|
@ -1418,6 +1426,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
loggerContext.setOperateType(OperateTypeEnum.EXCEL_IMPORT.getValue());
|
||||
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "导入薪资核算数据"));
|
||||
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "导入薪资核算数据 ") + targetName);
|
||||
loggerContext.setOldValueList(list4log);
|
||||
SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext);
|
||||
|
||||
// //报表
|
||||
|
|
|
|||
|
|
@ -1016,10 +1016,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
if (param.getLockStatus() == LockStatusEnum.LOCK) {
|
||||
lockItemIds.add(salaryItemId);
|
||||
} else {
|
||||
lockItemIds.remove(salaryItemId);
|
||||
lockItemIds.removeIf(salaryItemId::equals);
|
||||
}
|
||||
|
||||
salaryAcctEmployeePO.setLockItems(lockItemIds);
|
||||
salaryAcctEmployeePO.setLockItems(Lists.newArrayList(new HashSet(lockItemIds)));
|
||||
|
||||
getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO);
|
||||
}
|
||||
|
|
@ -1046,7 +1046,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
} else {
|
||||
lockItemIds.removeAll(salaryItemIds);
|
||||
}
|
||||
salaryAcctEmployeePO.setLockItems(lockItemIds);
|
||||
salaryAcctEmployeePO.setLockItems(Lists.newArrayList(new HashSet(lockItemIds)));
|
||||
getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO);
|
||||
});
|
||||
|
||||
|
|
@ -1078,7 +1078,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
if (CollectionUtils.isEmpty(salaryAcctEmployeeIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<List<Long>> partition = Lists.partition((List<Long>) salaryAcctEmployeeIds, 200);
|
||||
List<List<Long>> partition = Lists.partition(salaryAcctEmployeeIds, 200);
|
||||
List<SalaryAcctResultPO> result = new ArrayList<>();
|
||||
partition.forEach(empIds -> {
|
||||
SalaryAcctResultPO build = SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).salaryItemIds(salaryItemIds).build();
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.engine.salary.entity.salaryBill.dto.salaryBillViewingLimitSetting;
|
|||
import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillWatermarkPO;
|
||||
import com.engine.salary.enums.salarybill.MonthTypeEnum;
|
||||
import com.engine.salary.enums.salarybill.SalaryTemplateWatermarkTypeEnum;
|
||||
import com.engine.salary.service.SalaryBillBaseSetService;
|
||||
import com.engine.salary.service.SalaryBillWatermarkService;
|
||||
|
|
@ -31,6 +32,7 @@ import weaver.hrm.User;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import static com.engine.salary.enums.salarybill.MonthTypeEnum.SALARY_DATE;
|
||||
import static com.engine.salary.sys.constant.SalarySysConstant.*;
|
||||
|
||||
/**
|
||||
|
|
@ -113,6 +115,7 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB
|
|||
salaryBillViewingLimitSetting salaryBillViewingLimitDTO = saveParam.getSalaryBillViewingLimitSetting();
|
||||
if (salaryBillViewingLimitDTO != null) {
|
||||
getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getLimitMonth()), SALARY_BILL_VIEWING_LIMIT_MONTH, "工资单时效性设置", "billSend");
|
||||
getSalarySysConfService(user).saveSettingByType(salaryBillViewingLimitDTO.getMonthType()==null?"0":salaryBillViewingLimitDTO.getMonthType().getValue().toString(), SALARY_BILL_LIMIT_MONTH_TYPE, "工资单查询限制月份类型", "billSend");
|
||||
getSalarySysConfService(user).saveSettingByType(salaryBillViewingLimitDTO.getBurningAfterReadingMin() == null ? " " : salaryBillViewingLimitDTO.getBurningAfterReadingMin().toString(), SALARY_BILL_BURNING_AFTER_READING_MIN, "工资单查看后销毁设置", "billSend");
|
||||
}
|
||||
return StringUtils.EMPTY;
|
||||
|
|
@ -175,7 +178,14 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB
|
|||
if (limitMonthSetting != null && NumberUtils.isNumber(limitMonthSetting.getConfValue())) {
|
||||
limitMonth = Integer.parseInt(limitMonthSetting.getConfValue());
|
||||
}
|
||||
return salaryBillViewingLimitSetting.builder().limitMonth(limitMonth).build();
|
||||
|
||||
SalarySysConfPO limitMonthType = getSalarySysConfService(user).getOneByCode(SALARY_BILL_LIMIT_MONTH_TYPE);
|
||||
MonthTypeEnum monthType = SALARY_DATE;
|
||||
if (limitMonthType != null && NumberUtils.isNumber(limitMonthType.getConfValue())) {
|
||||
monthType = MonthTypeEnum.parseByValue(Integer.parseInt(limitMonthType.getConfValue()));
|
||||
}
|
||||
|
||||
return salaryBillViewingLimitSetting.builder().monthType(monthType).limitMonth(limitMonth).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.general.Util;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.*;
|
||||
|
|
@ -498,7 +499,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee
|
|||
String field = setting.getField();
|
||||
String value = rs.getString(field);
|
||||
setting.setValue(value);
|
||||
extendData.put(field, value);
|
||||
extendData.put(field, Util.formatMultiLang(value));
|
||||
});
|
||||
|
||||
String id = rs.getString(primaryKey);
|
||||
|
|
|
|||
|
|
@ -45,10 +45,7 @@ import com.engine.salary.enums.OperateTypeEnum;
|
|||
import com.engine.salary.enums.UserStatusEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
||||
import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum;
|
||||
import com.engine.salary.enums.salarybill.BillConfimStatusEnum;
|
||||
import com.engine.salary.enums.salarybill.BillReadStatusEnum;
|
||||
import com.engine.salary.enums.salarybill.SalarySendStatusEnum;
|
||||
import com.engine.salary.enums.salarybill.SalaryTemplateReplenishRuleEnum;
|
||||
import com.engine.salary.enums.salarybill.*;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.enums.salarysend.SalarySendGrantTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
|
|
@ -493,10 +490,18 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
|
||||
//工资单查看时效性
|
||||
Date limitMonth = getLimitMonth();
|
||||
if (limitMonth != null && limitMonth.after(salarySendInfo.getSalaryMonth())) {
|
||||
salaryBillViewingLimitSetting salaryBillViewingLimitSetting = getSalaryBillBaseSetService(user).getSalaryBillViewingLimitSetting();
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "仅能查看" + salaryBillViewingLimitSetting.getLimitMonth() + "月内的工资单"));
|
||||
salaryBillViewingLimitSetting salaryBillViewingLimitSetting = getSalaryBillBaseSetService(user).getSalaryBillViewingLimitSetting();
|
||||
Date limitMonth = getLimitMonth(salaryBillViewingLimitSetting);
|
||||
if (limitMonth != null) {
|
||||
if (salaryBillViewingLimitSetting.getMonthType() == MonthTypeEnum.SALARY_DATE) {
|
||||
if (limitMonth.after(salarySendInfo.getSalaryMonth())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "仅能查看" + salaryBillViewingLimitSetting.getLimitMonth() + "月内的工资单"));
|
||||
}
|
||||
} else {
|
||||
if (limitMonth.after(salarySendInfo.getSendTime())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "仅能查看" + salaryBillViewingLimitSetting.getLimitMonth() + "月内的工资单"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取、记录首次查看时间
|
||||
|
|
@ -692,12 +697,16 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
|
||||
|
||||
|
||||
private Date getLimitMonth() {
|
||||
//工资单时效性
|
||||
salaryBillViewingLimitSetting salaryBillViewingLimitSetting = getSalaryBillBaseSetService(user).getSalaryBillViewingLimitSetting();
|
||||
//工资单时效性
|
||||
private Date getLimitMonth(salaryBillViewingLimitSetting salaryBillViewingLimitSetting) {
|
||||
if (salaryBillViewingLimitSetting.getLimitMonth() != 0) {
|
||||
LocalDate localDate = LocalDate.now().plusMonths(-salaryBillViewingLimitSetting.getLimitMonth()).withDayOfMonth(1);
|
||||
MonthTypeEnum monthType = salaryBillViewingLimitSetting.getMonthType();
|
||||
LocalDate localDate;
|
||||
if (monthType == MonthTypeEnum.SALARY_DATE) {
|
||||
localDate = LocalDate.now().plusMonths(-salaryBillViewingLimitSetting.getLimitMonth()+1).withDayOfMonth(1);
|
||||
} else {
|
||||
localDate = LocalDate.now().plusMonths(-salaryBillViewingLimitSetting.getLimitMonth());
|
||||
}
|
||||
return SalaryDateUtil.localDateToDate(localDate);
|
||||
}
|
||||
return null;
|
||||
|
|
@ -797,11 +806,25 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
|
||||
@Override
|
||||
public PageInfo<SalaryMySalaryBillListDTO> mySalaryBillListPage(SalaryBillQueryParam queryParam) {
|
||||
//工资单时效
|
||||
queryParam.setStartSalaryMonth(getLimitMonth());
|
||||
|
||||
List<SalaryMySalaryBillListDTO> list = salarySendInfoMapper.mySalaryBillList(queryParam);
|
||||
list.forEach(dto -> dto.setEmployeeId(Long.valueOf(user.getUID())));
|
||||
|
||||
//工资单时效
|
||||
salaryBillViewingLimitSetting salaryBillViewingLimitSetting = getSalaryBillBaseSetService(user).getSalaryBillViewingLimitSetting();
|
||||
Date limitMonth = getLimitMonth(salaryBillViewingLimitSetting);
|
||||
list = list.stream()
|
||||
.filter(dto -> {
|
||||
if (limitMonth != null) {
|
||||
if (salaryBillViewingLimitSetting.getMonthType() == MonthTypeEnum.SALARY_DATE) {
|
||||
return !limitMonth.after(dto.getSalaryYearMonth());
|
||||
} else {
|
||||
return !limitMonth.after(dto.getSendTime());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
})
|
||||
.peek(dto -> dto.setEmployeeId((long) user.getUID()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
PageInfo<SalaryMySalaryBillListDTO> pageInfo = new PageInfo<>(list, SalaryMySalaryBillListDTO.class);
|
||||
pageInfo.setTotal(list.size());
|
||||
pageInfo.setPageNum(queryParam.getCurrent());
|
||||
|
|
@ -817,11 +840,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
Set<Long> otherSalaryAcctRecordIds = null;
|
||||
if (queryParam.getMergeCountTax() != null && queryParam.getMergeCountTax()) {
|
||||
//查询关联的核酸id,这里认为一次发放只对应一条核算记录
|
||||
Long salaryAccRecordId =
|
||||
salarySendInfoMapper.listSalaryAccRecordIds(queryParam).stream().findFirst().orElse(null);
|
||||
Long salaryAccRecordId = salarySendInfoMapper.listSalaryAccRecordIds(queryParam).stream().findFirst().orElse(null);
|
||||
// 查询合并计税的其他薪资核算记录
|
||||
List<SalaryAcctRecordPO> otherSalaryAcctRecordPOS =
|
||||
getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAccRecordId);
|
||||
List<SalaryAcctRecordPO> otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAccRecordId);
|
||||
if (CollectionUtils.isEmpty(otherSalaryAcctRecordPOS)) {
|
||||
return new PageInfo<>();
|
||||
}
|
||||
|
|
@ -832,8 +853,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
}
|
||||
List<SalarySendDetailListDTO> list = getSalarySendInfoMapper().detailList(queryParam, otherSalaryAcctRecordIds);
|
||||
return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(),
|
||||
list, SalarySendDetailListDTO.class);
|
||||
return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, SalarySendDetailListDTO.class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -859,9 +879,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
companyName = subCompanyComInfo.getSubCompanyname(resourceComInfo.getSubCompanyID(currentEmployeeId + ""));
|
||||
}
|
||||
return theme
|
||||
.replace("${companyName}", companyName)
|
||||
.replace("${salaryMonth}", new SimpleDateFormat("yyyy年MM月").format(salaryMonth));
|
||||
return theme.replace("${companyName}", companyName).replace("${salaryMonth}", new SimpleDateFormat("yyyy年MM月").format(salaryMonth));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -873,30 +891,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
*/
|
||||
private SalaryTemplatePO buildSalaryTemplateContent(String salaryTemplateContent) {
|
||||
Map<String, Object> map = JsonUtil.parseMap(salaryTemplateContent, Object.class);
|
||||
SalaryTemplatePO build = SalaryTemplatePO.builder()
|
||||
.id(Long.valueOf(map.getOrDefault("id", "0").toString()))
|
||||
.ackFeedbackStatus(Integer.valueOf(map.getOrDefault("ackFeedbackStatus", "0").toString()))
|
||||
.autoAckDays(Integer.valueOf(map.getOrDefault("autoAckDays", "0").toString()))
|
||||
.feedbackUrl(map.getOrDefault("feedbackUrl", "").toString())
|
||||
.mobileFeedbackUrl(map.getOrDefault("mobileFeedbackUrl", "").toString())
|
||||
.name(map.getOrDefault("name", "").toString())
|
||||
.salarySobId(Long.valueOf(map.getOrDefault("salarySobId", "0").toString()))
|
||||
.useType(Integer.valueOf(map.getOrDefault("useType", "0").toString()))
|
||||
.description(map.getOrDefault("description", "").toString())
|
||||
.emailStatus(Integer.valueOf(map.getOrDefault("emailStatus", "0").toString()))
|
||||
.sendEmailId(Long.valueOf(map.getOrDefault("sendEmailId", "0").toString()))
|
||||
.msgStatus(Integer.valueOf(map.getOrDefault("msgStatus", "0").toString()))
|
||||
.salaryWatermark(map.getOrDefault("salaryWatermark", StringUtils.EMPTY).toString())
|
||||
.theme(map.getOrDefault("theme", "").toString())
|
||||
.background(map.getOrDefault("background", "").toString())
|
||||
.textContent(map.getOrDefault("textContent", "").toString())
|
||||
.textContentPosition(Integer.valueOf(map.getOrDefault("textContentPosition", "0").toString()))
|
||||
.salaryItemNullStatus(Integer.valueOf(map.getOrDefault("salaryItemNullStatus", "0").toString()))
|
||||
.salaryItemZeroStatus(Integer.valueOf(map.getOrDefault("salaryItemZeroStatus", "0").toString()))
|
||||
.salaryItemSetting(map.getOrDefault("salaryItemSetting", "").toString())
|
||||
.replenishName(map.getOrDefault("replenishName", "").toString())
|
||||
.replenishSalaryItemSetting(map.getOrDefault("replenishSalaryItemSetting", "").toString())
|
||||
.build();
|
||||
SalaryTemplatePO build = SalaryTemplatePO.builder().id(Long.valueOf(map.getOrDefault("id", "0").toString())).ackFeedbackStatus(Integer.valueOf(map.getOrDefault("ackFeedbackStatus", "0").toString())).autoAckDays(Integer.valueOf(map.getOrDefault("autoAckDays", "0").toString())).feedbackUrl(map.getOrDefault("feedbackUrl", "").toString()).mobileFeedbackUrl(map.getOrDefault("mobileFeedbackUrl", "").toString()).name(map.getOrDefault("name", "").toString()).salarySobId(Long.valueOf(map.getOrDefault("salarySobId", "0").toString())).useType(Integer.valueOf(map.getOrDefault("useType", "0").toString())).description(map.getOrDefault("description", "").toString()).emailStatus(Integer.valueOf(map.getOrDefault("emailStatus", "0").toString())).sendEmailId(Long.valueOf(map.getOrDefault("sendEmailId", "0").toString())).msgStatus(Integer.valueOf(map.getOrDefault("msgStatus", "0").toString())).salaryWatermark(map.getOrDefault("salaryWatermark", StringUtils.EMPTY).toString()).theme(map.getOrDefault("theme", "").toString()).background(map.getOrDefault("background", "").toString()).textContent(map.getOrDefault("textContent", "").toString()).textContentPosition(Integer.valueOf(map.getOrDefault("textContentPosition", "0").toString())).salaryItemNullStatus(Integer.valueOf(map.getOrDefault("salaryItemNullStatus", "0").toString())).salaryItemZeroStatus(Integer.valueOf(map.getOrDefault("salaryItemZeroStatus", "0").toString())).salaryItemSetting(map.getOrDefault("salaryItemSetting", "").toString()).replenishName(map.getOrDefault("replenishName", "").toString()).replenishSalaryItemSetting(map.getOrDefault("replenishSalaryItemSetting", "").toString()).build();
|
||||
Object feedbackStatus = map.get("feedbackStatus");
|
||||
if (feedbackStatus == null || StringUtils.isBlank(feedbackStatus.toString())) {
|
||||
build.setFeedbackStatus(build.getAckFeedbackStatus());
|
||||
|
|
@ -924,6 +919,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
.birthday(simpleEmployee.getBirthday())
|
||||
.departmentId(simpleEmployee.getDepartmentId())
|
||||
.departmentName(simpleEmployee.getDepartmentName())
|
||||
.subcompanyId(simpleEmployee.getSubcompanyid())
|
||||
.subcompanyName(simpleEmployee.getSubcompanyName())
|
||||
.email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail())
|
||||
.jobcall(simpleEmployee.getJobcall())
|
||||
|
|
@ -1010,8 +1006,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
map.put("jobNum", Objects.equals(employeeType, 1) ? extEmp.getWorkcode() : e.getJobNum());
|
||||
map.put("email", Objects.equals(employeeType, 1) ? extEmp.getEmail() : e.getEmail());
|
||||
salaryItems.forEach(i -> {
|
||||
Optional<SalaryAcctResultPO> optional = salaryAccountingResults.stream()
|
||||
.filter(r -> r.getEmployeeId().equals(e.getEmployeeId()) && r.getSalaryItemId().equals(Long.valueOf(i.getSalaryItemId()))).findFirst();
|
||||
Optional<SalaryAcctResultPO> optional = salaryAccountingResults.stream().filter(r -> r.getEmployeeId().equals(e.getEmployeeId()) && r.getSalaryItemId().equals(Long.valueOf(i.getSalaryItemId()))).findFirst();
|
||||
map.put(i.getSalaryItemId() + SalaryItemConstant.DYNAMIC_SUFFIX, optional.isPresent() ? optional.get().getResultValue() : "");
|
||||
});
|
||||
|
||||
|
|
@ -1028,8 +1023,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> buildDetailList(List<SalarySendInfoListDTO> list,
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployees, List<SalaryAcctResultPO> salaryAcctResultValues) {
|
||||
public List<Map<String, Object>> buildDetailList(List<SalarySendInfoListDTO> list, List<SalaryAcctEmployeePO> salaryAcctEmployees, List<SalaryAcctResultPO> salaryAcctResultValues) {
|
||||
List<Map<String, Object>> listMaps = new ArrayList<>();
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return listMaps;
|
||||
|
|
@ -1126,19 +1120,15 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
// 正常模板
|
||||
if (!isReplenish && StringUtils.isNotEmpty(salaryTemplate.getSalaryItemSetting())) {
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getSalaryItemSetting(),
|
||||
SalaryTemplateSalaryItemSetListDTO.class);
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class);
|
||||
salaryTemplateShowSetData.stream().filter(f -> !f.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID)).forEach(e -> {
|
||||
salaryItems.addAll(e.getItems());
|
||||
});
|
||||
}
|
||||
// 补发模板
|
||||
if (isReplenish && StringUtils.isNotEmpty(salaryTemplate.getReplenishSalaryItemSetting())) {
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getReplenishSalaryItemSetting(),
|
||||
SalaryTemplateSalaryItemSetListDTO.class);
|
||||
salaryTemplateShowSetData.stream().filter(f -> !f.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID)).forEach(e ->
|
||||
salaryItems.addAll(e.getItems())
|
||||
);
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getReplenishSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class);
|
||||
salaryTemplateShowSetData.stream().filter(f -> !f.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID)).forEach(e -> salaryItems.addAll(e.getItems()));
|
||||
}
|
||||
return salaryItems;
|
||||
}
|
||||
|
|
@ -1154,8 +1144,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
|
||||
if (param.getSalarySendRangeIds() != null) {
|
||||
//如果传了范围id,则使用范围id发放
|
||||
ids = getSalarySendRangeService(user)
|
||||
.getSendInfoIdsBySendId(salarySendId, param.getSalarySendRangeIds(), SalarySendGrantTypeEnum.GRANT);
|
||||
ids = getSalarySendRangeService(user).getSendInfoIdsBySendId(salarySendId, param.getSalarySendRangeIds(), SalarySendGrantTypeEnum.GRANT);
|
||||
if (ids.isEmpty()) {// 由于查出来是空的,会导致全部发放,在此进行拦截
|
||||
throw new SalaryRunTimeException("工资发放范围内没有匹配员工");
|
||||
}
|
||||
|
|
@ -1406,8 +1395,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
// 获取可撤回的工资单
|
||||
if (param.getSalarySendRangeIds() != null) {
|
||||
//如果传了范围id,则使用范围id撤回
|
||||
ids = getSalarySendRangeService(user)
|
||||
.getSendInfoIdsBySendId(salarySendId, param.getSalarySendRangeIds(), SalarySendGrantTypeEnum.WITHDRAW);
|
||||
ids = getSalarySendRangeService(user).getSendInfoIdsBySendId(salarySendId, param.getSalarySendRangeIds(), SalarySendGrantTypeEnum.WITHDRAW);
|
||||
if (ids.isEmpty()) {// 由于查出来是空的,会导致全部发放,在此进行拦截
|
||||
throw new SalaryRunTimeException("工资撤回范围内没有匹配的员工");
|
||||
}
|
||||
|
|
@ -1580,7 +1568,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
header.add(SalaryI18nUtil.getI18nLabel(86317, "工号"));
|
||||
Map<String, SalaryTemplateSalaryItemListDTO> salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, dto -> dto.getSalaryItemId() + SalaryConstant.DYNAMIC_SUFFIX);
|
||||
List<SalaryTemplateSalaryItemListDTO> sortedSalaryItems = new ArrayList<>();
|
||||
for(String column : queryParam.getColumns()) {
|
||||
for (String column : queryParam.getColumns()) {
|
||||
if (column.contains(SalaryConstant.DYNAMIC_SUFFIX)) {
|
||||
SalaryTemplateSalaryItemListDTO salaryTemplateSalaryItemListDTO = salaryItemMap.get(column);
|
||||
if (salaryTemplateSalaryItemListDTO != null) {
|
||||
|
|
@ -1681,8 +1669,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
|
||||
SalaryAcctResultQueryParam queryParam = SalaryAcctResultQueryParam.builder().salaryAcctRecordId(salarySendPO.getSalaryAccountingId()).build();
|
||||
// 查询薪资核算人员
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user)
|
||||
.listByResultQueryParam(queryParam);
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listByResultQueryParam(queryParam);
|
||||
|
||||
if (org.apache.commons.collections4.CollectionUtils.isEmpty(salaryAcctEmployeePOS)) {
|
||||
return Collections.emptyMap();
|
||||
|
|
@ -1714,13 +1701,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
Map<String, Object> map = new HashMap<>();
|
||||
Map<Long, List<SalaryAcctResultPO>> acctResultMap = SalaryEntityUtil.group2Map(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryItemId);
|
||||
salaryItemPOS.stream().filter(item -> SalaryDataTypeEnum.NUMBER.getValue().equals(item.getDataType())).forEach(item -> {
|
||||
BigDecimal sum = Optional.ofNullable(acctResultMap.get(item.getId()))
|
||||
.orElse(new ArrayList<>())
|
||||
.stream()
|
||||
.map(SalaryAcctResultPO::getResultValue)
|
||||
.filter(NumberUtils::isCreatable)
|
||||
.map(BigDecimal::new)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal sum = Optional.ofNullable(acctResultMap.get(item.getId())).orElse(new ArrayList<>()).stream().map(SalaryAcctResultPO::getResultValue).filter(NumberUtils::isCreatable).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
map.put(item.getId() + SalaryItemConstant.DYNAMIC_SUFFIX, SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap));
|
||||
});
|
||||
return map;
|
||||
|
|
@ -1814,8 +1795,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
|
||||
@Override
|
||||
public List<SalarySendInfoPO> listUnConfirmedSendInfo(List<Long> salarySobIds) {
|
||||
if (CollectionUtils.isEmpty(salarySobIds))
|
||||
return Collections.emptyList();
|
||||
if (CollectionUtils.isEmpty(salarySobIds)) return Collections.emptyList();
|
||||
return getSalarySendInfoMapper().listUnConfirmedSendInfo(salarySobIds);
|
||||
}
|
||||
|
||||
|
|
@ -1916,18 +1896,14 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
List<SalaryTemplateSalaryItemSetListDTO> itemSetListDTOS = listDTOS.stream().filter(e -> !SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).collect(Collectors.toList());
|
||||
List<Map<String, Object>> finalSalaryAcctResultS = salaryAcctResultS;
|
||||
itemSetListDTOS.stream().forEach(item -> {
|
||||
item.getItems()
|
||||
.forEach(e -> {
|
||||
if (CollectionUtils.isEmpty(finalSalaryAcctResultS)) {
|
||||
e.setSalaryItemValue("");
|
||||
} else {
|
||||
Object o = finalSalaryAcctResultS.stream()
|
||||
.filter(f -> f.get("salaryItemId") != null && String.valueOf(f.get("salaryItemId")).equals(e.getSalaryItemId())).findFirst()
|
||||
.orElse(new HashMap<>())
|
||||
.get("resultValue");
|
||||
e.setSalaryItemValue(o == null ? "" : (String) o);
|
||||
}
|
||||
});
|
||||
item.getItems().forEach(e -> {
|
||||
if (CollectionUtils.isEmpty(finalSalaryAcctResultS)) {
|
||||
e.setSalaryItemValue("");
|
||||
} else {
|
||||
Object o = finalSalaryAcctResultS.stream().filter(f -> f.get("salaryItemId") != null && String.valueOf(f.get("salaryItemId")).equals(e.getSalaryItemId())).findFirst().orElse(new HashMap<>()).get("resultValue");
|
||||
e.setSalaryItemValue(o == null ? "" : (String) o);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -1948,10 +1924,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
if (Objects.equals(1, salaryTemplate.getSalaryItemZeroStatus())) {
|
||||
for (SalaryTemplateSalaryItemSetListDTO itemSetListDTO : itemSetListDTOS) {
|
||||
List<SalaryTemplateSalaryItemListDTO> items = itemSetListDTO.getItems();
|
||||
List<SalaryTemplateSalaryItemListDTO> collect = items.stream()
|
||||
.filter(item -> SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue()) == null
|
||||
|| BigDecimal.ZERO.compareTo(SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue())) != 0)
|
||||
.collect(Collectors.toList());
|
||||
List<SalaryTemplateSalaryItemListDTO> collect = items.stream().filter(item -> SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue()) == null || BigDecimal.ZERO.compareTo(SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue())) != 0).collect(Collectors.toList());
|
||||
itemSetListDTO.setItems(collect);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,11 @@ public class SalarySysConstant {
|
|||
*/
|
||||
public static final String SALARY_BILL_VIEWING_LIMIT_MONTH = "SALARY_BILL_VIEWING_LIMIT_MONTH";
|
||||
|
||||
/**
|
||||
* 工资单查询限制月份类型
|
||||
*/
|
||||
public static final String SALARY_BILL_LIMIT_MONTH_TYPE = "SALARY_BILL_LIMIT_MONTH_TYPE";
|
||||
|
||||
/**
|
||||
* 首次查看后多少分钟不能查看工资单
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue