鲁控数字temp

This commit is contained in:
Harryxzy 2023-12-05 14:57:34 +08:00
parent 3f61807401
commit 4eb931686e
11 changed files with 483 additions and 8 deletions

View File

@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO;
import dm.jdbc.util.IdGenerator;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.math.NumberUtils;
import java.util.*;
@ -62,6 +63,44 @@ public class SalaryAcctResultReportBO {
.collect(Collectors.toList());
}
public static List<SalaryAcctResultReportPO> lkszConvert2PO(List<SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam> items,
SalaryAcctEmployeePO salaryAcctEmployee,
Long employeeId, Map<Long, DataCollectionEmployee> emps) {
if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) {
return Collections.emptyList();
}
Date now = new Date();
return items.stream()
.map(e -> {
SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder()
.id(IdGenerator.generate())
.salarySobId(salaryAcctEmployee.getSalarySobId())
.salaryItemId(e.getSalaryItemId())
.salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId())
.salaryAcctEmpId(salaryAcctEmployee.getId().toString())
.employeeId(salaryAcctEmployee.getEmployeeId().toString())
.taxAgentId(salaryAcctEmployee.getTaxAgentId())
.resultValue(e.getResultValue())
.creator(employeeId)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployee.getEmployeeId());
if (dataCollectionEmployee != null) {
po.setDepartmentId(dataCollectionEmployee.getDepartmentId());
po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid());
po.setCostcenterId(dataCollectionEmployee.getCostcenterId());
po.setJobtitleId(dataCollectionEmployee.getJobtitleId());
po.setLocationId(dataCollectionEmployee.getLocationId());
}
return po;
})
.collect(Collectors.toList());
}
public static List<SalaryAcctResultReportPO> convert2ReportPO(Collection<SalaryAcctResultTempPO> temps, Map<Long, DataCollectionEmployee> emps) {
// Map<Long, DataCollectionEmployee> longDataCollectionEmployeeMap = SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId);

View File

@ -27,6 +27,7 @@ import com.engine.salary.util.page.Column;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.BeanUtils;
@ -577,6 +578,34 @@ public class SalaryAcctResultBO {
.collect(Collectors.toList());
}
public static List<SalaryAcctResultPO> batchEditConvert2PO(Map<String, String> salaryAcctResultOldPOMap,
List<SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam> items,
SalaryAcctEmployeePO salaryAcctEmployee,
Long employeeId) {
if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) {
return Collections.emptyList();
}
Date now = new Date();
return items.stream()
.map(e -> SalaryAcctResultPO.builder()
.salarySobId(salaryAcctEmployee.getSalarySobId())
.salaryItemId(e.getSalaryItemId())
.salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId())
.salaryAcctEmpId(salaryAcctEmployee.getId())
.employeeId(salaryAcctEmployee.getEmployeeId())
.taxAgentId(salaryAcctEmployee.getTaxAgentId())
.resultValue(StringUtils.trim(e.getResultValue()))
.originResultValue(salaryAcctResultOldPOMap.get(salaryAcctEmployee.getId() + "-" + e.getSalaryItemId()))
.creator(employeeId)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build())
.collect(Collectors.toList());
}
public static Map<String, String> buildEmployeeFieldName() {
Field[] declaredFields = SalaryFormulaEmployeeDTO.class.getDeclaredFields();
Map<String, String> employeeFieldNameMap = Maps.newHashMapWithExpectedSize(declaredFields.length);

View File

@ -0,0 +1,40 @@
package com.engine.salary.entity.salaryacct.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName SalaryAcctResultBatchUpdateParam
* @author Harryxzy
* @date 2023/12/4 13:48
* @description 鲁控数字批量编辑参数
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SalaryAcctResultBatchEditParam {
private Long salaryAcctRecordId;
private List<resultValue> resultValueList;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class resultValue {
// 薪资核算人员id
private Long salaryAcctEmpId;
// 薪资项目值
private List<SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam> items;
}
}

View File

@ -0,0 +1,37 @@
package com.engine.salary.entity.salaryacct.param;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName SalaryAcctResultBatchUpdateParam
* @author Harryxzy
* @date 2023/12/4 13:48
* @description 鲁控数字批量更新参数
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SalaryAcctResultBatchUpdateParam {
//薪资核算记录的id
@DataCheck(require = true, message = "薪资核算记录ID不得为空")
private Long salaryAcctRecordId;
//薪资项目的Id
@DataCheck(require = true, message = "薪资项目id不得为空")
private Long salaryItemId;
// 薪资核算人员id
private List<Long> salaryAcctEmpIdList;
//薪资项目值
private String value;
}

View File

@ -207,4 +207,10 @@ public interface SalaryAcctRecordService {
List<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po);
/**
* 鲁控数字-结账
* @param salaryAcctRecordId
*/
void lkszJz(Long salaryAcctRecordId);
}

