Merge branch 'release/2.9.6.2310.01' into release/个税版本

This commit is contained in:
钱涛 2023-10-20 09:43:24 +08:00
commit e19f00c44d
20 changed files with 479 additions and 102 deletions

View File

@ -32,7 +32,7 @@ public class AddUpDeductionBiz extends BaseBean {
AddUpDeductionMapper mapper = sqlSession.getMapper(AddUpDeductionMapper.class);
List<AddUpDeductionDTO> list = mapper.list(param);
list = encryptUtil.decryptList(list, AddUpDeductionDTO.class);
return list;
return list;
} finally {
sqlSession.close();
}
@ -48,8 +48,18 @@ public class AddUpDeductionBiz extends BaseBean {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
AddUpDeductionMapper mapper = sqlSession.getMapper(AddUpDeductionMapper.class);
List<AddUpDeduction> addUpDeductions = mapper.listSome(param);
return encryptUtil.decryptList(addUpDeductions, AddUpDeduction.class);
if (CollectionUtils.isNotEmpty(param.getEmployeeIds())) {
List<AddUpDeduction> addUpDeductions = new ArrayList<>();
List<List<Long>> partition = Lists.partition(param.getEmployeeIds(), 500);
partition.forEach(l -> {
param.setEmployeeIds(l);
addUpDeductions.addAll(mapper.listSome(param));
});
return encryptUtil.decryptList(addUpDeductions, AddUpDeduction.class);
} else {
List<AddUpDeduction> addUpDeductions = mapper.listSome(param);
return encryptUtil.decryptList(addUpDeductions, AddUpDeduction.class);
}
} finally {
sqlSession.close();
}

View File

@ -46,8 +46,18 @@ public class AddUpSituationBiz extends BaseBean {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
AddUpSituationMapper mapper = sqlSession.getMapper(AddUpSituationMapper.class);
List<AddUpSituation> addUpSituations = mapper.listSome(param);
if(CollectionUtils.isNotEmpty(param.getEmployeeIds())){
List<AddUpSituation> addUpSituations = new ArrayList<>();
List<List<Long>> partition = Lists.partition((List<Long>) param.getEmployeeIds(), 500);
partition.forEach(l->{
param.setEmployeeIds(l);
addUpSituations.addAll(mapper.listSome(param));
});
return encryptUtil.decryptList(addUpSituations, AddUpSituation.class);
}else {
List<AddUpSituation> addUpSituations = mapper.listSome(param);
return encryptUtil.decryptList(addUpSituations, AddUpSituation.class);
}
} finally {
sqlSession.close();
}

View File

