mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
添加工资项目初始化
This commit is contained in:
@@ -30,4 +30,18 @@ public interface BaseRepository<T> extends JpaRepository<T, String>, JpaSpecific
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
default void deleteByOrganizationId(String organizationId) {
|
||||
this.deleteAll(findAll(
|
||||
(root, query, cb) -> {
|
||||
try {
|
||||
|
||||
Path<Object> path = root.get("organizationId");
|
||||
return cb.equal(path, organizationId);
|
||||
} catch (Exception e) {
|
||||
return cb.and();
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.lihongjie.coal.annotation.OrgScope;
|
||||
import cn.lihongjie.coal.annotation.SysLog;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.common.Ctx;
|
||||
import cn.lihongjie.coal.empSalaryItem.dto.CreateEmpSalaryItemDto;
|
||||
import cn.lihongjie.coal.empSalaryItem.dto.EmpSalaryItemDto;
|
||||
import cn.lihongjie.coal.empSalaryItem.dto.UpdateEmpSalaryItemDto;
|
||||
@@ -42,6 +43,12 @@ public class EmpSalaryItemController {
|
||||
return true;
|
||||
}
|
||||
|
||||
@PostMapping("/init")
|
||||
public Object init() {
|
||||
this.service.initOrg(Ctx.currentUser().getOrganizationId());
|
||||
return true;
|
||||
}
|
||||
|
||||
@PostMapping("/getById")
|
||||
public EmpSalaryItemDto getById(@RequestBody IdRequest request) {
|
||||
return this.service.getById(request.getId());
|
||||
|
||||
@@ -3,14 +3,13 @@ package cn.lihongjie.coal.empSalaryItem.service;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.empSalary.entity.EmpSalaryEntity;
|
||||
import cn.lihongjie.coal.empSalaryBatch.entity.EmpSalaryBatchEntity;
|
||||
import cn.lihongjie.coal.empSalaryItem.dto.CreateEmpSalaryItemDto;
|
||||
import cn.lihongjie.coal.empSalaryItem.dto.EmpSalaryItemDto;
|
||||
import cn.lihongjie.coal.empSalaryItem.dto.UpdateEmpSalaryItemDto;
|
||||
import cn.lihongjie.coal.empSalaryItem.entity.EmpSalaryItemEntity;
|
||||
import cn.lihongjie.coal.empSalaryItem.mapper.EmpSalaryItemMapper;
|
||||
import cn.lihongjie.coal.empSalaryItem.repository.EmpSalaryItemRepository;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.service.EmpSalaryItemConfigService;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -22,7 +21,7 @@ import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -35,10 +34,13 @@ public class EmpSalaryItemService
|
||||
|
||||
@Autowired private ConversionService conversionService;
|
||||
|
||||
@Autowired
|
||||
private EmpSalaryItemConfigService empSalaryItemConfigService;
|
||||
public EmpSalaryItemDto create(CreateEmpSalaryItemDto request) {
|
||||
EmpSalaryItemEntity entity = mapper.toEntity(request);
|
||||
|
||||
this.repository.save(entity);
|
||||
empSalaryItemConfigService.initOrg(entity.getOrganizationId());
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
@@ -47,7 +49,7 @@ public class EmpSalaryItemService
|
||||
this.mapper.updateEntity(entity, request);
|
||||
|
||||
this.repository.save(entity);
|
||||
|
||||
empSalaryItemConfigService.initOrg(entity.getOrganizationId());
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
@@ -75,17 +77,26 @@ public class EmpSalaryItemService
|
||||
|
||||
|
||||
|
||||
public void calculateSalary(EmpSalaryBatchEntity batch, List<EmpSalaryEntity> list) {
|
||||
|
||||
// 获取所有的工资项目
|
||||
|
||||
|
||||
// 准备计算上下文
|
||||
|
||||
|
||||
// 计算工资项目
|
||||
public void initOrg(String organizationId) {
|
||||
|
||||
this.repository.deleteByOrganizationId(organizationId);
|
||||
for (int i = 0; i < 50; i++) {
|
||||
|
||||
EmpSalaryItemEntity item = new EmpSalaryItemEntity();
|
||||
item.setItemType("1");
|
||||
item.setInputType("1");
|
||||
item.setFormulaShow("");
|
||||
item.setFormula("");
|
||||
item.setDependOn(new ArrayList<>());
|
||||
item.setPriority(0);
|
||||
item.setOrganizationId(organizationId);
|
||||
item.setName("");
|
||||
item.setCode("item" + i);
|
||||
item.setRemarks("");
|
||||
item.setSortKey(i);
|
||||
item.setStatus(0);
|
||||
|
||||
repository.save(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package cn.lihongjie.coal.empSalaryItemConfig.controller;
|
||||
|
||||
import cn.lihongjie.coal.annotation.OrgScope;
|
||||
import cn.lihongjie.coal.annotation.SysLog;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.common.Ctx;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.dto.CreateEmpSalaryItemConfigDto;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.dto.EmpSalaryItemConfigDto;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.dto.UpdateEmpSalaryItemConfigDto;
|
||||
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequestMapping("/empSalaryItemConfig")
|
||||
@SysLog(module = "工资公式配置")
|
||||
@Slf4j
|
||||
@OrgScope
|
||||
public class EmpSalaryItemConfigController {
|
||||
@Autowired private EmpSalaryItemConfigService service;
|
||||
|
||||
@@ -49,4 +52,11 @@ public class EmpSalaryItemConfigController {
|
||||
public Page<EmpSalaryItemConfigDto> list(@RequestBody CommonQuery request) {
|
||||
return this.service.list(request);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/init")
|
||||
public Object init() {
|
||||
this.service.initOrg(Ctx.currentUser().getOrganizationId());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.lihongjie.coal.empSalaryItemConfig.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.CommonDto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -8,7 +9,7 @@ import org.hibernate.annotations.Comment;
|
||||
import org.hibernate.annotations.Formula;
|
||||
|
||||
@Data
|
||||
public class CreateEmpSalaryItemConfigDto extends CommonDto {
|
||||
public class CreateEmpSalaryItemConfigDto extends OrgCommonDto {
|
||||
@Comment("类别")
|
||||
private String itemType;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.lihongjie.coal.empSalaryItemConfig.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.CommonDto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -8,7 +9,7 @@ import org.hibernate.annotations.Comment;
|
||||
import org.hibernate.annotations.Formula;
|
||||
|
||||
@Data
|
||||
public class EmpSalaryItemConfigDto extends CommonDto {
|
||||
public class EmpSalaryItemConfigDto extends OrgCommonDto {
|
||||
|
||||
@Comment("类别")
|
||||
private String itemType;
|
||||
@@ -31,4 +32,8 @@ public class EmpSalaryItemConfigDto extends CommonDto {
|
||||
|
||||
@Comment("表达式-展示")
|
||||
private String expressionShow;
|
||||
|
||||
|
||||
@Comment("是否系统预设")
|
||||
private Boolean systemPreset;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.lihongjie.coal.empSalaryItemConfig.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.CommonDto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -8,7 +9,7 @@ import org.hibernate.annotations.Comment;
|
||||
import org.hibernate.annotations.Formula;
|
||||
|
||||
@Data
|
||||
public class UpdateEmpSalaryItemConfigDto extends CommonDto {
|
||||
public class UpdateEmpSalaryItemConfigDto extends OrgCommonDto {
|
||||
|
||||
@Comment("类别")
|
||||
private String itemType;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.lihongjie.coal.empSalaryItemConfig.entity;
|
||||
|
||||
import cn.lihongjie.coal.base.entity.CommonEntity;
|
||||
|
||||
import cn.lihongjie.coal.base.entity.OrgCommonEntity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
|
||||
@@ -11,7 +12,7 @@ import org.hibernate.annotations.Formula;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class EmpSalaryItemConfigEntity extends CommonEntity {
|
||||
public class EmpSalaryItemConfigEntity extends OrgCommonEntity {
|
||||
|
||||
@Comment("类别")
|
||||
private String itemType;
|
||||
@@ -40,6 +41,10 @@ public class EmpSalaryItemConfigEntity extends CommonEntity {
|
||||
@Comment("字典编码")
|
||||
private String dictCode;
|
||||
|
||||
|
||||
|
||||
@Comment("是否系统预设")
|
||||
private Boolean systemPreset;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,4 +6,6 @@ import cn.lihongjie.coal.empSalaryItemConfig.entity.EmpSalaryItemConfigEntity;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface EmpSalaryItemConfigRepository extends BaseRepository<EmpSalaryItemConfigEntity> {}
|
||||
public interface EmpSalaryItemConfigRepository extends BaseRepository<EmpSalaryItemConfigEntity> {
|
||||
long deleteByOrganizationIdAndItemType(String organizationId, String itemType);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package cn.lihongjie.coal.empSalaryItemConfig.service;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.empSalaryItem.entity.EmpSalaryItemEntity;
|
||||
import cn.lihongjie.coal.empSalaryItem.service.EmpSalaryItemService;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.dto.CreateEmpSalaryItemConfigDto;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.dto.EmpSalaryItemConfigDto;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.dto.UpdateEmpSalaryItemConfigDto;
|
||||
@@ -10,16 +12,25 @@ import cn.lihongjie.coal.empSalaryItemConfig.entity.EmpSalaryItemConfigEntity;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.mapper.EmpSalaryItemConfigMapper;
|
||||
import cn.lihongjie.coal.empSalaryItemConfig.repository.EmpSalaryItemConfigRepository;
|
||||
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.CriteriaQuery;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import jakarta.persistence.criteria.Root;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@Transactional
|
||||
@@ -68,4 +79,164 @@ public class EmpSalaryItemConfigService
|
||||
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
|
||||
|
||||
@Autowired EmpSalaryItemService empSalaryItemService;
|
||||
|
||||
@NotNull
|
||||
private static EmpSalaryItemConfigEntity createEmpConfig(String organizationId, String expression, String expressionShow, boolean systemPreset, String itemType) {
|
||||
EmpSalaryItemConfigEntity config = new EmpSalaryItemConfigEntity();
|
||||
config.setOrganizationId(organizationId);
|
||||
config.setItemType(itemType);
|
||||
config.setExpression(expression);
|
||||
config.setExpressionShow(expressionShow);
|
||||
config.setSystemPreset(systemPreset);
|
||||
return config;
|
||||
}
|
||||
|
||||
public void initOrg(String organizationId) {
|
||||
|
||||
// 所有启用的工资项目, 系统预设, 无法编辑
|
||||
|
||||
initSalaItem(organizationId);
|
||||
|
||||
// 人员信息字段, 可编辑
|
||||
|
||||
initEmp(organizationId);
|
||||
|
||||
// 工资标准字段, 系统预设, 无法编辑
|
||||
|
||||
initSalaStandard(organizationId);
|
||||
|
||||
// 其他辅助信息字段, 系统预设, 无法编辑
|
||||
|
||||
initOthers(organizationId);
|
||||
|
||||
// 自定义函数, 可编辑
|
||||
|
||||
initCustomFunctions(organizationId);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void initCustomFunctions(String organizationId) {
|
||||
|
||||
}
|
||||
|
||||
private void initOthers(String organizationId) {
|
||||
long delete = repository.deleteByOrganizationIdAndItemType(organizationId, "3");
|
||||
|
||||
|
||||
this.repository.save(createEmpConfig(organizationId, "batch?.batchYearMonth?.year", "发放年度", false, "3"));
|
||||
this.repository.save(createEmpConfig(organizationId, "batch?.batchYearMonth?.monthValue", "发放月份", false, "3"));
|
||||
this.repository.save(createEmpConfig(organizationId, "batch?.batchNo", "发放批次号", false, "3"));
|
||||
|
||||
}
|
||||
|
||||
private void initSalaStandard(String organizationId) {
|
||||
|
||||
long delete = repository.deleteByOrganizationIdAndItemType(organizationId, "2");
|
||||
|
||||
List<EmpSalaryItemEntity> items = empSalaryItemService.findAll(
|
||||
new Specification<EmpSalaryItemEntity>() {
|
||||
@Override
|
||||
public Predicate toPredicate(
|
||||
Root<EmpSalaryItemEntity> root,
|
||||
CriteriaQuery<?> query,
|
||||
CriteriaBuilder criteriaBuilder) {
|
||||
return criteriaBuilder.and(
|
||||
criteriaBuilder.equal(root.get("organizationId"), organizationId),
|
||||
criteriaBuilder.equal(root.get("status"), 1));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
for (EmpSalaryItemEntity item : items) {
|
||||
|
||||
this.repository.save(createEmpConfig(organizationId, "stdMap[\"" + item.getName() + "\"]", item.getName(),true, "2"));
|
||||
}
|
||||
}
|
||||
|
||||
private void initEmp(String organizationId) {
|
||||
|
||||
long delete = repository.deleteByOrganizationIdAndItemType(organizationId, "0");
|
||||
|
||||
|
||||
this.repository.save(createEmpConfig(organizationId, "emp?.department?.code", "部门编码", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp?.department?.name", "部门名称", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp?.jobPost?.code", "岗位编码", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp?.jobPost?.name", "岗位名称", false, "0"));
|
||||
|
||||
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance1Base", "养老保险基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance1Base", "养老保险基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance1Percent", "养老保险比例", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance2Base", "医疗保险基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance2Percent", "医疗保险比例", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance3Base", "失业保险基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance3Percent", "失业保险比例", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance4Base", "工伤保险基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance4Percent", "工伤保险比例", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance5Base", "生育保险基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance5Percent", "生育保险比例", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance6Base", "住房公积金基数", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.insurance6Percent", "住房公积金比例", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.name", "姓名", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.sex", "性别", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.nation", "民族", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.marriage", "婚姻状况", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.entryDate", "入职时间", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.resignDate", "离职时间", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.idCard", "身份证号", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.education", "学历", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.phone", "手机号", false, "0"));
|
||||
this.repository.save(createEmpConfig(organizationId, "emp.empStatus", "员工状态", false, "0"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void initSalaItem(String organizationId) {
|
||||
long delete = repository.deleteByOrganizationIdAndItemType(organizationId, "1");
|
||||
|
||||
List<EmpSalaryItemEntity> items = empSalaryItemService.findAll(
|
||||
new Specification<EmpSalaryItemEntity>() {
|
||||
@Override
|
||||
public Predicate toPredicate(
|
||||
Root<EmpSalaryItemEntity> root,
|
||||
CriteriaQuery<?> query,
|
||||
CriteriaBuilder criteriaBuilder) {
|
||||
return criteriaBuilder.and(
|
||||
criteriaBuilder.equal(root.get("organizationId"), organizationId),
|
||||
criteriaBuilder.equal(root.get("status"), 1));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
for (EmpSalaryItemEntity item : items) {
|
||||
|
||||
this.repository.save(createEmpConfig(organizationId, "salary." + item.getCode(), item.getName(), true, "1"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1999,7 +1999,16 @@
|
||||
},
|
||||
{
|
||||
"code": "2",
|
||||
"name": "其他"
|
||||
"name": "工资标准"
|
||||
},
|
||||
|
||||
{
|
||||
"code": "3",
|
||||
"name": "其他辅助字段"
|
||||
},
|
||||
{
|
||||
"code": "4",
|
||||
"name": "函数"
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user