pageInfo = new PageInfo<>(list, SalaryMySalaryBillListDTO.class);
diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java
index 0cea169f8..16771e0ea 100644
--- a/src/com/engine/salary/service/impl/SettingServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java
@@ -183,6 +183,7 @@ public class SettingServiceImpl extends Service implements SettingService {
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "岗位"), "jobTitle"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "员工状态"), "status"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode"));
+ columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "证件号码"), "idNo"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "入职日期"), "companystartdate"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "次数"), "acctTimes").setDisplay(WeaBoolAttr.FALSE));
if (StrUtil.isNotBlank(param.getName())) {
diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java
index b5d5384ea..4f5966095 100644
--- a/src/com/engine/salary/sys/constant/SalarySysConstant.java
+++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java
@@ -204,4 +204,14 @@ public class SalarySysConstant {
* 审批流程发起后允许修改核算数据
*/
public static final String APPROVAL_CAN_EDIT_RESULT_STATUS = "APPROVAL_CAN_EDIT_RESULT_STATUS";
+
+ /**
+ * 是否采用组织快照,0:关闭 1:开启
+ */
+ public static final String SHOT_EMP_BTN = "SHOT_EMP_BTN";
+
+ /**
+ * 快照时间点
+ */
+ public static final String SHOT_EMP_TIME_TYPE = "SHOT_EMP_TIME_TYPE";
}
diff --git a/src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java b/src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java
new file mode 100644
index 000000000..a375c2314
--- /dev/null
+++ b/src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java
@@ -0,0 +1,57 @@
+package com.engine.salary.sys.enums;
+
+import com.engine.salary.enums.BaseEnum;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 快照时间点类型
+ * Copyright: Copyright (c) 2024
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+public enum ShotTimeTypeEnum implements BaseEnum {
+
+ salaryFirstDate("salaryFirstDate", "薪资所属月第一天", 1),
+ salaryLastDate("salaryLastDate", "薪资所属月最后一天", 1),
+ salaryCycleFromDate("salaryCycleFromDate", "薪资周期起始日期", 1),
+ salaryCycleEndDate("salaryCycleEndDate", "薪资周期结束日期", 1);
+
+ private String value;
+
+ private String defaultLabel;
+
+ private int labelId;
+
+
+ ShotTimeTypeEnum(String value, String defaultLabel, int labelId) {
+ this.value = value;
+ this.defaultLabel = defaultLabel;
+ this.labelId = labelId;
+ }
+
+ @Override
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String getDefaultLabel() {
+ return defaultLabel;
+ }
+
+ @Override
+ public Integer getLabelId() {
+ return labelId;
+ }
+
+ public static ShotTimeTypeEnum parseByValue(String value) {
+ for (ShotTimeTypeEnum e : ShotTimeTypeEnum.values()) {
+ if (StringUtils.equals(e.getValue(), value)) {
+ return e;
+ }
+ }
+ return salaryCycleFromDate;
+ }
+}
diff --git a/src/com/engine/salary/timer/HrmSnapshotJob.java b/src/com/engine/salary/timer/HrmSnapshotJob.java
new file mode 100644
index 000000000..ac0a7a091
--- /dev/null
+++ b/src/com/engine/salary/timer/HrmSnapshotJob.java
@@ -0,0 +1,54 @@
+package com.engine.salary.timer;
+
+import cn.hutool.core.util.StrUtil;
+import com.engine.salary.entity.hrm.po.HrmSnapshotPO;
+import com.engine.salary.mapper.hrm.HrmSnapshotMapper;
+import com.engine.salary.util.SalaryDateUtil;
+import com.engine.salary.util.db.IdGenerator;
+import com.engine.salary.util.db.MapperProxyFactory;
+import lombok.extern.slf4j.Slf4j;
+import weaver.hrm.User;
+import weaver.interfaces.schedule.BaseCronJob;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+public class HrmSnapshotJob extends BaseCronJob {
+
+ //指定筷子时间
+ private String appointSnapshotTime;
+
+ private HrmSnapshotMapper getHrmSnapshotMapper() {
+ return MapperProxyFactory.getProxy(HrmSnapshotMapper.class);
+ }
+
+ @Override
+ public void execute() {
+ User user = new User();
+ user.setUid(1);
+ user.setLoginid("sysadmin");
+
+ try {
+ List hrmSnapshotPOS = getHrmSnapshotMapper().currentEmpData();
+
+ Date snapshotTime = StrUtil.isNotBlank(appointSnapshotTime) && SalaryDateUtil.checkDay(appointSnapshotTime) ? SalaryDateUtil.dateStrToLocalDate(appointSnapshotTime) : SalaryDateUtil.localDateToDate(LocalDate.now());
+
+ //先删除当日快照
+ getHrmSnapshotMapper().deleteBySnapshotTime(snapshotTime);
+
+ hrmSnapshotPOS.forEach(hrmSnapshotPO -> {
+
+ hrmSnapshotPO.setId(IdGenerator.generate());
+ hrmSnapshotPO.setSnapshotTime(snapshotTime);
+
+ getHrmSnapshotMapper().insertIgnoreNull(hrmSnapshotPO);
+
+ });
+ }catch (Exception e){
+ log.error("生成快照失败", e);
+ }
+ }
+
+}
diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java
index 22a642feb..85977afe1 100644
--- a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java
+++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java
@@ -26,6 +26,8 @@ import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.process.salaryArchive.SalaryArchiveProcessQueryParam;
import com.engine.salary.service.*;
import com.engine.salary.service.impl.*;
+import com.engine.salary.sys.service.SalarySysConfService;
+import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.google.common.collect.Lists;
@@ -38,6 +40,8 @@ import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
+import static com.engine.salary.sys.constant.SalarySysConstant.OPEN_SECONDARY_ACCOUNT;
+
/**
* 薪资档案
* Copyright: Copyright (c) 2022
@@ -73,6 +77,12 @@ public class SalaryArchiveWrapper extends Service {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
+ private SalarySysConfService getSalarySysConfService(User user) {
+ return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
+ }
+
+ //主次账号是否开启
+ boolean openSecondaryAccount = "1".equals(getSalarySysConfService(user).getValueByCode(OPEN_SECONDARY_ACCOUNT));
/**
* 薪资档案列表(分页)
@@ -101,7 +111,7 @@ public class SalaryArchiveWrapper extends Service {
//动态列组装
- List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems);
+ List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems, openSecondaryAccount);
SalaryWeaTable table = new SalaryWeaTable(user, SalaryArchiveListDTO.class);
table.setColumns(columns);
@@ -153,7 +163,7 @@ public class SalaryArchiveWrapper extends Service {
//动态列组装
- List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems);
+ List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems, openSecondaryAccount);
SalaryWeaTable table = new SalaryWeaTable(user, SalaryArchiveListDTO.class);
table.setColumns(columns);
diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
index e10233301..9cacda8c4 100644
--- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
+++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
@@ -77,9 +77,7 @@ public class SalarySobItemWrapper extends Service {
Integer searchPageSize = queryParam.getPageSize();
Integer searchCurrent = queryParam.getCurrent();
- PageInfo page = getSalaryItemService(user).listPageByParam(queryParam);
-
- List salaryItemList = page.getList();
+ List salaryItemList = getSalaryItemService(user).listByParam(queryParam);
Set taxAgentIds = getTaxAgentService(user).listAllTaxAgents((long) user.getUID())
.stream().map(TaxAgentPO::getId)
@@ -97,22 +95,23 @@ public class SalarySobItemWrapper extends Service {
}
})
.collect(Collectors.toList());
- salaryItemList = SalaryPageUtil.buildPage(searchCurrent, searchPageSize, salaryItemList).getList();
+
//最终返回的分页对象
PageInfo dtoPage = new PageInfo<>(SalaryItemSobListDTO.class);
dtoPage.setPageSize(searchPageSize);
dtoPage.setPageNum(searchCurrent);
- dtoPage.setTotal(page.getTotal());
- if (CollectionUtils.isNotEmpty(salaryItemList)) {
+ dtoPage.setTotal(salaryItemList.size());
+ List list = SalaryPageUtil.buildPage(searchCurrent, searchPageSize, salaryItemList).getList();
+ if (CollectionUtils.isNotEmpty(list)) {
// 查询公式
- Set formulaIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getFormulaId);
+ Set formulaIds = SalaryEntityUtil.properties(list, SalaryItemPO::getFormulaId);
List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
// 查询系统薪资项目
- Set sysSalaryItemIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getSysSalaryItemId);
+ Set sysSalaryItemIds = SalaryEntityUtil.properties(list, SalaryItemPO::getSysSalaryItemId);
List sysSalaryItemPOS = getSysSalaryItemService(user).listByIds(sysSalaryItemIds);
// 转换成薪资项目列表dto
- dtoPage.setList(SalaryItemBO.convert2itemSobListDTO(salaryItemList, expressFormulas, sysSalaryItemPOS));
+ dtoPage.setList(SalaryItemBO.convert2itemSobListDTO(list, expressFormulas, sysSalaryItemPOS));
}
return dtoPage;