@ -28,8 +28,18 @@ public class OtherDeductionBiz extends BaseBean {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
OtherDeductionMapper mapper = sqlSession.getMapper(OtherDeductionMapper.class);
List<OtherDeductionPO> otherDeductionPOS = mapper.listSome(param);
return encryptUtil.decryptList(otherDeductionPOS, OtherDeductionPO.class);
if (CollectionUtils.isNotEmpty(param.getEmployeeIds())) {
List<List<Long>> partition = Lists.partition(param.getEmployeeIds(), 500);
List<OtherDeductionPO> otherDeductionPOS = new ArrayList<>();
partition.forEach(l -> {
param.setEmployeeIds(l);
otherDeductionPOS.addAll(mapper.listSome(param));
});
return encryptUtil.decryptList(otherDeductionPOS, OtherDeductionPO.class);
}else {
List<OtherDeductionPO> otherDeductionPOS = mapper.listSome(param);
return encryptUtil.decryptList(otherDeductionPOS, OtherDeductionPO.class);
}
} finally {
sqlSession.close();
}
@ -77,7 +87,7 @@ public class OtherDeductionBiz extends BaseBean {
* @return
*/
public void batchSave(List<OtherDeductionPO> param) {
if(CollectionUtils.isEmpty(param)){
if (CollectionUtils.isEmpty(param)) {
return;
}
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
@ -99,7 +109,7 @@ public class OtherDeductionBiz extends BaseBean {
* @return
*/
public void batchUpdate(List<OtherDeductionPO> param) {
if(CollectionUtils.isEmpty(param)){
if (CollectionUtils.isEmpty(param)) {
return;
}
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
@ -115,10 +125,6 @@ public class OtherDeductionBiz extends BaseBean {
}
/**
* 处理导入数据
*
@ -183,8 +189,8 @@ public class OtherDeductionBiz extends BaseBean {
/**
* @description 批量删除
* @return void
* @description 批量删除
* @author Harryxzy
* @date 2022/10/27 16:07
*/

View File

@ -34,8 +34,18 @@ public class SalaryArchiveItemBiz {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class);
List<SalaryArchiveItemPO> salaryArchiveItemPOS = mapper.listByParam(build);
return encryptUtil.decryptList(salaryArchiveItemPOS, SalaryArchiveItemPO.class);
if (CollectionUtils.isNotEmpty(build.getEmployeeIds())) {
List<SalaryArchiveItemPO> salaryArchiveItemPOS = new ArrayList<>();
List<List<Long>> partition = Lists.partition((List<Long>) build.getEmployeeIds(), 500);
partition.forEach(l -> {
build.setEmployeeIds(l);
salaryArchiveItemPOS.addAll(mapper.listByParam(build));
});
return encryptUtil.decryptList(salaryArchiveItemPOS, SalaryArchiveItemPO.class);
} else {
List<SalaryArchiveItemPO> salaryArchiveItemPOS = mapper.listByParam(build);
return encryptUtil.decryptList(salaryArchiveItemPOS, SalaryArchiveItemPO.class);
}
} finally {
sqlSession.close();
}
@ -140,7 +150,20 @@ public class SalaryArchiveItemBiz {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class);
return encryptUtil.decryptList(mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds), SalaryItemAdjustRecordListDTO.class);
List<Long> salaryArchiveIds = queryParam.getSalaryArchiveIds();
if (CollectionUtils.isEmpty(salaryArchiveIds)) {
List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
return encryptUtil.decryptList(salaryItemAdjustRecordListDTOS, SalaryItemAdjustRecordListDTO.class);
} else {
List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListDTOS = new ArrayList<>();
List<List<Long>> salaryArchiveIdsPartition = Lists.partition(salaryArchiveIds, 500);
salaryArchiveIdsPartition.forEach(l -> {
queryParam.setSalaryArchiveIds(l);
salaryItemAdjustRecordListDTOS.addAll(mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds));
});
return encryptUtil.decryptList(salaryItemAdjustRecordListDTOS, SalaryItemAdjustRecordListDTO.class);
}
} finally {
sqlSession.close();
}
@ -161,12 +184,28 @@ public class SalaryArchiveItemBiz {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class);
List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
PageInfo<SalaryItemAdjustRecordListDTO> page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(),
salaryItemAdjustRecordListDTOS,
SalaryItemAdjustRecordListDTO.class);
encryptUtil.decryptList(page.getList(), SalaryItemAdjustRecordListDTO.class);
return page;
List<Long> salaryArchiveIds = queryParam.getSalaryArchiveIds();
if (CollectionUtils.isEmpty(salaryArchiveIds)) {
List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
PageInfo<SalaryItemAdjustRecordListDTO> page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(),
salaryItemAdjustRecordListDTOS,
SalaryItemAdjustRecordListDTO.class);
encryptUtil.decryptList(page.getList(), SalaryItemAdjustRecordListDTO.class);
return page;
} else {
List<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListDTOS = new ArrayList<>();
List<List<Long>> salaryArchiveIdsPartition = Lists.partition(salaryArchiveIds, 500);
salaryArchiveIdsPartition.forEach(l -> {
queryParam.setSalaryArchiveIds(l);
salaryItemAdjustRecordListDTOS.addAll(mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds));
});
PageInfo<SalaryItemAdjustRecordListDTO> page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(),
salaryItemAdjustRecordListDTOS,
SalaryItemAdjustRecordListDTO.class);
encryptUtil.decryptList(page.getList(), SalaryItemAdjustRecordListDTO.class);
return page;
}
} finally {
sqlSession.close();
}