View File

@ -4,10 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.util.page.PageInfo;
@ -207,4 +204,16 @@ public interface SalaryAcctResultService {
* @return
*/
Boolean checkAuth(Long salaryAcctRecordId);
/**
* 鲁控数字薪资核算结果批量更新
* @param param
*/
void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param);
/**
* 鲁控数字薪资核算结果批量编辑
* @param param
*/
void lkszBatchEdit(SalaryAcctResultBatchEditParam param);
}

View File

@ -4,6 +4,9 @@ import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
import com.engine.salary.entity.salaryBill.po.SalarySendPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
@ -12,6 +15,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
@ -31,11 +35,14 @@ import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.util.valid.ValidUtil;
import dm.jdbc.util.IdGenerator;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.hrm.User;
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
@ -77,6 +84,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
// private SalaryCheckResultService salaryCheckResultService;
//
// private SalaryCheckResultDetailService salaryCheckResultDetailService;
@ -102,6 +113,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user);
}
private SalaryEmployeeService getSalaryEmployeeService(User user) {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
@Override
public SalaryAcctRecordPO getById(Long id) {
@ -810,4 +825,88 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
public List<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po) {
return getSalaryAcctRecordMapper().listSome(po);
}
@Override
public void lkszJz(Long salaryAcctRecordId) {
SalaryAcctRecordPO salaryAcctRecordPO = getById(salaryAcctRecordId);
if (ObjectUtils.isEmpty(salaryAcctRecordPO)) {
throw new SalaryRunTimeException("薪资核算记录不存在或已被删除");
}
YearMonth salaryMonth = SalaryDateUtil.toYearMonth(SalaryDateUtil.dateToLocalDate(salaryAcctRecordPO.getSalaryMonth()).plusMonths(1));
// 创建下一个月的薪资核算记录
Long newSalaryAcctRecordId = save(SalaryAcctRecordSaveParam.builder().salarySobId(salaryAcctRecordPO.getSalarySobId()).salaryMonth(salaryMonth).build());
// 查询下个月的薪资核算人员
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(newSalaryAcctRecordId);
List<Long> acctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList());
// 获取原来的薪资核算结果
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
List<Long> salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList());
List<SalaryAcctResultPO> resultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(salaryAcctRecordId), salarySobItemIds);
// 过滤掉新的核算记录中不存在的人
resultPOS = resultPOS.stream().filter(result -> acctEmpIds.contains(result.getEmployeeId())).collect(Collectors.toList());
Map<Long, List<SalaryAcctResultPO>> resultMap = SalaryEntityUtil.group2Map(resultPOS, SalaryAcctResultPO::getEmployeeId);
// 查询人员信息供报表使用
List<DataCollectionEmployee> dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport();
Map<Long, DataCollectionEmployee> emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId);
// 需要保存的核算结果
List<SalaryAcctResultPO> needInsertResultList = new ArrayList<>();
// 报表
List<SalaryAcctResultReportPO> needInsertResultReportList = new ArrayList<>();
Date now = new Date();
Long uid = Long.valueOf(user.getUID());
salaryAcctEmployeePOList.stream().forEach(acctEmp -> {
List<SalaryAcctResultPO> oldResultList = resultMap.get(acctEmp.getEmployeeId());
oldResultList.stream().forEach(oldResult -> {
// 薪资核算结果
needInsertResultList.add(SalaryAcctResultPO.builder()
.salarySobId(salaryAcctRecordPO.getSalarySobId())
.salaryItemId(oldResult.getSalaryItemId())
.salaryAcctRecordId(newSalaryAcctRecordId)
.salaryAcctEmpId(acctEmp.getId())
.employeeId(acctEmp.getEmployeeId())
.taxAgentId(acctEmp.getTaxAgentId())
.resultValue(StringUtils.trim(oldResult.getResultValue()))
.originResultValue(oldResult.getOriginResultValue())
.creator(uid)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build());
// 报表结果
SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder()
.id(IdGenerator.generate())
.salarySobId(salaryAcctRecordPO.getSalarySobId())
.salaryItemId(oldResult.getSalaryItemId())
.salaryAcctRecordId(newSalaryAcctRecordId)
.salaryAcctEmpId(acctEmp.getId().toString())
.employeeId(acctEmp.getEmployeeId().toString())
.taxAgentId(acctEmp.getTaxAgentId())
.resultValue(StringUtils.trim(oldResult.getResultValue()))
.creator(uid)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
DataCollectionEmployee dataCollectionEmployee = emps.get(acctEmp.getEmployeeId());
if (dataCollectionEmployee != null) {
po.setDepartmentId(dataCollectionEmployee.getDepartmentId());
po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid());
po.setCostcenterId(dataCollectionEmployee.getCostcenterId());
po.setJobtitleId(dataCollectionEmployee.getJobtitleId());
po.setLocationId(dataCollectionEmployee.getLocationId());
}
needInsertResultReportList.add(po);
});
});
// 入库
getSalaryAcctResultService(user).batchSave(needInsertResultList);
getSalaryAcctReportService(user).batchSave(needInsertResultReportList);
}
}

