This commit is contained in:
钱涛 2022-04-01 13:50:24 +08:00
parent 8326f3ae6f
commit f95d8a7d0d
6 changed files with 76 additions and 74 deletions

View File

@ -1,11 +1,16 @@
package com.engine.salary.entity.salaryarchive.bo;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.constant.SalaryItemConstant;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemDataDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentDataDTO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.util.SalaryI18nUtil;
import java.util.ArrayList;
import java.util.Date;
@ -43,56 +48,33 @@ public class SalaryArchiveBO {
/**
* 构建表格动态列
* @param weaTable
*
* @param salaryItems
* @param employeeId
* @param tenantKey
* @param size
*/
// public static void buildSalaryArchiveTable(WeaTable<LinkedHashMap> weaTable, List<SalaryItemPO> salaryItems, Long employeeId, String tenantKey, int size) {
// // 表格表头
// List<WeaTableColumn> columns = new ArrayList<>();
// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85429, "姓名"), "username", "100"));
// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86184, "个税扣缴义务人"), "taxAgentName", "100"));
// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86185, "部门"), "departmentName", "100"));
// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86186, "手机号"), "mobile", "100"));
// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86187, "员工状态"), "employeeStatus", "100"));
// for (SalaryItemPO salaryItem : salaryItems) {
// columns.add(new WeaTableColumn(salaryItem.getName(), salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX, "150"));
// }
// weaTable.setColumns(columns);
//
// List<WeaTableOperate> operates = weaTable.getOperates();
// operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 90821, "查看"), 0));
//
// weaTable.setOperatesPermission(getDefaultOperatesPermission(operates.size(), size));
// weaTable.setCheckBoxPermission(getDefaultCheckBoxPermission(size));
//
// weaTable.setTableType(WeaTableTypeEnum.CHECKBOX);
// }
//
// private static List<List<Permission>> getDefaultOperatesPermission(int operateSize, int recordSize) {
// List<List<Permission>> permissionList = Lists.newArrayList();
// for (int i=0; i<recordSize; i++) {
// List<Permission> permissions = Lists.newArrayList();
// for (int j=0; j<operateSize; j++) {
// permissions.add(new Permission(true, false));
// }
// permissionList.add(permissions);
// }
// return permissionList;
// }
// private static List<Permission> getDefaultCheckBoxPermission(int recordSize) {
// List<Permission> permissionList = Lists.newArrayList();
// for (int i=0; i<recordSize; i++) {
// permissionList.add(new Permission(true, false));
// }
// return permissionList;
// }
public static List<WeaTableColumn> buildSalaryArchiveTable(List<SalaryItemPO> salaryItems) {
// 表格表头
List<WeaTableColumn> columns = new ArrayList<>();
WeaTableColumn idColumn = new WeaTableColumn("100px", "id", "id");
idColumn.setIsPrimarykey(WeaBoolAttr.TRUE);
idColumn.setDisplay(WeaBoolAttr.FALSE);
columns.add(idColumn);
WeaTableColumn employeeIdColumn = new WeaTableColumn("100px", "人员信息表的主键id", "employeeId");
employeeIdColumn.setDisplay(WeaBoolAttr.FALSE);
columns.add(employeeIdColumn);
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "username"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgentName"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "mobile"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "员工状态"), "employeeStatus"));
for (SalaryItemPO salaryItem : salaryItems) {
columns.add(new WeaTableColumn("100px", salaryItem.getName(), salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX));
}
return columns;
}
/**
* 构建薪资档案数据
*
* @param salaryArchiveTaxAgentList
* @param salaryArchiveItemDataList
* @param localDateRange
@ -111,11 +93,11 @@ public class SalaryArchiveBO {
Date end = localDateRange.getEndDate();
List<SalaryArchiveDataDTO> list = new ArrayList<>();
allEmployeeIds.forEach(e->{
allEmployeeIds.forEach(e -> {
// 同一个人的个税扣缴义务人调整历史数据
List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgents = salaryArchiveTaxAgentList.stream().filter(f->f.getEmployeeId().equals(e)).collect(Collectors.toList());
List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgents = salaryArchiveTaxAgentList.stream().filter(f -> f.getEmployeeId().equals(e)).collect(Collectors.toList());
// 同一个人的薪资项目调整历史数据
List<SalaryArchiveItemPO> salaryArchiveItems = salaryArchiveItemDataList.stream().filter(d->d.getEmployeeId().equals(e)).collect(Collectors.toList());
List<SalaryArchiveItemPO> salaryArchiveItems = salaryArchiveItemDataList.stream().filter(d -> d.getEmployeeId().equals(e)).collect(Collectors.toList());
List<Long> salaryArchiveItemIds = salaryArchiveItems.stream().map(SalaryArchiveItemPO::getSalaryItemId).distinct().collect(Collectors.toList());
SalaryArchiveDataDTO salaryArchiveData = new SalaryArchiveDataDTO();
@ -130,7 +112,7 @@ public class SalaryArchiveBO {
}
SalaryArchiveTaxAgentDataDTO taxAgent = new SalaryArchiveTaxAgentDataDTO();
taxAgent.setTaxAgentId(salaryArchiveTaxAgent.getTaxAgentId());
taxAgent.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDate.before(start)?start:fromDate)).endDate(endTemp).build());
taxAgent.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDate.before(start) ? start : fromDate)).endDate(endTemp).build());
// 薪资项目数据按个税扣缴义务人切割
if (!isOnlyTaxAgent) {
@ -151,7 +133,7 @@ public class SalaryArchiveBO {
continue;
}
SalaryArchiveItemDataDTO salaryArchiveItemData = new SalaryArchiveItemDataDTO();
salaryArchiveItemData.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDateItem.before(startItem)?startItem:fromDateItem)).endDate(endTempItem).build());
salaryArchiveItemData.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDateItem.before(startItem) ? startItem : fromDateItem)).endDate(endTempItem).build());
salaryArchiveItemData.setSalaryItemId(salaryArchiveItem.getSalaryItemId());
salaryArchiveItemData.setValue(salaryArchiveItem.getItemValue());
salaryItemValues.add(salaryArchiveItemData);

View File

@ -1,5 +1,8 @@
package com.engine.salary.enums;
import java.util.Arrays;
import java.util.Optional;
/**
* @Author weaver_cl
* @Description: TODO
@ -14,16 +17,16 @@ package com.engine.salary.enums;
* retired
* invalid
**/
public enum UserStatus {
public enum UserStatus {
TRIAL(0,"试用"),
FORMAL(1,"正式"),
TEMPORARY(2,"临时"),
DELAY(3,"试用延期"),
FIRE(4,"解雇"),
DEPARTURE(5,"离职"),
RETIRED(6,"退休"),
INVALID(7,"无效");
TRIAL(0, "试用"),
FORMAL(1, "正式"),
TEMPORARY(2, "临时"),
DELAY(3, "试用延期"),
FIRE(4, "解雇"),
DEPARTURE(5, "离职"),
RETIRED(6, "退休"),
INVALID(7, "无效");
private Integer value;
private String description;
@ -41,4 +44,9 @@ public enum UserStatus {
public Integer getValue() {
return value;
}
public static String getDefaultLabelByValue(Integer value) {
Optional<UserStatus> optional = Arrays.stream(UserStatus.values()).filter(r -> r.getValue().equals(value)).findFirst();
return optional.isPresent() ? optional.get().description : "";
}
}

View File

@ -891,19 +891,19 @@
<if test="param.salaryItemIds != null and param.salaryItemIds.size()>0">
AND t.salary_item_id IN
<foreach collection="param.salaryItemIds" open="(" item="salaryItemId" separator="," close=")">
#{param.salaryItemId}
#{salaryItemId}
</foreach>
</if>
<if test="param.salaryArchivesIds != null and param.salaryArchivesIds.size()>0">
AND t.salary_archive_id IN
<foreach collection="param.salaryArchivesIds" open="(" item="salaryArchiveId" separator="," close=")">
#{param.salaryArchiveId}
#{salaryArchiveId}
</foreach>
</if>
<if test="param.employeeIds != null and param.employeeIds.size()>0">
AND t.employee_id IN
<foreach collection="param.ids" open="(" item="employeeId" separator="," close=")">
#{param.employeeId}
<foreach collection="param.employeeIds" open="(" item="employeeId" separator="," close=")">
#{employeeId}
</foreach>
</if>
ORDER BY t.effective_time DESC
@ -921,7 +921,7 @@
<if test="param.salaryItemIds != null and param.salaryItemIds.size()>0">
AND t.salary_item_id IN
<foreach collection="param.salaryItemIds" open="(" item="salaryItemId" separator="," close=")">
#{param.salaryItemId}
#{salaryItemId}
</foreach>
</if>
<if test="param.salaryArchiveId != null">
@ -945,7 +945,7 @@
<if test="param.salaryItemIds != null and param.salaryItemIds.size()>0">
AND t.salary_item_id IN
<foreach collection="param.salaryItemIds" open="(" item="salaryItemId" separator="," close=")">
#{param.salaryItemId}
#{salaryItemId}
</foreach>
</if>
<if test="param.salaryArchiveId != null">

View File

@ -18,7 +18,7 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.taxrate.TaxAgent;
import com.engine.salary.enums.SalaryUserStatusEnum;
import com.engine.salary.enums.UserStatus;
import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum;
@ -155,7 +155,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
// 3.组装数据
List<Map<String, Object>> listMaps = new ArrayList<>();
salaryArchives.forEach(e -> {
e.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(e.getEmployeeStatus()));
e.setEmployeeStatus(UserStatus.getDefaultLabelByValue(Integer.parseInt(e.getEmployeeStatus())));
Map<String, Object> map = new LinkedHashMap<>();
map.put("id", e.getId());

View File

@ -6,7 +6,6 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO;
import com.engine.salary.entity.salaryarchive.param.*;
import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.wrapper.SalaryArchiveItemWrapper;
import com.engine.salary.wrapper.SalaryArchiveWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
@ -65,7 +64,7 @@ public class SalaryArchiveController {
@Produces(MediaType.APPLICATION_JSON)
public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveQueryParam, PageInfo<Map<String, Object>>>().run(getSalaryArchiveWrapper(user)::list, queryParam);
return new ResponseResult<SalaryArchiveQueryParam, Map<String,Object>>().run(getSalaryArchiveWrapper(user)::list, queryParam);
}
/**

View File

@ -1,9 +1,11 @@
package com.engine.salary.wrapper;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.EmployBiz;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryarchive.bo.SalaryArchiveBO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveBaseInfoFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
@ -69,14 +71,18 @@ public class SalaryArchiveWrapper extends Service {
* @param queryParam
* @return
*/
public PageInfo<Map<String, Object>> list(SalaryArchiveQueryParam queryParam) {
public Map<String,Object> list(SalaryArchiveQueryParam queryParam) {
//薪资档案列表
PageInfo<SalaryArchiveListDTO> pageInfo = getSalaryArchiveService(user).listPage(queryParam);
Collection<SalaryArchiveListDTO> salaryArchives = pageInfo.getList();
//所有个税扣缴义务人
Collection<TaxAgent> taxAgentLists = getTaxAgentService(user).findAll();
PageInfo<SalaryArchiveListDTO> pageInfo = getSalaryArchiveService(user).listPage(queryParam);
Collection<SalaryArchiveListDTO> salaryArchives = pageInfo.getList();
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItems = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
List<Map<String, Object>> listMaps = getSalaryArchiveService(user).buildSalaryArchiveData(salaryArchives, taxAgentLists, salaryItems, Boolean.TRUE);
PageInfo<Map<String, Object>> pageInfos = new PageInfo<Map<String, Object>>(listMaps);
@ -84,7 +90,14 @@ public class SalaryArchiveWrapper extends Service {
pageInfos.setPageNum(queryParam.getCurrent());
pageInfos.setPageSize(queryParam.getPageSize());
return pageInfos;
Map<String,Object> datas = new HashMap<>();
//动态列组装
List<WeaTableColumn> weaTableColumns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems);
datas.put("pageInfo",pageInfos);
datas.put("columns",weaTableColumns);
return datas;
}
/**