View File

@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* 数据采集-累计专项附加扣除表
@ -113,7 +114,7 @@ public class AddUpDeduction {
*/
private String tenantKey;
Collection<Long> employeeIds;
List<Long> employeeIds;
Collection<Long> taxAgentIds;

View File

@ -30,6 +30,7 @@ public class SalaryItemAdjustRecordQueryParam extends BaseQueryParam {
//薪资档案id
private Long salaryArchiveId;
private List<Long> salaryArchiveIds;
//关键字姓名部门薪资项目名称
private String keyword;

View File

@ -114,6 +114,7 @@ public class SalaryArchivePO {
//---------条件-------
private Collection<Long> ids;
private Collection<Long> taxAgentIds;
private Collection<Long> employeeIds;
/**
* 状态

View File

@ -60,7 +60,7 @@ public class SalaryFormulaEmployeeDTO {
private String dissmissdate;
//状态
@SalaryFormulaVar(defaultLabel = "状态", labelId = 98621, dataType = "string")
@SalaryFormulaVar(defaultLabel = "状态编码", labelId = 98621, dataType = "string")
private String status;
@SalaryFormulaVar(defaultLabel = "状态", labelId = 98622, dataType = "string")

View File

@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Collection;
import java.util.List;
@Getter
@ -21,7 +21,7 @@ public class InsuranceAcctDetailImportTemplateParam {
* 薪资项目id薪资项目包含了福利项
*/
@DataCheck(require = true,message = "福利核算项目name不能为空")
private Collection<String> welfareNames;
private List<String> welfareNames;
private String billMonth;

View File

@ -8,24 +8,36 @@ import java.math.BigDecimal;
import java.util.List;
import java.util.function.Predicate;
public enum FilterEnum implements BaseEnum<String> {
public enum FilterEnum implements BaseEnum<String> {
BT("BT", "包含", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> a.contentEquals(params.get(0));
return a -> a.contains(params.get(0));
}
},
EQ("EQ", "等于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> a.equals(params.get(0));
return a -> {
if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) {
return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) == 0;
} else {
return a.equals(params.get(0));
}
};
}
},
NE("NE", "不等于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> !a.equals(params.get(0));
return a -> {
if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) {
return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) != 0;
} else {
return !a.equals(params.get(0));
}
};
}
},
GT("GT", "大于", 1) {

View File

@ -563,11 +563,10 @@
<if test="param.salaryArchiveId != null">
AND t1.salary_archive_id = #{param.salaryArchiveId}
</if>
<!-- 部门 -->
<if test="param.departmentIds != null and param.departmentIds.size()>0">
AND d.id IN
<foreach collection="param.departmentIds" open="(" item="id" separator="," close=")">
#{id}
<if test="param.salaryArchiveIds != null and param.salaryArchiveIds.size()>0">
AND t1.salary_archive_id IN
<foreach collection="param.salaryArchiveIds" open="(" item="salaryArchiveId" separator="," close=")">
#{salaryArchiveId}
</foreach>
</if>
<!-- 调整原因 -->
@ -637,7 +636,12 @@
<if test="param.salaryArchiveId != null">
AND t1.salary_archive_id = #{param.salaryArchiveId}
</if>
<if test="param.salaryArchiveIds != null and param.salaryArchiveIds.size()>0">
AND t1.salary_archive_id IN
<foreach collection="param.salaryArchiveIds" open="(" item="salaryArchiveId" separator="," close=")">
#{salaryArchiveId}
</foreach>
</if>
<if test="param.adjustReason != null and param.adjustReason != ''">
AND t1.adjust_reason = #{param.adjustReason}
</if>
@ -711,11 +715,10 @@
AND t1.salary_archive_id = #{param.salaryArchiveId}
</if>
<if test="param.departmentIds != null and param.departmentIds.size()>0">
AND d.id IN
<foreach collection="param.departmentIds" open="(" item="id" separator="," close=")">
#{id}
<if test="param.salaryArchiveIds != null and param.salaryArchiveIds.size()>0">
AND t1.salary_archive_id IN
<foreach collection="param.salaryArchiveIds" open="(" item="salaryArchiveId" separator="," close=")">
#{salaryArchiveId}
</foreach>
</if>
@ -737,7 +740,6 @@
#{id}
</foreach>
</if>
ORDER BY t1.effective_time DESC,t1.id DESC
</select>

View File

@ -658,6 +658,12 @@
#{id}
</foreach>
</if>
<if test="param.taxAgentIds != null and param.taxAgentIds.size()>0">
AND t.tax_agent_id IN
<foreach collection="param.taxAgentIds" open="(" item="taxAgentId" separator="," close=")">
#{taxAgentId}
</foreach>
</if>
ORDER BY t.id DESC
</select>

View File

@ -99,6 +99,8 @@ public interface SalarySobService {
*/
Long save(SalarySobBasicSaveParam saveParam);
void saveDefaultEmployeeRange(SalarySobPO salarySobPO);
/**
* 编辑
*

View File

@ -1441,7 +1441,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
// List<List<Long>> employeeIdPartition = Lists.partition(baseInfoEmployeeIds, 100);
// employeeIdPartition.forEach(getInsuranceBaseInfoMapper()::batchDeleteByEmployeeIds);
//查询目标人员的剩余的福利档案基础信息社保公积金其他福利档案id
List<InsuranceArchivesBaseInfoPO> moreBaseInfoPOS = getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(baseInfoEmployeeIds);
// List<InsuranceArchivesBaseInfoPO> moreBaseInfoPOS = getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(baseInfoEmployeeIds);
List<InsuranceArchivesBaseInfoPO> moreBaseInfoPOS = new ArrayList<>();
List<List<Long>> partitionInfo = Lists.partition((List<Long>) baseInfoEmployeeIds, 1000);
partitionInfo.forEach(part -> moreBaseInfoPOS.addAll(
getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(part)));
List<InsuranceArchivesBaseInfoPO> newInsuranceArchivesBaseInfoList = new ArrayList<>();
//设置社保公积金其他福利档案id
for (InsuranceArchivesBaseInfoPO po : baseInfoPOS) {

View File

@ -6,6 +6,7 @@ import com.engine.salary.biz.SalaryArchiveBiz;
import com.engine.salary.biz.SalaryArchiveItemBiz;
import com.engine.salary.biz.SalaryItemBiz;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.*;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
@ -13,11 +14,14 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalaryArchiveItemService;
import com.engine.salary.service.SalaryArchiveService;
import com.engine.salary.service.SalaryEmployeeService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
@ -62,6 +66,13 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
}
private SalaryArchiveService getSalaryArchiveService(User user) {
return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
}
private SalaryEmployeeService getSalaryEmployeeService(User user) {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
/**
* 获取未生效 lt
*
@ -617,23 +628,60 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
List<SalaryItemPO> salaryItemList = getCanAdjustSalaryItems();
List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
// 获取记录
List<SalaryItemAdjustRecordListDTO> list = salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
long currentEmployeeId = user.getUID();
//是否开启分权
Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId);
if (needAuth) {
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId);
List<Long> taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList());
if (CollectionUtils.isEmpty(taxAgentIds)) {
// return new PageInfo<SalaryItemAdjustRecordListDTO>();
}
List<SalaryArchivePO> salaryArchives = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentIds(taxAgentIds).build());
List<Long> salaryArchiveIds = SalaryEntityUtil.properties(salaryArchives, SalaryArchivePO::getId, Collectors.toList());
queryParam.setSalaryArchiveIds(salaryArchiveIds);
}
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL);
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
List<SalaryItemAdjustRecordListDTO> listResult = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds);
listResult = listResult.stream()
.filter(r -> {
DataCollectionEmployee employee = employeeMap.getOrDefault(r.getEmployeeId(), new DataCollectionEmployee());
String username = queryParam.getUsername();
List<Long> departmentIds = queryParam.getDepartmentIds();
List<Long> positionIds = queryParam.getPositionIds();
String userstatus = queryParam.getUserstatus();
r.setUsername(employee.getUsername());
r.setDepartmentName(employee.getDepartmentName());
r.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus())));
r.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(r.getAdjustReason()));
return (StringUtils.isBlank(username) || employee.getUsername().contains(username))
&& (CollectionUtils.isEmpty(departmentIds) || departmentIds.contains(employee.getDepartmentId()))
&& (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId()))
&& (StringUtils.isBlank(userstatus) || Objects.equals(employee.getStatus(), userstatus))
&& (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId()))
;
})
.collect(Collectors.toList());
List<SalaryItemAdjustRecordListDTO> listAll = salaryArchiveItemMapper.salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
// 人员信息赋值
list.forEach(m -> {
listResult.forEach(m -> {
if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
listAll.removeIf(a -> a.getId().equals(m.getId()));
}
Optional<SalaryItemAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst();
m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
m.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(m.getEmployeeStatus())));
m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
});
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<List<Object>> rows = new ArrayList<>();
rows.add(headerList);
for (SalaryItemAdjustRecordListDTO dto : list) {
for (SalaryItemAdjustRecordListDTO dto : listResult) {
List<Object> row = new ArrayList<>();
row.add(dto.getUsername());
row.add(dto.getEmployeeStatus());

View File

@ -420,7 +420,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
* @author Harryxzy
* @date 2022/10/9 15:30
*/
private void saveDefaultEmployeeRange(SalarySobPO salarySobPO) {
public void saveDefaultEmployeeRange(SalarySobPO salarySobPO) {
// 获取人员范围列表
TaxAgentRangeQueryParam queryParam = TaxAgentRangeQueryParam.builder().taxAgentId(salarySobPO.getTaxAgentId()).build();
queryParam.setCurrent(1);

View File

@ -0,0 +1,79 @@
package com.engine.salary.timer;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.biz.SalarySobRangeBiz;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.entity.salarysob.po.SalarySobRangePO;
import com.engine.salary.service.SalarySobRangeService;
import com.engine.salary.service.SalarySobService;
import com.engine.salary.service.impl.SalarySobRangeServiceImpl;
import com.engine.salary.service.impl.SalarySobServiceImpl;
import dm.jdbc.util.IdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.general.BaseBean;
import weaver.hrm.User;
import weaver.interfaces.schedule.BaseCronJob;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* 自动同步个税扣缴以为人人员范围至账套人员范围
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Slf4j
public class SyncTaxAgentEmp2SobEmpJob extends BaseCronJob {
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalarySobRangeService getSalarySobRangeService(User user) {
return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user);
}
private String salarySobIds;
@Override
public void execute() {
User user = new User();
user.setUid(1);
user.setLoginid("sysadmin");
List<SalarySobPO> salarySobPOS;
if (StringUtils.isNotEmpty(salarySobIds)) {
// 只同步指定的账套
List<Long> salarySobIdList = Arrays.asList(StringUtils.split(salarySobIds, ",")).stream().map(Long::valueOf).collect(Collectors.toList());
salarySobPOS = getSalarySobService(user).listByIds(salarySobIdList);
} else {
salarySobPOS = getSalarySobService(user).listAll();
}
BaseBean baseBean = new BaseBean();
SalarySobRangeBiz salarySobRangeBiz = new SalarySobRangeBiz();
for (SalarySobPO po : salarySobPOS) {
List<SalarySobRangePO> salarySobRangePOS = new ArrayList<>();
try {
baseBean.writeLog("开始同步人员范围至账套账套:{}",po.getId());
// 保存前先删除
salarySobRangePOS = salarySobRangeBiz.listSome(SalarySobRangePO.builder().salarySobId(po.getId()).build());
getSalarySobRangeService(user).deleteBySalarySobIds(Collections.singletonList(po.getId()));
getSalarySobService(user).saveDefaultEmployeeRange(po);
} catch (Exception e) {
baseBean.writeLog("同步人员范围至账套账套出错:" + e.getMessage());
salarySobRangePOS.stream().forEach(p -> p.setId(IdGenerator.generate()));
salarySobRangeBiz.batchInsert(salarySobRangePOS);
}
}
}
}

View File

@ -444,22 +444,61 @@ public class SIAccountController {
return new ResponseResult<String,List<InsuranceAcctDetailImportFieldDTO>>(user).run(getSalaryFormulaWrapper(user)::welfareList);
}
// /**
// * 导出福利核算导入模板
// */
// @GET
// @Path("/welfare/importtemplate/export")
// @Produces(MediaType.APPLICATION_OCTET_STREAM)
// public Response exportImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
// try {
// InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
//
// param.setPaymentOrganization(Long.valueOf(request.getParameter("paymentOrganization")));
// param.setBillMonth(request.getParameter("billMonth"));
// String welfareNames = request.getParameter("welfareNames");
// if (StringUtils.isNotBlank(welfareNames)) {
// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
// }
//
// User user = HrmUserVarify.getUser(request, response);
// XSSFWorkbook workbook = getService(user).exportImportTemplate(param);
// String time = LocalDate.now().toString();
// String fileName = "福利核算导入模板" + time;
// try {
// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// StreamingOutput output = outputStream -> {
// workbook.write(outputStream);
// outputStream.flush();
// };
// response.setContentType("application/octet-stream");
// return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
// } catch (Exception e) {
// log.error("福利核算导入模板导出异常", e);
// throw e;
// }
//
// }
/**
* 导出福利核算导入模板
*/
@GET
@POST
@Path("/welfare/importtemplate/export")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
public Response exportImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody InsuranceAcctDetailImportTemplateParam param) {
try {
InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
param.setPaymentOrganization(Long.valueOf(request.getParameter("paymentOrganization")));
param.setBillMonth(request.getParameter("billMonth"));
String welfareNames = request.getParameter("welfareNames");
if (StringUtils.isNotBlank(welfareNames)) {
param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
}
// InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
//
// param.setPaymentOrganization(Long.valueOf(request.getParameter("paymentOrganization")));
// param.setBillMonth(request.getParameter("billMonth"));
// String welfareNames = request.getParameter("welfareNames");
// if (StringUtils.isNotBlank(welfareNames)) {
// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
// }
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getService(user).exportImportTemplate(param);
@ -505,28 +544,73 @@ public class SIAccountController {
return new ResponseResult<InsuranceAcctImportParam, Map<String, Object>>(user).run(getService(user)::preview, insuranceAcctImportParam);
}
// /**
// * 导出福利核算-补缴导入模板
// */
// @GET
// @Path("/welfare/supplyimporttemplate/export")
// @Produces(MediaType.APPLICATION_OCTET_STREAM)
// public Response exportSupplyImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
// try {
// InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
//
// String welfareNames = request.getParameter("welfareNames");
// String billMonth = request.getParameter("billMonth");
// Long paymentOrganization = Long.valueOf(request.getParameter("paymentOrganization"));
// if (StringUtils.isNotBlank(welfareNames)) {
// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
// }
// if (StringUtils.isNotBlank(billMonth)) {
// param.setBillMonth(billMonth);
// }
// if (paymentOrganization > 0) {
// param.setPaymentOrganization(paymentOrganization);
// }
//
// User user = HrmUserVarify.getUser(request, response);
// XSSFWorkbook workbook = getService(user).exportSupplyImportTemplate(param);
// String time = LocalDate.now().toString();
// String fileName = "福利核算-补缴导入模板" + time;
// try {
// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// StreamingOutput output = outputStream -> {
// workbook.write(outputStream);
// outputStream.flush();
// };
// response.setContentType("application/octet-stream");
// return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
// } catch (Exception e) {
// log.error("福利核算-补缴导入模板导出异常", e);
// throw e;
// }
//
// }
/**
* 导出福利核算-补缴导入模板
*/
@GET
@POST
@Path("/welfare/supplyimporttemplate/export")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportSupplyImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
public Response exportSupplyImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody InsuranceAcctDetailImportTemplateParam param) {
try {
InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
String welfareNames = request.getParameter("welfareNames");
String billMonth = request.getParameter("billMonth");
Long paymentOrganization = Long.valueOf(request.getParameter("paymentOrganization"));
if (StringUtils.isNotBlank(welfareNames)) {
param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
}
if (StringUtils.isNotBlank(billMonth)) {
param.setBillMonth(billMonth);
}
if (paymentOrganization > 0) {
param.setPaymentOrganization(paymentOrganization);
}
// InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
//
// String welfareNames = request.getParameter("welfareNames");
// String billMonth = request.getParameter("billMonth");
// Long paymentOrganization = Long.valueOf(request.getParameter("paymentOrganization"));
// if (StringUtils.isNotBlank(welfareNames)) {
// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
// }
// if (StringUtils.isNotBlank(billMonth)) {
// param.setBillMonth(billMonth);
// }
// if (paymentOrganization > 0) {
// param.setPaymentOrganization(paymentOrganization);
// }
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getService(user).exportSupplyImportTemplate(param);
@ -549,7 +633,6 @@ public class SIAccountController {
}
}
// **********************************线下对比 start*********************************/
/**
* 导出福利核算导入模板
@ -862,22 +945,61 @@ public class SIAccountController {
return new ResponseResult<String,List<InsuranceAcctDetailImportFieldDTO>>(user).run(getSalaryFormulaWrapper(user)::balanceWelfareList);
}
// /**
// * 导出福利核算-补差导入模板
// */
// @GET
// @Path("/welfare/balanceimporttemplate/export")
// @Produces(MediaType.APPLICATION_OCTET_STREAM)
// public Response exportBalanceImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
// try {
// InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
//
// param.setPaymentOrganization(Long.valueOf(request.getParameter("paymentOrganization")));
// param.setBillMonth(request.getParameter("billMonth"));
// String welfareNames = request.getParameter("welfareNames");
// if (StringUtils.isNotBlank(welfareNames)) {
// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
// }
//
// User user = HrmUserVarify.getUser(request, response);
// XSSFWorkbook workbook = getService(user).exportBalanceImportTemplate(param);
// String time = LocalDate.now().toString();
// String fileName = "福利台账-补差导入模板" + time;
// try {
// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// StreamingOutput output = outputStream -> {
// workbook.write(outputStream);
// outputStream.flush();
// };
// response.setContentType("application/octet-stream");
// return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
// } catch (Exception e) {
// log.error("福利台账-补差导入模板导出异常", e);
// throw e;
// }
//
// }
/**
* 导出福利核算-补差导入模板
*/
@GET
@POST
@Path("/welfare/balanceimporttemplate/export")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportBalanceImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
public Response exportBalanceImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody InsuranceAcctDetailImportTemplateParam param) {
try {
InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
param.setPaymentOrganization(Long.valueOf(request.getParameter("paymentOrganization")));
param.setBillMonth(request.getParameter("billMonth"));
String welfareNames = request.getParameter("welfareNames");
if (StringUtils.isNotBlank(welfareNames)) {
param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
}
// InsuranceAcctDetailImportTemplateParam param = new InsuranceAcctDetailImportTemplateParam();
//
// param.setPaymentOrganization(Long.valueOf(request.getParameter("paymentOrganization")));
// param.setBillMonth(request.getParameter("billMonth"));
// String welfareNames = request.getParameter("welfareNames");
// if (StringUtils.isNotBlank(welfareNames)) {
// param.setWelfareNames(Arrays.stream(welfareNames.split(",")).map(String::valueOf).collect(Collectors.toList()));
// }
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getService(user).exportBalanceImportTemplate(param);
@ -900,7 +1022,6 @@ public class SIAccountController {
}
}
/**
* 将通过福利台账-补差导入模板导入的数据更新到hrsa_bill_detail表中
*/

View File

@ -56,10 +56,6 @@ public class SIReportController {
@Path("record/list")
@Produces(MediaType.APPLICATION_JSON)
public String recordList(@Context HttpServletRequest request, @Context HttpServletResponse response) {
// if (StringUtils.isEmpty(token)) {
// return WeaResult.success(null, SalrayCheckSecondAuthConstant.CHECK_SECOND_FAIL_NO_TOKEN);
// }
// Long employeeId = UserContext.getCurrentEmployeeId();
User user = HrmUserVarify.getUser(request, response);
SalaryItemAdjustRecordQueryParam salaryItemAdjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam();
salaryItemAdjustRecordQueryParam.setEmployeeId((long)user.getUID());

View File

@ -11,6 +11,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustBeforeParam;
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.param.SingleSalaryItemAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.UserStatusEnum;
@ -22,9 +23,12 @@ import com.engine.salary.service.impl.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.wrapper.proxy.SalaryArchiveItemWrapperProxy;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import weaver.hrm.User;
@ -229,8 +233,47 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
PageInfo<SalaryItemAdjustRecordListDTO> list = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(queryParam, salaryItemIds);
List<SalaryItemAdjustRecordListDTO> listResult = list.getList();
long currentEmployeeId = user.getUID();
//是否开启分权
Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId);
if (needAuth) {
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId);
List<Long> taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList());
if (CollectionUtils.isEmpty(taxAgentIds)) {
return new PageInfo<SalaryItemAdjustRecordListDTO>();
}
List<SalaryArchivePO> salaryArchives = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentIds(taxAgentIds).build());
List<Long> salaryArchiveIds = SalaryEntityUtil.properties(salaryArchives, SalaryArchivePO::getId, Collectors.toList());
queryParam.setSalaryArchiveIds(salaryArchiveIds);
}
List<SalaryItemAdjustRecordListDTO> listResult = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds);
listResult = listResult.stream()
.filter(r -> {
DataCollectionEmployee employee = employeeMap.getOrDefault(r.getEmployeeId(), new DataCollectionEmployee());
String username = queryParam.getUsername();
List<Long> departmentIds = queryParam.getDepartmentIds();
List<Long> positionIds = queryParam.getPositionIds();
String userstatus = queryParam.getUserstatus();
r.setUsername(employee.getUsername());
r.setDepartmentName(employee.getDepartmentName());
r.setEmployeeStatus(StringUtils.isNotBlank(employee.getStatus())&& NumberUtils.isCreatable(employee.getStatus())?
UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus())):"");
r.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(r.getAdjustReason()));
return (StringUtils.isBlank(username) || employee.getUsername().contains(username))
&& (CollectionUtils.isEmpty(departmentIds) || departmentIds.contains(employee.getDepartmentId()))
&& (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId()))
&& (StringUtils.isBlank(userstatus) || Objects.equals(employee.getStatus(), userstatus))
&& (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId()))
;
})
.collect(Collectors.toList());
PageInfo<SalaryItemAdjustRecordListDTO> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), listResult, SalaryItemAdjustRecordListDTO.class);
listResult = pageInfo.getList();
//获取上次更改的记录
listResult.forEach(m -> {
if (!CollectionUtils.isEmpty(listAll)) {
@ -238,19 +281,14 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt
}
Optional<SalaryItemAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst();
m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
DataCollectionEmployee employee = employeeMap.getOrDefault(m.getEmployeeId(), new DataCollectionEmployee());
m.setUsername(employee.getUsername());
m.setDepartmentName(employee.getDepartmentName());
m.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus())));
m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
});
return list;
return pageInfo;
}
/**
* 我的调薪记录
*
* @param queryParam
* @return
*/
@ -274,7 +312,8 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt
m.setUsername(employee.getUsername());
m.setDepartmentName(employee.getDepartmentName());
m.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus())));
m.setEmployeeStatus(StringUtils.isNotBlank(employee.getStatus())&& NumberUtils.isCreatable(employee.getStatus())?
UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus())):"");
m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
});