fix sqlserver增量数据空

This commit is contained in:
钱涛 2022-10-13 14:57:52 +08:00
parent 918441fb38
commit 68076fc724
12 changed files with 445 additions and 75 deletions

View File

@ -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;
}

View File

@ -21,8 +21,6 @@ public enum IncomeCategoryEnum implements BaseEnum<Integer> {
// 暂时注释掉后续会开放
// ONETIME_ANNUAL_BONUS(2,"全年一次性奖金收入", 0),
//
// REMUNERATION_FOR_LABOR(4, "劳务报酬所得", 0),
//
// OTHER(11, "其他所得", 0),
;

View File

@ -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>

View File

@ -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);
}

View File

@ -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>

View File

@ -332,7 +332,6 @@
#{item.employeeName},
#{item.changeType},
#{item.moduleType},
#{item.operator},
#{item.createTime},
#{item.updateTime},
#{item.creator},

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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()));
// }
//
// /**
// * 一键全部设为定薪员工
// *

View File

@ -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);
}
// /**
// * 删除待定薪待办
// *