feat: 字段管理
This commit is contained in:
parent
24e0e180be
commit
bd2597541d
|
|
@ -0,0 +1,7 @@
|
|||
package com.api.salary.web;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
@Path("/bs/hrmsalary/salaryField")
|
||||
public class SalaryFieldController extends com.engine.salary.web.SalaryFieldController{
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package com.engine.salary.entity.salaryitem.dto;
|
||||
|
||||
import com.cloudstore.eccom.pc.table.WeaTableType;
|
||||
import com.engine.salary.annotation.SalaryTable;
|
||||
import com.engine.salary.annotation.SalaryTableColumn;
|
||||
import com.engine.salary.annotation.SalaryTableOperate;
|
||||
import com.engine.salary.annotation.TableTitle;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 字段管理列表
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@SalaryTable(pageId = "a4f85287-e3f9-ab21-adn9-7d06e54y6r98", tableType = WeaTableType.CHECKBOX, operates = {@SalaryTableOperate(text = "编辑", index = "0"), @SalaryTableOperate(text = "删除", index = "1")})
|
||||
public class SalaryFieldListDTO {
|
||||
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
@SalaryTableColumn(column = "id", display = false)
|
||||
private Long id;
|
||||
|
||||
@SalaryTableColumn(text = "名称", width = "10%", column = "name")
|
||||
@TableTitle(title = "名称",dataIndex = "name",key = "name")
|
||||
private String name;
|
||||
|
||||
//默认使用
|
||||
@SalaryTableColumn(text = "默认使用", width = "10%", column = "useDefault")
|
||||
@TableTitle(title = "默认使用",dataIndex = "useDefault",key = "useDefault")
|
||||
private Integer useDefault;
|
||||
|
||||
//进位规则
|
||||
@SalaryTableColumn(text = "进位规则", width = "10%", column = "roundingMode",transmethod = "com.engine.salary.transmethod.TransMethod.roundingMode")
|
||||
@TableTitle(title = "进位规则",dataIndex = "roundingMode",key = "roundingMode")
|
||||
private String roundingMode;
|
||||
|
||||
//保留小数位
|
||||
@SalaryTableColumn(text = "保留小数位", width = "10%", column = "pattern")
|
||||
@TableTitle(title = "保留小数位",dataIndex = "pattern",key = "pattern")
|
||||
private Integer pattern;
|
||||
|
||||
//取值方式
|
||||
@SalaryTableColumn(text = "取值方式", width = "10%", column = "valueType",transmethod = "com.engine.salary.transmethod.TransMethod.datasource")
|
||||
@TableTitle(title = "取值方式",dataIndex = "valueType",key = "valueType")
|
||||
private String valueType;
|
||||
|
||||
//公式id
|
||||
private Long formulaId;
|
||||
|
||||
//公式内容
|
||||
private String formulaContent;
|
||||
|
||||
//备注
|
||||
@SalaryTableColumn(text = "备注", width = "10%", column = "description")
|
||||
@TableTitle(title = "备注",dataIndex = "description",key = "description")
|
||||
private String description;
|
||||
|
||||
|
||||
//是否可以编辑
|
||||
private Boolean canEdit;
|
||||
|
||||
//是否可以删除
|
||||
private Boolean canDelete;
|
||||
|
||||
@SalaryTableColumn(text = "操作", width = "20%", column = "operate")
|
||||
private String operate;
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
package com.engine.salary.web;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
||||
import com.engine.salary.util.ResponseResult;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.wrapper.SalaryFieldWrapper;
|
||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||
import weaver.hrm.HrmUserVarify;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 薪资字段管理
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public class SalaryFieldController {
|
||||
|
||||
private SalaryFieldWrapper getSalaryFieldWrapper(User user) {
|
||||
return ServiceUtil.getService(SalaryFieldWrapper.class, user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字段管理列表
|
||||
* @see
|
||||
*/
|
||||
@POST
|
||||
@Path("/list")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String listSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSearchParam searchParam) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryItemSearchParam, PageInfo<SalaryItemListDTO>>(user).run(getSalaryFieldWrapper(user)::listPage, searchParam);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 字段管理详情
|
||||
* @see
|
||||
*/
|
||||
@GET
|
||||
@Path("/getSalaryForm")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String getSalaryItemForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Long, SalaryItemFormDTO>(user).run(getSalaryFieldWrapper(user)::getForm, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @see
|
||||
*/
|
||||
@POST
|
||||
@Path("/delete")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String deleteSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection<Long> ids) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Collection<Long>, String>(user).run(getSalaryFieldWrapper(user)::delete, ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存字段管理
|
||||
* @see
|
||||
*/
|
||||
@POST
|
||||
@Path("/save")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String saveSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSaveParam saveParam) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
if (saveParam.getId() == null || saveParam.getId() <= 0) {
|
||||
return new ResponseResult<SalaryItemSaveParam, String>(user).run(getSalaryFieldWrapper(user)::save, saveParam);
|
||||
} else {
|
||||
return new ResponseResult<SalaryItemSaveParam, String>(user).run(getSalaryFieldWrapper(user)::update, saveParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
package com.engine.salary.wrapper;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
||||
import com.engine.salary.entity.salaryitem.bo.SalaryItemBO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryFieldListDTO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO;
|
||||
import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
import com.engine.salary.enums.SalaryOnOffEnum;
|
||||
import com.engine.salary.enums.SalaryRoundingModeEnum;
|
||||
import com.engine.salary.enums.SalarySystemTypeEnum;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.service.SalaryFormulaService;
|
||||
import com.engine.salary.service.SalaryItemService;
|
||||
import com.engine.salary.service.SalarySobItemService;
|
||||
import com.engine.salary.service.impl.SalaryFormulaServiceImpl;
|
||||
import com.engine.salary.service.impl.SalaryItemServiceImpl;
|
||||
import com.engine.salary.service.impl.SalarySobItemServiceImpl;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.page.Column;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.valid.RuntimeTypeEnum;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 字段管理
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public class SalaryFieldWrapper extends Service {
|
||||
|
||||
private SalaryItemService getSalaryItemService(User user) {
|
||||
return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryFormulaService getSalaryFormulaService(User user) {
|
||||
return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user);
|
||||
}
|
||||
|
||||
|
||||
private SalarySobItemService getSalarySobItemService(User user) {
|
||||
return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪资项目列表
|
||||
*
|
||||
* @param searchParam 查询参数
|
||||
* @return
|
||||
*/
|
||||
public PageInfo<SalaryItemListDTO> listPage(SalaryItemSearchParam searchParam) {
|
||||
// 1、查询薪资项目
|
||||
//设置查询档案引用项目
|
||||
searchParam.setUseInEmployeeSalary(SalaryOnOffEnum.ON.getValue());
|
||||
|
||||
PageInfo<SalaryItemPO> page = getSalaryItemService(user).listPageByParam(searchParam);
|
||||
List<SalaryItemPO> salaryItemList = page.getList();
|
||||
|
||||
//最终返回的分页对象
|
||||
PageInfo<SalaryItemListDTO> salaryItemListDTOPage = new PageInfo<>(SalaryItemListDTO.class);
|
||||
salaryItemListDTOPage.setPageSize(page.getPageSize());
|
||||
salaryItemListDTOPage.setPageNum(page.getPageNum());
|
||||
salaryItemListDTOPage.setTotal(page.getTotal());
|
||||
//获取字段管理的字段列表
|
||||
PageInfo<SalaryFieldListDTO> fieldColumnsPage = new PageInfo<>(SalaryFieldListDTO.class);
|
||||
List<Column> fieldColumns = fieldColumnsPage.getColumns();
|
||||
salaryItemListDTOPage.getColumns().clear();
|
||||
salaryItemListDTOPage.setColumns(fieldColumns);
|
||||
|
||||
// 被薪资账套引用的薪资项目
|
||||
List<SalarySobItemPO> salarySobItems = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(salaryItemList)) {
|
||||
//2、填充公式内容
|
||||
Set<Long> formulaIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getFormulaId);
|
||||
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
||||
// 转换成薪资项目列表dto
|
||||
List<SalaryItemListDTO> salaryItemListDTOS = SalaryItemBO.convert2ListDTO(salaryItemList, expressFormulas, Collections.emptyList());
|
||||
//薪资档案引用时不能删除
|
||||
salaryItemListDTOS.forEach(dto -> {
|
||||
if (dto.getUseInEmployeeSalary() == 1) {
|
||||
dto.setCanDelete(false);
|
||||
}
|
||||
});
|
||||
//3、被引用的薪资项目不能删除
|
||||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getId);
|
||||
salarySobItems = getSalarySobItemService(user).listBySalaryItemIds(salaryItemIds);
|
||||
if (CollectionUtils.isNotEmpty(salarySobItems)) {
|
||||
Set<Long> salaryItemIdsUseBySob = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId);
|
||||
salaryItemListDTOS.forEach(dto -> {
|
||||
if (salaryItemIdsUseBySob.contains(dto.getId())) {
|
||||
dto.setCanDelete(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
salaryItemListDTOPage.setList(salaryItemListDTOS);
|
||||
}
|
||||
|
||||
return salaryItemListDTOPage;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪资项目详情
|
||||
*
|
||||
* @param id 主键id
|
||||
* @return
|
||||
*/
|
||||
public SalaryItemFormDTO getForm(Long id) {
|
||||
SalaryItemFormDTO salaryItemFormDTO = new SalaryItemFormDTO();
|
||||
// 默认可以编辑
|
||||
salaryItemFormDTO.setCanEdit(NumberUtils.INTEGER_ONE);
|
||||
if (!Objects.isNull(id)) {
|
||||
// 查询薪资项目
|
||||
SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(id);
|
||||
// 系统薪资项目
|
||||
if (Objects.isNull(salaryItemPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除"));
|
||||
}
|
||||
ExpressFormula expressFormula;
|
||||
// // 转换成薪资项目详情dto
|
||||
|
||||
salaryItemFormDTO = SalaryItemBO.convert2FormDTO(salaryItemPO);
|
||||
expressFormula = getSalaryFormulaService(user).getExpressFormula(salaryItemPO.getFormulaId());
|
||||
salaryItemFormDTO.setFormulaContent(Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse(""));
|
||||
}
|
||||
return salaryItemFormDTO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存薪资项目
|
||||
*
|
||||
* @param saveParam 保存参数
|
||||
*/
|
||||
public void save(SalaryItemSaveParam saveParam) {
|
||||
saveParam.setValueType(SalaryValueTypeEnum.INPUT.getValue());
|
||||
saveParam.setUseInEmployeeSalary(NumberUtils.INTEGER_ONE);
|
||||
saveParam.setSystemType(SalarySystemTypeEnum.CUSTOM.getValue());
|
||||
|
||||
ValidUtil.doValidator(saveParam);
|
||||
validParam(saveParam);
|
||||
|
||||
getSalaryItemService(user).save(saveParam);
|
||||
}
|
||||
|
||||
private void validParam(SalaryItemSaveParam saveParam) {
|
||||
if (SalarySystemTypeEnum.parseByValue(saveParam.getSystemType()) == null) {
|
||||
throw new SalaryRunTimeException("系统内置的薪资项目异常");
|
||||
}
|
||||
if (SalaryRoundingModeEnum.parseByValue(saveParam.getRoundingMode()) == null) {
|
||||
throw new SalaryRunTimeException("舍入规则异常");
|
||||
}
|
||||
if (SalaryValueTypeEnum.parseByValue(saveParam.getValueType()) == null) {
|
||||
throw new SalaryRunTimeException("取值方式异常");
|
||||
}
|
||||
if (SalaryDataTypeEnum.parseByValue(saveParam.getDataType()) == null) {
|
||||
throw new SalaryRunTimeException("字段类型异常");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑薪资项目
|
||||
*
|
||||
* @param saveParam 更新参数
|
||||
*/
|
||||
public void update(SalaryItemSaveParam saveParam) {
|
||||
saveParam.setValueType(SalaryValueTypeEnum.INPUT.getValue());
|
||||
saveParam.setUseInEmployeeSalary(NumberUtils.INTEGER_ONE);
|
||||
saveParam.setSystemType(SalarySystemTypeEnum.CUSTOM.getValue());
|
||||
|
||||
ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE);
|
||||
validParam(saveParam);
|
||||
getSalaryItemService(user).update(saveParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除薪资项目
|
||||
*
|
||||
* @param ids 主键id
|
||||
*/
|
||||
public void delete(Collection<Long> ids) {
|
||||
getSalaryItemService(user).deleteByIds(ids);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue