package com.engine.salary.web; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO; import com.engine.salary.entity.salaryformula.param.SalaryFormulaFieldQueryParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; import com.engine.salary.entity.salaryformula.po.FormulaPO; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.util.ResponseResult; import com.engine.salary.wrapper.SalaryFormulaWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSetDataSource; 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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j 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 param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, List>>(user).run(getSalaryFormulaWrapper(user)::fieldGroupList, param); } //变量字段列表 @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); return new ResponseResult>(user).run(getSalaryFormulaWrapper(user)::fieldList, param); } //获取公式详情 @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); return new ResponseResult(user).run(getSalaryFormulaWrapper(user)::detail, formulaId); } @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); return new ResponseResult(user).run(getSalaryFormulaWrapper(user)::save, param); } //数据源列表 @GET @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(user).run(getSalaryFormulaWrapper(user)::datasourceList); } @POST @Path("/checkSql") @Produces(MediaType.APPLICATION_JSON) public String checkFormula(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryFormulaSaveParam param) { User user = HrmUserVarify.getUser(request, response); String result = ""; Map map = new HashMap<>(); try { String sql = request.getParameter("sql"); String sqlReturnKey = request.getParameter("sqlReturnKey"); String datasourceId = request.getParameter("datasourceId"); RecordSetDataSource rs = new RecordSetDataSource(datasourceId); log.info("sql run{},datasourceId:{},sqlReturnKey:{}", sql, datasourceId, sqlReturnKey); map.put("sql", sql); map.put("sqlReturnKey", sqlReturnKey); map.put("datasourceId", datasourceId); if (rs.executeSql(sql)) { if (rs.next()) { result = rs.getString(sqlReturnKey); } } map.put("result", result); } catch (Exception e) { log.error("sql error", e); Map apidatas = new HashMap<>(); apidatas.put("status", false); apidatas.put("errormsg", e.getMessage()); return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); } Map apidatas = new HashMap<>(); apidatas.put("status", true); apidatas.put("data", map); return getJsonString(apidatas); } private static String getJsonString(Object apidatas) { ObjectMapper mapper = new ObjectMapper(); try { return mapper.writeValueAsString(apidatas); } catch (JsonProcessingException e) { e.printStackTrace(); } return ""; } }