pageLinkPOS = getPageLinkMapper().listSome(PageLinkPO.builder().templateId(id).build());
+ if (CollUtil.isNotEmpty(pageLinkPOS)) {
+ throw new SalaryRunTimeException(pageListTemplatePO.getName() + "模板正被使用!不允许删除");
+ }
+ });
+
+ getPageListTemplateMapper().deleteByIds(ids);
}
}
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/AutoSyncEmpArchiveStartDateJob.java b/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java
index 1b4c32c84..6c817ed4e 100644
--- a/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java
+++ b/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java
@@ -3,12 +3,15 @@ package com.engine.salary.timer;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.biz.SalaryArchiveBiz;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
+import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
+import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesFundSchemePO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesOtherSchemePO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesSocialSchemePO;
import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum;
+import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
import com.engine.salary.enums.siaccount.EmployeeStatusEnum;
import com.engine.salary.mapper.siarchives.FundSchemeMapper;
import com.engine.salary.mapper.siarchives.OtherSchemeMapper;
@@ -22,14 +25,12 @@ import com.engine.salary.service.impl.SalaryEmployeeServiceImpl;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.hrm.User;
import weaver.interfaces.schedule.BaseCronJob;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -38,25 +39,28 @@ import java.util.stream.Collectors;
* @date 2023/08/14 9:30
* @description 自动同步人员社保福利档案、薪资档案为公司开始日期字段(companystartdate)
*/
+@Slf4j
public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob {
private SalaryArchiveService getSalaryArchiveService(User user) {
- return ServiceUtil.getService(SalaryArchiveServiceImpl.class,user);
+ return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
}
private SalaryEmployeeService getSalaryEmployeeService(User user) {
- return ServiceUtil.getService(SalaryEmployeeServiceImpl.class,user);
+ return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
private SIArchivesService getSIArchivesService(User user) {
- return ServiceUtil.getService(SIArchivesServiceImpl.class,user);
+ return ServiceUtil.getService(SIArchivesServiceImpl.class, user);
}
private String syncInsuranceArchive;
-
private String syncSalaryArchive;
+ private String allStayAddToPay;
+ private String allGotoFixed;
+
private SalaryArchiveBiz getSalaryArchiveMapper = new SalaryArchiveBiz();
private SocialSchemeMapper getSocialSchemeMapper() {
@@ -72,14 +76,13 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob {
}
-
@Override
public void execute() {
User user = new User();
user.setUid(1);
user.setLoginid("sysadmin");
- if (StringUtils.isBlank(syncInsuranceArchive) || !StringUtils.equals(syncInsuranceArchive,"false")) {
+ if (StringUtils.isBlank(syncInsuranceArchive) || !StringUtils.equals(syncInsuranceArchive, "false")) {
// 同步社保福利档案
// 获取社保、公积金、其他福利中起始缴纳月任意一个为空的社保档案主表po
List needSyncInsuranceBaseInfoList = getSIArchivesService(user).listStartDateIsNull(Collections.emptyList());
@@ -125,7 +128,7 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob {
});
}
- if (StringUtils.isBlank(syncSalaryArchive) || !StringUtils.equals(syncSalaryArchive,"false")) {
+ if (StringUtils.isBlank(syncSalaryArchive) || !StringUtils.equals(syncSalaryArchive, "false")) {
// 同步薪资档案
// 获取薪资档案起始发薪日为空且是待定薪资的档案
List salaryArchiveList = getSalaryArchiveService(user).listPayStartDateIsNull(SalaryArchiveListTypeEnum.PENDING.getValue());
@@ -154,6 +157,27 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob {
getSalaryArchiveMapper.batchUpdate(needUpdateArchiveList);
}
+
+ //一键定薪
+ if (StringUtils.isNotBlank(allStayAddToPay) && !StringUtils.equals(allStayAddToPay, "false")) {
+ List allBaseInfoList = getSIArchivesService(user).listAll();
+ List ids = allBaseInfoList.stream()
+ .filter(f -> f.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue()))
+ .map(InsuranceArchivesBaseInfoPO::getId)
+ .collect(Collectors.toList());
+ Map map = getSIArchivesService(user).stayAddToPay(ids);
+ log.info("社保一键定薪结果:" + map);
+ }
+
+ if (StringUtils.isNotBlank(allGotoFixed) && !StringUtils.equals(allGotoFixed, "false")) {
+ SalaryArchiveQueryParam queryParam = SalaryArchiveQueryParam.builder().build();
+ queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.PENDING.getValue()));
+ List salaryArchiveList = getSalaryArchiveService(user).getSalaryArchiveList(queryParam);
+ List ids = SalaryEntityUtil.properties(salaryArchiveList, SalaryArchiveListDTO::getId, Collectors.toList());
+ Map map = getSalaryArchiveService(user).gotoFixed(ids);
+ log.info("薪资一键定薪结果:" + map);
+ }
+
}
}
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/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java
index 0895ec79e..b7cd6404f 100644
--- a/src/com/engine/salary/web/SalaryCommonController.java
+++ b/src/com/engine/salary/web/SalaryCommonController.java
@@ -2,11 +2,13 @@ package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.setting.dto.PageListTemplateDTO;
+import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO;
import com.engine.salary.entity.setting.param.*;
import com.engine.salary.entity.setting.po.PageListSettingPO;
import com.engine.salary.entity.setting.po.PageListTemplatePO;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.util.SalaryEnumUtil;
+import com.engine.salary.util.page.PageInfo;
import com.engine.salary.wrapper.SalaryCommonWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import lombok.extern.slf4j.Slf4j;
@@ -88,7 +90,7 @@ public class SalaryCommonController {
@Produces(MediaType.APPLICATION_JSON)
public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListSettingQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
- return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param);
+ return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param);
}
/**
@@ -103,7 +105,7 @@ public class SalaryCommonController {
@Produces(MediaType.APPLICATION_JSON)
public String getPageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
- return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListTemplate, param);
+ return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListTemplate, param);
}
/**
@@ -121,6 +123,14 @@ public class SalaryCommonController {
return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getPageListTemplates, param);
}
+ @POST
+ @Path("/pageList/template/pageList")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String getTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getTemplates, param);
+ }
+
/**
* 页面模板列表
* @param request
@@ -136,6 +146,15 @@ public class SalaryCommonController {
return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListTemplate, param);
}
+ @POST
+ @Path("/pageList/template/delete")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String savePageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateDeleteParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getSalaryCommonWrapper(user)::deletePageListTemplate, param);
+ }
+
+
/**
* 页面模板列表
* @param request
diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java
index c8182fef1..d4bebab23 100644
--- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java
+++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java
@@ -3,12 +3,14 @@ package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.setting.dto.PageListTemplateDTO;
+import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO;
import com.engine.salary.entity.setting.param.*;
import com.engine.salary.entity.setting.po.PageListTemplatePO;
import com.engine.salary.service.SalaryCacheService;
import com.engine.salary.service.SettingService;
import com.engine.salary.service.impl.SalaryCacheServiceImpl;
import com.engine.salary.service.impl.SettingServiceImpl;
+import com.engine.salary.util.page.PageInfo;
import weaver.hrm.User;
import java.util.List;
@@ -41,12 +43,12 @@ public class SalaryCommonWrapper extends Service {
}
- public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) {
- return getSettingService(user).getPageListSetting(param);
+ public PageListTemplateDetailDTO getPageListSetting(PageListSettingQueryParam param) {
+ return getSettingService(user).getDefaultPageListSetting(param);
}
- public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) {
+ public PageListTemplateDetailDTO getPageListTemplate(PageListTemplateQueryParam param) {
return getSettingService(user).getPageListTemplate(param);
}
@@ -54,10 +56,18 @@ public class SalaryCommonWrapper extends Service {
return getSettingService(user).getPageListTemplates(param);
}
+ public PageInfo getTemplates(PageListTemplateQueryParam param) {
+ return getSettingService(user).getTemplates(param);
+ }
+
public PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param) {
return getSettingService(user).savePageListTemplate(param);
}
+ public void deletePageListTemplate(PageListTemplateDeleteParam param) {
+ getSettingService(user).deletePageListTemplate(param);
+ }
+
public void changePageListTemplate(PageListTemplateChangeParam param) {
getSettingService(user).changePageListTemplate(param);
}
diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
index e1ed86869..07006c6a4 100644
--- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
+++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
@@ -75,9 +75,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)
@@ -95,22 +93,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;