Merge branch 'release/2.16.1.2410.01' into release/个税版本
# Conflicts: # src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java # src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml # src/com/engine/salary/service/SalaryAcctRecordService.java # src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
This commit is contained in:
commit
aebe8c59f8
Binary file not shown.
|
|
@ -205,7 +205,9 @@ public class SalaryBillBO {
|
|||
}
|
||||
}
|
||||
|
||||
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))
|
||||
.replace("${salaryYear}", new SimpleDateFormat("yyyy年").format(salaryMonth));
|
||||
}
|
||||
|
||||
// /**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 查看几月内的工资单
|
||||
|
|
|
|||
|
|
@ -296,6 +296,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())) {
|
||||
|
|
|
|||
|
|
@ -70,4 +70,11 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam {
|
|||
private String workcode;
|
||||
|
||||
private Set<Date> salaryMonths;
|
||||
|
||||
|
||||
private Collection<Long> salaryAcctRecordIds;
|
||||
private Collection<Long> salarySobIds;
|
||||
private Collection<Long> employeeIds;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,29 +130,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,14 +1,10 @@
|
|||
package com.engine.salary.enums.salarybill;
|
||||
|
||||
/**
|
||||
* @Description: 工资单插入变量
|
||||
* @Author: wangxiangzhong
|
||||
* @Date: 2021/12/9 13:13
|
||||
*/
|
||||
public enum SalaryTemplateVarEnum {
|
||||
|
||||
CORPORATENAME("CORPORATENAME", "公司名称", 92936),
|
||||
SALARYYEARMONTH("SALARYYEARMONTH", "薪资所属月", 87614);
|
||||
SALARYYEARMONTH("SALARYYEARMONTH", "薪资所属月", 87614),
|
||||
SALARY_YEAR("SALARY_YEAR", "薪资所属年", 92936),
|
||||
CORPORATENAME("CORPORATENAME", "公司名称", 92936);
|
||||
|
||||
private String value;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -637,6 +637,24 @@
|
|||
</if>
|
||||
)
|
||||
</if>
|
||||
<if test="param.salaryAcctRecordIds != null and param.salaryAcctRecordIds.size()>0">
|
||||
AND t.salary_acct_record_id IN
|
||||
<foreach collection="param.salaryAcctRecordIds" open="(" item="salaryAcctRecordId" separator="," close=")">
|
||||
#{salaryAcctRecordId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.employeeIds != null and param.employeeIds.size()>0">
|
||||
AND t.employee_id IN
|
||||
<foreach collection="param.employeeIds" open="(" item="employeeId" separator="," close=")">
|
||||
#{employeeId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.salarySobIds != null and param.salarySobIds.size()>0">
|
||||
AND t.salary_sob_id IN
|
||||
<foreach collection="param.salarySobIds" open="(" item="salarySobId" separator="," close=")">
|
||||
#{salarySobId}
|
||||
</foreach>
|
||||
</if>
|
||||
</sql>
|
||||
<sql id="SalaryAcctEmployeeParamSql" databaseId="oracle">
|
||||
<if test="param.salaryAcctRecordId != null">
|
||||
|
|
@ -711,6 +729,24 @@
|
|||
</if>
|
||||
)
|
||||
</if>
|
||||
<if test="param.salaryAcctRecordIds != null and param.salaryAcctRecordIds.size()>0">
|
||||
AND t.salary_acct_record_id IN
|
||||
<foreach collection="param.salaryAcctRecordIds" open="(" item="salaryAcctRecordId" separator="," close=")">
|
||||
#{salaryAcctRecordId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.employeeIds != null and param.employeeIds.size()>0">
|
||||
AND t.employee_id IN
|
||||
<foreach collection="param.employeeIds" open="(" item="employeeId" separator="," close=")">
|
||||
#{employeeId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.salarySobIds != null and param.salarySobIds.size()>0">
|
||||
AND t.salary_sob_id IN
|
||||
<foreach collection="param.salarySobIds" open="(" item="salarySobId" separator="," close=")">
|
||||
#{salarySobId}
|
||||
</foreach>
|
||||
</if>
|
||||
</sql>
|
||||
<sql id="SalaryAcctEmployeeParamSql" databaseId="sqlserver">
|
||||
<if test="param.salaryAcctRecordId != null">
|
||||
|
|
@ -786,6 +822,24 @@
|
|||
</if>
|
||||
)
|
||||
</if>
|
||||
<if test="param.salaryAcctRecordIds != null and param.salaryAcctRecordIds.size()>0">
|
||||
AND t.salary_acct_record_id IN
|
||||
<foreach collection="param.salaryAcctRecordIds" open="(" item="salaryAcctRecordId" separator="," close=")">
|
||||
#{salaryAcctRecordId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.employeeIds != null and param.employeeIds.size()>0">
|
||||
AND t.employee_id IN
|
||||
<foreach collection="param.employeeIds" open="(" item="employeeId" separator="," close=")">
|
||||
#{employeeId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.salarySobIds != null and param.salarySobIds.size()>0">
|
||||
AND t.salary_sob_id IN
|
||||
<foreach collection="param.salarySobIds" open="(" item="salarySobId" separator="," close=")">
|
||||
#{salarySobId}
|
||||
</foreach>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<select id="listPage4Reduce" resultMap="SalaryAccEmployeeMap">
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctTaxAgentPO;
|
|||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -80,6 +81,8 @@ public interface SalaryAcctRecordMapper {
|
|||
|
||||
List<SalaryAcctRecordPO> getBackCalcRecordByIds(@Param("collection") Set<Long> salaryAcctIds);
|
||||
|
||||
void updateDate(@Param("id")Long id, @Param("updateTime")Date updateTime);
|
||||
|
||||
|
||||
/**
|
||||
* 获取核算记录和扣缴义务人对应关系
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@
|
|||
<result column="delete_type" property="deleteType"/>
|
||||
<result column="tenant_key" property="tenantKey"/>
|
||||
<result column="back_calc_status" property="backCalcStatus"/>
|
||||
<result column="lock_salary_item_ids" property="lockSalaryItemIds"
|
||||
typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
|
||||
<result column="lock_salary_item_ids" property="lockSalaryItemIds" typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
|
|
@ -149,7 +148,7 @@
|
|||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_acct_record t
|
||||
where delete_type = 0
|
||||
AND back_calc_status = 1
|
||||
AND back_calc_status = 1
|
||||
<if test="collection != null and collection.size()>0">
|
||||
AND id IN
|
||||
<foreach collection="collection" open="(" item="id" separator="," close=")">
|
||||
|
|
@ -423,6 +422,13 @@
|
|||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
<update id="updateDate">
|
||||
UPDATE hrsa_salary_acct_record
|
||||
SET update_time=#{updateTime}
|
||||
WHERE delete_type = 0
|
||||
AND id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
<select id="listAcctTaxAgent" resultType="com.engine.salary.entity.salaryacct.po.SalaryAcctTaxAgentPO">
|
||||
select record.id as salaryAcctRecordId,
|
||||
|
|
|
|||
|
|
@ -1192,9 +1192,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
|
|||
// List<SalaryAcctEmployeePO> accountDetailPOList = data.getList().stream().filter(po -> pageEmployeeIds.contains(po.getEmployeeId())).collect(Collectors.toList());
|
||||
List<Map<String, Object>> records = new ArrayList<>();
|
||||
List<SalaryAcctEmployeePO> accountDetailPOList = data.getList();
|
||||
Map<Long, List<SalaryAcctEmployeePO>> employeeListMap = accountDetailPOList.stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId));
|
||||
Map<Long, List<SalaryAcctEmployeePO>> lastEmployeeListMap = data.getLastList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId));
|
||||
Map<Long, List<SalaryAcctEmployeePO>> sameEmployeeListMap = data.getSameList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId));
|
||||
Map<Long, List<SalaryAcctEmployeePO>> employeeListMap = accountDetailPOList.stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId, LinkedHashMap::new, Collectors.toList()));
|
||||
Map<Long, List<SalaryAcctEmployeePO>> lastEmployeeListMap = data.getLastList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId, LinkedHashMap::new, Collectors.toList()));
|
||||
Map<Long, List<SalaryAcctEmployeePO>> sameEmployeeListMap = data.getSameList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId, LinkedHashMap::new, Collectors.toList()));
|
||||
|
||||
List<Long> empIds = accountDetailPOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList());
|
||||
Map<Long, DataCollectionEmployee> employeeByIdMap = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds).stream().collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, o -> o));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -216,6 +217,8 @@ public interface SalaryAcctRecordService {
|
|||
|
||||
List<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po);
|
||||
|
||||
void updateDate(Long id, Date updateTime);
|
||||
|
||||
/**
|
||||
* 根据薪资核算记录id查询关联的个税扣缴义务人
|
||||
*
|
||||
|
|
|
|||
|
|
@ -618,7 +618,10 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct
|
|||
|
||||
@Override
|
||||
public List<SalaryAcctEmployeePO> listBySalaryStatisticsReportParam(SalaryStatisticsReportDataQueryParam param) {
|
||||
SalaryAcctEmployeePO lambdaQueryChainWrapper = SalaryAcctEmployeePO.builder().build();
|
||||
//排序配置
|
||||
OrderRuleVO orderRule = getSalarySysConfService(user).orderRule();
|
||||
SalaryAcctEmployeeQueryParam lambdaQueryChainWrapper = new SalaryAcctEmployeeQueryParam();
|
||||
lambdaQueryChainWrapper.setOrderRule(orderRule);
|
||||
|
||||
// 个税扣缴义务人
|
||||
// Collection<TaxAgentPO> taxAgentList = getTaxAgentService(user).listAllTaxAgents((long) user.getUID());
|
||||
|
|
@ -687,12 +690,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct
|
|||
if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) {
|
||||
//分片查询
|
||||
List<List<Long>> partition = Lists.partition(salaryAcctRecordIds, 500);
|
||||
List<SalaryAcctEmployeePO> empList = new ArrayList<>();
|
||||
partition.forEach(part -> {
|
||||
lambdaQueryChainWrapper.setSalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
empList.addAll(getSalaryAcctEmployeeMapper().listSome(lambdaQueryChainWrapper));
|
||||
});
|
||||
list = empList;
|
||||
for (List<Long> part : partition) {
|
||||
lambdaQueryChainWrapper.setSalaryAcctRecordIds(part);
|
||||
List<SalaryAcctEmployeePO> pos = getSalaryAcctEmployeeMapper().list(lambdaQueryChainWrapper);
|
||||
list.addAll(pos);
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
// //报表
|
||||
|
|
|
|||
|
|
@ -975,4 +975,9 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
|
|||
}
|
||||
return getSalaryAcctRecordMapper().listAcctTaxAgent(salaryAcctRecordIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDate(Long id, Date updateTime) {
|
||||
getSalaryAcctRecordMapper().updateDate(id,updateTime);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -934,6 +934,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// Thread.sleep(10);
|
||||
getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true);
|
||||
|
||||
//更新薪资核算记录最后操作日期
|
||||
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(),new Date());
|
||||
|
||||
stopWatch.stop();
|
||||
log.info(stopWatch.prettyPrint());
|
||||
|
||||
|
|
@ -1325,7 +1328,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
|
||||
|
|
|
|||
|
|
@ -38,6 +38,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.*;
|
||||
|
|
@ -451,7 +452,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);
|
||||
|
|
|
|||
|
|
@ -44,10 +44,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;
|
||||
|
|
@ -492,10 +489,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() + "月内的工资单"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取、记录首次查看时间
|
||||
|
|
@ -691,12 +696,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;
|
||||
|
|
@ -796,11 +805,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());
|
||||
|
|
@ -816,11 +839,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<>();
|
||||
}
|
||||
|
|
@ -831,8 +852,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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -844,8 +864,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
* @return
|
||||
*/
|
||||
private String getBillTitle(String theme, Date salaryMonth, Long currentEmployeeId) {
|
||||
String yearI18n = SalaryI18nUtil.getI18nLabel(100325, "年");
|
||||
String monthI18n = SalaryI18nUtil.getI18nLabel(100326, "月");
|
||||
String companyName = "";
|
||||
if (currentEmployeeId != null) {
|
||||
ResourceComInfo resourceComInfo = null;
|
||||
|
|
@ -858,9 +876,9 @@ 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))
|
||||
.replace("${salaryYear}", new SimpleDateFormat("yyyy年").format(salaryMonth));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -872,30 +890,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());
|
||||
|
|
@ -919,27 +914,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
if (CollectionUtils.isNotEmpty(employeeInformation.getItems())) {
|
||||
//获取员工信息的字段名和中文描述的map关系
|
||||
SalaryFormulaEmployeeDTO salaryFormulaEmployeeDTO = SalaryFormulaEmployeeDTO.builder().employeeId(simpleEmployee.getEmployeeId())
|
||||
.birthday(simpleEmployee.getBirthday())
|
||||
.departmentId(simpleEmployee.getDepartmentId())
|
||||
.departmentName(simpleEmployee.getDepartmentName())
|
||||
.subcompanyName(simpleEmployee.getSubcompanyName())
|
||||
.email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail())
|
||||
.jobcall(simpleEmployee.getJobcall())
|
||||
.jobcallId(simpleEmployee.getJobcallId())
|
||||
.companystartdate(simpleEmployee.getCompanystartdate())
|
||||
.sex("0".equals(simpleEmployee.getSex()) ? "男" : "女")
|
||||
.mobile(StringUtils.isEmpty(simpleEmployee.getMobile()) ? "" : simpleEmployee.getMobile())
|
||||
.jobtitleName(simpleEmployee.getJobtitleName())
|
||||
.jobtitleId(simpleEmployee.getJobtitleId())
|
||||
.status(simpleEmployee.getStatus() == null ? "" : simpleEmployee.getStatus())
|
||||
.statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(),"1"))).getDefaultLabel())
|
||||
.telephone(StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone())
|
||||
.username(StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername())
|
||||
.workcode(StringUtils.isEmpty(simpleEmployee.getWorkcode()) ? "" : simpleEmployee.getWorkcode())
|
||||
.idNo(Util.null2String(simpleEmployee.getIdNo()))
|
||||
.taxAgentName(taxAgentName)
|
||||
.build();
|
||||
SalaryFormulaEmployeeDTO salaryFormulaEmployeeDTO = SalaryFormulaEmployeeDTO.builder().employeeId(simpleEmployee.getEmployeeId()).birthday(simpleEmployee.getBirthday()).departmentId(simpleEmployee.getDepartmentId()).departmentName(simpleEmployee.getDepartmentName()).subcompanyName(simpleEmployee.getSubcompanyName()).subcompanyId(simpleEmployee.getSubcompanyid()).email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail()).jobcall(simpleEmployee.getJobcall()).jobcallId(simpleEmployee.getJobcallId()).companystartdate(simpleEmployee.getCompanystartdate()).sex("0".equals(simpleEmployee.getSex()) ? "男" : "女").mobile(StringUtils.isEmpty(simpleEmployee.getMobile()) ? "" : simpleEmployee.getMobile()).jobtitleName(simpleEmployee.getJobtitleName()).jobtitleId(simpleEmployee.getJobtitleId()).status(simpleEmployee.getStatus() == null ? "" : simpleEmployee.getStatus()).statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(), "1"))).getDefaultLabel()).telephone(StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone()).username(StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername()).workcode(StringUtils.isEmpty(simpleEmployee.getWorkcode()) ? "" : simpleEmployee.getWorkcode()).idNo(Util.null2String(simpleEmployee.getIdNo())).taxAgentName(taxAgentName).build();
|
||||
List<SalaryTemplateSalaryItemListDTO> items = employeeInformation.getItems();
|
||||
Set<Map.Entry<String, String>> entries = employeeField.entrySet();
|
||||
for (SalaryTemplateSalaryItemListDTO e : items) {
|
||||
|
|
@ -1008,8 +983,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() : "");
|
||||
});
|
||||
|
||||
|
|
@ -1026,8 +1000,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;
|
||||
|
|
@ -1124,19 +1097,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;
|
||||
}
|
||||
|
|
@ -1152,8 +1121,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("工资发放范围内没有匹配员工");
|
||||
}
|
||||
|
|
@ -1404,8 +1372,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("工资撤回范围内没有匹配的员工");
|
||||
}
|
||||
|
|
@ -1578,7 +1545,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) {
|
||||
|
|
@ -1679,8 +1646,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();
|
||||
|
|
@ -1712,13 +1678,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;
|
||||
|
|
@ -1812,8 +1772,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);
|
||||
}
|
||||
|
||||
|
|
@ -1914,18 +1873,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);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -1946,10 +1901,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