weaver-hrm-salary/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java

229 lines
9.8 KiB
Java
Raw Normal View History

2022-04-08 19:08:59 +08:00
package com.engine.salary.wrapper;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
2022-04-11 20:17:47 +08:00
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.core.impl.Service;
import com.engine.salary.component.SalaryWeaTable;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
2022-04-08 19:08:59 +08:00
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
2022-04-11 20:17:47 +08:00
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
2022-04-08 19:08:59 +08:00
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
2022-04-11 20:17:47 +08:00
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
2022-04-08 19:08:59 +08:00
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
2022-04-11 20:17:47 +08:00
import com.engine.salary.exception.SalaryRunTimeException;
2022-04-08 19:08:59 +08:00
import com.engine.salary.service.SalaryAcctRecordService;
import com.engine.salary.service.SalaryAcctResultService;
import com.engine.salary.service.SalarySobItemService;
import com.engine.salary.service.TaxAgentService;
2022-04-11 20:17:47 +08:00
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.weaver.util.threadPool.ThreadPoolUtil;
import com.weaver.util.threadPool.constant.ModulePoolEnum;
import com.weaver.util.threadPool.entity.LocalRunnable;
2022-04-08 19:08:59 +08:00
2022-04-11 20:17:47 +08:00
import java.util.HashMap;
2022-04-08 19:08:59 +08:00
import java.util.List;
2022-04-11 20:17:47 +08:00
import java.util.Map;
import java.util.Objects;
2022-04-08 19:08:59 +08:00
/**
* 薪资核算结果
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
2022-04-11 20:17:47 +08:00
public class SalaryAcctResultWrapper extends Service {
2022-04-08 19:08:59 +08:00
private SalaryAcctResultService salaryAcctResultService;
private SalaryAcctRecordService salaryAcctRecordService;
private SalarySobItemService salarySobItemService;
private SalaryAcctEmployeeWrapper salaryAcctEmployeeWrapper;
// private SalaryAcctProgressService salaryAcctProgressService;
// private SalaryCheckResultService salaryCheckResultService;
private TaxAgentService taxAgentService;
/**
* 薪资核算列表
*
* @param queryParam 列表查询条件
* @param tenantKey 租户key
* @return
*/
2022-04-11 20:17:47 +08:00
public Map<String,Object> listPage(SalaryAcctResultQueryParam queryParam, String tenantKey) {
// 查询薪资核算记录
SalaryAcctRecordPO salaryAcctRecordPO = salaryAcctRecordService.getById(queryParam.getSalaryAcctRecordId());
if (Objects.isNull(salaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
}
// 查询薪资核算结果(分页)
PageInfo<Map<String, Object>> page = salaryAcctResultService.listPageByParam(queryParam);
// 构建薪资核算结果列表的表头
List<WeaTableColumn> columns = listWeaTableColumn(salaryAcctRecordPO);
SalaryWeaTable<SalaryArchiveListDTO> table = new SalaryWeaTable<SalaryArchiveListDTO>(user, SalaryArchiveListDTO.class);
table.setColumns(columns);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
Map<String,Object> datas = new HashMap<>();
datas.put("pageInfo", page);
datas.put("dataKey",result.getResultMap());
return datas;
}
2022-04-08 19:08:59 +08:00
/**
* 构建薪资核算结果列表的表头
*
* @param salaryAcctRecordPO 薪资核算记录
* @return
*/
2022-04-11 20:17:47 +08:00
public List<WeaTableColumn> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO) {
2022-04-08 19:08:59 +08:00
// 查询薪资账套下的薪资项目+员工信息字段
SalarySobItemAggregateDTO salarySobItemAggregateDTO = salarySobItemService.getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// 构建薪资核算结果列表表头
return SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO);
}
/**
* 获取薪资核算列表的高级搜索
*
* @return
*/
// public WeaSearchCondition getSearchCondition(String tenantKey) {
// SalaryAcctResultSearchConditionDTO searchConditionDTO = new SalaryAcctResultSearchConditionDTO();
// WeaSearchCondition searchCondition = SalaryFormatUtil.<SalaryAcctResultSearchConditionDTO>getInstance()
// .buildCondition(SalaryAcctResultSearchConditionDTO.class, searchConditionDTO, "SalaryAcctResultCondition");
// // 查询个税扣缴义务人
// List<TaxAgentPO> taxAgentPOS = taxAgentService.listAll(tenantKey);
// List<WeaSearchConditionOption> weaSearchConditionOptions = taxAgentPOS.stream()
// .map(taxAgentPO -> new WeaSearchConditionOption(String.valueOf(taxAgentPO.getId()), taxAgentPO.getName()))
// .collect(Collectors.toList());
// // 给查询条件中的个税扣缴义务人填充下拉项
// searchCondition.getItems().forEach((k, v) -> {
// if (StringUtils.equals("taxAgentId", k)) {
// v.setOptions(weaSearchConditionOptions);
// }
// });
// // 其他条件不要
// searchCondition.getGroups().remove(1);
// return searchCondition;
// }
/**
* 薪资核算结果详情
*
* @param salaryAcctEmployeeId 薪资核算人员id
* @return
*/
public SalaryAcctResultDetailDTO getForm(Long salaryAcctEmployeeId) {
// 获取薪资核算结果详情
return salaryAcctResultService.getBySalaryAcctEmployeeId(salaryAcctEmployeeId);
}
/**
* 获取合并计税详情
*
* @param salaryAcctEmployeeId 薪资核算人员id
* @return
*/
public ConsolidatedTaxDetailDTO getConsolidatedTaxDetail(Long salaryAcctEmployeeId) {
// 获取合并计税详情
return salaryAcctResultService.getConsolidatedTaxDetail(salaryAcctEmployeeId);
}
/**
* 保存薪资核算结果
*
* @param saveParam 保存参数
*/
public void save(SalaryAcctResultSaveParam saveParam) {
salaryAcctResultService.save(saveParam);
}
/**
* 薪资核算-核算
*
* @param calculateParam 薪资核算的参数
* @param simpleEmployee 当前登陆人员
*/
2022-04-11 20:17:47 +08:00
public void calculate(SalaryAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee) {
// 检查薪资核算人员的个税扣缴义务人
salaryAcctEmployeeWrapper.checkTaxAgent(calculateParam.getSalaryAcctRecordId());
// 检查是否正在核算中
2022-04-08 19:08:59 +08:00
// SalaryAcctProgressDTO salaryAcctProgressDTO = salaryAcctProgressService.getProgress("" + calculateParam.getSalaryAcctRecordId(), simpleEmployee.getEmployeeId(), tenantKey);
// if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) {
// return;
// }
// // 初始化进度
// SalaryAcctProgressDTO initProgress = new SalaryAcctProgressDTO()
// .setTitle(SalaryI18nUtil.getI18nLabel(97515, "核算中"))
// .setTitleLabelId(97515L)
// .setTotalQuantity(NumberUtils.INTEGER_ONE)
// .setCalculatedQuantity(NumberUtils.INTEGER_ZERO)
// .setProgress(BigDecimal.ZERO)
// .setStatus(true)
// .setMessage(StringUtils.EMPTY);
// salaryAcctProgressService.initProgress("" + calculateParam.getSalaryAcctRecordId(), initProgress, simpleEmployee.getEmployeeId(), tenantKey);
2022-04-11 20:17:47 +08:00
// 异步执行薪资核算
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
salaryAcctResultService.calculate(calculateParam, simpleEmployee);
}
};
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "salaryAcctCalculate", localRunnable);
}
2022-04-08 19:08:59 +08:00
/**
* 薪资核算-校验
*
* @param checkParam 薪资核算的参数
* @param simpleEmployee 当前登陆人员
* @param tenantKey 租户key
*/
// public void check(SalaryAcctCheckParam checkParam, SimpleEmployee simpleEmployee, String tenantKey) {
// // 检查是否正在核算中
// SalaryAcctProgressDTO salaryAcctProgressDTO = salaryAcctProgressService.getProgress("" + checkParam.getSalaryAcctRecordId(), simpleEmployee.getEmployeeId(), tenantKey);
// if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) {
// return;
// }
// // 初始化进度
// SalaryAcctProgressDTO initProgress = new SalaryAcctProgressDTO()
// .setTitle(SalaryI18nUtil.getI18nLabel(99664, "正在运行校验规则"))
// .setTitleLabelId(99664L)
// .setTotalQuantity(NumberUtils.INTEGER_ONE)
// .setCalculatedQuantity(NumberUtils.INTEGER_ZERO)
// .setProgress(BigDecimal.ZERO)
// .setStatus(true)
// .setMessage(StringUtils.EMPTY);
// salaryAcctProgressService.initProgress("" + checkParam.getSalaryAcctRecordId(), initProgress, simpleEmployee.getEmployeeId(), tenantKey);
// // 异步执行校验
// LocalRunnable localRunnable = new LocalRunnable() {
// @Override
// public void execute() {
// salaryCheckResultService.check(checkParam, false, simpleEmployee, tenantKey);
// }
// };
// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "salaryAcctCheck", localRunnable);
// }
}