diff --git a/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java
new file mode 100644
index 0000000..06702e2
--- /dev/null
+++ b/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java
@@ -0,0 +1,192 @@
+package weaver.formmode.recruit.process;
+
+import org.apache.commons.lang3.StringUtils;
+import weaver.common.DateUtil;
+import weaver.conn.RecordSet;
+import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
+import weaver.formmode.setup.ModeRightInfo;
+import weaver.general.BaseBean;
+import weaver.general.Util;
+import weaver.soa.workflow.request.MainTableInfo;
+import weaver.soa.workflow.request.Property;
+import weaver.soa.workflow.request.RequestInfo;
+import weaver.workflow.workflow.WorkflowBillComInfo;
+
+import java.util.*;
+
+/**
+ *
聚才林招聘
+ *
+ * 招聘流程新建时,生成流程阶段关联数据
+ *
+ * @author:dxfeng
+ * @createTime: 2023/09/19
+ * @version: 1.0
+ */
+public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew {
+ private static final String MODE_TABLE_NAME = "uf_jcl_zpjdsz";
+ private static final String MODE_TABLE_NAME_DT1 = "uf_jcl_zpjdsz_dt1";
+ private static final String MODE_TABLE_NAME_DT2 = "uf_jcl_zpjdsz_dt2";
+
+ @Override
+ public Map doModeExpand(Map param) {
+ Map result = new HashMap<>();
+ try {
+ String billId;
+ RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo");
+ if (requestInfo != null) {
+ billId = requestInfo.getRequestid();
+ // 获取表单名称
+ String formId = Util.null2String(param.get("formid"));
+ String tableName = new WorkflowBillComInfo().getTablename(formId);
+ //String sql = "update " + tableName + " set xqzt = ? ,jssj = ?,wcsj = ? where id = ?";
+ //RecordSet rs = new RecordSet();
+ //// 更新状态为招聘完成,置空结束日期,完成日期取当前日期
+ //rs.executeUpdate(sql, RecruitStatusEnum.RECRUITMENT_COMPLETED.getValue(), null, DateUtil.getCurrentDate(), billId);
+ new BaseBean().writeLog("完成需求操作:billId=[" + billId + "]操作完成");
+ MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
+ Property[] properties = mainTableInfo.getProperty();
+ Map mainDataMap = new HashMap<>();
+ for (Property property : properties) {
+ mainDataMap.put(property.getName(), property.getValue());
+ }
+ // 开始阶段
+ String ksjd = mainDataMap.get("ksjd");
+ // 过程阶段
+ String gcjd = mainDataMap.get("gcjd");
+ // 结束阶段
+ String jsjd = mainDataMap.get("jsjd");
+ // 查询所有的操作阶段信息
+ relatedStageData(requestInfo.getCreatorid(), billId, ksjd, gcjd, jsjd);
+
+ }
+ } catch (Exception e) {
+ new BaseBean().writeLog(e);
+ ;
+ result.put("errmsg", "完成需求操作失败");
+ result.put("flag", "false");
+ }
+ return result;
+ }
+
+ /**
+ * 生成关联的招聘阶段数据
+ *
+ * @param creator 创建者ID
+ * @param billId 当前数据ID
+ * @param processIds 路程表单所选阶段ID
+ */
+ private void relatedStageData(String creator, String billId, String... processIds) {
+ String dateTime = DateUtil.getFullDate();
+ String[] dateSplit = dateTime.split(" ");
+
+ List paramsList = new ArrayList<>();
+ // modedatacreater
+ paramsList.add(creator);
+ // modedatacreatedate
+ paramsList.add(dateSplit[0]);
+ // modedatacreatetime
+ paramsList.add(dateSplit[1]);
+ // modedatamodifier
+ paramsList.add(creator);
+ // modedatamodifydatetime
+ paramsList.add(dateTime);
+ // modedatacreatertype
+ paramsList.add("0");
+
+ String processIdsStr = StringUtils.join(Arrays.asList(processIds), ",");
+ String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, modedatacreatertype, formmodeid, jdmc, jdms, jdlx, hj, sfqy, zssx, zpjd, zplc) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ for (String processId : processIdsStr.split(",")) {
+ if (StringUtils.isBlank(processId)) {
+ continue;
+ }
+ insertMainTableData(billId, processId, insertSql, paramsList);
+ }
+ }
+
+ /**
+ * 插入主表数据
+ *
+ * @param billId 招聘流程表单ID
+ * @param processId 招聘阶段ID
+ * @param insertSql 插入SQL语句
+ * @param paramsList 待插入参数集合
+ */
+ private void insertMainTableData(String billId, String processId, String insertSql, List paramsList) {
+ String uuid = UUID.randomUUID().toString();
+ ArrayList insertList = new ArrayList<>(paramsList);
+ insertList.add(0, uuid);
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select * from uf_jcl_zpjdsz where id = ?", processId);
+ if (rs.next()) {
+ String formModeId = rs.getString("formmodeid");
+ insertList.add(formModeId);
+ insertList.add(rs.getString("jdmc"));
+ insertList.add(rs.getString("jdms"));
+ insertList.add(rs.getString("jdlx"));
+ insertList.add(rs.getString("hj"));
+ insertList.add(rs.getString("sfqy"));
+ insertList.add(rs.getString("zssx"));
+ // zpjd
+ insertList.add(processId);
+ // zplc
+ insertList.add(billId);
+ // 插入主表数据
+ rs.executeUpdate(insertSql, insertList);
+ refreshRight(uuid, formModeId, processId);
+ }
+ }
+
+ /**
+ * 权限重构,插入明细表数据
+ *
+ * @param uuid UUID
+ * @param formModeId formModeId
+ */
+ private void refreshRight(String uuid, String formModeId, String processId) {
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'");
+ if (rs.next()) {
+ //建模数据的id
+ String bid = rs.getString("id");
+ ModeRightInfo modeRightInfo = new ModeRightInfo();
+ modeRightInfo.setNewRight(true);
+ //新建的时候添加共享
+ modeRightInfo.editModeDataShare(1, Util.getIntValue(formModeId), Util.getIntValue(bid));
+
+ // 插入明细表数据
+ rs.executeQuery("select * from " + MODE_TABLE_NAME_DT1 + " where mainid = ? ", processId);
+ List> insertList = new ArrayList<>();
+ while (rs.next()) {
+ List paramList = new ArrayList<>();
+ // mainid
+ paramList.add(bid);
+ paramList.add(rs.getString("czan"));
+ paramList.add(rs.getString("zdyxsmc"));
+ paramList.add(rs.getString("sfqy"));
+ paramList.add(rs.getString("tzymbt"));
+ paramList.add(rs.getString("tzymdz"));
+ paramList.add(rs.getString("zssx"));
+ insertList.add(paramList);
+ }
+ for (List list : insertList) {
+ rs.executeUpdate("insert into " + MODE_TABLE_NAME_DT1 + " (mainid, czan, zdyxsmc, sfqy, tzymbt, tzymdz, zssx) values (?, ?, ?, ?, ?, ?, ?)", list);
+ }
+
+ insertList = new ArrayList<>();
+ rs.executeQuery("select * from " + MODE_TABLE_NAME_DT2 + " where mainid = ? ", processId);
+ while (rs.next()) {
+ List paramList = new ArrayList<>();
+ // mainid
+ paramList.add(bid);
+ paramList.add(rs.getString("ymbt"));
+ paramList.add(rs.getString("ymdz"));
+ paramList.add(rs.getString("zssx"));
+ insertList.add(paramList);
+ }
+ for (List list : insertList) {
+ rs.executeUpdate("insert into " + MODE_TABLE_NAME_DT2 + " (mainid, ymbt, ymdz, zssx) values (?, ?, ?, ?)", list);
+ }
+ }
+ }
+}