Merge branch 'custom/鲁控数字' into feature/231202-批量编辑
This commit is contained in:
commit
2b6b1ef2c4
|
|
@ -7,7 +7,6 @@ import com.engine.common.util.ServiceUtil;
|
|||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.cache.SalaryCacheKey;
|
||||
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
||||
import com.engine.salary.encrypt.AESEncryptUtil;
|
||||
import com.engine.salary.encrypt.EncryptUtil;
|
||||
import com.engine.salary.entity.progress.ProgressDTO;
|
||||
import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ public class WeaTableColumnGroup extends WeaTableColumn {
|
|||
*/
|
||||
private Integer pattern;
|
||||
|
||||
/**
|
||||
* 字段类型
|
||||
*/
|
||||
private String dataType;
|
||||
|
||||
private List<WeaTableColumnGroup> children;
|
||||
|
||||
public WeaTableColumnGroup() {
|
||||
|
|
@ -40,6 +45,13 @@ public class WeaTableColumnGroup extends WeaTableColumn {
|
|||
this.pattern = pattern;
|
||||
}
|
||||
|
||||
public WeaTableColumnGroup(String width, String text, String column, String lockStatus, Integer pattern, String dataType) {
|
||||
super(width, text, column);
|
||||
this.lockStatus = lockStatus;
|
||||
this.pattern = pattern;
|
||||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
|
||||
public WeaTableColumnGroup(String width, String text, String column, List<WeaTableColumnGroup> children) {
|
||||
super(width, text, column);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -70,13 +70,16 @@ public class SalaryAcctRecordBO {
|
|||
btnList.add(new WeaTableOperate("删除", null, "1"));
|
||||
}
|
||||
btnList.add(new WeaTableOperate("归档", null, "2"));
|
||||
btnList.add(new WeaTableOperate("结转", null, "6"));
|
||||
} else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){
|
||||
btnList.add(new WeaTableOperate("查看", null, "3"));
|
||||
btnList.add(new WeaTableOperate("重新核算", null, "4"));
|
||||
btnList.add(new WeaTableOperate("回算", null, "5"));
|
||||
btnList.add(new WeaTableOperate("结转", null, "6"));
|
||||
} else {
|
||||
btnList.add(new WeaTableOperate("查看", null, "3"));
|
||||
btnList.add(new WeaTableOperate("重新核算", null, "4"));
|
||||
btnList.add(new WeaTableOperate("结转", null, "6"));
|
||||
}
|
||||
return SalaryAcctRecordListDTO.builder()
|
||||
.id(salaryAcctRecordPO.getId())
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import com.engine.salary.util.SalaryI18nUtil;
|
|||
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;
|
||||
|
|
@ -180,9 +181,9 @@ public class SalaryAcctResultBO {
|
|||
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
|
||||
} else {
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
|
||||
}
|
||||
}
|
||||
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
|
||||
|
|
@ -191,18 +192,18 @@ public class SalaryAcctResultBO {
|
|||
// 没有分类的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
|
||||
} else {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
|
||||
}
|
||||
|
||||
}
|
||||
// 回算的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) {
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
|
||||
} else {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -417,7 +418,8 @@ public class SalaryAcctResultBO {
|
|||
List<SalarySobBackItemPO> salarySobBackItemPOS,
|
||||
List<SalaryItemPO> salaryBackItemPOS,
|
||||
Map<Long, String> salaryBackItemFormula,
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap) {
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap,
|
||||
List<Long> lockItems) {
|
||||
|
||||
// 员工信息字段
|
||||
Map<String, String> employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee);
|
||||
|
|
@ -446,7 +448,7 @@ public class SalaryAcctResultBO {
|
|||
List<SalarySobItemPO> groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList());
|
||||
if(CollectionUtils.isNotEmpty(groupItems)){
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = groupItems.stream()
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems))
|
||||
.collect(Collectors.toList());
|
||||
itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder()
|
||||
.salarySobItemGroupId(groupPO.getId())
|
||||
|
|
@ -459,7 +461,7 @@ public class SalaryAcctResultBO {
|
|||
List<SalarySobItemPO> noGroupItems = salarySobItemPOMap.getOrDefault(0L, Collections.emptyList());
|
||||
if(CollectionUtils.isNotEmpty(noGroupItems)){
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = noGroupItems.stream()
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems))
|
||||
.collect(Collectors.toList());
|
||||
itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder()
|
||||
.salarySobItemGroupId(0L)
|
||||
|
|
@ -531,7 +533,8 @@ public class SalaryAcctResultBO {
|
|||
private static SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO convert2SalaryAcctResultDetailItemDTO(SalarySobItemPO salarySobItemPO,
|
||||
SalaryItemPO salaryItemPO,
|
||||
Map<Long, String> resultValueMap,
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap) {
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap,
|
||||
List<Long> lockItems) {
|
||||
|
||||
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0));
|
||||
String itemFormulaContent;
|
||||
|
|
@ -551,6 +554,7 @@ public class SalaryAcctResultBO {
|
|||
// .canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0))
|
||||
.canEdit(true)
|
||||
.pattern(salarySobItemPO.getPattern())
|
||||
.lockStatus(lockItems.contains(salarySobItemPO.getSalaryItemId()) ? LockStatusEnum.LOCK.getValue() : LockStatusEnum.UNLOCK.getValue())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
@ -617,6 +621,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);
|
||||
|
|
|
|||
|
|
@ -71,6 +71,9 @@ public class SalaryAcctResultDetailDTO {
|
|||
|
||||
// 保留小数位数
|
||||
private Integer pattern;
|
||||
|
||||
// 锁定状态
|
||||
private String lockStatus;
|
||||
}
|
||||
|
||||
@Data
|
||||
|
|
|
|||
|
|
@ -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 static class resultValue {
|
||||
|
||||
// 薪资核算人员id
|
||||
private Long id;
|
||||
|
||||
// 薪资项目值
|
||||
private List<SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam> items;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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> idList;
|
||||
|
||||
//薪资项目值
|
||||
private String value;
|
||||
|
||||
}
|
||||
|
|
@ -207,4 +207,10 @@ public interface SalaryAcctRecordService {
|
|||
|
||||
|
||||
List<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po);
|
||||
|
||||
/**
|
||||
* 鲁控数字-结转
|
||||
* @param salaryAcctRecordId
|
||||
*/
|
||||
void lkszJz(Long salaryAcctRecordId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ public interface SalaryAcctReportService {
|
|||
*/
|
||||
void batchSave(Collection<SalaryAcctResultReportPO> pos);
|
||||
|
||||
void lkszBatchSave(Collection<SalaryAcctResultReportPO> pos);
|
||||
|
||||
/**
|
||||
* 根据核算记录删除
|
||||
* @param salaryAcctRecordIds
|
||||
|
|
|
|||
|
|
@ -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 batchUpdate(SalaryAcctResultBatchUpdateParam param);
|
||||
|
||||
/**
|
||||
* 鲁控数字薪资核算结果批量编辑
|
||||
* @param param
|
||||
*/
|
||||
void lkszBatchEdit(SalaryAcctResultBatchEditParam param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,87 @@ 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).lkszBatchSave(needInsertResultReportList);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,6 +62,19 @@ public class SalaryAcctReportServiceImpl extends Service implements SalaryAcctRe
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lkszBatchSave(Collection<SalaryAcctResultReportPO> pos) {
|
||||
if (CollectionUtils.isNotEmpty(pos)) {
|
||||
SalarySysConfPO disPlay = getSalarySysConfService(user).getOneByCode(DISPLAY_EMP_INFO_REPORT);
|
||||
//默认不显示,关闭状态
|
||||
if (disPlay == null || OpenEnum.OFF.getValue().equals(disPlay.getConfValue())) {
|
||||
pos = encryptUtil.encryptList(new ArrayList<>(pos), SalaryAcctResultReportPO.class);
|
||||
}
|
||||
List<List<SalaryAcctResultReportPO>> partition = Lists.partition((List) pos, 100);
|
||||
partition.forEach(getSalaryAcctResultReportMapper()::batchInsert);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds) {
|
||||
if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) {
|
||||
|
|
|
|||
|
|
@ -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,15 +47,18 @@ 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;
|
||||
import com.weaver.util.threadPool.ThreadPoolUtil;
|
||||
import com.weaver.util.threadPool.constant.ModulePoolEnum;
|
||||
import com.weaver.util.threadPool.entity.LocalRunnable;
|
||||
import dm.jdbc.util.IdGenerator;
|
||||
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;
|
||||
|
|
@ -298,9 +302,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
TaxAgentPO taxAgent = getTaxAgentService(user).getById(salaryAcctEmployeePO.getTaxAgentId());
|
||||
// 查询公式
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap = getSalaryAcctResultService(user).getColumnBySalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
List<Long> lockItems = byId.getLockSalaryItemIds() == null ? Collections.emptyList() : byId.getLockSalaryItemIds();
|
||||
|
||||
// 转换成薪资核算结果详情dto
|
||||
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap);
|
||||
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap, lockItems);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -1088,4 +1093,204 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchUpdate(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 = new ArrayList<>();
|
||||
if (CollectionUtils.isEmpty(param.getIdList())) {
|
||||
// 没有选择核算人员,更新核算记录中所有人员
|
||||
salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()));
|
||||
} else {
|
||||
salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getIdList()));
|
||||
}
|
||||
|
||||
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<DataCollectionEmployee> dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport();
|
||||
Map<Long, DataCollectionEmployee> emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId);
|
||||
List<SalaryAcctResultPO> needUpdateList = new ArrayList<>();
|
||||
List<SalaryAcctResultPO> needInsertList = new ArrayList<>();
|
||||
Date now = new Date();
|
||||
List<SalaryAcctResultReportPO> salaryAcctResultReportPOS = new ArrayList<>();
|
||||
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(param.getValue())
|
||||
.originResultValue("")
|
||||
.creator(Long.valueOf(user.getUID()))
|
||||
.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(param.getSalaryItemId())
|
||||
.salaryAcctRecordId(param.getSalaryAcctRecordId())
|
||||
.salaryAcctEmpId(salaryAcctEmployeePO.getId().toString())
|
||||
.employeeId(salaryAcctEmployeePO.getEmployeeId().toString())
|
||||
.taxAgentId(salaryAcctEmployeePO.getTaxAgentId())
|
||||
.resultValue(param.getValue())
|
||||
.creator(Long.valueOf(user.getUID()))
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployeePO.getEmployeeId());
|
||||
if (dataCollectionEmployee != null) {
|
||||
po.setDepartmentId(dataCollectionEmployee.getDepartmentId());
|
||||
po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid());
|
||||
po.setCostcenterId(dataCollectionEmployee.getCostcenterId());
|
||||
po.setJobtitleId(dataCollectionEmployee.getJobtitleId());
|
||||
po.setLocationId(dataCollectionEmployee.getLocationId());
|
||||
}
|
||||
salaryAcctResultReportPOS.add(po);
|
||||
});
|
||||
|
||||
// 入库
|
||||
if (CollectionUtils.isNotEmpty(needUpdateList)) {
|
||||
// 数据加密
|
||||
encryptUtil.encryptList(needUpdateList, SalaryAcctResultPO.class);
|
||||
List<List<SalaryAcctResultPO>> partition = Lists.partition(needUpdateList, 100);
|
||||
partition.forEach(getSalaryAcctResultMapper()::batchUpdate);
|
||||
}
|
||||
batchSave(needInsertList);
|
||||
|
||||
// 报表入库前先删除
|
||||
getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(param.getIdList(), Collections.singletonList(param.getSalaryItemId()) );
|
||||
getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@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::getId).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.getId());
|
||||
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.getId()), saveItemIds);
|
||||
// 报表
|
||||
getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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/batchUpdate")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String batchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryAcctResultBatchUpdateParam, String>(user).run(getSalaryAcctResultWrapper(user)::batchUpdate, 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")
|
||||
|
|
|
|||
|
|
@ -266,4 +266,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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 batchUpdate(SalaryAcctResultBatchUpdateParam param) {
|
||||
getSalaryAcctResultService(user).batchUpdate(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 鲁控数字薪资核算结果批量编辑
|
||||
* @param param
|
||||
*/
|
||||
public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) {
|
||||
getSalaryAcctResultService(user).lkszBatchEdit(param);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 薪资核算-校验
|
||||
|
|
|
|||
Loading…
Reference in New Issue