generated from dxfeng/secondev-chapanda-feishu
转推其他职位、加入黑名单
This commit is contained in:
parent
d2ee88918f
commit
6184dc3da7
|
|
@ -1,10 +1,15 @@
|
|||
#\u805A\u624D\u6797\u62DB\u8058\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90
|
||||
RECRUIT_MESSAGE_TYPE=2022061063
|
||||
#\u9762\u8BD5\u76F8\u5173\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90
|
||||
INTERVIEW_MESSAGE_TYPE=85
|
||||
#\u6DFB\u52A0\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u8868\u5F1F
|
||||
INTERVIEW_MESSAGE_TYPE=2022061063
|
||||
#\u6DFB\u52A0\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u6807\u9898
|
||||
INTERVIEW_ADD_MESSAGE_TITLE=\u9762\u8BD5\u5B89\u6392\u63D0\u9192
|
||||
#\u53D6\u6D88\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u8868\u5F1F
|
||||
#\u53D6\u6D88\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u6807\u9898
|
||||
INTERVIEW_CANCEL_MESSAGE_TITLE=\u53D6\u6D88\u9762\u8BD5\u63D0\u9192
|
||||
|
||||
#\u9762\u8BD5\u8BC4\u4EF7\u6D88\u606F\u63D0\u9192\u6807\u9898
|
||||
INTERVIEW_EVALUATE_MESSAGE_TITLE=\u9762\u8BD5\u8BC4\u4EF7\u63D0\u9192
|
||||
#\u4EBA\u624D\u9ED1\u540D\u5355\u901A\u77E5
|
||||
JOIN_BLACKLIST_MESSAGE_TITLE=\u4EBA\u624D\u9ED1\u540D\u5355\u901A\u77E5
|
||||
|
||||
#\u5E94\u8058\u8005\u7B80\u5386\u5B58\u653E\u76EE\u5F55ID
|
||||
APPLICANTS_RESUMES_CATEGORY=110
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.engine.recruit.conn;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 聚才林数据集合
|
||||
* </p>
|
||||
* key忽略大小写
|
||||
*
|
||||
* @author:dxfeng
|
||||
* @createTime: 2023/10/19
|
||||
* @version: 1.0
|
||||
*/
|
||||
public class RecruitDataMap<V> extends HashMap<String, V> {
|
||||
@Override
|
||||
public V get(Object key) {
|
||||
if (key instanceof String) {
|
||||
// 将键转为小写形式再进行查找
|
||||
return super.get(((String) key).toLowerCase());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public V put(String key, V value) {
|
||||
// 将键转为小写形式后作为真正的键
|
||||
return super.put(key.toLowerCase(), value);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
package com.engine.recruit.conn;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:dxfeng
|
||||
* @createTime: 2023/10/19
|
||||
* @version: 1.0
|
||||
*/
|
||||
public class RecruitRecordSet {
|
||||
|
||||
/**
|
||||
* 获取单个记录映射
|
||||
*
|
||||
* @param rs RecordSet
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Object> getSingleRecordMap(RecordSet rs) {
|
||||
Map<String, Object> dataMap = new RecruitDataMap<>();
|
||||
if (rs.next()) {
|
||||
String[] columnNames = rs.getColumnName();
|
||||
for (String columnName : columnNames) {
|
||||
dataMap.put(columnName.toLowerCase(), RecruitModeUtil.parseBlankToNull(rs.getString(columnName)));
|
||||
}
|
||||
}
|
||||
return dataMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入数据
|
||||
*
|
||||
* @param dataMap 数据集合
|
||||
* @param tableName 表名
|
||||
*/
|
||||
public static void insertData(Map<String, Object> dataMap, String tableName) {
|
||||
List<String> fieldList = new ArrayList<>();
|
||||
List<Object> dataList = new ArrayList<>();
|
||||
List<String> paramList = new ArrayList<>();
|
||||
|
||||
dataMap.forEach((key, value) -> {
|
||||
fieldList.add(key);
|
||||
dataList.add(value);
|
||||
paramList.add("?");
|
||||
});
|
||||
String insertSql = " insert into " + tableName + "(" + StringUtils.join(fieldList, ",") + ") values (" + StringUtils.join(paramList, ",") + ")";
|
||||
RecordSet rs = new RecordSet();
|
||||
rs.executeUpdate(insertSql, dataList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.engine.recruit.service.impl;
|
|||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.recruit.conn.RecruitRecordSet;
|
||||
import com.engine.recruit.enums.ApplicantOperateEnum;
|
||||
import com.engine.recruit.enums.ApplicationStatusEnum;
|
||||
import com.engine.recruit.service.ApplicantResumeService;
|
||||
|
|
@ -174,11 +175,60 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
rs.executeUpdate("update uf_jcl_yppc set gdyy = ?,gdxxyy = ? where id = ? ", gdyy, gdxxyy, id);
|
||||
// 建模推送建模
|
||||
archiveTalentPool(id, false);
|
||||
|
||||
// 更新应聘状态为已归档
|
||||
rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = ? ", ApplicationStatusEnum.ARCHIVED.getValue(), id);
|
||||
}
|
||||
} else {
|
||||
returnMap.put("msg", "请至少选择一条数据");
|
||||
}
|
||||
} else if (ApplicantOperateEnum.REFERRAL.getOperateType().equals(operateType)) {
|
||||
// 转推其他职位
|
||||
String sourceId = Util.null2String(params.get("sourceId"));
|
||||
String ypzw = Util.null2String(params.get("ypzw"));
|
||||
String zplc = null;
|
||||
rs.executeQuery("select zplc from uf_jcl_zp_zpzw where id = ?", ypzw);
|
||||
if (rs.next()) {
|
||||
zplc = rs.getString("zplc");
|
||||
}
|
||||
|
||||
rs.executeQuery("select * from uf_jcl_yppc where id = ?", sourceId);
|
||||
Map<String, Object> mainDataMap = RecruitRecordSet.getSingleRecordMap(rs);
|
||||
// 构建新数据
|
||||
mainDataMap.put("ypzw", ypzw);
|
||||
mainDataMap.put("zplc", zplc);
|
||||
mainDataMap.put("zpjd", null);
|
||||
mainDataMap.put("dqypjd", null);
|
||||
mainDataMap.put("zt", ApplicationStatusEnum.CANDIDATE.getValue());
|
||||
buildBaseFields(mainDataMap);
|
||||
String uuid = UUID.randomUUID().toString();
|
||||
mainDataMap.put("modeuuid", uuid);
|
||||
// 移除不需要插入的字段
|
||||
mainDataMap.remove("id");
|
||||
mainDataMap.remove("requestId");
|
||||
mainDataMap.remove("form_biz_id");
|
||||
|
||||
// 插入数据
|
||||
RecruitRecordSet.insertData(mainDataMap, "uf_jcl_yppc");
|
||||
// 权限重构
|
||||
rs.executeQuery("select id,formmodeid from uf_jcl_yppc where modeuuid='" + uuid + "'");
|
||||
if (rs.next()) {
|
||||
//建模数据的id
|
||||
int targetId = Util.getIntValue(rs.getString("id"));
|
||||
int formModeId = Util.getIntValue(rs.getString("formmodeid"));
|
||||
ModeRightInfo modeRightInfo = new ModeRightInfo();
|
||||
modeRightInfo.setNewRight(true);
|
||||
//新建的时候添加共享
|
||||
modeRightInfo.editModeDataShare(1, formModeId, targetId);
|
||||
|
||||
// 复制明细表数据
|
||||
rs.executeUpdate("insert into uf_jcl_yppc_dt1 (mainid,xxmc,xl,zy,kssj,jssj) select ?,xxmc,xl,zy,kssj,jssj from uf_jcl_yppc_dt1 where mainid = ?", targetId, sourceId);
|
||||
rs.executeUpdate("insert into uf_jcl_yppc_dt2 (mainid,gsmc,kssj,jssj,gw,sqyxk,lzyy,gzzz) select ?,gsmc,kssj,jssj,gw,sqyxk,lzyy,gzzz from uf_jcl_yppc_dt2 where mainid = ?", targetId, sourceId);
|
||||
rs.executeUpdate("insert into uf_jcl_yppc_dt3 (mainid,xmmc,kssj,jssj,drjs,xmms) select ?,xmmc,kssj,jssj,drjs,xmms from uf_jcl_yppc_dt3 where mainid = ?", targetId, sourceId);
|
||||
rs.executeUpdate("insert into uf_jcl_yppc_dt4 (mainid,yylx,zwcd) select ?,yylx,zwcd from uf_jcl_yppc_dt4 where mainid = ?", targetId, sourceId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return returnMap;
|
||||
}
|
||||
|
|
@ -192,7 +242,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
try {
|
||||
int docId = RecruitModeUtil.createDocId(secCategory, imageFileId, user);
|
||||
// 更新原始简历信息,设置应聘状态未待分配
|
||||
rs.executeUpdate("update uf_jcl_yppc set ysjl=?,zt=? where id = ?", docId, 0, resumeId);
|
||||
rs.executeUpdate("update uf_jcl_yppc set ysjl=?,zt=? where id = ?", docId, ApplicationStatusEnum.DISTRIBUTION.getValue(), resumeId);
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
|
|
@ -299,12 +349,12 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
* @param applicantId 应聘者ID
|
||||
* @param joinBlacklist 是否加入黑名单
|
||||
*/
|
||||
private void archiveTalentPool(String applicantId, boolean joinBlacklist) {
|
||||
public void archiveTalentPool(String applicantId, boolean joinBlacklist) {
|
||||
RecordSet rs = new RecordSet();
|
||||
String name = "";
|
||||
String mobile = "";
|
||||
String talentPoolId = "";
|
||||
rs.executeQuery("select xm,sjhm from uf_jcl_yppc");
|
||||
rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", applicantId);
|
||||
if (rs.next()) {
|
||||
name = rs.getString("xm");
|
||||
mobile = rs.getString("sjhm");
|
||||
|
|
@ -319,7 +369,6 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
String insertSql = "insert into uf_jcl_rck (modeuuid, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, modedatacreatertype," +
|
||||
"sfz,jlzp,zhypzw,ysjl,jlly,xm,xb,sjhm,dzyx,csrq,nl,zgxl,zgxw,byyx,zy,hyzk,gzjy,zzzt,dqszd,zhtdsj,cjr,zwpj,mz,jg,zzmm,sgcm,tzkg,gdjd,gdyy,gdxxyy,lstdcs,sfjrhmd)" +
|
||||
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
rs.executeQuery("select * from uf_jcl_yppc where id = ?", applicantId);
|
||||
List<Object> mainDataList = new ArrayList<>();
|
||||
String uuid = UUID.randomUUID().toString();
|
||||
mainDataList.add(uuid);
|
||||
|
|
@ -331,6 +380,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
mainDataList.add(formModeId);
|
||||
// 构建建模表基本数据
|
||||
buildBaseFields(mainDataList);
|
||||
rs.executeQuery("select * from uf_jcl_yppc where id = ?", applicantId);
|
||||
if (rs.next()) {
|
||||
mainDataList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sfz")));
|
||||
mainDataList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jlzp")));
|
||||
|
|
@ -378,6 +428,10 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
|
||||
// 删除人才库原来的数据
|
||||
rs.executeUpdate("delete from uf_jcl_rck where id = ? ", talentPoolId);
|
||||
rs.executeUpdate("delete from uf_jcl_rck_dt1 where mainid = ? ", talentPoolId);
|
||||
rs.executeUpdate("delete from uf_jcl_rck_dt2 where mainid = ? ", talentPoolId);
|
||||
rs.executeUpdate("delete from uf_jcl_rck_dt3 where mainid = ? ", talentPoolId);
|
||||
rs.executeUpdate("delete from uf_jcl_rck_dt4 where mainid = ? ", talentPoolId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -402,6 +456,22 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
|
|||
mainDataList.add("0");
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建建模表基本数据
|
||||
*
|
||||
* @param mainDataMap 参数集合
|
||||
*/
|
||||
private void buildBaseFields(Map<String, Object> mainDataMap) {
|
||||
String dateTime = DateUtil.getFullDate();
|
||||
String[] dateSplit = dateTime.split(" ");
|
||||
mainDataMap.put("modedatacreater", user.getUID());
|
||||
mainDataMap.put("modedatacreatedate", dateSplit[0]);
|
||||
mainDataMap.put("modedatacreatetime", dateSplit[1]);
|
||||
mainDataMap.put("modedatamodifier", user.getUID());
|
||||
mainDataMap.put("modedatamodifydatetime", dateTime);
|
||||
mainDataMap.put("modedatacreatertype", "0");
|
||||
}
|
||||
|
||||
/**
|
||||
* 权限重构
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,9 +1,18 @@
|
|||
package com.engine.recruit.service.impl;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.recruit.enums.ApplicationStatusEnum;
|
||||
import com.engine.recruit.service.RecruitButtonService;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.formmode.recruit.modeexpand.util.ApplicantCommonInfo;
|
||||
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* <p>聚才林招聘</p>
|
||||
|
|
@ -16,6 +25,46 @@ import java.util.Map;
|
|||
public class JoinBlacklistServiceImpl extends Service implements RecruitButtonService {
|
||||
@Override
|
||||
public Map<String, Object> execute(Map<String, Object> params) {
|
||||
// 当前应聘者ID
|
||||
String billId = Util.null2String(params.get("billId"));
|
||||
RecordSet rs = new RecordSet();
|
||||
|
||||
// 推人才表,建模推建模(更新人才表数据),是否加入黑名单字段值变更为“是”
|
||||
ServiceUtil.getService(ApplicantResumeServiceImpl.class, user).archiveTalentPool(billId, true);
|
||||
|
||||
// 更新当前应聘者关联的所有简历状态为已淘汰
|
||||
String name = "";
|
||||
String mobile = "";
|
||||
String positionId = "";
|
||||
rs.executeQuery("select xm, sjhm, ypzw from uf_jcl_yppc where id = ? ", billId);
|
||||
if (rs.next()) {
|
||||
name = rs.getString("xm");
|
||||
mobile = rs.getString("sjhm");
|
||||
positionId = rs.getString("ypzw");
|
||||
}
|
||||
rs.executeUpdate("update uf_jcl_yppc set zt = ? where xm = ? and sjhm = ?", ApplicationStatusEnum.OBSOLETE.getValue(), name, mobile);
|
||||
|
||||
// 消息提醒当前人员简历的跟进者(应聘职位的负责人/协助人)
|
||||
String messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
|
||||
String messageTitle = RecruitModeUtil.getRecruitPropValue("JOIN_BLACKLIST_MESSAGE_TITLE");
|
||||
String applicantName = ApplicantCommonInfo.getApplicantName(billId);
|
||||
String operatorName = RecruitModeUtil.getResourceNames(String.valueOf(user.getUID()));
|
||||
String messageContent = "应聘者:【" + applicantName + "】,已被【" + operatorName + "】加入黑名单,相关投递已自动淘汰,请知悉。";
|
||||
|
||||
// 消息提醒当前人员简历的跟进者(应聘职位的负责人/协助人)
|
||||
String zpzwfzr = "";
|
||||
String zpxzr = "";
|
||||
rs.executeQuery("select zpzwfzr , zpxzr from uf_jcl_zp_zpzw where id = ?", positionId);
|
||||
if (rs.next()) {
|
||||
zpzwfzr = rs.getString("zpzwfzr");
|
||||
zpxzr = rs.getString("zpxzr");
|
||||
}
|
||||
Set<String> userIdSet = new HashSet<>();
|
||||
userIdSet.addAll(Arrays.asList(zpzwfzr.split(",")));
|
||||
userIdSet.addAll(Arrays.asList(zpxzr.split(",")));
|
||||
RecruitModeUtil.messagePush(messageType, messageTitle, messageContent, userIdSet, user.getUID());
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package weaver.formmode.recruit.modeexpand.entrymanager;
|
||||
|
||||
import com.engine.recruit.enums.EntryStatusEnum;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
|
||||
import weaver.general.Util;
|
||||
|
|
@ -52,11 +51,11 @@ public class AddEntryModeExpand extends AbstractModeExpandJavaCodeNew {
|
|||
return result;
|
||||
}
|
||||
}
|
||||
// 更新应聘者当前应聘阶段
|
||||
String dqypjd = Util.null2String(param.get("dqypjd"));
|
||||
if (StringUtils.isNotBlank(dqypjd)) {
|
||||
rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid);
|
||||
}
|
||||
//// 更新应聘者当前应聘阶段
|
||||
//String dqypjd = Util.null2String(param.get("dqypjd"));
|
||||
//if (StringUtils.isNotBlank(dqypjd)) {
|
||||
// rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid);
|
||||
//}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod
|
|||
|
||||
public BatchAddInterviewResultModeExpand() throws UnsupportedEncodingException {
|
||||
super();
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
|
||||
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
|
|||
InterviewOperateTypeEnum operateTypeEnum = InterviewOperateTypeEnum.getOperateType(operateType);
|
||||
switch (operateTypeEnum) {
|
||||
case ARRANGE:
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
|
||||
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE");
|
||||
arrangeInterview(user, mainDataMap);
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -63,13 +63,13 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
|
|||
switch (operateTypeEnum) {
|
||||
case EVALUATE:
|
||||
// 面试评价
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
|
||||
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_EVALUATE_MESSAGE_TITLE");
|
||||
evaluateInterview(params, requestInfo.getCreatorid(), mainDataMap);
|
||||
break;
|
||||
case CANCEL:
|
||||
// 面试取消
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
|
||||
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
|
||||
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE");
|
||||
cancelInterView(params, requestInfo, billId, mainDataMap);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package weaver.formmode.recruit.modeexpand.position;
|
|||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import com.engine.recruit.constant.ModeTable;
|
||||
import com.engine.recruit.enums.ApplicationStatusEnum;
|
||||
import com.engine.recruit.enums.CommonBrowserTypeEnum;
|
||||
import com.engine.recruit.enums.HighestDegreeEnum;
|
||||
import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient;
|
||||
|
|
@ -78,7 +79,7 @@ public class ResumeSavedThread extends LocalRunnable {
|
|||
// 千里聆简历ID
|
||||
params.put("qlljl", resumeId);
|
||||
// 状态,指定待分配
|
||||
params.put("zt", "0");
|
||||
params.put("zt", ApplicationStatusEnum.DISTRIBUTION.getValue());
|
||||
|
||||
// 填充建模数据基本信息
|
||||
int formModeId = ApplicantCommonInfo.getModeIdByTableName(ModeTable.UF_JCL_YPPC);
|
||||
|
|
|
|||
Loading…
Reference in New Issue