薪资报表明细显示定制列配置

This commit is contained in:
钱涛 2024-12-03 10:45:03 +08:00
parent 09b5dee199
commit 3d61bfa9a6
19 changed files with 226 additions and 75 deletions

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_page_list_template add (
system_type number
);
/
update hrsa_page_list_template set system_type=0;
/

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_page_list_template add (
system_type number
);
/
update hrsa_page_list_template set system_type=0;
/

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_page_list_template add (
system_type number
);
/
update hrsa_page_list_template set system_type=0;
/

View File

@ -0,0 +1,3 @@
ALTER TABLE hrsa_page_list_template ADD COLUMN system_type int;
update hrsa_page_list_template set system_type=0;

View File

@ -0,0 +1,7 @@
ALTER TABLE hrsa_page_list_template add (
system_type number
)
/
update hrsa_page_list_template set system_type=0
/

View File

@ -0,0 +1,3 @@
ALTER TABLE hrsa_page_list_template ADD COLUMN system_type int ;
update hrsa_page_list_template set system_type=0;

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_page_list_template ADD system_type int NULL
GO
update hrsa_page_list_template set system_type=0
GO

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_page_list_template add (
system_type number
);
/
update hrsa_page_list_template set system_type=0;
/

View File

@ -16,5 +16,4 @@ import java.util.List;
public class PageListTemplateDTO {
private List<WeaTableColumn> setting;
private List<WeaTableColumn> checked;
}

View File

@ -20,5 +20,4 @@ public class PageListSettingQueryParam {
private String name;
private Integer defaultSetting;
}

View File

@ -1,6 +1,7 @@
package com.engine.salary.entity.setting.po;
import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.enums.common.SharedTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -17,6 +18,7 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
//hrsa_page_list_template
public class PageListTemplatePO {
@ -44,16 +46,23 @@ public class PageListTemplatePO {
/**
* 是否共享,0否1是
* @see SharedTypeEnum
*/
@ElogTransform(name = "是否共享,0否1是")
@ElogTransform(name = "可见性0公共1私有")
private Integer sharedType;
/**
* 是否系统模板
*/
@ElogTransform(name = "是否系统模板,0否1是")
private Integer systemType;
/**
* 限制
*/
@ElogTransform(name = "限制")
private List<Long> limitIds;
/**
* 限制
*/
@ElogTransform(name = "限制")
private List<Long> limitIds;
/**
* 租户ID
@ -67,23 +76,23 @@ public class PageListTemplatePO {
@ElogTransform(name = "更新时间")
private Date updateTime;
/**
* 创建时间
*/
@ElogTransform(name = "创建时间")
private Date createTime;
/**
* 创建时间
*/
@ElogTransform(name = "创建时间")
private Date createTime;
/**
* 创建人
*/
@ElogTransform(name = "创建人")
private Long creator;
/**
* 创建人
*/
@ElogTransform(name = "创建人")
private Long creator;
/**
* 是否已删除0未删除1已删除
*/
@ElogTransform(name = "是否已删除。0未删除、1已删除")
private Integer deleteType;
/**
* 是否已删除0未删除1已删除
*/
@ElogTransform(name = "是否已删除。0未删除、1已删除")
private Integer deleteType;
//主键id集合

View File

@ -0,0 +1,37 @@
package com.engine.salary.enums.common;
import com.engine.salary.enums.BaseEnum;
public enum SharedTypeEnum implements BaseEnum<Integer> {
PUBLIC(0, "公共", 86568),
PRIVATE(1, "私有", 86569);
private Integer value;
private String defaultLabel;
private Integer labelId;
SharedTypeEnum(Integer value, String defaultLabel, Integer labelId) {
this.value = value;
this.defaultLabel = defaultLabel;
this.labelId = labelId;
}
@Override
public Integer getValue() {
return this.value;
}
@Override
public Integer getLabelId() {
return this.labelId;
}
@Override
public String getDefaultLabel() {
return this.defaultLabel;
}
}

View File

@ -70,5 +70,4 @@ public interface PageLinkMapper {
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
PageLinkPO getLink(@Param("employeeId")Long employeeId, @Param("page")String page);
}

View File

@ -220,13 +220,5 @@
</foreach>
</delete>
<select id="getLink" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns"/>
FROM hrsa_page_link t
WHERE delete_type = 0
AND employee_id = #{employeeId}
AND page = #{page}
</select>
</mapper>

View File

@ -11,6 +11,7 @@
<result column="page" property="page"/>
<result column="setting" property="setting" typeHandler="com.engine.salary.handle.SalaryListTypeHandler" />
<result column="shared_type" property="sharedType"/>
<result column="system_type" property="systemType"/>
<result column="tenant_key" property="tenantKey"/>
<result column="update_time" property="updateTime"/>
</resultMap>
@ -28,6 +29,7 @@
, t.page
, t.setting
, t.shared_type
, t.system_type
, t.tenant_key
, t.update_time
</sql>
@ -78,6 +80,9 @@
</if>
<if test="sharedType != null">
AND shared_type = #{sharedType}
</if>
<if test="systemType != null">
AND system_type = #{systemType}
</if>
<if test="tenantKey != null">
AND tenant_key = #{tenantKey}
@ -127,6 +132,9 @@
<if test="sharedType != null">
shared_type,
</if>
<if test="systemType != null">
system_type,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
@ -162,6 +170,9 @@
<if test="sharedType != null">
#{sharedType},
</if>
<if test="systemType != null">
#{systemType},
</if>
<if test="tenantKey != null">
#{tenantKey},
</if>
@ -183,6 +194,7 @@
page=#{page},
setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler},
shared_type=#{sharedType},
system_type=#{systemType},
tenant_key=#{tenantKey},
update_time=#{updateTime},
</set>
@ -218,6 +230,9 @@
<if test="sharedType != null">
shared_type=#{sharedType},
</if>
<if test="systemType != null">
system_type=#{systemType},
</if>
<if test="tenantKey != null">
tenant_key=#{tenantKey},
</if>

View File

@ -10,8 +10,6 @@ import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.setting.dto.PageListTemplateDTO;
import com.engine.salary.entity.setting.param.PageListSettingQueryParam;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.report.common.constant.SalaryConstant;
import com.engine.salary.report.entity.bo.SalaryStatisticsReportBO;
@ -184,15 +182,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service {
pageInfo.setList(records);
pageInfo.setTotal(salaryAcctEmployeePageInfo.getTotal());
List<WeaTableColumn> weaTableColumns;
//显示方案1显示模板
if (templateShow) {
weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue());
} else {
PageListSettingQueryParam param = PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).defaultSetting(0).build();
PageListTemplateDTO pageListSetting = getSettingService(user).getPageListSetting(param);
weaTableColumns = pageListSetting.getChecked();
}
List<WeaTableColumn> weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue());
// 结果
resultMap.put("columns", weaTableColumns);

