diff --git a/resource/sqlupgrade/DM/sql202412030103.sql b/resource/sqlupgrade/DM/sql202412030103.sql new file mode 100644 index 000000000..fe020bc74 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202412030103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_page_list_template add ( + system_type number +); +/ + +update hrsa_page_list_template set system_type=0; +/ + diff --git a/resource/sqlupgrade/GS/sql202412030103.sql b/resource/sqlupgrade/GS/sql202412030103.sql new file mode 100644 index 000000000..fe020bc74 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202412030103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_page_list_template add ( + system_type number +); +/ + +update hrsa_page_list_template set system_type=0; +/ + diff --git a/resource/sqlupgrade/JC/sql202412030103.sql b/resource/sqlupgrade/JC/sql202412030103.sql new file mode 100644 index 000000000..fe020bc74 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202412030103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_page_list_template add ( + system_type number +); +/ + +update hrsa_page_list_template set system_type=0; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202412030103.sql b/resource/sqlupgrade/Mysql/sql202412030103.sql new file mode 100644 index 000000000..66c85fb04 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202412030103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_page_list_template ADD COLUMN system_type int; + +update hrsa_page_list_template set system_type=0; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202412030103.sql b/resource/sqlupgrade/Oracle/sql202412030103.sql new file mode 100644 index 000000000..9c8b29ae9 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202412030103.sql @@ -0,0 +1,7 @@ +ALTER TABLE hrsa_page_list_template add ( + system_type number +) +/ + +update hrsa_page_list_template set system_type=0 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202412030103.sql b/resource/sqlupgrade/PG/sql202412030103.sql new file mode 100644 index 000000000..640452d4a --- /dev/null +++ b/resource/sqlupgrade/PG/sql202412030103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_page_list_template ADD COLUMN system_type int ; + +update hrsa_page_list_template set system_type=0; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202412030103.sql b/resource/sqlupgrade/SQLServer/sql202412030103.sql new file mode 100644 index 000000000..1e1d3086c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202412030103.sql @@ -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 \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202412030103.sql b/resource/sqlupgrade/ST/sql202412030103.sql new file mode 100644 index 000000000..fe020bc74 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202412030103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_page_list_template add ( + system_type number +); +/ + +update hrsa_page_list_template set system_type=0; +/ + diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java index c79352ed9..763485c8e 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -16,5 +16,4 @@ import java.util.List; public class PageListTemplateDTO { private List setting; private List checked; - } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java index b00d55c5d..1825719e8 100644 --- a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java +++ b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java @@ -20,5 +20,4 @@ public class PageListSettingQueryParam { private String name; - private Integer defaultSetting; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java index 8177534c1..c6a013da1 100644 --- a/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java +++ b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java @@ -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 limitIds; + + /** + * 限制 + */ + @ElogTransform(name = "限制") + private List 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集合 diff --git a/src/com/engine/salary/enums/common/SharedTypeEnum.java b/src/com/engine/salary/enums/common/SharedTypeEnum.java new file mode 100644 index 000000000..eec98de1d --- /dev/null +++ b/src/com/engine/salary/enums/common/SharedTypeEnum.java @@ -0,0 +1,37 @@ +package com.engine.salary.enums.common; + +import com.engine.salary.enums.BaseEnum; + + +public enum SharedTypeEnum implements BaseEnum { + 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; + } +} diff --git a/src/com/engine/salary/mapper/setting/PageLinkMapper.java b/src/com/engine/salary/mapper/setting/PageLinkMapper.java index a15e69330..c0d806049 100644 --- a/src/com/engine/salary/mapper/setting/PageLinkMapper.java +++ b/src/com/engine/salary/mapper/setting/PageLinkMapper.java @@ -70,5 +70,4 @@ public interface PageLinkMapper { */ void deleteByIds(@Param("ids") Collection ids); - PageLinkPO getLink(@Param("employeeId")Long employeeId, @Param("page")String page); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageLinkMapper.xml b/src/com/engine/salary/mapper/setting/PageLinkMapper.xml index 7e5d1856c..ec66fde24 100644 --- a/src/com/engine/salary/mapper/setting/PageLinkMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageLinkMapper.xml @@ -220,13 +220,5 @@ - \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml index 3ba245afd..02d015d13 100644 --- a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml @@ -11,6 +11,7 @@ + @@ -28,6 +29,7 @@ , t.page , t.setting , t.shared_type + , t.system_type , t.tenant_key , t.update_time @@ -78,6 +80,9 @@ AND shared_type = #{sharedType} + + + AND system_type = #{systemType} AND tenant_key = #{tenantKey} @@ -127,6 +132,9 @@ shared_type, + + system_type, + tenant_key, @@ -162,6 +170,9 @@ #{sharedType}, + + #{systemType}, + #{tenantKey}, @@ -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}, @@ -218,6 +230,9 @@ shared_type=#{sharedType}, + + system_type=#{systemType}, + tenant_key=#{tenantKey}, diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 4f6a71d93..746647841 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -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 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 weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue()); // 结果 resultMap.put("columns", weaTableColumns); diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 3bc47a569..7bf701910 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -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 getPageListTemplates(PageListTemplateQueryParam queryParam); + /** + * 保存模板 + * @param param + * @return + */ PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param); + /** + * 更换模板 + * @param param + */ void changePageListTemplate(PageListTemplateChangeParam param); List getPageListColumns(String page); diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 203d36621..eda0c7b1f 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -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 columns = new ArrayList<>(); @@ -132,23 +134,13 @@ public class SettingServiceImpl extends Service implements SettingService { columns.addAll(collect); - Integer defaultSetting = param.getDefaultSetting(); Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); - List 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 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 columns = new ArrayList<>(); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(87614, "薪资所属月"), "salaryMonth")); @@ -196,7 +187,7 @@ public class SettingServiceImpl extends Service implements SettingService { } List salaryItemList = getSalaryItemService(user).listAll(); - List collect = salaryItemList.stream().filter(po -> { + List 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 columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); - List checkedList = new ArrayList<>(); + List 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 pageListTemplates = getPageListTemplates(PageListTemplateQueryParam.builder().page(page).build()); + List 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 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 taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); List 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 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(); } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index c8182fef1..2cf59dd73 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -42,7 +42,7 @@ public class SalaryCommonWrapper extends Service { public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) { - return getSettingService(user).getPageListSetting(param); + return getSettingService(user).getDefaultPageListSetting(param); }