薪资档案

This commit is contained in:
钱涛 2022-04-01 18:25:24 +08:00
parent 77229d18a0
commit 126444b9f3
16 changed files with 1273 additions and 287 deletions

View File

@ -5,6 +5,8 @@ import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam;
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.mapper.archive.SalaryArchiveItemMapper;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.PageUtil;
import org.apache.ibatis.session.SqlSession;
import weaver.conn.mybatis.MyBatisFactory;
@ -67,8 +69,8 @@ public class SalaryArchiveItemBiz {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class);
mapper.deleteBatchIds(effectiveSalaryItemDels);
sqlSession.commit();
mapper.deleteBatchIds(effectiveSalaryItemDels);
sqlSession.commit();
} finally {
sqlSession.close();
}
@ -101,7 +103,7 @@ public class SalaryArchiveItemBiz {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class);
return mapper.salaryItemAdjustRecordList(queryParam,salaryItemIds);
return mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
} finally {
sqlSession.close();
}
@ -117,4 +119,17 @@ public class SalaryArchiveItemBiz {
sqlSession.close();
}
}
public PageInfo<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListPage(SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize());
SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class);
List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
PageInfo<SalaryItemAdjustRecordListDTO> page = new PageInfo<SalaryItemAdjustRecordListDTO>(salaryItemAdjustRecordListDTOS);
return page;
} finally {
sqlSession.close();
}
}
}

View File

@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
/**
* @Description: 个税扣缴义务人调整
* @Author: wangxiangzhong
@ -17,9 +19,9 @@ import lombok.NoArgsConstructor;
//个税扣缴义务人调整")
public class SalaryArchiveTaxAgentFormDTO {
//薪资档案id")
//薪资档案id
private Long salaryArchiveId;
//个税扣缴义务人调整")
// private WeaForm salaryArchiveTaxAgentForm;
//个税扣缴义务人调整
private Map<String,Object> salaryArchiveTaxAgentForm;
}

View File

@ -5,11 +5,16 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Description: 薪资项目调整记录列表
* @Author: wangxiangzhong
* @Date: 2021/11/1 16:34
*/
* 薪资项目调整记录列表
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@ -21,10 +26,10 @@ import lombok.NoArgsConstructor;
//}, tableType = WeaTableTypeEnum.NONE)
public class SingleSalaryItemAdjustRecordListDTO {
// //主键id")
// //主键id")
// @JsonSerialize(using = ToStringSerializer.class)
private Long id;
//
//
// //调整项目")
// @WeaFormat(
// label = "调整项目",
@ -32,7 +37,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "20%")
// )
private String adjustItem;
//
//
// //调整前")
// @WeaFormat(
// label = "调整前",
@ -40,23 +45,23 @@ public class SingleSalaryItemAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "20%")
// )
private String adjustBefore;
//
//
// //调整后")
// @WeaFormat(
// label = "调整后",
// labelId = 85434,
// tableColumn = @TableColumn(width = "20%")
// )
// private String adjustAfter;
//
private String adjustAfter;
//
// //调整原因")
// @WeaFormat(
// label = "调整原因",
// labelId = 85431,
// tableColumn = @TableColumn(width = "10%")
// )
// private String adjustReason;
//
private String adjustReason;
//
// //生效日期")
// @WeaFormat(
// label = "生效日期",
@ -64,16 +69,16 @@ public class SingleSalaryItemAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "15%")
// )
// @JsonFormat(pattern = "yyyy-MM-dd")
// private LocalDate effectiveTime;
//
private Date effectiveTime;
//
// //操作人")
// @WeaFormat(
// label = "操作人",
// labelId = 85435,
// tableColumn = @TableColumn(width = "10%")
// )
// private String operator;
//
private String operator;
//
// //操作时间")
// @WeaFormat(
// label = "操作时间",
@ -81,25 +86,25 @@ public class SingleSalaryItemAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "20%")
// )
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private Date operateTime;
//
private Date operateTime;
//
// //备注")
// @WeaFormat(
// label = "备注",
// labelId = 84961,
// tableColumn = @TableColumn(width = "10%")
// )
// private String description;
//
private String description;
//
// /**
// * 薪资档案id
// */
// @JsonIgnore
// private Long salaryArchiveId;
//
private Long salaryArchiveId;
//
// /**
// * 薪资项目id
// */
// @JsonIgnore
// private Long salaryItemId;
private Long salaryItemId;
}

View File

