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..7a3c052be 100644
--- a/src/com/engine/salary/sys/constant/SalarySysConstant.java
+++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java
@@ -204,4 +204,17 @@ 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";
+
+ //是否采集考勤班次数据,0:关闭 1:开启
+ public static final String ATTENDANCE_SERIAL_COLLECTION_BTN = "ATTENDANCE_SERIAL_COLLECTION_BTN";
}
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/util/SalaryTokenUtil.java b/src/com/engine/salary/util/SalaryTokenUtil.java
index aaa53e1d9..653a0a821 100644
--- a/src/com/engine/salary/util/SalaryTokenUtil.java
+++ b/src/com/engine/salary/util/SalaryTokenUtil.java
@@ -90,6 +90,9 @@ public class SalaryTokenUtil {
return heads;
}
BaseBean baseBean = new BaseBean();
+ // 获取是否是https
+ String isHttps = baseBean.getPropValue("hrmSalaryBillToken", "is_https");
+ String httpKey = (StringUtils.isNotBlank(isHttps) && isHttps.equals("true")) ? "https://" : "http://";
RecordSet rs = new RecordSet();
Map resultMap = new HashMap<>();
@@ -123,7 +126,7 @@ public class SalaryTokenUtil {
heads.put("appid", appid);
heads.put("cpk", cpk);
// 调用ECOLOGY系统接口进行注册
- String data = post("http://" + ip + "/api/ec/dev/auth/regist", null, heads);
+ String data = post(httpKey + ip + "/api/ec/dev/auth/regist", null, heads);
Map datas = JSONObject.parseObject(data, new TypeReference