generated from dxfeng/secondev-chapanda-feishu
招聘需求流程明细表数据转建模台账Action
This commit is contained in:
parent
7394057ac2
commit
fb844d173f
|
|
@ -1,26 +1,15 @@
|
|||
# ---> Java
|
||||
# Compiled class file
|
||||
*.class
|
||||
/weaver-hrm-recruit.iml
|
||||
/out/
|
||||
/.idea/
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
HELP.md
|
||||
target/
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
replay_pid*
|
||||
/src/test
|
||||
/src/rebel.xml
|
||||
/src/META-INF
|
||||
|
||||
/log
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.engine.recruit.exception;
|
||||
|
||||
/**
|
||||
* @Author weaver_cl
|
||||
* @Description:
|
||||
* @Date 2023/2/21
|
||||
* @Version V1.0
|
||||
**/
|
||||
public class CustomizeRunTimeException extends RuntimeException{
|
||||
|
||||
public CustomizeRunTimeException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public CustomizeRunTimeException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public CustomizeRunTimeException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.engine.recruit.util;
|
||||
|
||||
/**
|
||||
* @Author weaver_cl
|
||||
* @Description:
|
||||
* @Date 2023/2/21
|
||||
* @Version V1.0
|
||||
**/
|
||||
public class ExceptionUtil {
|
||||
public static String getRealMessage(Throwable e) {
|
||||
while (e != null) {
|
||||
Throwable cause = e.getCause();
|
||||
if (cause == null) {
|
||||
return e.getMessage();
|
||||
}
|
||||
e = cause;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
package com.engine.recruit.util;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import com.engine.core.exception.ECException;
|
||||
import com.engine.recruit.exception.CustomizeRunTimeException;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.general.BaseBean;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
||||
@Slf4j
|
||||
public class ResponseResult<T, R> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final User user;
|
||||
|
||||
private final BaseBean baseBean = new BaseBean();
|
||||
|
||||
private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log"));
|
||||
|
||||
public ResponseResult(User user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一返回方法(自定义返回格式)
|
||||
*/
|
||||
public String customRun(Function<T, R> f, T t) {
|
||||
try {
|
||||
if (isLog) {
|
||||
log.info("run api , param {}", t);
|
||||
}
|
||||
return getJsonString(f.apply(t));
|
||||
} catch (CustomizeRunTimeException e) {
|
||||
log.error("api run fail", e);
|
||||
return Error(e.getMessage());
|
||||
} catch (ECException e) {
|
||||
log.error("api run fail", e);
|
||||
Throwable cause = e.getCause();
|
||||
return Error(cause.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("api run fail", e);
|
||||
return Error("系统异常!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一返回方法
|
||||
*/
|
||||
public String run(Function<T, R> f, T t) {
|
||||
try {
|
||||
if (isLog) {
|
||||
log.info("run api , param {}", t);
|
||||
}
|
||||
return Ok(f.apply(t));
|
||||
} catch (CustomizeRunTimeException e) {
|
||||
log.error("api run fail", e);
|
||||
return Error(e.getMessage());
|
||||
} catch (ECException e) {
|
||||
log.error("api run fail", e);
|
||||
Throwable cause = e.getCause();
|
||||
return Error(cause.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("api run fail", e);
|
||||
return Error("系统异常!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一返回方法(有参无返回)
|
||||
*/
|
||||
public String run(Consumer<T> f, T t) {
|
||||
try {
|
||||
if (isLog) {
|
||||
log.info("run api , param {}", t);
|
||||
}
|
||||
f.accept(t);
|
||||
return Ok();
|
||||
} catch (CustomizeRunTimeException e) {
|
||||
log.error("api run fail", e);
|
||||
return Error(e.getMessage());
|
||||
} catch (ECException e) {
|
||||
log.error("api run fail", e);
|
||||
return Error(ExceptionUtil.getRealMessage(e));
|
||||
} catch (Exception e) {
|
||||
log.error("api run fail", e);
|
||||
return Error("系统异常!", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 统一返回方法(无参有返回)
|
||||
*/
|
||||
public String run(Supplier<R> f) {
|
||||
try {
|
||||
if (isLog) {
|
||||
log.info("run api");
|
||||
}
|
||||
return Ok(f.get());
|
||||
} catch (CustomizeRunTimeException e) {
|
||||
log.error("api run fail", e);
|
||||
return Error(e.getMessage());
|
||||
} catch (ECException e) {
|
||||
log.error("api run fail", e);
|
||||
Throwable cause = e.getCause();
|
||||
return Error(cause.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("api run fail", e);
|
||||
return Error("系统异常!", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static String getJsonString(Object apidatas) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
try {
|
||||
return mapper.writeValueAsString(apidatas);
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 成功返回
|
||||
*/
|
||||
private String Ok() {
|
||||
Map<String, Object> apidatas = new HashMap<>();
|
||||
apidatas.put("status", true);
|
||||
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 成功返回
|
||||
*/
|
||||
private String Ok(R r) {
|
||||
Map<String, Object> apidatas = new HashMap<>();
|
||||
apidatas.put("status", true);
|
||||
apidatas.put("data", r);
|
||||
String success = getJsonString(apidatas);
|
||||
if (isLog) {
|
||||
log.info("run salary api success return {}", success);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 失败返回
|
||||
*/
|
||||
private static String Error(String message) {
|
||||
Map<String, Object> apidatas = new HashMap<>();
|
||||
apidatas.put("status", false);
|
||||
apidatas.put("errormsg", message);
|
||||
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 系统异常失败返回
|
||||
*/
|
||||
private static String Error(String message, Exception e) {
|
||||
Map<String, Object> apidatas = new HashMap<>();
|
||||
apidatas.put("status", false);
|
||||
apidatas.put("errormsg", message);
|
||||
apidatas.put("error", e.getMessage());
|
||||
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
package weaver.interfaces.recruit.action;
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import weaver.conn.RecordSetTrans;
|
||||
import weaver.general.BaseBean;
|
||||
import weaver.interfaces.workflow.action.Action;
|
||||
import weaver.soa.workflow.request.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 招聘需求流程明细表数据转建模台账
|
||||
*
|
||||
* @author:dxfeng
|
||||
* @createTime: 2023/09/01
|
||||
* @version: 1.0
|
||||
*/
|
||||
public class RecruitFlowToModeAction implements Action {
|
||||
/**
|
||||
* 流程主表表名(uf_zpxqjh)
|
||||
*/
|
||||
private static final String MAIN_TABLE_NAME = "uf_zpxqjh";
|
||||
/**
|
||||
* 流程明细表表名(uf_zpxqjh_dt1)
|
||||
*/
|
||||
private static final String DETAIL_TABLE_NAME = "uf_zpxqjh_dt1";
|
||||
/**
|
||||
* 建模台账表表名(uf_zpxq)
|
||||
*/
|
||||
private static final String MODE_TABLE_NAME = "uf_zpxq";
|
||||
|
||||
@Override
|
||||
public String execute(RequestInfo requestInfo) {
|
||||
String billTableName = requestInfo.getRequestManager().getBillTableName();
|
||||
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
|
||||
|
||||
DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo();
|
||||
DetailTable detailTable = detailTableInfo.getDetailTable(0);
|
||||
String detailTableName = detailTable.getTableDBName();
|
||||
if (!MAIN_TABLE_NAME.equals(billTableName) || !DETAIL_TABLE_NAME.equals(detailTableName)) {
|
||||
requestInfo.getRequestManager().setMessagecontent("接口动作【RecruitFlowToModeAction】未适配当前流程,请检查流程配置");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
Map<String, Object> mainMap = new HashMap<>(16);
|
||||
// 需求审批流程ID
|
||||
mainMap.put("xqsplc", requestInfo.getRequestid());
|
||||
Property[] propertyArray = mainTableInfo.getProperty();
|
||||
for (Property property : propertyArray) {
|
||||
mainMap.put(property.getName(), property.getValue());
|
||||
}
|
||||
|
||||
List<Map<String, Object>> insertList = new ArrayList<>();
|
||||
Row[] rows = detailTable.getRow();
|
||||
for (Row row : rows) {
|
||||
Map<String, Object> detailMap = new HashMap<>(16);
|
||||
detailMap.putAll(mainMap);
|
||||
Cell[] cells = row.getCell();
|
||||
for (Cell cell : cells) {
|
||||
detailMap.put(cell.getName(), cell.getValue());
|
||||
}
|
||||
insertList.add(detailMap);
|
||||
}
|
||||
|
||||
// 数据插入处理
|
||||
if (CollectionUtils.isNotEmpty(insertList)) {
|
||||
// 插入建模表
|
||||
RecordSetTrans rst = new RecordSetTrans();
|
||||
rst.setAutoCommit(false);
|
||||
String sql = " insert into " + MODE_TABLE_NAME + "(xqsplc,xqzt,sqr,sqsj,sqbm,nd,spfs,xqlx,bz,xqmc,zpyy,zpxqfzr,szfb,szbm,gw,gwzz,rzyq,zwxz,gzdd,gznx,zdxlyq,zprs,qwdgsj)" +
|
||||
" values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try {
|
||||
List<List<Object>> paramList = new ArrayList<>();
|
||||
// 构建插入参数集合
|
||||
buildParamList(insertList, paramList);
|
||||
|
||||
rst.executeBatchSql(sql, paramList);
|
||||
rst.commit();
|
||||
} catch (Exception e) {
|
||||
rst.rollback();
|
||||
new BaseBean().writeLog(e.getMessage());
|
||||
requestInfo.getRequestManager().setMessagecontent("接口动作【RecruitFlowToModeAction】执行异常");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 构建插入参数集合
|
||||
*
|
||||
* @param insertList 待插入数据集合
|
||||
* @param paramList SQL插入参数集合
|
||||
*/
|
||||
private void buildParamList(List<Map<String, Object>> insertList, List<List<Object>> paramList) {
|
||||
for (Map<String, Object> map : insertList) {
|
||||
List<Object> param = new ArrayList<>();
|
||||
// 需求审批流程
|
||||
param.add(map.get("xqsplc"));
|
||||
// 需求状态
|
||||
param.add(map.get("xqzt"));
|
||||
// 申请人
|
||||
param.add(map.get("sqr"));
|
||||
// 申请时间
|
||||
param.add(map.get("sqsj"));
|
||||
// 申请部门
|
||||
param.add(map.get("sqbm"));
|
||||
// 年度
|
||||
param.add(map.get("nd"));
|
||||
// 审批方式
|
||||
param.add(map.get("spfs"));
|
||||
// 需求类型
|
||||
param.add(map.get("xqlx"));
|
||||
// 备注
|
||||
param.add(map.get("bz"));
|
||||
// 需求名称
|
||||
param.add(map.get("xqmc"));
|
||||
// 招聘原因
|
||||
param.add(map.get("zpyy"));
|
||||
// 招聘需求负责人
|
||||
param.add(map.get("zpxqfzr"));
|
||||
// 所属分部
|
||||
param.add(map.get("szfb"));
|
||||
// 所属部门
|
||||
param.add(map.get("szbm"));
|
||||
// 岗位
|
||||
param.add(map.get("gw"));
|
||||
// 岗位职责
|
||||
param.add(map.get("gwzz"));
|
||||
// 任职要求
|
||||
param.add(map.get("rzyq"));
|
||||
// 职位性质
|
||||
param.add(map.get("zwxz"));
|
||||
// 工作地点
|
||||
param.add(map.get("gzdd"));
|
||||
// 工作年限
|
||||
param.add(map.get("gznx"));
|
||||
// 最低学历要求
|
||||
param.add(map.get("zdxlyq"));
|
||||
// 招聘人数
|
||||
param.add(map.get("zprs"));
|
||||
// 期望到岗时间
|
||||
param.add(map.get("qwdgsj"));
|
||||
paramList.add(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue