Merge branch 'fix/salaryAcctResutAutoLock' into release/2.8.2.2305.02
This commit is contained in:
commit
20262169c9
|
|
@ -7,6 +7,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
|||
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeInfoDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
|
||||
import com.engine.salary.entity.salaryacct.po.*;
|
||||
import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO;
|
||||
|
|
@ -15,11 +16,9 @@ import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO;
|
|||
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
||||
import com.engine.salary.entity.salarysob.po.*;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
|
|
@ -371,12 +370,14 @@ public class SalaryAcctResultBO {
|
|||
TaxAgentPO taxAgentPO,
|
||||
SalaryAcctEmployeePO salaryAcctEmployee,
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFields,
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS,
|
||||
List<SalarySobItemPO> salarySobItemPOS,
|
||||
List<SalaryItemPO> salaryItems,
|
||||
List<SalaryAcctResultPO> salaryAcctResults,
|
||||
List<SalarySobBackItemPO> salarySobBackItemPOS,
|
||||
List<SalaryItemPO> salaryBackItemPOS,
|
||||
Map<Long, String> salaryBackItemFormula) {
|
||||
Map<Long, String> salaryBackItemFormula,
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap) {
|
||||
|
||||
// 员工信息字段
|
||||
Map<String, String> employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee);
|
||||
|
|
@ -393,16 +394,36 @@ public class SalaryAcctResultBO {
|
|||
Map<Long, String> resultValueMap = SalaryEntityUtil.convert2Map(salaryAcctResults, SalaryAcctResultPO::getSalaryItemId, SalaryAcctResultPO::getResultValue);
|
||||
Map<Long, SalaryItemPO> salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId);
|
||||
Map<Long, SalaryItemPO> salaryBackItemMap = SalaryEntityUtil.convert2Map(salaryBackItemPOS, SalaryItemPO::getId);
|
||||
// 公式项的值(不根据salaryItemPO的valueType判断是因为薪资项目的valueType属性改变后并不会同步更新薪资账套中的薪资项目的formulaId字段)
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> formulaItems = salarySobItemPOS.stream()
|
||||
.filter(salarySobItemPO -> salarySobItemPO.getFormulaId() > 0)
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap))
|
||||
.collect(Collectors.toList());
|
||||
// 输入/导入项目的值
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> inputItems = salarySobItemPOS.stream()
|
||||
.filter(salarySobItemPO -> salarySobItemPO.getFormulaId() <= 0)
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap))
|
||||
.collect(Collectors.toList());
|
||||
Map<Long, List<SalarySobItemPO>> salarySobItemPOMap = SalaryEntityUtil.group2Map(salarySobItemPOS, SalarySobItemPO::getSalarySobItemGroupId);
|
||||
|
||||
// 对分组进行排序
|
||||
salarySobItemGroupPOS = sortGroup(salarySobItemGroupPOS);
|
||||
// 对分组内薪资项目排序
|
||||
sortItem(salarySobItemPOMap);
|
||||
// 根据账套分组封装薪资项目的值
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO> itemsByGroup = new ArrayList<>();
|
||||
for(SalarySobItemGroupPO groupPO : salarySobItemGroupPOS){
|
||||
List<SalarySobItemPO> groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList());
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = groupItems.stream()
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
|
||||
.collect(Collectors.toList());
|
||||
itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder()
|
||||
.salarySobItemGroupId(groupPO.getId())
|
||||
.salarySobItemGroupName(groupPO.getName())
|
||||
.salaryItems(items)
|
||||
.sortedIndex(groupPO.getSortedIndex()).build() );
|
||||
}
|
||||
|
||||
// // 公式项的值(不根据salaryItemPO的valueType判断是因为薪资项目的valueType属性改变后并不会同步更新薪资账套中的薪资项目的formulaId字段)
|
||||
// List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> formulaItems = salarySobItemPOS.stream()
|
||||
// .filter(salarySobItemPO -> salarySobItemPO.getFormulaId() > 0)
|
||||
// .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap))
|
||||
// .collect(Collectors.toList());
|
||||
// // 输入/导入项目的值
|
||||
// List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> inputItems = salarySobItemPOS.stream()
|
||||
// .filter(salarySobItemPO -> salarySobItemPO.getFormulaId() <= 0)
|
||||
// .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap))
|
||||
// .collect(Collectors.toList());
|
||||
// // TODO 临时处理,后续删除,将已发补发加入输入、导入
|
||||
// formulaItems.addAll(salarySobBackItemPOS.stream()
|
||||
// .map(salarySobBackItemPO -> backItemConvert2SalaryAcctResultDetailItemDTO(salarySobBackItemPO, salaryBackItemMap.get(salarySobBackItemPO.getSalaryItemId()), resultValueMap, salaryBackItemFormula))
|
||||
|
|
@ -415,12 +436,34 @@ public class SalaryAcctResultBO {
|
|||
.id(salaryAcctEmployee.getId())
|
||||
.employeeId(salaryAcctEmployee.getEmployeeId())
|
||||
.employeeInfos(employeeInfos)
|
||||
.formulaItems(formulaItems)
|
||||
.inputItems(inputItems)
|
||||
// .formulaItems(formulaItems)
|
||||
// .inputItems(inputItems)
|
||||
.itemsByGroup(itemsByGroup)
|
||||
.issuedAndReissueItems(issuedAndReissueItems)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static List<SalarySobItemGroupPO> sortGroup(List<SalarySobItemGroupPO> salarySobItemGroupPOS) {
|
||||
if(CollectionUtils.isEmpty(salarySobItemGroupPOS)){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return salarySobItemGroupPOS.stream().sorted(Comparator.comparingInt(SalarySobItemGroupPO::getSortedIndex)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪资账套的薪资项目按照sortedIndex排序
|
||||
*
|
||||
*/
|
||||
public static void sortItem(Map<Long, List<SalarySobItemPO>> salarySobItemPOMap) {
|
||||
for(Map.Entry<Long, List<SalarySobItemPO>> entry : salarySobItemPOMap.entrySet()){
|
||||
List<SalarySobItemPO> items = entry.getValue();
|
||||
if (CollectionUtils.isNotEmpty(items)) {
|
||||
List<SalarySobItemPO> sortedValue = items.stream().sorted(Comparator.comparingInt(SalarySobItemPO::getSortedIndex)).collect(Collectors.toList());
|
||||
salarySobItemPOMap.put(entry.getKey(), sortedValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换成薪资核算结果详情dto
|
||||
*
|
||||
|
|
@ -431,14 +474,26 @@ public class SalaryAcctResultBO {
|
|||
*/
|
||||
private static SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO convert2SalaryAcctResultDetailItemDTO(SalarySobItemPO salarySobItemPO,
|
||||
SalaryItemPO salaryItemPO,
|
||||
Map<Long, String> resultValueMap) {
|
||||
Map<Long, String> resultValueMap,
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap) {
|
||||
|
||||
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getValueType).orElse(0));
|
||||
String itemFormulaContent;
|
||||
if(Objects.equals(salaryValueTypeEnum.getValue(),SalaryValueTypeEnum.FORMULA.getValue())){
|
||||
itemFormulaContent = Optional.ofNullable(formulaContentMap.get(salarySobItemPO.getSalaryItemId().toString())).map(SalaryAcctResultListColumnDTO::getFormulaContent).orElse("");
|
||||
}else{
|
||||
itemFormulaContent = salaryValueTypeEnum == null ? "" : salaryValueTypeEnum.getDefaultLabel();
|
||||
}
|
||||
|
||||
// 薪资项目的数据类型
|
||||
return SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO.builder()
|
||||
.salaryItemId(salarySobItemPO.getSalaryItemId())
|
||||
.salaryItemName(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getName).orElse(StringUtils.EMPTY))
|
||||
.resultValue(resultValueMap.getOrDefault(salarySobItemPO.getSalaryItemId(), StringUtils.EMPTY))
|
||||
.dataType(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getDataType).orElse(SalaryDataTypeEnum.NUMBER.getValue()))
|
||||
.canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0))
|
||||
.itemFormulaContent(itemFormulaContent)
|
||||
// .canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0))
|
||||
.canEdit(true)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
@ -459,7 +514,7 @@ public class SalaryAcctResultBO {
|
|||
.salaryItemId(salarySobBackItemPO.getSalaryItemId())
|
||||
.salaryItemName(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getName).orElse(StringUtils.EMPTY))
|
||||
.resultValue(resultValueMap.getOrDefault(salarySobBackItemPO.getSalaryItemId(), StringUtils.EMPTY))
|
||||
.salaryBackItemFormula(salaryBackItemFormula.get(salarySobBackItemPO.getSalaryItemId()))
|
||||
.itemFormulaContent(salaryBackItemFormula.get(salarySobBackItemPO.getSalaryItemId()))
|
||||
.dataType(Optional.ofNullable(salarySobBackItemPO).map(SalarySobBackItemPO::getDataType).orElse(SalaryDataTypeEnum.NUMBER.getValue()))
|
||||
.canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0))
|
||||
.build();
|
||||
|
|
@ -494,7 +549,7 @@ public class SalaryAcctResultBO {
|
|||
.salaryAcctEmpId(salaryAcctEmployee.getId())
|
||||
.employeeId(salaryAcctEmployee.getEmployeeId())
|
||||
.taxAgentId(salaryAcctEmployee.getTaxAgentId())
|
||||
.resultValue(e.getResultValue())
|
||||
.resultValue(StringUtils.trim(e.getResultValue()))
|
||||
.originResultValue(salaryAcctResultOldPOMap.get(saveParam.getSalaryAcctEmpId() + "-" + e.getSalaryItemId()))
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import lombok.Builder;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -22,14 +21,17 @@ import java.util.List;
|
|||
@AllArgsConstructor
|
||||
public class SalaryAcctImportFieldDTO {
|
||||
|
||||
//公式项
|
||||
private Collection<ImportFieldDTO> formulaItems;
|
||||
// //公式项
|
||||
// private Collection<ImportFieldDTO> formulaItems;
|
||||
//
|
||||
// //sql项
|
||||
// private Collection<ImportFieldDTO> sqlItems;
|
||||
//
|
||||
// //输入项
|
||||
// private Collection<ImportFieldDTO> inputItems;
|
||||
|
||||
//sql项
|
||||
private Collection<ImportFieldDTO> sqlItems;
|
||||
|
||||
//输入项
|
||||
private Collection<ImportFieldDTO> inputItems;
|
||||
// 根据账套分组的薪资项目
|
||||
private List<SalaryAcctImportFieldDTO.ImportFieldByGroupDTO> itemsByGroup;
|
||||
|
||||
// 缓存勾选项目
|
||||
private List<Long> checkItems;
|
||||
|
|
@ -46,4 +48,23 @@ public class SalaryAcctImportFieldDTO {
|
|||
//薪资项目名称
|
||||
private String salaryItemName;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class ImportFieldByGroupDTO {
|
||||
|
||||
//薪资账套分组id")
|
||||
private Long salarySobItemGroupId;
|
||||
|
||||
//薪资项目分组名称")
|
||||
private String salarySobItemGroupName;
|
||||
|
||||
//分组中包含的薪资项目
|
||||
private List<SalaryAcctImportFieldDTO.ImportFieldDTO> salaryItems;
|
||||
|
||||
//分组顺序
|
||||
private Integer sortedIndex;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,9 @@ public class SalaryAcctResultDetailDTO {
|
|||
//输入项")
|
||||
private List<SalaryAcctResultDetailItemDTO> inputItems;
|
||||
|
||||
// 根据账套分组的薪资项目
|
||||
private List<SalaryAcctResultDetailItemByGroupDTO> itemsByGroup;
|
||||
|
||||
//已发补发
|
||||
private List<SalaryAcctResultDetailItemDTO> issuedAndReissueItems;
|
||||
|
||||
|
|
@ -58,7 +61,7 @@ public class SalaryAcctResultDetailDTO {
|
|||
private String resultValue;
|
||||
|
||||
// 公式/输入
|
||||
private String salaryBackItemFormula;
|
||||
private String itemFormulaContent;
|
||||
|
||||
//数据类型:number、string")
|
||||
private String dataType;
|
||||
|
|
@ -66,4 +69,23 @@ public class SalaryAcctResultDetailDTO {
|
|||
//是否可编辑
|
||||
private Boolean canEdit;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class SalaryAcctResultDetailItemByGroupDTO {
|
||||
|
||||
//薪资账套分组id")
|
||||
private Long salarySobItemGroupId;
|
||||
|
||||
//薪资项目分组名称")
|
||||
private String salarySobItemGroupName;
|
||||
|
||||
//分组中包含的薪资项目
|
||||
private List<SalaryAcctResultDetailItemDTO> salaryItems;
|
||||
|
||||
//分组顺序
|
||||
private Integer sortedIndex;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,12 @@
|
|||
package com.engine.salary.entity.salaryacct.param;
|
||||
|
||||
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 更新核算锁定状态
|
||||
|
|
@ -12,6 +17,9 @@ import lombok.Data;
|
|||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SalaryAcctResultUpdateLockStatusParam {
|
||||
|
||||
//锁定状态
|
||||
|
|
@ -23,6 +31,9 @@ public class SalaryAcctResultUpdateLockStatusParam {
|
|||
//薪资核算人员的id")
|
||||
// private Set<String> idStrSet;
|
||||
|
||||
//薪资项目的IdList
|
||||
private Set<Long> salaryItemIds;
|
||||
|
||||
//薪资核算记录的id")
|
||||
private Long salaryAcctRecordId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,10 +24,11 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
|||
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.UserStatusEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.sys.SalarySysConfMapper;
|
||||
import com.engine.salary.service.*;
|
||||
|
|
@ -118,6 +119,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
return (SalaryEmployeeService) ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobItemGroupService getSalarySobItemGroupService(User user) {
|
||||
return ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryCheckResultService salaryCheckResultService;
|
||||
|
||||
private SalaryCheckResultDetailService salaryCheckResultDetailService;
|
||||
|
|
@ -375,36 +380,65 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId);
|
||||
// 查询薪资项目
|
||||
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listByIds(salaryItemIds);
|
||||
// 薪资项目中的公式项
|
||||
List<SalaryAcctImportFieldDTO.ImportFieldDTO> formulaItems = salaryItems.stream()
|
||||
.filter(salaryItemPO -> Objects.equals(salaryItemPO.getValueType(), SalaryValueTypeEnum.FORMULA.getValue()))
|
||||
.map(salaryItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
.salaryItemId(salaryItemPO.getId())
|
||||
.salaryItemName(salaryItemPO.getName())
|
||||
Map<Long, SalaryItemPO> salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId);
|
||||
|
||||
Map<Long, List<SalarySobItemPO>> salarySobItemPOMap = SalaryEntityUtil.group2Map(salarySobItems, SalarySobItemPO::getSalarySobItemGroupId);
|
||||
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
// 对分组进行排序
|
||||
salarySobItemGroupPOS = SalaryAcctResultBO.sortGroup(salarySobItemGroupPOS);
|
||||
// 对分组内薪资项目排序
|
||||
SalaryAcctResultBO.sortItem(salarySobItemPOMap);
|
||||
// 根据账套分组封装薪资项目的值
|
||||
List<SalaryAcctImportFieldDTO.ImportFieldByGroupDTO> itemsByGroup = new ArrayList<>();
|
||||
for(SalarySobItemGroupPO groupPO : salarySobItemGroupPOS){
|
||||
List<SalarySobItemPO> groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList());
|
||||
List<SalaryAcctImportFieldDTO.ImportFieldDTO> items = groupItems.stream()
|
||||
.map(salarySobItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
.salaryItemId(salarySobItemPO.getSalaryItemId())
|
||||
.salaryItemName(Optional.ofNullable(salaryItemMap.get(salarySobItemPO.getSalaryItemId())).map(SalaryItemPO::getName).orElse(StringUtils.EMPTY))
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
// 薪资项目中的SQl项
|
||||
List<SalaryAcctImportFieldDTO.ImportFieldDTO> sqlItems = salaryItems.stream()
|
||||
.filter(salaryItemPO -> Objects.equals(salaryItemPO.getValueType(), SalaryValueTypeEnum.SQL.getValue()))
|
||||
.map(salaryItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
.salaryItemId(salaryItemPO.getId())
|
||||
.salaryItemName(salaryItemPO.getName())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
// 薪资项目中的输入项
|
||||
List<SalaryAcctImportFieldDTO.ImportFieldDTO> inputItems = salaryItems.stream()
|
||||
.filter(salaryItemPO -> Objects.equals(salaryItemPO.getValueType(), SalaryValueTypeEnum.INPUT.getValue()))
|
||||
.map(salaryItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
.salaryItemId(salaryItemPO.getId())
|
||||
.salaryItemName(salaryItemPO.getName())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
.collect(Collectors.toList());
|
||||
|
||||
itemsByGroup.add(SalaryAcctImportFieldDTO.ImportFieldByGroupDTO.builder()
|
||||
.salarySobItemGroupId(groupPO.getId())
|
||||
.salarySobItemGroupName(groupPO.getName())
|
||||
.salaryItems(items)
|
||||
.sortedIndex(groupPO.getSortedIndex()).build() );
|
||||
}
|
||||
|
||||
// // 薪资项目中的公式项
|
||||
// List<SalaryAcctImportFieldDTO.ImportFieldDTO> formulaItems = salaryItems.stream()
|
||||
// .filter(salaryItemPO -> Objects.equals(salaryItemPO.getValueType(), SalaryValueTypeEnum.FORMULA.getValue()))
|
||||
// .map(salaryItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
// .salaryItemId(salaryItemPO.getId())
|
||||
// .salaryItemName(salaryItemPO.getName())
|
||||
// .build())
|
||||
// .collect(Collectors.toList());
|
||||
// // 薪资项目中的SQl项
|
||||
// List<SalaryAcctImportFieldDTO.ImportFieldDTO> sqlItems = salaryItems.stream()
|
||||
// .filter(salaryItemPO -> Objects.equals(salaryItemPO.getValueType(), SalaryValueTypeEnum.SQL.getValue()))
|
||||
// .map(salaryItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
// .salaryItemId(salaryItemPO.getId())
|
||||
// .salaryItemName(salaryItemPO.getName())
|
||||
// .build())
|
||||
// .collect(Collectors.toList());
|
||||
// // 薪资项目中的输入项
|
||||
// List<SalaryAcctImportFieldDTO.ImportFieldDTO> inputItems = salaryItems.stream()
|
||||
// .filter(salaryItemPO -> Objects.equals(salaryItemPO.getValueType(), SalaryValueTypeEnum.INPUT.getValue()))
|
||||
// .map(salaryItemPO -> SalaryAcctImportFieldDTO.ImportFieldDTO.builder()
|
||||
// .salaryItemId(salaryItemPO.getId())
|
||||
// .salaryItemName(salaryItemPO.getName())
|
||||
// .build())
|
||||
// .collect(Collectors.toList());
|
||||
// 缓存勾选
|
||||
String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN;
|
||||
String cacheValue = (String)Util_DataCache.getObjVal(cacheKey);
|
||||
List<Long> checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class);
|
||||
// 转换成dto
|
||||
return SalaryAcctImportFieldDTO.builder().formulaItems(formulaItems).sqlItems(sqlItems).inputItems(inputItems).checkItems(checkItems).build();
|
||||
// return SalaryAcctImportFieldDTO.builder().formulaItems(formulaItems).sqlItems(sqlItems).inputItems(inputItems).checkItems(checkItems).build();
|
||||
return SalaryAcctImportFieldDTO.builder().itemsByGroup(itemsByGroup).checkItems(checkItems).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -1021,6 +1055,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees);
|
||||
}
|
||||
}
|
||||
// 导入的列都自动锁定
|
||||
SalaryAcctResultUpdateLockStatusParam updateLockStatusParam = SalaryAcctResultUpdateLockStatusParam.builder()
|
||||
.salaryItemIds(excelSalaryItemIds)
|
||||
.salaryAcctRecordId(param.getSalaryAcctRecordId())
|
||||
.lockStatus(LockStatusEnum.LOCK).build();
|
||||
getSalaryAcctResultService(user).updateLockStatusByParam(updateLockStatusParam);
|
||||
|
||||
apidatas.put("successCount", successCount);
|
||||
apidatas.put("errorCount", failCount);
|
||||
|
|
|
|||
|
|
@ -156,6 +156,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctResultService getSalaryAcctResultService(User user) {
|
||||
return (SalaryAcctResultService) ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
|
||||
}
|
||||
|
||||
|
||||
private SalaryCheckResultService salaryCheckResultService;
|
||||
|
||||
|
|
@ -269,9 +273,11 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
List<SalaryAcctResultPO> salaryAcctResultPOS = listBySalaryAcctEmployeeId(salaryAcctEmployeeId);
|
||||
// 查询个税扣缴义务人
|
||||
TaxAgentPO taxAgent = getTaxAgentService(user).getById(salaryAcctEmployeePO.getTaxAgentId());
|
||||
// 查询公式
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap = getSalaryAcctResultService(user).getColumnBySalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
|
||||
// 转换成薪资核算结果详情dto
|
||||
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula);
|
||||
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -467,7 +473,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
}
|
||||
Map<String, SalaryAcctResultListColumnDTO> resultMap = Maps.newHashMap();
|
||||
// 查询薪资核算使用的薪资账套下的薪资项目
|
||||
List<SalarySobItemDTO> salarySobItems = Lists.newArrayList();
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
for (SalarySobItemIncomeCategoryDTO incomeCategoryDTO : salarySobItemAggregateDTO.getIncomeCategories()) {
|
||||
for (SalarySobItemGroupDTO salarySobItemGroupDTO : incomeCategoryDTO.getItemGroups()) {
|
||||
|
|
@ -523,9 +528,24 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class);
|
||||
// 保存参数转换成薪资核算结果po
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(salaryAcctResultPOSOld, saveParam, salaryAcctEmployeePO, (long) user.getUID());
|
||||
// 对比核算结果提取修改了哪些薪资项目
|
||||
Set<Long> needLockItems = new HashSet<>();
|
||||
Map<Long, SalaryAcctResultPO> oldResutMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOSOld, SalaryAcctResultPO::getSalaryItemId);
|
||||
salaryAcctResultPOS.stream().forEach(PO -> {
|
||||
String oldValue = Optional.ofNullable(oldResutMap.get(PO.getSalaryItemId())).map(SalaryAcctResultPO::getResultValue).orElse("");
|
||||
if(!StringUtils.equals(oldValue,PO.getResultValue())){
|
||||
needLockItems.add(PO.getSalaryItemId());
|
||||
}
|
||||
});
|
||||
|
||||
// 编辑的列都自动锁定
|
||||
SalaryAcctResultUpdateLockStatusParam updateLockStatusParam = SalaryAcctResultUpdateLockStatusParam.builder()
|
||||
.salaryItemIds(needLockItems)
|
||||
.salaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId())
|
||||
.lockStatus(LockStatusEnum.LOCK).build();
|
||||
getSalaryAcctResultService(user).updateLockStatusByParam(updateLockStatusParam);
|
||||
|
||||
SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
// SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
// 若保存编辑时一同传已发补发,则删除以下代码
|
||||
// if(byId.getBackCalcStatus() != null && Objects.equals(byId.getBackCalcStatus(),1)){
|
||||
// // 是回算
|
||||
|
|
@ -844,9 +864,18 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// }
|
||||
// salaryItemIds = Collections.singleton(updateParam.getSalaryItemId());
|
||||
// }
|
||||
Set<Long> salaryItemIds = Collections.singleton(updateParam.getSalaryItemId());
|
||||
|
||||
Set<Long> salaryItemIds;
|
||||
if(CollectionUtils.isNotEmpty(updateParam.getSalaryItemIds())){
|
||||
salaryItemIds = updateParam.getSalaryItemIds();
|
||||
}else{
|
||||
salaryItemIds = Collections.singleton(updateParam.getSalaryItemId());
|
||||
}
|
||||
if (updateParam.getLockStatus() == LockStatusEnum.LOCK) {
|
||||
salaryAcctRecord.getLockSalaryItemIds().addAll(salaryItemIds);
|
||||
Set<Long> lockSalaryItemIds = new HashSet<>();
|
||||
lockSalaryItemIds.addAll(salaryAcctRecord.getLockSalaryItemIds());
|
||||
lockSalaryItemIds.addAll(salaryItemIds);
|
||||
salaryAcctRecord.setLockSalaryItemIds(new ArrayList<Long>(lockSalaryItemIds));
|
||||
} else {
|
||||
salaryAcctRecord.getLockSalaryItemIds().removeAll(salaryItemIds);
|
||||
}
|
||||
|
|
@ -918,4 +947,4 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// }
|
||||
return salaryItemIds;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue