fix sqlserver增量数据空
This commit is contained in:
parent
918441fb38
commit
68076fc724
|
|
@ -2,6 +2,7 @@ package com.engine.salary.entity.salaryarchive.po;
|
|||
|
||||
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
|
||||
import com.engine.salary.enums.salaryarchive.SalaryArchiveAddTypeEnum;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -9,6 +10,7 @@ import lombok.NoArgsConstructor;
|
|||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 薪资档案
|
||||
|
|
@ -100,4 +102,9 @@ public class SalaryArchivePO {
|
|||
//---------条件-------
|
||||
private Collection<Long> ids;
|
||||
private Collection<Long> employeeIds;
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@JsonIgnore
|
||||
private List<String> runStatusList;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,8 +21,6 @@ public enum IncomeCategoryEnum implements BaseEnum<Integer> {
|
|||
// 暂时注释掉,后续会开放
|
||||
// ONETIME_ANNUAL_BONUS(2,"全年一次性奖金收入", 0),
|
||||
//
|
||||
// REMUNERATION_FOR_LABOR(4, "劳务报酬所得", 0),
|
||||
//
|
||||
// OTHER(11, "其他所得", 0),
|
||||
;
|
||||
|
||||
|
|
|
|||
|
|
@ -1055,6 +1055,12 @@
|
|||
#{salaryItemId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.salaryArchivesIds != null and param.salaryArchivesIds.size()>0">
|
||||
AND t.salary_archive_id IN
|
||||
<foreach collection="param.salaryArchivesId" open="(" item="salaryArchivesId" separator="," close=")">
|
||||
#{salaryItemId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.salaryArchiveId != null">
|
||||
AND t.salary_archive_id = #{param.salaryArchiveId}
|
||||
</if>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam;
|
|||
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface SalaryArchiveMapper {
|
||||
|
|
@ -102,4 +103,12 @@ public interface SalaryArchiveMapper {
|
|||
void updateFixed(SalaryArchivePO build);
|
||||
|
||||
void updateSuspend(SalaryArchivePO build);
|
||||
|
||||
void gotoFixed(Collection<Long> ids);
|
||||
|
||||
void gotoStop(Collection<Long> ids);
|
||||
|
||||
void gotoPendingFromStop(Collection<Long> ids);
|
||||
|
||||
void gotoFixedFromStop(Collection<Long> ids);
|
||||
}
|
||||
|
|
@ -75,19 +75,19 @@
|
|||
|
||||
|
||||
<sql id="salaryArchiveColumn">
|
||||
t1
|
||||
t
|
||||
.
|
||||
id
|
||||
, t1.employee_id
|
||||
, t1.create_time
|
||||
, t1.update_time
|
||||
, t1.creator
|
||||
, t1.delete_type
|
||||
, t1.tenant_key
|
||||
, t1.tax_agent_id
|
||||
, t1.pay_start_date
|
||||
, t1.pay_end_date
|
||||
, t1.run_status
|
||||
, t.employee_id
|
||||
, t.create_time
|
||||
, t.update_time
|
||||
, t.creator
|
||||
, t.delete_type
|
||||
, t.tenant_key
|
||||
, t.tax_agent_id
|
||||
, t.pay_start_date
|
||||
, t.pay_end_date
|
||||
, t.run_status
|
||||
, e.mobile
|
||||
, e.workcode
|
||||
, e.lastname as username
|
||||
|
|
@ -102,22 +102,22 @@
|
|||
SELECT
|
||||
<include refid="salaryArchiveColumn"/>
|
||||
FROM
|
||||
hrsa_salary_archive t1
|
||||
LEFT JOIN hrmresource e ON e.id = t1.employee_id
|
||||
hrsa_salary_archive t
|
||||
LEFT JOIN hrmresource e ON e.id = t.employee_id
|
||||
LEFT JOIN hrmdepartment d ON d.id = e.departmentid
|
||||
LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1
|
||||
WHERE t1.delete_type = 0
|
||||
WHERE t.delete_type = 0
|
||||
and e.status not in (7)
|
||||
and (e.accounttype is null or e.accounttype = 0)
|
||||
<if test="param.ids != null and param.ids.size()>0">
|
||||
AND t1.id IN
|
||||
AND t.id IN
|
||||
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 个税扣缴义务人 -->
|
||||
<if test="param.taxAgentId != null">
|
||||
AND t1.tax_agent_id = #{param.taxAgentId}
|
||||
AND t.tax_agent_id = #{param.taxAgentId}
|
||||
</if>
|
||||
<!-- 姓名 -->
|
||||
<if test="param.username != null and param.username != ''">
|
||||
|
|
@ -161,9 +161,9 @@
|
|||
</if>
|
||||
<!-- 档案状态 -->
|
||||
<if test="param.runStatusList != null and param.runStatusList.size()>0">
|
||||
AND t1.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
AND t.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="runStatus" separator="," close=")">
|
||||
#{runStatus}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 排序 -->
|
||||
|
|
@ -177,22 +177,22 @@
|
|||
<include refid="salaryArchiveColumn"/>
|
||||
|
||||
FROM
|
||||
hrsa_salary_archive t1
|
||||
LEFT JOIN hrmresource e ON e.id = t1.employee_id
|
||||
hrsa_salary_archive t
|
||||
LEFT JOIN hrmresource e ON e.id = t.employee_id
|
||||
LEFT JOIN hrmdepartment d ON d.id = e.departmentid
|
||||
LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1
|
||||
WHERE t1.delete_type = 0
|
||||
WHERE t.delete_type = 0
|
||||
and e.status not in (7)
|
||||
and (e.accounttype is null or e.accounttype = 0)
|
||||
<if test="param.ids != null and param.ids.size()>0">
|
||||
AND t1.id IN
|
||||
AND t.id IN
|
||||
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 个税扣缴义务人 -->
|
||||
<if test="param.taxAgentId != null">
|
||||
AND t1.tax_agent_id = #{param.taxAgentId}
|
||||
AND t.tax_agent_id = #{param.taxAgentId}
|
||||
</if>
|
||||
<if test="param.username != null and param.username != ''">
|
||||
AND e.lastname like '%'||#{param.username}||'%'
|
||||
|
|
@ -233,9 +233,9 @@
|
|||
</if>
|
||||
<!-- 档案状态 -->
|
||||
<if test="param.runStatusList != null and param.runStatusList.size()>0">
|
||||
AND t1.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
AND t.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="runStatus" separator="," close=")">
|
||||
#{runStatus}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 排序 -->
|
||||
|
|
@ -250,22 +250,22 @@
|
|||
<include refid="salaryArchiveColumn"/>
|
||||
|
||||
FROM
|
||||
hrsa_salary_archive t1
|
||||
LEFT JOIN hrmresource e ON e.id = t1.employee_id
|
||||
hrsa_salary_archive t
|
||||
LEFT JOIN hrmresource e ON e.id = t.employee_id
|
||||
LEFT JOIN hrmdepartment d ON d.id = e.departmentid
|
||||
LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1
|
||||
WHERE t1.delete_type = 0
|
||||
WHERE t.delete_type = 0
|
||||
and e.status not in (7)
|
||||
and (e.accounttype is null or e.accounttype = 0)
|
||||
<if test="param.ids != null and param.ids.size()>0">
|
||||
AND t1.id IN
|
||||
AND t.id IN
|
||||
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 个税扣缴义务人 -->
|
||||
<if test="param.taxAgentId != null">
|
||||
AND t1.tax_agent_id = #{param.taxAgentId}
|
||||
AND t.tax_agent_id = #{param.taxAgentId}
|
||||
</if>
|
||||
<if test="param.username != null and param.username != ''">
|
||||
AND e.lastname like '%'+#{param.username}+'%'
|
||||
|
|
@ -306,9 +306,9 @@
|
|||
</if>
|
||||
<!-- 档案状态 -->
|
||||
<if test="param.runStatusList != null and param.runStatusList.size()>0">
|
||||
AND t1.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
AND t.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="runStatus" separator="," close=")">
|
||||
#{runStatus}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 排序 -->
|
||||
|
|
@ -471,6 +471,17 @@
|
|||
<if test="param.taxAgentId != null">
|
||||
AND t.tax_agent_id = #{param.taxAgentId}
|
||||
</if>
|
||||
<!-- 档案状态 -->
|
||||
<if test="param.runStatus != null">
|
||||
AND t.run_status = #{runStatus}
|
||||
</if>
|
||||
<!-- 档案状态 -->
|
||||
<if test="param.runStatusList != null and param.runStatusList.size()>0">
|
||||
AND t.run_status IN
|
||||
<foreach collection="param.runStatusList" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</select>
|
||||
|
||||
|
|
@ -518,7 +529,55 @@
|
|||
<set>
|
||||
run_status='SUSPEND'
|
||||
</set>
|
||||
WHERE run_status = 'FIXED' and pay_end_date is not null and pay_end_date <![CDATA[ <= ]]> #{payEndDate}
|
||||
WHERE run_status = 'FIXED' and pay_end_date is not null and pay_end_date <![CDATA[ <= ]]> #{payEndDate}
|
||||
</update>
|
||||
|
||||
<update id="gotoFixed" parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchivePO">
|
||||
UPDATE hrsa_salary_archive
|
||||
<set>
|
||||
run_status='FIXED'
|
||||
</set>
|
||||
WHERE run_status = 'PENDING' and pay_start_date is not null
|
||||
and id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<update id="gotoStop" parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchivePO">
|
||||
UPDATE hrsa_salary_archive
|
||||
<set>
|
||||
run_status='STOP_FROM_SUSPEND'
|
||||
</set>
|
||||
WHERE run_status = 'FIXED' and pay_end_date is not null
|
||||
and id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<update id="gotoPendingFromStop" parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchivePO">
|
||||
UPDATE hrsa_salary_archive
|
||||
<set>
|
||||
run_status='PENDING'
|
||||
</set>
|
||||
WHERE run_status = 'STOP_FROM_PENDING'
|
||||
and id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<update id="gotoFixedFromStop" parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchivePO">
|
||||
UPDATE hrsa_salary_archive
|
||||
<set>
|
||||
run_status='FIXED'
|
||||
</set>
|
||||
WHERE run_status = 'STOP_FROM_SUSPEND'
|
||||
and id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -332,7 +332,6 @@
|
|||
#{item.employeeName},
|
||||
#{item.changeType},
|
||||
#{item.moduleType},
|
||||
#{item.operator},
|
||||
#{item.createTime},
|
||||
#{item.updateTime},
|
||||
#{item.creator},
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -96,4 +97,15 @@ public interface SalaryArchiveItemService {
|
|||
* @param queryParam
|
||||
*/
|
||||
XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam);
|
||||
|
||||
|
||||
/**
|
||||
* 获取薪资档案对应的当前生效的薪资项目忽略值
|
||||
*
|
||||
* @param salaryArchivesIds
|
||||
* @param salaryItemIds
|
||||
* @return
|
||||
*/
|
||||
List<SalaryArchiveItemPO> getCurrentEffectiveItemListIngoreValue(Collection<Long> salaryArchivesIds, List<Long> salaryItemIds);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,4 +171,61 @@ public interface SalaryArchiveService {
|
|||
* @return
|
||||
*/
|
||||
Map<String, Long> queryTabTotal();
|
||||
|
||||
/**
|
||||
* 设为定薪员工
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> gotoFixed(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 一键全部定薪
|
||||
*
|
||||
* @param queryParam
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> allGotoFixed(SalaryArchiveQueryParam queryParam);
|
||||
|
||||
// /**
|
||||
// * 删除待定薪待办
|
||||
// *
|
||||
// * @param ids
|
||||
// * @return
|
||||
// */
|
||||
// String deletePendingTodo(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 停薪
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> gotoStop(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 一键全部停薪
|
||||
*
|
||||
* @param queryParam
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> allGotoStop(SalaryArchiveQueryParam queryParam);
|
||||
|
||||
// /**
|
||||
// * 删除待停薪待办
|
||||
// *
|
||||
// * @param ids
|
||||
// * @return
|
||||
// */
|
||||
// String deleteSuspendTodo(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 取消停薪
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
String cancelStop(Collection<Long> ids);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,8 +128,6 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 获取当前已生效数据
|
||||
List<SalaryArchiveItemPO> effectiveSalaryItems = getEffectiveSalaryItems(salaryArchiveId, salaryItemIds);
|
||||
|
||||
|
|
@ -405,4 +403,22 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
|
|||
|
||||
return ExcelUtil.genWorkbookV2(rows, sheetName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryArchiveItemPO> getCurrentEffectiveItemListIngoreValue(Collection<Long> salaryArchivesIds, List<Long> salaryItemIds) {
|
||||
// 没有薪资项目时,给个不存在的,否则加载所有不合理
|
||||
salaryItemIds = CollectionUtils.isEmpty(salaryItemIds) ? Collections.singletonList(0L) : salaryItemIds;
|
||||
// 薪资档案id
|
||||
List<Long> salaryArchiveIds = CollectionUtils.isEmpty(salaryArchivesIds) ? Collections.singletonList(0L) : (List<Long>) salaryArchivesIds;
|
||||
|
||||
List<SalaryArchiveItemPO> salaryArchiveItems = Lists.newArrayList();
|
||||
List<List<Long>> partition = Lists.partition(Lists.newArrayList(salaryArchiveIds), 999);
|
||||
List<Long> finalSalaryItemIds = salaryItemIds;
|
||||
partition.forEach(part -> salaryArchiveItems.addAll(salaryArchiveItemMapper.getEffectiveSalaryItems(SalaryArchiveItemQueryParam.builder()
|
||||
.salaryArchivesIds(finalSalaryItemIds)
|
||||
.salaryItemIds(finalSalaryItemIds)
|
||||
.effectiveTime(new Date()).build())));
|
||||
// 解密
|
||||
return salaryArchiveItems;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,9 +219,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void handleSuspendData(Long currentEmployeeId) {
|
||||
List<String> personnelStatuss = new ArrayList<String>() {{
|
||||
add("4");
|
||||
add("5");
|
||||
add("6");
|
||||
add("7");
|
||||
}};
|
||||
|
||||
// 1.定薪员工非在职
|
||||
|
|
@ -701,7 +701,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
|
|||
*/
|
||||
private List<SalaryArchiveDataDTO> getSalaryArchiveData(LocalDateRange localDateRange, Collection<Long> employeeIds, Long taxAgentId, boolean isOnlyTaxAgent) {
|
||||
// 获取薪资档案数据
|
||||
List<SalaryArchivePO> salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().employeeIds(employeeIds).taxAgentId(taxAgentId).build());
|
||||
List<SalaryArchivePO> salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().runStatusList(Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue())).employeeIds(employeeIds).taxAgentId(taxAgentId).build());
|
||||
|
||||
List<Long> allEmployeeIds = salaryArchiveList.stream().map(SalaryArchivePO::getEmployeeId).distinct().collect(Collectors.toList());
|
||||
// 获取所有可被引用的薪资项目
|
||||
|
|
@ -1832,6 +1832,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
|
|||
public Map<String, Long> queryTabTotal() {
|
||||
long currentEmployeeId = user.getUID();
|
||||
|
||||
// 1.历史数据处理
|
||||
handleHistory(currentEmployeeId);
|
||||
// 2.待停薪自动处理
|
||||
handleSuspendData(currentEmployeeId);
|
||||
// 3.增量数据处理
|
||||
handleChangeData(currentEmployeeId);
|
||||
|
||||
|
||||
// tab页签数量
|
||||
Map<String, Long> result = new HashMap<>();
|
||||
|
||||
|
|
@ -1885,4 +1893,200 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
|
|||
result.put(SalaryArchiveListTypeEnum.STOP.getValue(), stopTotal);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> gotoFixed(Collection<Long> ids) {
|
||||
if (CollectionUtils.isEmpty(ids)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(145969, "没有可以操作的记录"));
|
||||
}
|
||||
|
||||
List<SalaryArchivePO> salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(ids).runStatus(SalaryArchiveStatusEnum.PENDING.getValue()).build());
|
||||
|
||||
List<SalaryArchivePO> unableList = salaryArchiveList.stream().filter(f -> f.getPayStartDate() == null).collect(Collectors.toList());
|
||||
|
||||
int total = ids.size();
|
||||
int errorCount = unableList.size();
|
||||
// 单个设为定薪的失败提示
|
||||
if (total == 1 && errorCount > 0) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(109197, "请先维护起始发薪日期"));
|
||||
}
|
||||
|
||||
// 从待定薪到定薪
|
||||
getSalaryArchiveMapper().gotoFixed(ids);
|
||||
|
||||
// 获取所有可被引用的薪资项目
|
||||
List<Long> salaryItemIds = getSalaryArchiveItemService(user).getCanAdjustSalaryItems().stream().map(SalaryItemPO::getId).collect(Collectors.toList());
|
||||
List<SalaryArchiveItemPO> currentEffectiveItemList = getSalaryArchiveItemService(user).getCurrentEffectiveItemListIngoreValue(ids, salaryItemIds)
|
||||
.stream()
|
||||
.peek(e -> {
|
||||
Optional<SalaryArchivePO> salaryArchive = salaryArchiveList.stream().filter(sa -> sa.getId().equals(e.getSalaryArchiveId())).findFirst();
|
||||
if (salaryArchive.isPresent()) {
|
||||
e.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.INIT.getValue());
|
||||
e.setEffectiveTime(salaryArchive.get().getPayStartDate());
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
// 更新薪资项目的生效日期
|
||||
List<List<SalaryArchiveItemPO>> partition = Lists.partition(currentEffectiveItemList, 100);
|
||||
partition.forEach(list -> getSalaryArchiveItemMapper().batchUpdate(list));
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<>(2);
|
||||
String resultMsg = SalaryI18nUtil.getI18nLabel(94620, "操作成功");
|
||||
String resultType = "success";
|
||||
// 批量设为定薪提示
|
||||
if (total > 1) {
|
||||
resultMsg = SalaryI18nUtil.getI18nLabel(134807, "成功条数") + ": " + (total - errorCount) + "; "
|
||||
+ SalaryI18nUtil.getI18nLabel(134808, "失败条数") + ": " + (errorCount)
|
||||
+ (errorCount > 0 ? ", " + SalaryI18nUtil.getI18nLabel(109197, "请先维护起始发薪日期") : "");
|
||||
resultType = errorCount > 0 ? "info" : resultType;
|
||||
}
|
||||
resultMap.put("type", resultType);
|
||||
resultMap.put("msg", resultMsg);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> allGotoFixed(SalaryArchiveQueryParam queryParam) {
|
||||
queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.PENDING.getValue()));
|
||||
List<Long> salaryArchiveIds = this.list(queryParam)
|
||||
.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList());
|
||||
return this.gotoFixed(salaryArchiveIds);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// @Override
|
||||
// public String deletePendingTodo(Collection<Long> ids) {
|
||||
// if (CollectionUtils.isEmpty(ids)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 84026, "参数错误"));
|
||||
// }
|
||||
// List<SalaryArchivePO> oldList = new LambdaQueryChainWrapper<>(salaryArchiveMapper)
|
||||
// .eq(SalaryArchivePO::getDeleteType, 0)
|
||||
// .eq(SalaryArchivePO::getTenantKey, currentTenantKey)
|
||||
// .in(SalaryArchivePO::getId, ids)
|
||||
// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.PENDING.getValue())
|
||||
// .list();
|
||||
// if (CollectionUtils.isEmpty(oldList)) {
|
||||
// return StringUtils.EMPTY;
|
||||
// }
|
||||
// // 从待定薪到停薪
|
||||
// new LambdaUpdateChainWrapper<>(salaryArchiveMapper)
|
||||
// .eq(SalaryArchivePO::getDeleteType, 0)
|
||||
// .eq(SalaryArchivePO::getTenantKey, currentTenantKey)
|
||||
// .in(SalaryArchivePO::getId, ids)
|
||||
// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.PENDING.getValue())
|
||||
// .set(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())
|
||||
// .set(SalaryArchivePO::getModifier, currentEmployeeId)
|
||||
// .update();
|
||||
// // 记录日志
|
||||
// List<SalaryArchivePO> newList = this.listByIds(ids);
|
||||
// String operatedesc = SalaryI18nUtil.getI18nLabel( 106839, "删除待办");
|
||||
// recordLog(oldList, newList, operatedesc, currentTenantKey);
|
||||
//
|
||||
// return StringUtils.EMPTY;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public Map<String, Object> gotoStop(Collection<Long> ids) {
|
||||
if (CollectionUtils.isEmpty(ids)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(145969, "没有可以操作的记录"));
|
||||
}
|
||||
List<SalaryArchivePO> oldList = getSalaryArchiveMapper()
|
||||
.listSome(SalaryArchivePO.builder()
|
||||
.ids(ids)
|
||||
.runStatus(SalaryArchiveStatusEnum.SUSPEND.getValue())
|
||||
.build());
|
||||
|
||||
List<SalaryArchivePO> unableList = oldList.stream().filter(f -> f.getPayEndDate() == null).collect(Collectors.toList());
|
||||
int total = ids.size();
|
||||
int errorCount = unableList.size();
|
||||
// 单个设为定薪的失败提示
|
||||
if (total == 1 && errorCount > 0) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(109196, "请先维护最后发薪日期"));
|
||||
}
|
||||
|
||||
// 从待停薪到停薪
|
||||
getSalaryArchiveMapper().gotoStop(ids);
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<>(2);
|
||||
String resultMsg = SalaryI18nUtil.getI18nLabel(94620, "操作成功");
|
||||
String resultType = "success";
|
||||
// 批量设为定薪提示
|
||||
if (total > 1) {
|
||||
resultMsg = SalaryI18nUtil.getI18nLabel(134807, "成功条数") + ": " + (total - errorCount) + "; "
|
||||
+ SalaryI18nUtil.getI18nLabel(134808, "失败条数") + ": " + (errorCount)
|
||||
+ (errorCount > 0 ? ", " + SalaryI18nUtil.getI18nLabel(109196, "请先维护最后发薪日期") : "");
|
||||
resultType = errorCount > 0 ? "info" : resultType;
|
||||
}
|
||||
resultMap.put("type", resultType);
|
||||
resultMap.put("msg", resultMsg);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> allGotoStop(SalaryArchiveQueryParam queryParam) {
|
||||
queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.SUSPEND.getValue()));
|
||||
List<Long> salaryArchiveIds = this.list(queryParam)
|
||||
.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList());
|
||||
return this.gotoStop(salaryArchiveIds);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public String deleteSuspendTodo(Collection<Long> ids) {
|
||||
// if (org.springframework.util.CollectionUtils.isEmpty(ids)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 84026, "参数错误"));
|
||||
// }
|
||||
// List<SalaryArchivePO> oldList = new LambdaQueryChainWrapper<>(salaryArchiveMapper)
|
||||
// .eq(SalaryArchivePO::getDeleteType, 0)
|
||||
// .eq(SalaryArchivePO::getTenantKey, currentTenantKey)
|
||||
// .in(SalaryArchivePO::getId, ids)
|
||||
// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.SUSPEND.getValue())
|
||||
// .list();
|
||||
// List<SalaryArchivePO> unableList = oldList.stream().filter(f->Objects.nonNull(f.getPayEndDate()) && !f.getPayEndDate().isAfter(LocalDate.now())).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isNotEmpty(unableList)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 115789, "最后发薪日必须晚于今天"));
|
||||
// }
|
||||
//
|
||||
// // 从待停薪到定薪
|
||||
// new LambdaUpdateChainWrapper<>(salaryArchiveMapper)
|
||||
// .eq(SalaryArchivePO::getDeleteType, 0)
|
||||
// .eq(SalaryArchivePO::getTenantKey, currentTenantKey)
|
||||
// .in(SalaryArchivePO::getId, ids)
|
||||
// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.SUSPEND.getValue())
|
||||
// .set(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.FIXED.getValue())
|
||||
// .set(SalaryArchivePO::getModifier, currentEmployeeId)
|
||||
// .update();
|
||||
// // 记录日志
|
||||
// List<SalaryArchivePO> newList = this.listByIds(ids);
|
||||
// String operatedesc = SalaryI18nUtil.getI18nLabel( 106839, "删除待办");
|
||||
// recordLog(oldList, newList, operatedesc, currentTenantKey);
|
||||
//
|
||||
// return StringUtils.EMPTY;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public String cancelStop(Collection<Long> ids) {
|
||||
if (org.springframework.util.CollectionUtils.isEmpty(ids)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
|
||||
}
|
||||
|
||||
List<SalaryArchivePO> oldList = getSalaryArchiveMapper().listSome(
|
||||
SalaryArchivePO.builder()
|
||||
.ids(ids)
|
||||
.runStatusList(Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()))
|
||||
.build());
|
||||
|
||||
List<TaxAgentEmployeeDTO> taxAgentManageRangeEmployees = getTaxAgentService(user).listTaxAgentAndEmployee((long) user.getUID());
|
||||
List<SalaryArchivePO> oldPendingList = oldList.stream().filter(f -> f.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())).collect(Collectors.toList());
|
||||
boolean isNotExist = oldPendingList.stream().anyMatch(te -> taxAgentManageRangeEmployees.stream().noneMatch(p -> p.getEmployeeId() != null && p.getEmployeeId().equals(te.getEmployeeId()) && p.getTaxAgentId().equals(te.getTaxAgentId())));
|
||||
if (isNotExist) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(116196, "不在当前个税扣缴义人的人员范围中,不可取消停薪"));
|
||||
}
|
||||
// 从停薪到待定薪
|
||||
getSalaryArchiveMapper().gotoPendingFromStop(ids);
|
||||
// 从停薪到定薪
|
||||
getSalaryArchiveMapper().gotoFixedFromStop(ids);
|
||||
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,20 +90,27 @@ public class SalaryArchiveController {
|
|||
return new ResponseResult<SalaryArchiveQueryParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::pendingList, queryParam);
|
||||
}
|
||||
|
||||
//
|
||||
// /**
|
||||
// * 设为定薪员工
|
||||
// *
|
||||
// * @param ids
|
||||
// * @return
|
||||
// */
|
||||
|
||||
/**
|
||||
* 设为定薪员工
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
// @POST
|
||||
// @Path("/pendingList")
|
||||
// @Produces(MediaType.APPLICATION_JSON)
|
||||
// public String pendingList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam queryParam) {
|
||||
// User user = HrmUserVarify.getUser(request, response);
|
||||
// return new ResponseResult<SalaryArchiveQueryParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::pendingList, queryParam);
|
||||
// }
|
||||
// @PostMapping("/gotoFixed")
|
||||
// @ApiOperation("设为定薪员工")
|
||||
// @WeaPermission
|
||||
// public WeaResult<Map<String, Object>> gotoFixed(@RequestBody Collection<Long> ids) {
|
||||
// return WeaResult.success(salaryArchiveWrapper.gotoFixed(ids, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
|
||||
// }
|
||||
//
|
||||
|
||||
// /**
|
||||
// * 一键全部设为定薪员工
|
||||
// *
|
||||
|
|
|
|||
|
|
@ -223,30 +223,26 @@ public class SalaryArchiveWrapper extends Service {
|
|||
return list(queryParam, SalaryArchiveListTypeEnum.STOP);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 设为定薪员工
|
||||
// *
|
||||
// * @param ids
|
||||
// * @param currentEmployeeId
|
||||
// * @param currentTenantKey
|
||||
// * @return
|
||||
// */
|
||||
// public Map<String, Object> gotoFixed(Collection<Long> ids, Long currentEmployeeId, String currentTenantKey) {
|
||||
// return getSalaryArchiveService(user).gotoFixed(ids, currentEmployeeId, currentTenantKey);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 一键全部定薪
|
||||
// *
|
||||
// * @param queryParam
|
||||
// * @param currentEmployeeId
|
||||
// * @param currentTenantKey
|
||||
// * @return
|
||||
// */
|
||||
// public Map<String, Object> allGotoFixed(SalaryArchiveQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) {
|
||||
// return getSalaryArchiveService(user).allGotoFixed(queryParam, currentEmployeeId, currentTenantKey);
|
||||
// }
|
||||
//
|
||||
/**
|
||||
* 设为定薪员工
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> gotoFixed(Collection<Long> ids) {
|
||||
return getSalaryArchiveService(user).gotoFixed(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键全部定薪
|
||||
*
|
||||
* @param queryParam
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> allGotoFixed(SalaryArchiveQueryParam queryParam) {
|
||||
return getSalaryArchiveService(user).allGotoFixed(queryParam);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 删除待定薪待办
|
||||
// *
|
||||
|
|
|
|||
Loading…
Reference in New Issue