itemValue;
- //统计项名称")
+ //统计项名称
private String itemName;
- //计数规则")
+ //计数规则
private SalaryStatisticsItemRuleDTO countRule;
- //求和规则")
+ //求和规则
private SalaryStatisticsItemRuleDTO sumRule;
- //平均值规则")
+ //平均值规则
private SalaryStatisticsItemRuleDTO avgRule;
- //最大值规则")
+ //最大值规则
private SalaryStatisticsItemRuleDTO maxRule;
- //最小值规则")
+ //最小值规则
private SalaryStatisticsItemRuleDTO minRule;
- //中位数规则")
+ //中位数规则
private SalaryStatisticsItemRuleDTO medianRule;
- //统计单位")
+ //最近值
+ private SalaryStatisticsItemRuleDTO lastRule;
+
+ //最旧值
+ private SalaryStatisticsItemRuleDTO oldRule;
+
+ //频繁出现
+ private SalaryStatisticsItemRuleDTO frequentRule;
+
+ //平铺
+ private SalaryStatisticsItemRuleDTO tileRule;
+
+
+ //统计单位
private Integer unitType;
}
diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsSearchConditionSaveParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsSearchConditionSaveParam.java
index 2ea00c161..ff0bc3964 100644
--- a/src/com/engine/salary/report/entity/param/SalaryStatisticsSearchConditionSaveParam.java
+++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsSearchConditionSaveParam.java
@@ -28,6 +28,21 @@ public class SalaryStatisticsSearchConditionSaveParam {
//统计维度
private Long dimension;
+ /**
+ * 1、上月
+ * 2、本月
+ * 3、一季度
+ * 4、二季度
+ * 5、三季度
+ * 6、四季度
+ * 7、上半年
+ * 8、下半年
+ * 9、本年
+ * 10、自定义
+ */
+ //事件类型
+ private Integer timeType;
+
//薪资所属月-开始月
private Date salaryStartMonth;
diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java
index 6acfff40d..bcf430d57 100644
--- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java
+++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java
@@ -126,11 +126,47 @@ public class SalaryStatisticsItemPO implements Serializable {
//中位数规则")
private String medianRule;
+
+ /**
+ * 最近值
+ *
+ * "totalValue":"1", 是否使用
+ */
+ private String lastRule;
+
+ /**
+ * 最早值
+ *
+ * {
+ * "totalValue":"1", 是否使用
+ * }
+ */
+ private String oldRule;
+
+ /**
+ * 出现最多
+ *
+ * {
+ * "totalValue":"1", 是否使用
+ * }
+ */
+ private String frequentRule;
+
+ /**
+ * 平铺
+ *
+ * {
+ * "totalValue":"1", 是否使用
+ * }
+ */
+ private String tileRule;
+
//顺序")
private Integer indexValue;
/**
* 统计单位
+ *
* @see UnitTypeEnum
*/
//统计单位")
diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsReportPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsReportPO.java
index a465e7add..cdf364f62 100644
--- a/src/com/engine/salary/report/entity/po/SalaryStatisticsReportPO.java
+++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsReportPO.java
@@ -21,15 +21,15 @@ import java.util.Date;
@Builder
@NoArgsConstructor
@AllArgsConstructor
-//hrsa_salary_stats_report")
+//hrsa_salary_stats_report
public class SalaryStatisticsReportPO implements Serializable {
private static final long serialVersionUID = 6526480959578343197L;
- //主键id")
+ //主键id
private Long id;
- //报表名称")
+ //报表名称
private String reportName;
private String remark;
@@ -38,58 +38,61 @@ public class SalaryStatisticsReportPO implements Serializable {
private String sortIndex;
private String sortType;
- //统计维度")
+ //时间类型
+ private Integer timeType;
+
+ //统计维度
private String dimension;
- //薪资所属月-起始")
+ //薪资所属月-起始
private Date salaryStartMonth;
- //薪资所属月-截止")
+ //薪资所属月-截止
private Date salaryEndMonth;
- //个税扣缴义务人配置")
+ //个税扣缴义务人配置
private String taxAgentSetting;
- //收入所得项目配置")
+ //收入所得项目配置
private String incomeCategorySetting;
- //分部配置")
+ //分部配置
private String subCompanySetting;
- //部门配置")
+ //部门配置
private String departSetting;
- //职级配置")
+ //职级配置
private String gradeSetting;
- //岗位配置")
+ //岗位配置
private String positionSetting;
- //人员状态配置")
+ //人员状态配置
private String statusSetting;
- //人员配置")
+ //人员配置
private String employeeSetting;
- //入职日期配置")
+ //入职日期配置
private String hiredateSetting;
- //离职日期配置")
+ //离职日期配置
private String leavedateSetting;
- //租户key", ignore = true)
+ //租户key
private String tenantKey;
- //创建人id", ignore = true)
+ //创建人id
private Long creator;
- //是否删除", ignore = true)
+ //是否删除
private Integer deleteType;
- //创建时间", ignore = true)
+ //创建时间
private Date createTime;
- //更新时间", ignore = true)
+ //更新时间
private Date updateTime;
diff --git a/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java b/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java
new file mode 100644
index 000000000..3ca0bdcff
--- /dev/null
+++ b/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java
@@ -0,0 +1,52 @@
+package com.engine.salary.report.enums;
+
+import com.engine.salary.enums.BaseEnum;
+
+import java.util.Objects;
+
+public enum SalaryStatisticsItemStringRuleEnum implements BaseEnum {
+
+
+ LAST("last", "最近值", 83993),
+ OLD("old", "最早值", 83994),
+ FREQUENT("frequent", "最频繁", 83994),
+ TILE("tile", "平铺", 83994),
+ ;
+
+ private String value;
+
+ private String defaultLabel;
+
+ private int labelId;
+
+ SalaryStatisticsItemStringRuleEnum(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 SalaryStatisticsItemStringRuleEnum parseByValue(String value) {
+ for (SalaryStatisticsItemStringRuleEnum typeEnum : SalaryStatisticsItemStringRuleEnum.values()) {
+ if (Objects.equals(typeEnum.getValue(), value)) {
+ return typeEnum;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/com/engine/salary/report/enums/UnitTypeEnum.java b/src/com/engine/salary/report/enums/UnitTypeEnum.java
index 7b93dfca9..35b1fc49b 100644
--- a/src/com/engine/salary/report/enums/UnitTypeEnum.java
+++ b/src/com/engine/salary/report/enums/UnitTypeEnum.java
@@ -3,6 +3,7 @@ package com.engine.salary.report.enums;
import com.engine.salary.enums.BaseEnum;
public enum UnitTypeEnum implements BaseEnum {
+ empty(0, 152745, ""),
REN(1, 157087, "人"),
YUAN(2, 152739, "元"),
QIAN(3, 157088, "千"),
diff --git a/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java b/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java
index 7f3dd8b38..e3a657209 100644
--- a/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java
+++ b/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java
@@ -1,5 +1,6 @@
package com.engine.salary.report.service;
+import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO;
import com.engine.salary.report.entity.param.SalaryStatisticsDimensionQueryParam;
import com.engine.salary.report.entity.param.SalaryStatisticsDimensionSaveParam;
import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO;
@@ -58,6 +59,20 @@ public interface SalaryStatisticsDimensionService {
*/
String save(SalaryStatisticsDimensionSaveParam saveParam);
+ /**
+ * 保存字段扩展
+ * @param saveParam
+ * @return
+ */
+ void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam);
+
+ /**
+ * 查询薪酬统计维度扩展字段设置
+ * @param module
+ * @return
+ */
+ EmployeeInfoExpandDTO getExpandFieldSettings(String module);
+
/**
* 删除薪酬统计维度
*
@@ -72,4 +87,5 @@ public interface SalaryStatisticsDimensionService {
* @return
*/
List listAllDefaultDimension();
+
}
diff --git a/src/com/engine/salary/report/service/SalaryStatisticsReportService.java b/src/com/engine/salary/report/service/SalaryStatisticsReportService.java
index 4355552cb..069793ecf 100644
--- a/src/com/engine/salary/report/service/SalaryStatisticsReportService.java
+++ b/src/com/engine/salary/report/service/SalaryStatisticsReportService.java
@@ -70,6 +70,13 @@ public interface SalaryStatisticsReportService {
*/
Map delete(Collection ids );
+ /**
+ * 复制
+ * @param id
+ */
+ void duplicate(Long id);
+
+
/**
* 保存统计范围
*
@@ -106,5 +113,4 @@ public interface SalaryStatisticsReportService {
*/
void removeReportCache();
-
}
diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java
index 865015758..c855e0037 100644
--- a/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java
+++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java
@@ -3,6 +3,7 @@ package com.engine.salary.report.service.impl;
import com.alibaba.fastjson.JSON;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
+import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.report.SalaryStatisticsDimensionMapper;
import com.engine.salary.report.common.constant.SalaryStatisticsDimensionConstant;
@@ -13,6 +14,8 @@ import com.engine.salary.report.entity.po.SalaryStatisticsReportPO;
import com.engine.salary.report.enums.SalaryStatisticsDimensionTypeEnum;
import com.engine.salary.report.service.SalaryStatisticsDimensionService;
import com.engine.salary.report.service.SalaryStatisticsReportService;
+import com.engine.salary.service.SalaryEmployeeService;
+import com.engine.salary.service.impl.SalaryEmployeeServiceImpl;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
@@ -46,6 +49,10 @@ public class SalaryStatisticsDimensionServiceImpl extends Service implements Sal
return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user);
}
+ private SalaryEmployeeService getSalaryEmployeeService(User user) {
+ return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
+ }
+
/**
* 初始化默认维度
*/
@@ -197,6 +204,16 @@ public class SalaryStatisticsDimensionServiceImpl extends Service implements Sal
return StringUtils.EMPTY;
}
+ @Override
+ public void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam) {
+ getSalaryEmployeeService(user).saveEmployeeExpandFieldSettings(saveParam);
+ }
+
+ @Override
+ public EmployeeInfoExpandDTO getExpandFieldSettings(String module) {
+ return getSalaryEmployeeService(user).getExpandFieldSettings(module);
+ }
+
@Override
public Map delete(Collection ids) {
if (CollectionUtils.isEmpty(ids)) {
diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java
index 8c56dc7ef..6468f3f4b 100644
--- a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java
+++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java
@@ -116,6 +116,10 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt
.maxRule(SalaryEntityUtil.toJSONString(saveParam.getMaxRule()))
.minRule(SalaryEntityUtil.toJSONString(saveParam.getMinRule()))
.medianRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
+ .lastRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
+ .oldRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
+ .frequentRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
+ .tileRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
.indexValue(max + 1)
.statReportId(saveParam.getStatReportId())
.unitType(saveParam.getUnitType() == null ? UnitTypeEnum.YUAN.getValue() : saveParam.getUnitType())
@@ -149,6 +153,10 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt
itemPO.setMaxRule(SalaryEntityUtil.toJSONString(saveParam.getMaxRule()));
itemPO.setMinRule(SalaryEntityUtil.toJSONString(saveParam.getMinRule()));
itemPO.setMedianRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()));
+ itemPO.setLastRule(SalaryEntityUtil.toJSONString(saveParam.getLastRule()));
+ itemPO.setOldRule(SalaryEntityUtil.toJSONString(saveParam.getOldRule()));
+ itemPO.setFrequentRule(SalaryEntityUtil.toJSONString(saveParam.getFrequentRule()));
+ itemPO.setTileRule(SalaryEntityUtil.toJSONString(saveParam.getTileRule()));
}
getSalaryStatisticsItemMapper().updateIgnoreNull(itemPO);
diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java
index ecadc58bf..c71f5193c 100644
--- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java
+++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java
@@ -6,6 +6,8 @@ import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
+import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO;
+import com.engine.salary.entity.hrm.dto.FieldSetting;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
@@ -22,6 +24,7 @@ import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO;
import com.engine.salary.report.entity.po.SalaryStatisticsItemPO;
import com.engine.salary.report.entity.po.SalaryStatisticsReportPO;
import com.engine.salary.report.enums.SalaryStatisticsDimensionTypeEnum;
+import com.engine.salary.report.service.SalaryStatisticsDimensionService;
import com.engine.salary.report.service.SalaryStatisticsItemService;
import com.engine.salary.report.service.SalaryStatisticsReportService;
import com.engine.salary.report.util.ReportTimeUtil;
@@ -70,6 +73,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class);
}
+ private SalaryStatisticsDimensionService getSalaryStatisticsDimensionService(User user) {
+ return ServiceUtil.getService(SalaryStatisticsDimensionServiceImpl.class, user);
+ }
+
private SalaryStatisticsItemService getSalaryStatisticsItemService(User user) {
return ServiceUtil.getService(SalaryStatisticsItemServiceImpl.class, user);
}
@@ -265,6 +272,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
po.setLeavedateSetting(JSON.toJSONString(param.getLeavedate()));
}
+ po.setTimeType(param.getTimeType());
+
getSalaryStatisticsReportMapper().updateIgnoreNull(po);
// 获取自定义统计项目
@@ -331,13 +340,41 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
return resultMap;
}
+ @Override
+ public void duplicate(Long id) {
+ long uid = user.getUID();
+ Date now = new Date();
+
+ SalaryStatisticsReportPO po = getById(id);
+ SalaryAssert.notNull(po, SalaryI18nUtil.getI18nLabel(152563, "报表不存在"));
+
+ po.setId(IdGenerator.generate());
+ po.setCreator(uid);
+ po.setCreateTime(now);
+ po.setUpdateTime(now);
+ po.setReportName(po.getReportName()+"_copy");
+
+ getSalaryStatisticsReportMapper().insertIgnoreNull(po);
+
+ List itemPOS = getSalaryStatisticsItemService(user).listByStatisticsReportId(id);
+ List itemList = itemPOS.stream().map(item -> {
+ item.setId(IdGenerator.generate());
+ item.setStatReportId(po.getId());
+ item.setCreator(uid);
+ item.setCreateTime(now);
+ item.setUpdateTime(now);
+ return item;
+ }).collect(Collectors.toList());
+ getSalaryStatisticsItemService(user).saveOrUpdateBatch(itemList);
+ }
+
@Override
public PageInfo