weaver-hrm-salary/src/com/engine/salary/web/SalaryFormulaController.java

103 lines
75 KiB
Java
Raw Normal View History

2022-04-14 20:46:17 +08:00
package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaFieldQueryParam;
2023-03-06 19:45:48 +08:00
import com.engine.salary.entity.salaryformula.param.SalaryFormulaMockParam;
2022-04-14 20:46:17 +08:00
import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam;
2022-04-16 16:49:22 +08:00
import com.engine.salary.entity.salaryformula.po.FormulaPO;
2022-04-14 20:46:17 +08:00
import com.engine.salary.entity.salaryformula.po.FormulaVar;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.wrapper.SalaryFormulaWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
2022-12-07 15:47:35 +08:00
import lombok.extern.slf4j.Slf4j;
2022-04-14 20:46:17 +08:00
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;
2022-08-03 10:08:43 +08:00
import java.util.ArrayList;
2022-04-14 20:46:17 +08:00
import java.util.List;
import java.util.Map;
2022-12-07 15:47:35 +08:00
@Slf4j
2022-04-14 20:46:17 +08:00
public class SalaryFormulaController {
private SalaryFormulaWrapper getSalaryFormulaWrapper(User user) {
return (SalaryFormulaWrapper) ServiceUtil.getService(SalaryFormulaWrapper.class, user);
}
//变量项
@POST
@Path("/search/group")
@Produces(MediaType.APPLICATION_JSON)
public String fieldGroupList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Map<String, Object> param) {
User user = HrmUserVarify.getUser(request, response);
2022-04-25 18:06:09 +08:00
return new ResponseResult<Map<String, Object>, List<Map<String, Object>>>(user).run(getSalaryFormulaWrapper(user)::fieldGroupList, param);
2022-04-14 20:46:17 +08:00
}
//变量字段列表
@POST
@Path("/search/field")
@Produces(MediaType.APPLICATION_JSON)
public String fieldList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryFormulaFieldQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
2022-04-25 18:06:09 +08:00
return new ResponseResult<SalaryFormulaFieldQueryParam, List<FormulaVar>>(user).run(getSalaryFormulaWrapper(user)::fieldList, param);
2022-04-14 20:46:17 +08:00
}
//获取公式详情
@GET
@Path("/detail")
@Produces(MediaType.APPLICATION_JSON)
public String detail(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "formulaId") Long formulaId) {
User user = HrmUserVarify.getUser(request, response);
2022-04-25 18:06:09 +08:00
return new ResponseResult<Long, ExpressFormulaDTO>(user).run(getSalaryFormulaWrapper(user)::detail, formulaId);
2022-04-14 20:46:17 +08:00
}
@POST
@Path("/save")
@Produces(MediaType.APPLICATION_JSON)
public String save(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryFormulaSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
2022-04-25 18:06:09 +08:00
return new ResponseResult<SalaryFormulaSaveParam, FormulaPO>(user).run(getSalaryFormulaWrapper(user)::save, param);
2022-04-14 20:46:17 +08:00
}
2022-08-03 10:08:43 +08:00
//数据源列表
2022-08-03 10:47:26 +08:00
@GET
2022-08-03 10:08:43 +08:00
@Path("/datasource/list")
@Produces(MediaType.APPLICATION_JSON)
public String datasource(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<String, ArrayList>(user).run(getSalaryFormulaWrapper(user)::datasourceList);
}
2022-12-13 16:13:45 +08:00
/**
* 测试公式
2023-04-25 18:04:05 +08:00
*
2022-12-13 16:13:45 +08:00
* @param request
* @param response
* @param param
* @return
*/
2022-12-13 10:53:43 +08:00
@POST
2022-12-13 16:13:45 +08:00
@Path("/mock")
2022-12-07 15:47:35 +08:00
@Produces(MediaType.APPLICATION_JSON)
2023-03-06 19:45:48 +08:00
public String mock(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryFormulaMockParam param) {
2022-12-07 15:47:35 +08:00
User user = HrmUserVarify.getUser(request, response);
2023-03-06 19:45:48 +08:00
return new ResponseResult<SalaryFormulaMockParam, Object>(user).run(getSalaryFormulaWrapper(user)::mock, param);
2022-12-07 15:47:35 +08:00
}
2022-04-14 20:46:17 +08:00
2023-04-25 18:04:05 +08:00
@GET
@Path("/des")
@Produces(MediaType.APPLICATION_JSON)
public String mock(@Context HttpServletRequest request, @Context HttpServletResponse response) {
return "{\"data\":[{\"children\":[{\"name\":\"CONCAT\",\"chineseName\":\"链接多个文本\",\"description\":\"可用于连接多个任意类型的文本、日期、数字变量或常量。最后一个字符可使用'#分隔符#'标记为分隔符\",\"example\":\"CONCAT({总价}/10000, '万元')\",\"result\":\"100万元\",\"paramDescs\":[\"*文本1*(必选)\",\"*文本2*(可选)\",\"......\"],\"formatString\":\"CONCAT(文本1, 文本2, [文本3, …],[#分隔符#])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":true}]},{\"name\":\"TEXT\",\"chineseName\":\"将变量转为文本\",\"description\":\"将变量转为文本。\",\"example\":\"TEXT({当前数据.性别})\",\"result\":\"'男'\",\"paramDescs\":[\"*变量*(必选)\"],\"formatString\":\"TEXT(变量)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"VALUE\",\"chineseName\":\"将文本转为数字\",\"description\":\"将文本转为数字。\",\"example\":\"VALUE('23')\",\"result\":\"23\",\"paramDescs\":[\"*文本、数字、选项*(必选)\"],\"formatString\":\"VALUE([文本、数字、选项])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"LEN\",\"chineseName\":\"返回文本长度\",\"description\":\"返回文本的长度中文、英文都算1个字符。\",\"example\":\"LEN('大家好dajiahao')\",\"result\":\"12\",\"paramDescs\":[\"*变量或常量*(必选)\"],\"formatString\":\"LEN(文本)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"SEARCH\",\"chineseName\":\"在文本中查找关键字\",\"description\":\"在指定文本中查找关键字返回第一次出现关键字的字符位置文本的第一个字记为1。未找到返回0。搜索开始位置表示从文本的第几个字符开始搜索默认为1。\",\"example\":\"SEARCH('大家', '大家好大家好', 3)\",\"result\":\"4\",\"paramDescs\":[\"*文本关键字*(必选)\",\"*文本*(必选)\",\"*搜索开始位置*(可选)\"],\"formatString\":\"SEARCH(关键字, 文本, [搜索开始位置])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":false,\"infinite\":false}]},{\"name\":\"REPLACE\",\"chineseName\":\"替换文本中的字\",\"description\":\"在原文本中,从替换位置开始,往后数指定的替换字符数,将这段文本替换为新文本。\",\"example\":\"REPLACE('大家好大家好', 2, 3, 'dajia')\",\"result\":\"'大dajia家好'\",\"paramDescs\":[\"*文本*(必选)\"],\"formatString\":\"REPLACE(原文本, 替换开始位置, 替换字符数, 新文本)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":4,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"REPT\",\"chineseName\":\"将文本重复指定次数\",\"description\":\"将文本重复指定次数。\",\"example\":\"REPT('大家', 2)\",\"result\":\"'大家大家'\",\"paramDescs\":[\"*文本*(必选)\",\"*重复次数*(必选)\"],\"formatStrin
}
2022-04-14 20:46:17 +08:00
}