View File

@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO;
@ -46,6 +47,7 @@ import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.util.valid.ValidUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@ -55,6 +57,7 @@ import com.weaver.util.threadPool.entity.LocalRunnable;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@ -1088,4 +1091,169 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
}
return true;
}
@Override
public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) {
ValidUtil.doValidator(param);
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId());
if (ObjectUtils.isEmpty(salaryAcctRecordPO)) {
throw new SalaryRunTimeException("薪资核算记录不存在,或已被删除");
}
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// 薪资账套中包含的薪资项目
List<Long> salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList());
if (!salarySobItemIds.contains(param.getSalaryItemId())) {
throw new SalaryRunTimeException("该账套不包含该薪资项目或已被删除,请先检查账套");
}
// 获取需要更新的核算人员信息
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = Collections.emptyList();
if (CollectionUtils.isEmpty(param.getSalaryAcctEmpIdList())) {
// 没有选择核算人员更新核算记录中所有人员
salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()));
} else {
salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getSalaryAcctEmpIdList()));
}
if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) {
List<Long> salaryAcctEmployeeIdList = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList());
// 查询薪资核算结果
List<SalaryAcctResultPO> resultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIdList, Collections.singleton(param.getSalaryItemId()));
Map<Long, SalaryAcctResultPO> salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(resultPOS, SalaryAcctResultPO::getSalaryAcctEmpId);
List<SalaryAcctResultPO> needUpdateList = new ArrayList<>();
List<SalaryAcctResultPO> needInsertList = new ArrayList<>();
Date now = new Date();
salaryAcctEmployeePOList.forEach(salaryAcctEmployeePO -> {
if (salaryAcctResultPOMap.containsKey(salaryAcctEmployeePO.getId())) {
// 更新
SalaryAcctResultPO po = salaryAcctResultPOMap.get(salaryAcctEmployeePO.getId());
po.setResultValue(param.getValue());
po.setUpdateTime(now);
needUpdateList.add(po);
} else {
// 新增
needInsertList.add(SalaryAcctResultPO.builder()
.salarySobId(salaryAcctRecordPO.getSalarySobId())
.salaryItemId(param.getSalaryItemId())
.salaryAcctRecordId(param.getSalaryAcctRecordId())
.salaryAcctEmpId(salaryAcctEmployeePO.getId())
.employeeId(salaryAcctEmployeePO.getEmployeeId())
.taxAgentId(salaryAcctEmployeePO.getTaxAgentId())
.resultValue(StringUtils.trim(param.getValue()))
.originResultValue("")
.creator(Long.valueOf(user.getUID()))
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build());
}
});
// 入库
if (CollectionUtils.isNotEmpty(needUpdateList)) {
getSalaryAcctResultMapper().batchUpdate(needUpdateList);
}
if (CollectionUtils.isNotEmpty(needInsertList)) {
getSalaryAcctResultMapper().batchInsert(needInsertList);
}
}
}
@Override
public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) {
List<DataCollectionEmployee> dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport();
Map<Long, DataCollectionEmployee> emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId);
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId());
if (ObjectUtils.isEmpty(salaryAcctRecordPO)) {
throw new SalaryRunTimeException("薪资核算结果不存在或已被删除");
}
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId());
Map<Long, SalaryAcctEmployeePO> salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId);
// 需要更新数据的薪资核算人员id
List<Long> updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getSalaryAcctEmpId).collect(Collectors.toList());
// 查询原来的薪资核算结果
List<SalaryAcctResultPO> salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build());
// 解密
encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class);
// 保存参数转换成薪资核算结果po
List<SalaryAcctResultPO> salaryAcctResultPOS = new ArrayList<>();
// 获取薪资项目回算前的值
Map<String, String> salaryAcctResultOldPOMap = salaryAcctResultPOSOld.stream()
.collect(Collectors.groupingBy(p -> p.getSalaryAcctEmpId() + "-" + p.getSalaryItemId(),
Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(SalaryAcctResultPO::getId)),
s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse(""))));
List<SalaryAcctResultReportPO> salaryAcctResultReportPOS = new ArrayList<>();
param.getResultValueList().forEach(resultValue -> {
SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getSalaryAcctEmpId());
salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID()));
// 报表
salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps));
});
// 删除原来的薪资核算结果
param.getResultValueList().stream().forEach(resultValue -> {
List<Long> saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList());
deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds);
// 报表
getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds);
});
// 保存薪资核算结果
if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) {
// 加密
encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class);
List<List<SalaryAcctResultPO>> partition = Lists.partition(salaryAcctResultPOS, 100);
partition.forEach(getSalaryAcctResultMapper()::batchInsert);
}
//报表
if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) {
getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);
}
}
public void temp(SalaryAcctResultSaveParam saveParam){
List<DataCollectionEmployee> dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport();
Map<Long, DataCollectionEmployee> emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId);
// 查询薪资核算人员
SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(saveParam.getSalaryAcctEmpId());
if (Objects.isNull(salaryAcctEmployeePO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除"));
}
// 查询原来的薪资核算结果
List<SalaryAcctResultPO> salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build());
// 解密
encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class);
// 保存参数转换成薪资核算结果po
List<SalaryAcctResultPO> salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(salaryAcctResultPOSOld, saveParam, salaryAcctEmployeePO, (long) user.getUID());
SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK);
// 删除原来的薪资核算结果
List<Long> saveItemIds = saveParam.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList());
deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds);
// 保存薪资核算结果
if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) {
// 加密
encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class);
List<List<SalaryAcctResultPO>> partition = Lists.partition(salaryAcctResultPOS, 100);
partition.forEach(getSalaryAcctResultMapper()::batchInsert);
}
//报表 todo
getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds);
List<SalaryAcctResultReportPO> salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps);
if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) {
getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);
}
// 存储薪资核算结果数据来源日志
salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId());
saveSalaryAcctResultLog(salaryAcctResultPOSOld, salaryAcctResultPOS);
}
}

View File

@ -158,6 +158,15 @@ public class SalaryAcctController {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, String>(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId());
}
// 结账
@GET
@Path("/lkszJz")
@Produces(MediaType.APPLICATION_JSON)
public String lkszJz(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, String>(user).run(getSalaryAcctRecordWrapper(user)::lkszJz, id);
}
/* ********************************薪资核算记录相关 end*********************************/
@ -448,6 +457,24 @@ public class SalaryAcctController {
return new ResponseResult<SalaryAcctResultUpdateLockStatusParam, String>(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param);
}
//鲁控数字批量更新
@POST
@Path("/acctresult/lkszBatchUpdate")
@Produces(MediaType.APPLICATION_JSON)
public String lkszBatchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctResultBatchUpdateParam, String>(user).run(getSalaryAcctResultWrapper(user)::lkszBatchUpdate, param);
}
//鲁控数字批量编辑
@POST
@Path("/acctresult/lkszBatchEdit")
@Produces(MediaType.APPLICATION_JSON)
public String lkszBatchEdit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchEditParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctResultBatchEditParam, String>(user).run(getSalaryAcctResultWrapper(user)::lkszBatchEdit, param);
}
//薪资核算
@POST
@Path("/acctresult/accounting")

View File

@ -258,4 +258,12 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
public void backCalculate(Long salaryAcctRecordId){
getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId);
}
/**
* 鲁控数字-结账
* @param salaryAcctRecordId
*/
public void lkszJz(Long salaryAcctRecordId) {
getSalaryAcctRecordService(user).lkszJz(salaryAcctRecordId);
}
}

View File

@ -9,10 +9,7 @@ import com.engine.salary.entity.progress.ProgressDTO;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.*;
@ -260,6 +257,22 @@ public class SalaryAcctResultWrapper extends Service {
return getSalaryAcctResultService(user).checkAuth(salaryAcctRecordId);
}
/**
* 鲁控数字薪资核算结果批量更新
* @param param
*/
public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) {
getSalaryAcctResultService(user).lkszBatchUpdate(param);
}
/**
* 鲁控数字薪资核算结果批量编辑
* @param param
*/
public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) {
getSalaryAcctResultService(user).lkszBatchEdit(param);
}
/**
* 薪资核算-校验