diff --git a/resource/WEB-INF/lib/hrmelog.jar b/resource/WEB-INF/lib/hrmelog.jar index b8a8aec57..7589cfeae 100644 Binary files a/resource/WEB-INF/lib/hrmelog.jar and b/resource/WEB-INF/lib/hrmelog.jar differ diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java index af239ee5f..0cce85393 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java @@ -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; diff --git a/src/com/engine/salary/entity/salaryBill/dto/salaryBillViewingLimitSetting.java b/src/com/engine/salary/entity/salaryBill/dto/salaryBillViewingLimitSetting.java index 8bd3a1ceb..fbe9752bf 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/salaryBillViewingLimitSetting.java +++ b/src/com/engine/salary/entity/salaryBill/dto/salaryBillViewingLimitSetting.java @@ -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; /** * 查看几月内的工资单 diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 5cca1f066..c80d67dfe 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -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())) { diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index 139522699..109b6a862 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -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; //锁定的项目 diff --git a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java index 5bcecb177..4d92e4d67 100644 --- a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java +++ b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java @@ -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; diff --git a/src/com/engine/salary/enums/salarybill/MonthTypeEnum.java b/src/com/engine/salary/enums/salarybill/MonthTypeEnum.java new file mode 100644 index 000000000..ea6f8b34a --- /dev/null +++ b/src/com/engine/salary/enums/salarybill/MonthTypeEnum.java @@ -0,0 +1,82 @@ +package com.engine.salary.enums.salarybill; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 工资单限制月份类型 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum MonthTypeEnum implements BaseEnum { + + 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; + } +} diff --git a/src/com/engine/salary/enums/salarybill/SalarySendStatusEnum.java b/src/com/engine/salary/enums/salarybill/SalarySendStatusEnum.java index aa6ef65f7..85624f462 100644 --- a/src/com/engine/salary/enums/salarybill/SalarySendStatusEnum.java +++ b/src/com/engine/salary/enums/salarybill/SalarySendStatusEnum.java @@ -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 { UNSEND(0, "未发放", 93286), diff --git a/src/com/engine/salary/enums/salarybill/SalaryTemplateTextContentPositionEnum.java b/src/com/engine/salary/enums/salarybill/SalaryTemplateTextContentPositionEnum.java index d7e46be19..0a827320b 100644 --- a/src/com/engine/salary/enums/salarybill/SalaryTemplateTextContentPositionEnum.java +++ b/src/com/engine/salary/enums/salarybill/SalaryTemplateTextContentPositionEnum.java @@ -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); diff --git a/src/com/engine/salary/enums/salarybill/SalaryTemplateVarEnum.java b/src/com/engine/salary/enums/salarybill/SalaryTemplateVarEnum.java index dfdc7ec8d..685904b29 100644 --- a/src/com/engine/salary/enums/salarybill/SalaryTemplateVarEnum.java +++ b/src/com/engine/salary/enums/salarybill/SalaryTemplateVarEnum.java @@ -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), diff --git a/src/com/engine/salary/enums/salarybill/SalaryTemplateWatermarkTypeEnum.java b/src/com/engine/salary/enums/salarybill/SalaryTemplateWatermarkTypeEnum.java index 00a3834f1..ff054639d 100644 --- a/src/com/engine/salary/enums/salarybill/SalaryTemplateWatermarkTypeEnum.java +++ b/src/com/engine/salary/enums/salarybill/SalaryTemplateWatermarkTypeEnum.java @@ -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 { DEFAULT("DEFAULT", "系统默认水印", 220057), diff --git a/src/com/engine/salary/enums/salarybill/SalaryTemplateWhetherEnum.java b/src/com/engine/salary/enums/salarybill/SalaryTemplateWhetherEnum.java index e407d8262..87dd585fa 100644 --- a/src/com/engine/salary/enums/salarybill/SalaryTemplateWhetherEnum.java +++ b/src/com/engine/salary/enums/salarybill/SalaryTemplateWhetherEnum.java @@ -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); diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 95e1618ac..eeddfd41d 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -131,11 +131,10 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getDatas(Attend4Salary attend4Salary) { - ValidUtil.doValidator(attend4Salary); - log.info("salaryAttend开始获取的考勤数据,参数{}", attend4Salary); List> list = new ArrayList<>(); try { + ValidUtil.doValidator(attend4Salary); Map paramsMap = new HashMap(); paramsMap.put("pageIndex", 1); paramsMap.put("pageSize", 500); @@ -152,6 +151,8 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); temp.put("reportType", "month"); + + log.info("salaryAttend开始获取的考勤数据,参数{}", temp); list = (List>) commandExecutor.execute(new GetKQReportCmd(temp, user)).get("datas"); if (isLog) { log.info("salaryAttend获取的考勤数据,{}", JSONUtils.toJSONString(list)); diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 22fb6261f..c516bb229 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -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 weaTableColumns = (List) result.get("columns"); PageInfo> page = (PageInfo>) result.get("pageInfo"); - // 组装合计 - Map countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID()); + Map countResultMap = (Map) result.get("countResult"); List> list = page.getList(); - if (CollectionUtils.isNotEmpty(list) && MapUtils.isNotEmpty(countResultMap)) { - list.add(countResultMap); - } // 获取数据 - List> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() + StringUtils.EMPTY))).collect(Collectors.toList()); + List> 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 numberItemIds = salaryItemPOList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).map(salaryItemPO -> salaryItemPO.getId().toString()).collect(Collectors.toList()); Map salaryStatisticsItemMap = SalaryEntityUtil.convert2Map(salaryStatisticsItemList, statisticsItemPO -> statisticsItemPO.getId().toString()); - for (Map map : records) { + for (Map map : records) { List 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 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)); } diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 750f11ec2..48648cc57 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -382,7 +382,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); // 转换成薪资核算人员po - Date salaryDate = SalaryDateUtil.dateStrToLocalTime(salaryYearMonth + "-01"); + Date salaryDate = SalaryDateUtil.dateStrToLocalDate(salaryYearMonth + "-01"); List salaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, SalaryAcctRecordPO.builder().salarySobId(salarySobId).salaryMonth(salaryDate).build(), salaryArchiveDataDTOS, (long) user.getUID()); //过滤掉不属于当前账套扣缴义务人的人员 diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 4acdc3e02..ea1eb3cff 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -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 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); // //报表 diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 2e8258f96..f34e0b844 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -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> partition = Lists.partition((List) salaryAcctEmployeeIds, 200); + List> partition = Lists.partition(salaryAcctEmployeeIds, 200); List result = new ArrayList<>(); partition.forEach(empIds -> { SalaryAcctResultPO build = SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).salaryItemIds(salaryItemIds).build(); diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index 392ddb58c..0a8220c6f 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -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 diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 0e3435293..6d6637dc5 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -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); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index e7fb7c41c..7aa64a1e1 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -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 mySalaryBillListPage(SalaryBillQueryParam queryParam) { - //工资单时效 - queryParam.setStartSalaryMonth(getLimitMonth()); - List 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 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 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 otherSalaryAcctRecordPOS = - getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAccRecordId); + List otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAccRecordId); if (CollectionUtils.isEmpty(otherSalaryAcctRecordPOS)) { return new PageInfo<>(); } @@ -832,8 +853,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } } List 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 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 optional = salaryAccountingResults.stream() - .filter(r -> r.getEmployeeId().equals(e.getEmployeeId()) && r.getSalaryItemId().equals(Long.valueOf(i.getSalaryItemId()))).findFirst(); + Optional 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> buildDetailList(List list, - List salaryAcctEmployees, List salaryAcctResultValues) { + public List> buildDetailList(List list, List salaryAcctEmployees, List salaryAcctResultValues) { List> 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 salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getSalaryItemSetting(), - SalaryTemplateSalaryItemSetListDTO.class); + List 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 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 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 salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, dto -> dto.getSalaryItemId() + SalaryConstant.DYNAMIC_SUFFIX); List 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 salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user) - .listByResultQueryParam(queryParam); + List 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 map = new HashMap<>(); Map> 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 listUnConfirmedSendInfo(List 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 itemSetListDTOS = listDTOS.stream().filter(e -> !SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).collect(Collectors.toList()); List> 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 items = itemSetListDTO.getItems(); - List collect = items.stream() - .filter(item -> SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue()) == null - || BigDecimal.ZERO.compareTo(SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue())) != 0) - .collect(Collectors.toList()); + List collect = items.stream().filter(item -> SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue()) == null || BigDecimal.ZERO.compareTo(SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue())) != 0).collect(Collectors.toList()); itemSetListDTO.setItems(collect); } } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index fd59edaaf..40d989102 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -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"; + /** * 首次查看后多少分钟不能查看工资单 */