@ -1,5 +1,10 @@
package com.engine.salary.entity.salaryarchive.dto;
import com.cloudstore.eccom.pc.table.WeaTableType;
import com.engine.salary.annotation.SalaryTable;
import com.engine.salary.annotation.SalaryTableColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
@ -7,119 +12,73 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Description: 个税扣缴义务人调整记录列表
* @Author: wangxiangzhong
* @Date: 2021/11/1 16:34
*/
* 个税扣缴义务人调整记录列表
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
//个税扣缴义务人调整记录列表")
//@TableOperates(tableType = WeaTableTypeEnum.CHECKBOX)
@SalaryTable(pageId = "a4f85287-e3f9-4275-1567-7d06e54y6rj8", tableType = WeaTableType.CHECKBOX)
public class TaxAgentAdjustRecordListDTO {
//主键id")
@JsonSerialize(using = ToStringSerializer.class)
@SalaryTableColumn(column = "id", display = false)
private Long id;
// /**
// * 人员信息表的主键id
// */
// private Long employeeId;
//
// //姓名")
// @WeaFormat(
// label = "姓名",
// labelId = 85429,
// tableColumn = @TableColumn(width = "100")
// )
// private String username;
//
// //部门")
// @WeaFormat(
// label = "部门",
// labelId = 86185,
// tableColumn = @TableColumn(width = "100")
// )
// private String departmentName;
//
// //员工状态")
// @WeaFormat(
// label = "员工状态",
// labelId = 86187,
// tableColumn = @TableColumn(width = "100")
// )
// private String employeeStatus;
//
// //调整前")
// @WeaFormat(
// label = "调整前",
// labelId = 85433,
// tableColumn = @TableColumn(width = "100")
// )
// private String adjustBefore;
//
// //调整后")
// @WeaFormat(
// label = "调整后",
// labelId = 85434,
// tableColumn = @TableColumn(width = "100")
// )
// private String adjustAfter;
//
// //调整原因")
// @WeaFormat(
// label = "调整原因",
// labelId = 85431,
// tableColumn = @TableColumn(width = "100")
// )
// private String adjustReason;
//
// //生效日期")
// @WeaFormat(
// label = "生效日期",
// labelId = 85904,
// tableColumn = @TableColumn(width = "100")
// )
// @JsonFormat(pattern = "yyyy-MM-dd")
// private LocalDate effectiveTime;
//
// //操作人")
// @WeaFormat(
// label = "操作人",
// labelId = 85435,
// tableColumn = @TableColumn(width = "100")
// )
// private String operator;
//
// //操作时间")
// @WeaFormat(
// label = "操作时间",
// labelId = 85436,
// tableColumn = @TableColumn(width = "150")
// )
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private Date operateTime;
//
// //备注")
// @WeaFormat(
// label = "备注",
// labelId = 84961,
// tableColumn = @TableColumn(width = "100")
// )
// private String description;
//
// /**
// * 薪资档案id
// */
// @JsonIgnore
// private Long salaryArchiveId;
//
// /**
// * 个税扣缴义务人id
// */
// @JsonIgnore
// private Long taxAgentId;
/**
* 人员信息表的主键id
*/
private Long employeeId;
@SalaryTableColumn(text = "姓名", width = "10%", column = "username")
private String username;
@SalaryTableColumn(text = "部门", width = "10%", column = "departmentName")
private String departmentName;
@SalaryTableColumn(text = "员工状态", width = "10%", column = "employeeStatus")
private String employeeStatus;
@SalaryTableColumn(text = "调整前", width = "10%", column = "adjustBefore")
private String adjustBefore;
@SalaryTableColumn(text = "调整后", width = "10%", column = "adjustAfter")
private String adjustAfter;
@SalaryTableColumn(text = "调整原因", width = "10%", column = "adjustReason")
private String adjustReason;
@SalaryTableColumn(text = "生效日期", width = "10%", column = "effectiveTime")
private Date effectiveTime;
@SalaryTableColumn(text = "操作人", width = "10%", column = "operator")
private String operator;
@SalaryTableColumn(text = "操作时间", width = "10%", column = "operateTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date operateTime;
@SalaryTableColumn(text = "备注", width = "10%", column = "description")
private String description;
/**
* 薪资档案id
*/
private Long salaryArchiveId;
/**
* 个税扣缴义务人id
*/
@JsonIgnore
private Long taxAgentId;
}

View File

@ -19,6 +19,8 @@ public class SalaryArchiveTaxAgentQueryParam {
*/
private Date effectiveTime;
Long salaryArchiveId;
Collection<Long> salaryArchivesIds;
Collection<Long> employeeIds;

View File

@ -8,7 +8,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.util.Date;
/**
* 个税扣缴义务人调整保存参数
@ -29,15 +29,18 @@ public class SalaryArchiveTaxAgentSaveParam {
private Long salaryArchiveId;
//生效时间")
private LocalDate effectiveTime;
private Date effectiveTime;
//调整原因")
private SalaryArchiveTaxAgentAdjustReasonEnum adjustReason;
/**
* 调整原因
* @see SalaryArchiveTaxAgentAdjustReasonEnum
*/
private String adjustReason;
//个税扣缴义务人id")
private Long taxAgentId;
public static void checkParam(SalaryArchiveTaxAgentSaveParam saveParam, Long employeeId, String tenantKey) {
public static void checkParam(SalaryArchiveTaxAgentSaveParam saveParam) {
if (saveParam.getSalaryArchiveId() == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 100305, "薪资档案id必传"));
}

View File

@ -1,6 +1,8 @@
package com.engine.salary.mapper.archive;
import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import org.apache.ibatis.annotations.Param;
@ -8,74 +10,98 @@ import java.util.List;
public interface SalaryArchiveTaxAgentMapper {
/**
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalaryArchiveTaxAgentPO> listAll();
List<SalaryArchiveTaxAgentPO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<SalaryArchiveTaxAgentPO> listSome(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalaryArchiveTaxAgentPO getById(Long id);
/**
SalaryArchiveTaxAgentPO getById(Long id);
/**
* 新增忽略null字段
*
* @param salaryArchiveTaxAgent 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
int insertIgnoreNull(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
* 修改修改所有字段
*
* @param salaryArchiveTaxAgent 修改的记录
* @return 返回影响行数
*/
int update(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
int update(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
* 修改忽略null字段
*
* @param salaryArchiveTaxAgent 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
int updateIgnoreNull(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
* 删除记录
*
* @param salaryArchiveTaxAgent 待删除的记录
* @return 返回影响行数
*/
int delete(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
int delete(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
List<SalaryArchiveTaxAgentPO> listByParam(@Param("param") SalaryArchiveTaxAgentQueryParam build);
List<SalaryArchiveTaxAgentPO> listByParam(@Param("param") SalaryArchiveTaxAgentQueryParam build);
void deleteBySalaryArchiveId(@Param("collection")List<Long> salaryArchiveIds);
void deleteBySalaryArchiveId(@Param("collection") List<Long> salaryArchiveIds);
List<SalaryArchiveTaxAgentPO> getEffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam build);
List<SalaryArchiveTaxAgentPO> getEffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam build);
List<SalaryArchiveTaxAgentPO> getIneffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam build);
List<SalaryArchiveTaxAgentPO> getIneffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam build);
void deleteBatchIds(List<Long> ids);
void deleteBatchIds(List<Long> ids);
/**
* 批量插入
* @param salaryArchiveTaxAgentSaves
*/
void batchInsert(@Param("collection") List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgentSaves);
/**
* 批量插入
*
* @param salaryArchiveTaxAgentSaves
*/
void batchInsert(@Param("collection") List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgentSaves);
/**
* 分页查询薪资项目调整记录列表
*
* @param page
* @param param
* @param tenantKey
* @return
*/
// IPage<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(Page<TaxAgentAdjustRecordListDTO> page, @Param("param") TaxAgentAdjustRecordQueryParam param, @Param("tenantKey") String tenantKey);
/**
* 查询薪资项目调整记录列表
*
* @param param
* @return
*/
List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(@Param("param") TaxAgentAdjustRecordQueryParam param);
List<SalaryArchiveTaxAgentPO> getTaxAgentLtTimeBySalaryArchiveId(SalaryArchiveTaxAgentQueryParam build);
List<SalaryArchiveTaxAgentPO> getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO build);
}

View File

@ -333,6 +333,9 @@
FROM hrsa_salary_archive_tax_agent t
WHERE delete_type = 0
AND t.effective_time &lt;= #{effectiveTime}
<if test="salaryArchiveId != null">
AND t.salary_archive_id = #{salaryArchiveId}
</if>
ORDER BY t.effective_time DESC
</select>
@ -342,7 +345,10 @@
<include refid="baseColumns"/>
FROM hrsa_salary_archive_tax_agent t
WHERE delete_type = 0
AND t.effective_time &gt;= #{effectiveTime}
AND t.effective_time &gt; #{effectiveTime}
<if test="salaryArchiveId != null">
AND t.salary_archive_id = #{salaryArchiveId}
</if>
ORDER BY t.effective_time DESC
</select>
@ -436,5 +442,289 @@
</foreach>
</insert>
<select id="taxAgentAdjustRecordList"
resultType="com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO">
SELECT
<include refid="taxAgentAdjustRecordColumn"/>
FROM hrsa_salary_archive_tax_agent t1
LEFT JOIN hrmresource e ON e.id = t1.employee_id
LEFT JOIN hrmdepartment d ON d.id = e.departmentid
LEFT JOIN hrmresource o ON o.id = t1.operator
WHERE
t1.delete_type = 0
AND e.status != '7'
<!-- 关键字(姓名、部门、个税扣缴义务人) -->
<if test="param.keyword != null and param.keyword != ''">
AND (
e.lastname like CONCAT('%',#{param.keyword},'%')
OR d.departmentname like CONCAT('%',#{param.keyword},'%')
-- OR (t1.adjust_before like CONCAT('%',#{param.keyword},'%') OR t1.adjust_after like
CONCAT('%',#{param.keyword},'%'))
)
</if>
<include refid="paramSql"/>
ORDER BY t1.effective_time DESC,t1.id DESC
</select>
<select id="taxAgentAdjustRecordList"
resultType="com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO" databaseId="oracle">
SELECT
<include refid="taxAgentAdjustRecordColumn"/>
FROM hrsa_salary_archive_tax_agent t1
LEFT JOIN hrmresource e ON e.id = t1.employee_id
LEFT JOIN hrmdepartment d ON d.id = e.departmentid
LEFT JOIN hrmresource o ON o.id = t1.operator
WHERE
t1.delete_type = 0
AND e.status != '7'
<if test="param.keyword != null and param.keyword != ''">
AND (
e.lastname like '%'||#{param.keyword}||'%'
OR d.departmentname like '%'||#{param.keyword}||'%'
-- OR (t1.adjust_before like '%'||#{param.keyword}||'%' OR t1.adjust_after like '%'||#{param.keyword}||'%' )
)
</if>
<include refid="paramSql"/>
ORDER BY t1.effective_time DESC,t1.id DESC
</select>
<select id="taxAgentAdjustRecordList"
resultType="com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO" databaseId="sqlserver">
SELECT
<include refid="taxAgentAdjustRecordColumn"/>
FROM hrsa_salary_archive_tax_agent t1
LEFT JOIN hrmresource e ON e.id = t1.employee_id
LEFT JOIN hrmdepartment d ON d.id = e.departmentid
LEFT JOIN hrmresource o ON o.id = t1.operator
WHERE
t1.delete_type = 0
AND e.status != '7'
<if test="param.keyword != null and param.keyword != ''">
AND (
e.lastname like '%'+#{param.keyword}+'%'
OR d.departmentname like '%'+#{param.keyword}+'%'
-- OR (t1.adjust_before like '%'+#{param.keyword}+'%' OR t1.adjust_after like '%'+#{param.keyword}+'%' )
)
</if>
<include refid="paramSql"/>
ORDER BY t1.effective_time DESC,t1.id DESC
</select>
<sql id="taxAgentAdjustRecordColumn">
t1
.
id
,
t1.employee_id,
e.lastname as username,
e.status AS employeeStatus,
d.departmentname AS departmentName,
t1.effective_time,
t1.adjust_reason,
t1.tax_agent_id AS adjust_after,
o.lastname AS operator,
t1.operate_time,
t1.description,
t1.salary_archive_id,
t1.tax_agent_id
</sql>
<sql id="paramSql">
<if test="param.ids != null and param.ids.size()>0">
AND t1.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<!-- 薪资档案id -->
<if test="param.salaryArchiveId != null">
AND t1.salary_archive_id = #{param.salaryArchiveId}
</if>
<!-- 姓名 -->
<if test="param.username != null and param.username != ''">
AND e.lastname like CONCAT('%',#{param.username},'%')
</if>
<!-- 岗位 -->
<if test="param.positionIds != null and param.positionIds.size()>0">
AND e.position IN
<foreach collection="param.positionIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<!-- 状态 -->
<if test="param.userstatus != null and param.userstatus != ''">
AND e.status = #{param.userstatus}
</if>
<!-- 部门 -->
<if test="param.departmentIds != null and param.departmentIds.size()>0">
AND d.id IN
<foreach collection="param.departmentIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<!-- 调整原因 -->
<if test="param.adjustReason != null and param.adjustReason != ''">
AND t1.adjust_reason = #{param.adjustReason}
</if>
<!-- 生效日期 -->
<if test="param.effectiveTime != null and param.effectiveTime.size() == 2">
AND (t1.effective_time BETWEEN #{param.effectiveTime[0]} AND #{param.effectiveTime[1]})
</if>
<!-- 操作日期 -->
<if test="param.operateTime != null and param.operateTime.size() == 2">
AND (t1.operate_time BETWEEN CONCAT(#{param.operateTime[0]},' 00:00:00') AND
CONCAT(#{param.operateTime[1]},' 23:59:59'))
</if>
<!-- 操作人 -->
<if test="param.operatorIds != null and param.operatorIds.size()>0">
AND t1.operator IN
<foreach collection="param.operatorIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<!-- 备注 -->
<if test="param.description != null and param.description != ''">
AND t1.description like CONCAT('%',#{param.description},'%')
</if>
</sql>
<sql id="paramSql" databaseId="oracle">
<if test="param.ids != null and param.ids.size()>0">
AND t1.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.salaryArchiveId != null">
AND t1.salary_archive_id = #{param.salaryArchiveId}
</if>
<if test="param.username != null and param.username != ''">
AND e.lastname like '%'||#{param.username}||'%'
</if>
<if test="param.positionIds != null and param.positionIds.size()>0">
AND e.position IN
<foreach collection="param.positionIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userstatus != null and param.userstatus != ''">
AND e.status = #{param.userstatus}
</if>
<if test="param.departmentIds != null and param.departmentIds.size()>0">
AND d.id IN
<foreach collection="param.departmentIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.adjustReason != null and param.adjustReason != ''">
AND t1.adjust_reason = #{param.adjustReason}
</if>
<if test="param.effectiveTime != null and param.effectiveTime.size() == 2">
AND (t1.effective_time BETWEEN #{param.effectiveTime[0]} AND #{param.effectiveTime[1]})
</if>
<if test="param.operateTime != null and param.operateTime.size() == 2">
AND (t1.operate_time BETWEEN #{param.operateTime[0]}||' 00:00:00' AND #{param.operateTime[1]}||' 23:59:59' )
</if>
<if test="param.operatorIds != null and param.operatorIds.size()>0">
AND t1.operator IN
<foreach collection="param.operatorIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.description != null and param.description != ''">
AND t1.description like '%'||#{param.description}||'%'
</if>
</sql>
<sql id="paramSql" databaseId="sqlserver">
<if test="param.ids != null and param.ids.size()>0">
AND t1.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.salaryArchiveId != null">
AND t1.salary_archive_id = #{param.salaryArchiveId}
</if>
<if test="param.username != null and param.username != ''">
AND e.lastname like '%'+#{param.username}+'%'
</if>
<if test="param.positionIds != null and param.positionIds.size()>0">
AND e.position IN
<foreach collection="param.positionIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userstatus != null and param.userstatus != ''">
AND e.status = #{param.userstatus}
</if>
<if test="param.departmentIds != null and param.departmentIds.size()>0">
AND d.id IN
<foreach collection="param.departmentIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.adjustReason != null and param.adjustReason != ''">
AND t1.adjust_reason = #{param.adjustReason}
</if>
<if test="param.effectiveTime != null and param.effectiveTime.size() == 2">
AND (t1.effective_time BETWEEN #{param.effectiveTime[0]} AND #{param.effectiveTime[1]})
</if>
<if test="param.operateTime != null and param.operateTime.size() == 2">
AND (t1.operate_time BETWEEN #{param.operateTime[0]}+' 00:00:00' AND #{param.operateTime[1]}+' 23:59:59' )
</if>
<if test="param.operatorIds != null and param.operatorIds.size()>0">
AND t1.operator IN
<foreach collection="param.operatorIds" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.description != null and param.description != ''">
AND t1.description like '%'+#{param.description}+'%'
</if>
</sql>
<select id="getTaxAgentLtTimeBySalaryArchiveId" resultMap="BaseResultMap"
parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_salary_archive_tax_agent t
WHERE delete_type = 0
AND t.effective_time &lt; #{effectiveTime}
<if test="salaryArchiveId != null">
AND t.salary_archive_id = #{salaryArchiveId}
</if>
ORDER BY t.effective_time DESC
</select>
<select id="getAdjustBeforeTaxAgent" resultMap="BaseResultMap"
parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_salary_archive_tax_agent t
WHERE delete_type = 0
AND t.effective_time &lt; #{effectiveTime}
AND t.salary_archive_id = #{salaryArchiveId}
ORDER BY t.effective_time DESC
</select>
</mapper>

View File

@ -6,6 +6,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustBeforeParam;
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.util.page.PageInfo;
import java.util.List;
@ -73,7 +74,7 @@ public interface SalaryArchiveItemService {
* @param tenantKey
* @return
*/
// Page<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListPage(Page<SalaryItemAdjustRecordListDTO> page, SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds, String tenantKey);
PageInfo<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListPage( SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds);
/**
* 薪资调整记录列表

View File

@ -0,0 +1,86 @@
package com.engine.salary.service;
import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import java.util.List;
/**
* 薪资档案-个税扣缴义务人
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public interface SalaryArchiveTaxAgentService {
/**
* 获取已经生效的个税扣缴义务人
*
* @param salaryArchiveId
* @return
*/
SalaryArchiveTaxAgentPO getEffectiveTaxAgent(Long salaryArchiveId);
/**
* 获取单个薪资档案个税扣缴义务人记录
*
* @param salaryArchiveTaxAgentId
* @return
*/
SalaryArchiveTaxAgentPO getById(Long salaryArchiveTaxAgentId);
/**
* 获取调整前的个税扣缴义务人
*
* @param salaryArchiveTaxAgent
* @return
*/
SalaryArchiveTaxAgentPO getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);
/**
* 个税扣缴义务人的调整记录分页
*
* @param page
* @param queryParam
* @return
*/
// Page<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(Page<TaxAgentAdjustRecordListDTO> page, TaxAgentAdjustRecordQueryParam queryParam);
/**
* 个税扣缴义务人的调整记录
*
* @param queryParam
* @return
*/
List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam);
/**
* 保存个税扣缴义务人调整
*
* @param saveParam
* @return
*/
String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam);
/**
* 删除个税扣缴义务人调整
*
* @param salaryArchiveTaxAgentId
* @return
*/
String deleteTaxAgent(Long salaryArchiveTaxAgentId);
/**
* 导出-个税扣缴义务人的调整记录列表
*
* @param map
* @param username
* @param eteamsId
* @param queryParam
*/
// void exportAdjustRecordList(Map<String, Object> map, String username, String eteamsId, TaxAgentAdjustRecordQueryParam queryParam);
}

View File

@ -13,6 +13,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalaryArchiveItemService;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.valid.ValidUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
@ -250,11 +251,10 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
}
// @Override
// public Page<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListPage(Page<SalaryItemAdjustRecordListDTO> page, SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds, String tenantKey) {
// salaryArchiveItemMapper.salaryItemAdjustRecordList(page, queryParam, salaryItemIds, tenantKey);
// return page;
// }
@Override
public PageInfo<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListPage(SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds) {
return salaryArchiveItemMapper.salaryItemAdjustRecordListPage(queryParam, salaryItemIds);
}
@Override
public List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds) {

View File

@ -0,0 +1,281 @@
package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.archive.SalaryArchiveMapper;
import com.engine.salary.mapper.archive.SalaryArchiveTaxAgentMapper;
import com.engine.salary.service.SalaryArchiveTaxAgentService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.SalaryI18nUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.List;
/**
* 薪资档案-个税扣缴义务人
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryArchiveTaxAgentService {
private static final Logger log = LoggerFactory.getLogger(SalaryArchiveTaxAgentServiceImpl.class);
private SalaryArchiveMapper salaryArchiveMapper;
private SalaryArchiveTaxAgentMapper salaryArchiveTaxAgentMapper;
private TaxAgentService taxAgentService;
// private SalaryBatchService salaryBatchService;
@Override
public SalaryArchiveTaxAgentPO getById(Long salaryArchiveTaxAgentId) {
return salaryArchiveTaxAgentMapper.getById(salaryArchiveTaxAgentId);
}
// @Override
// public Page<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(Page<TaxAgentAdjustRecordListDTO> page, TaxAgentAdjustRecordQueryParam queryParam, String tenantKey) {
// salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(page, queryParam, tenantKey);
// return page;
// }
@Override
public List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
return salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam);
}
/**
* 获取未生效
*
* @param salaryArchiveId
* @return
*/
private SalaryArchiveTaxAgentPO getIneffectiveTaxAgent(Long salaryArchiveId) {
List<SalaryArchiveTaxAgentPO> ineffectiveTaxAgentList = salaryArchiveTaxAgentMapper.getIneffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam.builder().salaryArchiveId(salaryArchiveId).effectiveTime(new Date()).build());
return CollectionUtils.isNotEmpty(ineffectiveTaxAgentList) ? ineffectiveTaxAgentList.get(0) : null;
}
/**
* 获取当前已生效
*
* @param salaryArchiveId
* @return
*/
@Override
public SalaryArchiveTaxAgentPO getEffectiveTaxAgent(Long salaryArchiveId) {
List<SalaryArchiveTaxAgentPO> effectiveTaxAgentList = salaryArchiveTaxAgentMapper.getEffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam.builder().salaryArchiveId(salaryArchiveId).effectiveTime(new Date()).build());
return CollectionUtils.isNotEmpty(effectiveTaxAgentList) ? effectiveTaxAgentList.get(0) : null;
}
@Override
public String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam) {
// 校验参数
SalaryArchiveTaxAgentSaveParam.checkParam(saveParam);
// 薪资档案
SalaryArchivePO salaryArchive = salaryArchiveMapper.getById(saveParam.getSalaryArchiveId());
// 获取当前已生效
SalaryArchiveTaxAgentPO effectiveTaxAgent = getEffectiveTaxAgent(saveParam.getSalaryArchiveId());
// 获取当前已生效之前的
List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgents = Lists.newArrayList();
if (effectiveTaxAgent != null) {
salaryArchiveTaxAgents = salaryArchiveTaxAgentMapper.getTaxAgentLtTimeBySalaryArchiveId(
SalaryArchiveTaxAgentQueryParam
.builder()
.salaryArchiveId(saveParam.getSalaryArchiveId())
.effectiveTime(effectiveTaxAgent.getEffectiveTime())
.build());
}
// 获取未生效数据
SalaryArchiveTaxAgentPO ineffectiveTaxAgent = getIneffectiveTaxAgent(saveParam.getSalaryArchiveId());
// 待保存生效时间
Date saveEffectiveTime = saveParam.getEffectiveTime();
// 当天
Date today = new Date();
// 1.检验是否可以调整
if (effectiveTaxAgent != null) {
// 当前已经生效的时间
Date effectiveTime = effectiveTaxAgent.getEffectiveTime();
// 1.1 如果早于<当前已生效
if (saveEffectiveTime.before(effectiveTime)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100429, "生效日期不可早于当前已生效的调整日期"));
// 1.2 如果等于当前已生效
} else if (saveEffectiveTime.equals(effectiveTime)) {
if (CollectionUtils.isNotEmpty(salaryArchiveTaxAgents) && salaryArchiveTaxAgents.get(0).getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"));
}
if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"));
}
// 1.3 如果>已经生效且<=今天
} else if (saveEffectiveTime.after(effectiveTime) && !saveEffectiveTime.after(today)) {
if (effectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"));
}
if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"));
}
// 1.4 如果>今天
} else if (saveEffectiveTime.after(today) && effectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"));
}
} else if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"));
}
// 2.数据处理
// 2.数据处理,有的就先删后增
if (effectiveTaxAgent != null && saveEffectiveTime.equals(effectiveTaxAgent.getEffectiveTime())) {
salaryArchiveTaxAgentMapper.delete(SalaryArchiveTaxAgentPO.builder().id(effectiveTaxAgent.getId()).build());
}
if (ineffectiveTaxAgent != null && saveEffectiveTime.after(today)) {
salaryArchiveTaxAgentMapper.delete(SalaryArchiveTaxAgentPO.builder().id(ineffectiveTaxAgent.getId()).build());
}
insertTaxAgent(salaryArchive, saveParam);
// 3.todo 日志处理
return StringUtils.EMPTY;
}
/**
* 插入
*
* @param salaryArchive
* @param saveParam
*/
private void insertTaxAgent(SalaryArchivePO salaryArchive, SalaryArchiveTaxAgentSaveParam saveParam) {
long employeeId = user.getUID();
Date now = new Date();
SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = SalaryArchiveTaxAgentPO.builder()
// .id(IdGenerator.generate())
.salaryArchiveId(saveParam.getSalaryArchiveId())
.employeeId(salaryArchive.getEmployeeId())
.effectiveTime(saveParam.getEffectiveTime())
.adjustReason(saveParam.getAdjustReason())
// 调整后
.taxAgentId(saveParam.getTaxAgentId())
.operator(employeeId)
.operateTime(now)
.createTime(now)
.updateTime(now)
.creator(employeeId)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
salaryArchiveTaxAgentMapper.insertIgnoreNull(salaryArchiveTaxAgent);
}
@Override
public String deleteTaxAgent(Long salaryArchiveTaxAgentId) {
SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = salaryArchiveTaxAgentMapper.getById(salaryArchiveTaxAgentId);
if (salaryArchiveTaxAgent == null) {
return StringUtils.EMPTY;
}
if (salaryArchiveTaxAgent.getEffectiveTime().after(new Date())) {
salaryArchiveTaxAgent.setDeleteType(1);
// 删除未生效数据
salaryArchiveTaxAgentMapper.delete(salaryArchiveTaxAgent);
}
return StringUtils.EMPTY;
}
// @Override
// public void exportAdjustRecordList(Map<String, Object> map, String username, String eteamsId, TaxAgentAdjustRecordQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) {
// List<ExcelSheetData> sheetList = new ArrayList<>();
//
// ExcelSheetData excelSheetData = new ExcelSheetData();
// // 1.工作簿名称
// String nameI18n = SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 99978, "个税扣缴义务人调整记录");
// excelSheetData.setSheetName(nameI18n);
// String[] header = {
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85429, "姓名"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 86187, "员工状态"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 86185, "部门"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85433, "调整前"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85434, "调整后"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85431, "调整原因"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85904, "生效日期"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85435, "操作人"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85436, "操作时间"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 84961, "备注")
// };
// // 2.表头
// excelSheetData.setHeaders(Collections.singletonList(header));
//
// // 获取记录
// List<TaxAgentAdjustRecordListDTO> list = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam, currentTenantKey);
// List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build(), currentTenantKey);
// // 个税扣缴义务人
// Collection<TaxAgentListDTO> taxAgentList = taxAgentService.findAll(currentTenantKey);
// // 人员信息赋值
// list.forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
// listAll.removeIf(a -> a.getId().equals(m.getId()));
// }
// Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
// Optional<TaxAgentListDTO> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
// Optional<TaxAgentListDTO> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
// m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
//
// m.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(m.getEmployeeStatus(), currentEmployeeId, currentTenantKey));
// m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason(), currentEmployeeId, currentTenantKey));
// });
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// List<List<Object>> rows = new ArrayList<>();
// for (TaxAgentAdjustRecordListDTO dto : list) {
// List<Object> row = new ArrayList<>();
// row.add(dto.getUsername());
// row.add(dto.getEmployeeStatus());
// row.add(dto.getDepartmentName());
// row.add(dto.getAdjustBefore());
// row.add(dto.getAdjustAfter());
// row.add(dto.getAdjustReason());
// row.add(dto.getEffectiveTime() + "");
// row.add(dto.getOperator());
// row.add(format.format(dto.getOperateTime()));
// row.add(dto.getDescription());
// rows.add(row);
// }
// // 3.表数据
// excelSheetData.setRows(rows);
//
// sheetList.add(excelSheetData);
//
// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder()
// .bizId(map.get("biz").toString())
// .flag(true)
// .userId(currentEmployeeId)
// .eteamsId(eteamsId)
// .tenantKey(currentTenantKey)
// .operator(username)
// .module(map.get("module").toString())
// .fileName(nameI18n + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now()))
// .handlerName(map.get("function").toString())
// .dataType(nameI18n)
// .function(map.get("function").toString()).build(), sheetList);
// }
@Override
public SalaryArchiveTaxAgentPO getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent) {
List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgents = salaryArchiveTaxAgentMapper.getAdjustBeforeTaxAgent(
SalaryArchiveTaxAgentPO
.builder()
.salaryArchiveId(salaryArchiveTaxAgent.getSalaryArchiveId())
.effectiveTime(salaryArchiveTaxAgent.getEffectiveTime())
.build());
return CollectionUtils.isNotEmpty(salaryArchiveTaxAgents) ? salaryArchiveTaxAgents.get(0) : null;
}
}

View File

@ -15,6 +15,9 @@ public class PageInfo<T> extends com.github.pagehelper.PageInfo<T> {
List<Column> columns = new ArrayList<>();
List<DataSource> dataSource = new ArrayList<>();
public PageInfo() {
}
public PageInfo(List<T> list) {
super(list);
}

View File

@ -3,10 +3,13 @@ package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.*;
import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.wrapper.SalaryArchiveItemWrapper;
import com.engine.salary.wrapper.SalaryArchiveTaxAgentWrapper;
import com.engine.salary.wrapper.SalaryArchiveWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.apache.commons.lang3.StringUtils;
@ -17,10 +20,7 @@ import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@ -48,7 +48,10 @@ public class SalaryArchiveController {
private SalaryArchiveItemWrapper getSalaryArchiveItemWrapper(User user) {
return ServiceUtil.getService(SalaryArchiveItemWrapper.class, user);
}
// private SalaryArchiveTaxAgentWrapper salaryArchiveTaxAgentWrapper;
private SalaryArchiveTaxAgentWrapper getSalaryArchiveTaxAgentWrapper(User user) {
return ServiceUtil.getService(SalaryArchiveTaxAgentWrapper.class, user);
}
// /******** 薪资档案主表 start ***********************************************************************************************/
@ -64,7 +67,7 @@ public class SalaryArchiveController {
@Produces(MediaType.APPLICATION_JSON)
public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveQueryParam, Map<String,Object>>().run(getSalaryArchiveWrapper(user)::list, queryParam);
return new ResponseResult<SalaryArchiveQueryParam, Map<String, Object>>().run(getSalaryArchiveWrapper(user)::list, queryParam);
}
/**
@ -318,87 +321,89 @@ public class SalaryArchiveController {
// ******** 薪资项目调整 end ***********************************************************************************************/
// ******** 个税扣缴义务人调整 start ***********************************************************************************************/
// /**
// * 获取个税扣缴义务人调整表单
// *
// * @param salaryArchiveId
// * @return
// */
// @GetMapping("/getTaxAgentForm")
// @ApiOperation("获取个税扣缴义务人调整表单")
// @WeaPermission
// public WeaResult<SalaryArchiveTaxAgentFormDTO> getTaxAgentForm(@RequestParam(value = "salaryArchiveId") Long salaryArchiveId) {
// SalaryArchiveTaxAgentFormDTO form = salaryArchiveTaxAgentWrapper.getTaxAgentForm(salaryArchiveId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
// return WeaResult.success(form);
// }
//
// /**
// * 通过薪资档案的个税扣缴义务人id获取个税扣缴义务人调整表单
// *
// * @param salaryArchiveTaxAgentId
// * @return
// */
// @GetMapping("/getTaxAgentFormBySalaryArchiveTaxAgentId")
// @ApiOperation("获取薪资项目调整表单")
// @WeaPermission
// public WeaResult<SalaryArchiveTaxAgentFormDTO> getTaxAgentFormBySalaryArchiveTaxAgentId(@RequestParam Long salaryArchiveTaxAgentId) {
// SalaryArchiveTaxAgentFormDTO form = salaryArchiveTaxAgentWrapper.getTaxAgentFormBySalaryArchiveTaxAgentId(salaryArchiveTaxAgentId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
// return WeaResult.success(form);
// }
//
// /**
// * 保存个税扣缴义务人调整
// *
// * @param saveParam
// * @return
// */
// @PostMapping("/saveTaxAgent")
// @ApiOperation("保存个税扣缴义务人调整")
// @WeaPermission
// public WeaResult<String> saveTaxAgent(@RequestBody SalaryArchiveTaxAgentSaveParam saveParam) {
// return WeaResult.success(salaryArchiveTaxAgentWrapper.saveTaxAgent(saveParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
// * 删除个税扣缴义务人调整
// *
// * @param salaryArchiveTaxAgentId
// * @return
// */
// @PostMapping("/deleteTaxAgent")
// @ApiOperation("删除个税扣缴义务人调整")
// @WeaPermission
// public WeaResult<String> deleteTaxAgent(@RequestParam(value = "salaryArchiveTaxAgentId") Long salaryArchiveTaxAgentId) {
// return WeaResult.success(salaryArchiveTaxAgentWrapper.deleteTaxAgent(salaryArchiveTaxAgentId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
// /******** 薪资项目调整 end ***********************************************************************************************/
//
// /******** 薪资项目调整记录 start ***********************************************************************************************/
// /**
// * 薪资项目调整记录列表的高级搜索
// *
// * @return
// */
// @GetMapping("/adjustRecord/getSalaryItemSearchCondition")
// @ApiOperation("薪资项目调整记录列表的高级搜索")
// @WeaPermission
// public WeaResult<WeaSearchCondition> getSalaryItemSearchCondition() {
// return WeaResult.success(salaryArchiveItemWrapper.getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
// * 薪资项目调整记录列表
// *
// * @param queryParam
// * @return
// */
// @PostMapping("/adjustRecord/salaryItemList")
// @ApiOperation("薪资项目调整记录列表")
// @WeaPermission
// public WeaResult<WeaTable<SalaryItemAdjustRecordListDTO>> salaryItemList(@RequestBody SalaryItemAdjustRecordQueryParam queryParam) {
// return WeaResult.success(salaryArchiveItemWrapper.adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
/**
* 获取个税扣缴义务人调整表单
*
* @param salaryArchiveId
* @return
*/
@GET
@Path("/getTaxAgentForm")
@Produces(MediaType.APPLICATION_JSON)
public String getTaxAgentForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryArchiveId") Long salaryArchiveId) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, SalaryArchiveTaxAgentFormDTO>().run(getSalaryArchiveTaxAgentWrapper(user)::getTaxAgentForm, salaryArchiveId);
}
/**
* 通过薪资档案的个税扣缴义务人id获取个税扣缴义务人调整表单`
*
* @param salaryArchiveTaxAgentId
* @return
*/
@GET
@Path("/getTaxAgentFormBySalaryArchiveTaxAgentId")
@Produces(MediaType.APPLICATION_JSON)
public String getTaxAgentFormBySalaryArchiveTaxAgentId(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryArchiveTaxAgentId") Long salaryArchiveTaxAgentId) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, SalaryArchiveTaxAgentFormDTO>().run(getSalaryArchiveTaxAgentWrapper(user)::getTaxAgentFormBySalaryArchiveTaxAgentId, salaryArchiveTaxAgentId);
}
/**
* 保存个税扣缴义务人调整
*
* @param saveParam
* @return
*/
@POST
@Path("/saveTaxAgent")
@Produces(MediaType.APPLICATION_JSON)
public String saveTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveTaxAgentSaveParam saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveTaxAgentSaveParam, String>().run(getSalaryArchiveTaxAgentWrapper(user)::saveTaxAgent, saveParam);
}
/**
* 删除个税扣缴义务人调整
*
* @param salaryArchiveTaxAgentId
* @return
*/
/**
* 保存个税扣缴义务人调整
*
* @return
*/
@POST
@Path("/deleteTaxAgent")
@Produces(MediaType.APPLICATION_JSON)
public String deleteTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Long salaryArchiveTaxAgentId) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, String>().run(getSalaryArchiveTaxAgentWrapper(user)::deleteTaxAgent, salaryArchiveTaxAgentId);
}
// ******** 薪资项目调整 end ***********************************************************************************************/
// ******** 薪资项目调整记录 start ***********************************************************************************************/
/**
* 薪资项目调整记录列表
*
* @param queryParam
* @return
*/
@POST
@Path("/adjustRecord/salaryItemList")
@Produces(MediaType.APPLICATION_JSON)
public String adjustRecordList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemAdjustRecordQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryItemAdjustRecordQueryParam, List<SalaryItemAdjustRecordListDTO>>().run(getSalaryArchiveItemWrapper(user)::adjustRecordList, queryParam);
}
// /**
// * 单个档案的薪资项目调整记录列表
// *
@ -436,7 +441,7 @@ public class SalaryArchiveController {
// @ApiOperation("个税扣缴义务人调整记录列表的高级搜索")
// @WeaPermission
// public WeaResult<WeaSearchCondition> getTaxAgentSearchCondition() {
// return WeaResult.success(salaryArchiveTaxAgentWrapper.getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
@ -449,7 +454,7 @@ public class SalaryArchiveController {
// @ApiOperation("个税扣缴义务人调整记录列表")
// @WeaPermission
// public WeaResult<WeaTable<TaxAgentAdjustRecordListDTO>> taxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) {
// return WeaResult.success(salaryArchiveTaxAgentWrapper.adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
@ -462,7 +467,7 @@ public class SalaryArchiveController {
// @ApiOperation("单个档案的个税扣缴义务人调整记录列表")
// @WeaPermission
// public WeaResult<WeaTable<SingleTaxAgentAdjustRecordListDTO>> SingleTaxAgentAdjustRecordList(@RequestBody SingleTaxAgentAdjustRecordQueryParam queryParam) {
// return WeaResult.success(salaryArchiveTaxAgentWrapper.singleTaxAgentAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).singleTaxAgentAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
@ -475,7 +480,7 @@ public class SalaryArchiveController {
// @ApiOperation("导出个税扣缴义务人调整记录列表")
// @WeaPermission
// public WeaResult<Map<String, Object>> exportTaxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) {
// return WeaResult.success(salaryArchiveTaxAgentWrapper.exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
// /******** 个税扣缴义务人调整记录 end ***********************************************************************************************/
}

View File

@ -190,30 +190,28 @@ public class SalaryArchiveItemWrapper extends Service {
return list;
}
// /**
// * 单个档案的薪资项目调整记录列表
// *
// * @param queryParam
// * @param employeeId
// * @param tenantKey
// * @return
// */
// public WeaTable<SingleSalaryItemAdjustRecordListDTO> singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam, Long employeeId, String tenantKey) {
/**
* 单个档案的薪资项目调整记录列表
*
* @param queryParam
* @return
*/
// public WeaTable<SingleSalaryItemAdjustRecordListDTO> singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam) {
// if (queryParam.getSalaryArchiveId() == null) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
// }
// // 获取所有可被引用的薪资项目
// List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(tenantKey);
// List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
// List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
//
// Page<SalaryItemAdjustRecordListDTO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
// SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam();
// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
// page = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(page, adjustRecordQueryParam, salaryItemIds, tenantKey);
// Page<SingleSalaryItemAdjustRecordListDTO> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
// PageInfo<SalaryItemAdjustRecordListDTO> page = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(adjustRecordQueryParam, salaryItemIds);
//
// List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds, tenantKey);
// List<SalaryItemAdjustRecordListDTO> list = page.getRecords();
// PageInfo<SingleSalaryItemAdjustRecordListDTO> listPage = new PageInfo<SingleSalaryItemAdjustRecordListDTO>();
//
// List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
// List<SalaryItemAdjustRecordListDTO> list = page.getList();
// List<SingleSalaryItemAdjustRecordListDTO> resultList = Lists.newArrayList();
// list.forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
@ -222,24 +220,24 @@ public class SalaryArchiveItemWrapper extends Service {
// Optional<SalaryItemAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
//
// m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason(), employeeId, tenantKey));
// m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
//
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecordList = new SingleSalaryItemAdjustRecordListDTO();
// BeanUtils.copyProperties(m, singleSalaryItemAdjustRecordList);
// resultList.add(singleSalaryItemAdjustRecordList);
// });
// listPage.setRecords(resultList);
// listPage.setList(resultList);
//
// WeaTable<SingleSalaryItemAdjustRecordListDTO> weaTable = FormatManager.<SingleSalaryItemAdjustRecordListDTO>getInstance()
// .genTable(SingleSalaryItemAdjustRecordListDTO.class, listPage);
// weaTable.setModule("hrmsalary");
// List<Long> salaryItemPageIds = listPage.getRecords().stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList());
// List<SalaryArchiveItemPO> effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds, tenantKey);
// List<Long> salaryItemPageIds = listPage.getList().stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList());
// List<SalaryArchiveItemPO> effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds);
// // 行记录按钮权限控制
// for (int i = 0; i < listPage.getRecords().size(); i++) {
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = listPage.getRecords().get(i);
// for (int i = 0; i < listPage.getList().size(); i++) {
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = (SingleSalaryItemAdjustRecordListDTO)listPage.getList().get(i);
// Optional<SalaryArchiveItemPO> optional = effectiveSalaryItems.stream().filter(f -> f.getSalaryItemId().equals(singleSalaryItemAdjustRecord.getSalaryItemId())).findFirst();
// LocalDate effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
// Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
// List<Permission> permissions = weaTable.getOperatesPermission().get(i);
// for (int j = 0; j < permissions.size(); j++) {
// Permission permission = permissions.get(j);
@ -253,8 +251,6 @@ public class SalaryArchiveItemWrapper extends Service {
// }
// }
// }
// // 在外展示操作按钮
// weaTable.getOperates().get(0).setOuter(Boolean.TRUE);
// return weaTable;
// }
//

View File

@ -0,0 +1,312 @@
package com.engine.salary.wrapper;
import com.api.browser.bean.SearchConditionGroup;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.api.browser.util.ConditionFactory;
import com.api.browser.util.ConditionType;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentFormDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.entity.taxrate.TaxAgent;
import com.engine.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalaryArchiveTaxAgentService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.SalaryI18nUtil;
import java.util.*;
/**
* 薪资档案-个税扣缴义务人
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryArchiveTaxAgentWrapper extends Service {
private SalaryArchiveTaxAgentService salaryArchiveTaxAgentService;
private TaxAgentService taxAgentService;
// @Resource
// private SalaryBatchService salaryBatchService;
// @Autowired
// private ExecutorService taskExecutor;
/**
* 获取个税扣缴义务人调整表单
* 获取调整原因和扣税义务人列表
*
* @param salaryArchiveId
* @return
*/
public SalaryArchiveTaxAgentFormDTO getTaxAgentForm(Long salaryArchiveId) {
if (salaryArchiveId == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
}
// 个税扣缴义务人下拉列表
Collection<TaxAgent> taxAgentList = taxAgentService.findAll();
// 构建表单
Map<String, Object> form = buildTaxAgentForm(taxAgentList, null, "", "", null);
return SalaryArchiveTaxAgentFormDTO.builder()
.salaryArchiveId(salaryArchiveId)
.salaryArchiveTaxAgentForm(form)
.build();
}
private Map<String, Object> buildTaxAgentForm(Collection<TaxAgent> taxAgentList, Date effectiveTime, String adjustReason, String adjustBefore, Long adjustAfter) {
// 个税扣缴义务人调整原因下拉列表
List<SalaryArchiveTaxAgentAdjustReasonEnum> salaryArchiveTaxAgentAdjustReasonEnums = Arrays.asList(SalaryArchiveTaxAgentAdjustReasonEnum.values());
ConditionFactory conditionFactory = new ConditionFactory(user);
//条件组
List<SearchConditionGroup> addGroups = new ArrayList<SearchConditionGroup>();
List<SearchConditionItem> items = new ArrayList<SearchConditionItem>();
SearchConditionItem effectiveTimeItem = conditionFactory.createCondition(ConditionType.DATEPICKER, 502327, "effectiveTime");
effectiveTimeItem.setColSpan(1);//定义一行显示条件数默认值为2,当值为1时标识该条件单独占一行
effectiveTimeItem.setFieldcol(12); //条件输入框所占宽度默认值18
effectiveTimeItem.setViewAttr(3); // 编辑权限 1只读2可编辑 3必填 默认2
effectiveTimeItem.setLength(10); // 设置输入长度
effectiveTimeItem.setLabel("生效时间"); //设置文本值 这个将覆盖多语言标签的值
effectiveTimeItem.setRules("required"); //设置字段填入规则
items.add(effectiveTimeItem);
SearchConditionItem adjustReasonItem = conditionFactory.createCondition(ConditionType.SELECT, 502227, "adjustReason");
List<SearchConditionOption> selectOptions = new ArrayList<>(); //设置选项值
Arrays.stream(SalaryArchiveTaxAgentAdjustReasonEnum.values()).forEach(r -> {
if (r.getValue().equals(adjustReason)) {
selectOptions.add(new SearchConditionOption(r.getValue(), r.getDefaultLabel(), true));
}
selectOptions.add(new SearchConditionOption(r.getValue(), r.getDefaultLabel()));
});
adjustReasonItem.setOptions(selectOptions);
effectiveTimeItem.setColSpan(1);
effectiveTimeItem.setFieldcol(12);
effectiveTimeItem.setViewAttr(3);
effectiveTimeItem.setLength(10);
adjustReasonItem.setLabel("调整原因");
effectiveTimeItem.setRules("required"); //设置字段填入规则
items.add(adjustReasonItem);
SearchConditionItem adjustBeforeItem = conditionFactory.createCondition(ConditionType.INPUT, 502327, "adjustBefore");
adjustBeforeItem.setColSpan(1);//定义一行显示条件数默认值为2,当值为1时标识该条件单独占一行
adjustBeforeItem.setFieldcol(12); //条件输入框所占宽度默认值18
adjustBeforeItem.setViewAttr(1); // 编辑权限 1只读2可编辑 3必填 默认2
adjustBeforeItem.setLength(10); // 设置输入长度
adjustBeforeItem.setLabel("调整前"); //设置文本值 这个将覆盖多语言标签的值
adjustBeforeItem.setRules("required"); //设置字段填入规则
adjustBeforeItem.setValue(adjustBefore);
items.add(adjustBeforeItem);
SearchConditionItem taxAgentItem = conditionFactory.createCondition(ConditionType.SELECT, 502227, "taxAgentId");
List<SearchConditionOption> taxAgentOptions = new ArrayList<>(); //设置选项值
taxAgentList.forEach(t -> {
if (t.getId().equals(adjustAfter)) {
taxAgentOptions.add(new SearchConditionOption(t.getId().toString(), t.getName(), true));
}
taxAgentOptions.add(new SearchConditionOption(t.getId().toString(), t.getName()));
});
adjustReasonItem.setOptions(selectOptions);
effectiveTimeItem.setColSpan(1);
effectiveTimeItem.setFieldcol(12);
effectiveTimeItem.setViewAttr(3);
effectiveTimeItem.setLength(10);
adjustReasonItem.setLabel("调整后");
effectiveTimeItem.setRules("required"); //设置字段填入规则
items.add(taxAgentItem);
addGroups.add(new SearchConditionGroup("表单", true, items));
Map<String, Object> map = new HashMap<>();
map.put("form", addGroups);
return map;
}
/**
* 通过薪资档案的个税扣缴义务人id获取个税扣缴义务人调整表单
*
* @param salaryArchiveTaxAgentId
* @return
*/
public SalaryArchiveTaxAgentFormDTO getTaxAgentFormBySalaryArchiveTaxAgentId(Long salaryArchiveTaxAgentId) {
if (salaryArchiveTaxAgentId == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100489, "薪资档案的个税扣缴义务人id不能为空"));
}
SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = salaryArchiveTaxAgentService.getById(salaryArchiveTaxAgentId);
if (salaryArchiveTaxAgent == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100484, "该薪资档案的个税扣缴义务人的调整记录不存在"));
}
// 个税扣缴义务人下拉列表
Collection<TaxAgent> taxAgentList = taxAgentService.findAll();
// 调整前
String adjustBefore = "";
SalaryArchiveTaxAgentPO adjustBeforePo = salaryArchiveTaxAgentService.getAdjustBeforeTaxAgent(salaryArchiveTaxAgent);
if (adjustBeforePo != null) {
Optional<TaxAgent> optional = taxAgentList.stream().filter(f -> f.getId().equals(adjustBeforePo.getTaxAgentId())).findFirst();
adjustBefore = optional.isPresent() ? optional.get().getName() : "";
}
Date effectiveTime = salaryArchiveTaxAgent.getEffectiveTime();
String adjustReason = salaryArchiveTaxAgent.getAdjustReason();
Long adjustAfter = salaryArchiveTaxAgent.getTaxAgentId();
// 构建表单
Map<String, Object> taxAgentForm = buildTaxAgentForm(taxAgentList, effectiveTime, adjustReason, adjustBefore, adjustAfter);
return SalaryArchiveTaxAgentFormDTO.builder()
.salaryArchiveId(salaryArchiveTaxAgent.getSalaryArchiveId())
.salaryArchiveTaxAgentForm(taxAgentForm)
.build();
}
/**
* 保存个税扣缴义务人调整
*
* @param saveParam
* @return
*/
public String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam) {
return salaryArchiveTaxAgentService.saveTaxAgent(saveParam);
}
/**
* 删除个税扣缴义务人调整
*
* @param salaryArchiveTaxAgentId
* @return
*/
public String deleteTaxAgent(Long salaryArchiveTaxAgentId) {
return salaryArchiveTaxAgentService.deleteTaxAgent(salaryArchiveTaxAgentId);
}
/**
* 个税扣缴义务人调整记录列表
*
* @param queryParam
* @return
*/
// public Map<String,Object> adjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
// Page<TaxAgentAdjustRecordListDTO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
// page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(page, queryParam, tenantKey);
//
// Page<TaxAgentAdjustRecordListDTO> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
// // 个税扣缴义务人
// Collection<TaxAgentListDTO> taxAgentList = taxAgentService.findAll(tenantKey);
// List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build());
// List<TaxAgentAdjustRecordListDTO> list = page.getRecords();
// list.stream().forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
// listAll.removeIf(a -> a.getId().equals(m.getId()));
// }
// Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
// Optional<TaxAgentListDTO> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
// Optional<TaxAgentListDTO> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
// m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
//
// m.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(m.getEmployeeStatus()));
//
// m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
// });
// listPage.setRecords(list);
// WeaTable<TaxAgentAdjustRecordListDTO> weaTable = FormatManager.<TaxAgentAdjustRecordListDTO>getInstance()
// .genTable(TaxAgentAdjustRecordListDTO.class, listPage);
// weaTable.setModule("hrmsalary");
// return weaTable;
// }
//
// /**
// * 单个档案的个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @param employeeId
// * @param tenantKey
// * @return
// */
// public WeaTable<SingleTaxAgentAdjustRecordListDTO> singleTaxAgentAdjustRecordList(SingleTaxAgentAdjustRecordQueryParam queryParam) {
// if (queryParam.getSalaryArchiveId() == null) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
// }
//
// Page<TaxAgentAdjustRecordListDTO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
// TaxAgentAdjustRecordQueryParam adjustRecordQueryParam = new TaxAgentAdjustRecordQueryParam();
// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
// page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(page, adjustRecordQueryParam, tenantKey);
//
// Page<SingleTaxAgentAdjustRecordListDTO> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
// // 个税扣缴义务人
// Collection<TaxAgentListDTO> taxAgentList = taxAgentService.findAll(tenantKey);
// List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build(), tenantKey);
// List<TaxAgentAdjustRecordListDTO> list = page.getRecords();
// List<SingleTaxAgentAdjustRecordListDTO> resultList = Lists.newArrayList();
// list.forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
// listAll.removeIf(a -> a.getId().equals(m.getId()));
// }
// Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
// Optional<TaxAgentListDTO> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
// Optional<TaxAgentListDTO> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
// m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
//
// m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
//
//
// SingleTaxAgentAdjustRecordListDTO singleTaxAgentAdjustRecordList = new SingleTaxAgentAdjustRecordListDTO();
// BeanUtils.copyProperties(m, singleTaxAgentAdjustRecordList);
// resultList.add(singleTaxAgentAdjustRecordList);
// });
// listPage.setRecords(resultList);
// WeaTable<SingleTaxAgentAdjustRecordListDTO> weaTable = FormatManager.<SingleTaxAgentAdjustRecordListDTO>getInstance()
// .genTable(SingleTaxAgentAdjustRecordListDTO.class, listPage);
// weaTable.setModule("hrmsalary");
// // 获取当前已生效
// SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = salaryArchiveTaxAgentService.getEffectiveTaxAgent(queryParam.getSalaryArchiveId(), tenantKey);
// LocalDate effectiveDate = (salaryArchiveTaxAgent == null ? null : salaryArchiveTaxAgent.getEffectiveTime());
//
// // 行记录按钮权限控制
// for (int i = 0; i < listPage.getRecords().size(); i++) {
// SingleTaxAgentAdjustRecordListDTO singleTaxAgentAdjustRecord = listPage.getRecords().get(i);
// List<Permission> permissions = weaTable.getOperatesPermission().get(i);
// for (int j = 0; j < permissions.size(); j++) {
// Permission permission = permissions.get(j);
// if (effectiveDate != null && singleTaxAgentAdjustRecord.getEffectiveTime().isBefore(effectiveDate)) {
// permission.setVisible(false);
// permission.setDisabled(true);
// }
// if (j > 0 && singleTaxAgentAdjustRecord.getEffectiveTime().equals(effectiveDate)) {
// permission.setVisible(false);
// permission.setDisabled(false);
// }
// }
// }
// // 在外展示操作按钮
// weaTable.getOperates().get(0).setOuter(Boolean.TRUE);
// return weaTable;
// }
//
// /**
// * 导出个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @return
// */
// public Map<String, Object> exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
// // 构建异步导出参数
// Map<String, Object> map = salaryBatchService.buildeExportParam("exportSalaryArchiveTaxAgentAdjustRecord");
//
// String username = UserContext.getCurrentUser().getUsername();
// String eteamsId = TenantRpcContext.getEteamsId();
// salaryArchiveTaxAgentService.exportAdjustRecordList(map, username, eteamsId, queryParam);
// return map;
// }
}