View File

@ -8,18 +8,45 @@ import com.engine.salary.entity.setting.po.PageListTemplatePO;
import java.util.List;
public interface SettingService {
@Deprecated
void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam);
PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param);
/**
* 获取原有显示列定制配置
* @param param
* @return
*/
PageListTemplateDTO getDefaultPageListSetting(PageListSettingQueryParam param);
@Deprecated
void resetPageListSetting(PageListSettingResetParam param);
/**
* 获取指定模板配置或者指定页面默认配置
* @param param
* @return
*/
PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param);
/**
* 获取可选模板列表
* @param queryParam
* @return
*/
List<PageListTemplatePO> getPageListTemplates(PageListTemplateQueryParam queryParam);
/**
* 保存模板
* @param param
* @return
*/
PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param);
/**
* 更换模板
* @param param
*/
void changePageListTemplate(PageListTemplateChangeParam param);
List<WeaTableColumn> getPageListColumns(String page);

View File

@ -14,6 +14,8 @@ import com.engine.salary.entity.setting.po.PageLinkPO;
import com.engine.salary.entity.setting.po.PageListSettingPO;
import com.engine.salary.entity.setting.po.PageListTemplatePO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.SalaryOnOffEnum;
import com.engine.salary.enums.common.SharedTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.setting.PageLinkMapper;
import com.engine.salary.mapper.setting.PageListSettingMapper;
@ -92,7 +94,7 @@ public class SettingServiceImpl extends Service implements SettingService {
}
@Override
public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) {
public PageListTemplateDTO getDefaultPageListSetting(PageListSettingQueryParam param) {
String page = param.getPage();
if (SALARY_DETAILS_REPORT.getValue().equals(page)) {
List<WeaTableColumn> columns = new ArrayList<>();
@ -132,23 +134,13 @@ public class SettingServiceImpl extends Service implements SettingService {
columns.addAll(collect);
Integer defaultSetting = param.getDefaultSetting();
Map<String, WeaTableColumn> columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn);
List<WeaTableColumn> checkedList = new ArrayList<>();
//是否查询默认设置
PageListSettingPO pageListSettingPO;
if (defaultSetting == 0) {
pageListSettingPO = getPageListSettingMapper().getByPage(page, 0, (long) user.getUID());
//查不到个人查默认
if (pageListSettingPO == null) {
pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null);
}
} else {
pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null);
}
//默认设置
PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null);
//查询选中的项目
List<WeaTableColumn> checkedList = new ArrayList<>();
if (pageListSettingPO != null) {
checkedList = Optional.ofNullable(pageListSettingPO.getSetting()).orElse(new ArrayList<>()).stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList());
} else {
@ -177,7 +169,6 @@ public class SettingServiceImpl extends Service implements SettingService {
@Override
public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) {
String page = param.getPage();
Long id = param.getId();
if (SALARY_DETAILS_REPORT.getValue().equals(page)) {
List<WeaTableColumn> columns = new ArrayList<>();
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(87614, "薪资所属月"), "salaryMonth"));
@ -196,7 +187,7 @@ public class SettingServiceImpl extends Service implements SettingService {
}
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
List<WeaTableColumn> collect = salaryItemList.stream().filter(po -> {
List<WeaTableColumn> salaryItemCols = salaryItemList.stream().filter(po -> {
String name = param.getName();
if (StrUtil.isNotEmpty(name)) {
return po.getName() != null && po.getName().contains(name);
@ -214,15 +205,25 @@ public class SettingServiceImpl extends Service implements SettingService {
}
}).map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX)).collect(Collectors.toList());
columns.addAll(collect);
columns.addAll(salaryItemCols);
Map<String, WeaTableColumn> columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn);
List<WeaTableColumn> checkedList = new ArrayList<>();
List<WeaTableColumn> checkedList = columns;
Long id = param.getId();
if (id != null) {
//编辑模板指定模板id
PageListTemplatePO po = getPageListTemplateMapper().getById(id);
if (po != null) {
checkedList = Optional.ofNullable(po.getSetting()).orElse(new ArrayList<>()).stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList());
}
} else {
//打开选中的模板
List<PageListTemplatePO> pageListTemplates = getPageListTemplates(PageListTemplateQueryParam.builder().page(page).build());
List<WeaTableColumn> columnList = pageListTemplates.stream()
.filter(PageListTemplatePO::getChecked).map(PageListTemplatePO::getSetting).findFirst().orElse(new ArrayList<>())
.stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(columnList)) {
checkedList = columnList;
}
}
return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build();
@ -236,14 +237,53 @@ public class SettingServiceImpl extends Service implements SettingService {
ValidUtil.doValidator(param);
Date now = new Date();
String page = param.getPage();
//个人配置模板
PageListTemplatePO build = PageListTemplatePO.builder().page(page).build();
List<PageListTemplatePO> pos = getPageListTemplateMapper().listSome(build);
//获取当前选择的模板
PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), SALARY_DETAILS_REPORT.getValue());
//如果查不到不到系统模板创建系统模板
PageListTemplatePO systemTemplate = pos.stream().filter(po -> po.getSystemType() != null && po.getSystemType() == 1).findFirst().orElse(null);
if (systemTemplate == null) {
//查询系统默认配置
PageListTemplateDTO pageListSetting = getDefaultPageListSetting(PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build());
systemTemplate = PageListTemplatePO.builder()
.id(IdGenerator.generate())
.page(param.getPage())
.name("系统模板")
.sharedType(SharedTypeEnum.PUBLIC.getValue())
.systemType(SalaryOnOffEnum.ON.getValue())
.setting(pageListSetting.getChecked().stream().map(WeaTableColumn::getColumn).collect(Collectors.toList()))
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(DEFAULT_TENANT_KEY).build();
getPageListTemplateMapper().insertIgnoreNull(systemTemplate);
pos.add(systemTemplate);
}
//获取当前选择的模板
PageLinkPO link = getPageLinkMapper().listSome(PageLinkPO.builder().employeeId((long) user.getUID()).page(SALARY_DETAILS_REPORT.getValue()).build()).stream().findFirst().orElse(null);
if (link == null) {
link = PageLinkPO.builder()
.id(IdGenerator.generate())
.employeeId((long) user.getUID())
.page(param.getPage())
.templateId(systemTemplate.getId())
.tenantKey(DEFAULT_TENANT_KEY)
.createTime(new Date())
.updateTime(new Date())
.creator((long) user.getUID())
.deleteType(0).build();
getPageLinkMapper().insertIgnoreNull(link);
}
Long templateId = link.getTemplateId();
//权限控制
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID());
List<Long> taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList());
pos = pos.stream().filter(po -> {
@ -253,7 +293,7 @@ public class SettingServiceImpl extends Service implements SettingService {
}
return true;
}).peek(po -> {
po.setChecked(link != null && po.getId().equals(link.getTemplateId()));
po.setChecked(po.getId().equals(templateId));
}).collect(Collectors.toList());
return pos;
}
@ -301,13 +341,7 @@ public class SettingServiceImpl extends Service implements SettingService {
@Override
public List<WeaTableColumn> getPageListColumns(String page) {
PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), page);
if (link != null) {
PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).id(link.getTemplateId()).build());
return pageListTemplate.getChecked();
} else {
PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).build());
return pageListTemplate.getSetting();
}
PageListTemplateDTO pageListTemplate = getPageListTemplate((PageListTemplateQueryParam.builder().page(page).build()));
return pageListTemplate.getChecked();
}
}

View File

@ -42,7 +42,7 @@ public class SalaryCommonWrapper extends Service {
public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) {
return getSettingService(user).getPageListSetting(param);
return getSettingService(user).getDefaultPageListSetting(param);
}