util
__JvOHkqjhV41mUo4ITRv
__JvOHkqjhV41mUo4ITRv
0){
serverAndPort="https://v5in.te.baibaodun.com.cn";
}
var Url=serverAndPort+"/kms/api/kms/convert/htmlToDoc"
try{
var header = new Packages.java.util.HashMap();
header.put("Content-Type","application/json")
header.put("accessToken",accessToken);
req = Packages.com.alibaba.fastjson.JSON.toJSONString(req);
println("Url-->"+Url)
println("header-->"+header)
println("req-->"+req)
var response = Packages.cn.hutool.http.HttpUtil.createPost(Url).addHeaders(header).body(req).execute().body();
println("response-->"+response)
}catch(e){println("e=="+e); return e};
return 0
}
//获取路径前缀带obpm
function getServerAndPort(){
var request = $WEB.getParamsTable().getHttpRequest();
println(request)
var contextPath = request.getContextPath();
var refererUrl = request.getHeader("Referer");
var url = new Packages.java.net.URL(refererUrl);
var protocol = url.getProtocol(); // 获取协议部分
var host = url.getHost(); // 获取主机名部分
var port = url.getPort(); // 获取端口号,如果未指定端口则返回 -1
var serverAndPort="";
if (port != -1) {
serverAndPort = protocol + "://" + host + ":" + port; // 拼接带端口的服务器部分
} else {
serverAndPort = protocol + "://" + host; // 拼接不带端口的服务器部分
}
if (serverAndPort.indexOf("localhost")>0){
serverAndPort="https://v5in.te.baibaodun.com.cn";
}
return serverAndPort+"/obpm"
}
//获取编号
function getNumber(officePoliceIDIndex,type,numType){
var sql = "select * from organizationauth.tlk_num_cofig where item_matter_type='"+type+"' and item_num_type='"+numType+"' and ('"+officePoliceIDIndex+"' = item_office_police_index or '"+officePoliceIDIndex+"' like CONCAT(item_office_police_index,'_%')) ORDER BY item_office_police_index DESC limit 1 ";
var datas = queryByDSName("securityflow",sql);
var head_text="";
var is_year="";
var year_back_text="";
var num_length=0;
var num_back_text="";
if(datas.size()>0){
for(var iterator = datas.iterator();iterator.hasNext();){
var map1 = iterator.next();//取值
head_text= map1.get("item_head_text");
is_year= map1.get("item_is_year");
year_back_text= map1.get("item_year_back_text");
num_length= map1.get("item_num_length");
num_back_text= map1.get("item_num_back_text");
}
}
var join="";
join+=head_text;
if("1".equals(is_year)){
join+=getYear(getToday())
}
join+=year_back_text
println("join0-->"+join)
if(isNotNull(num_length)){
var ResultCodeJsonObject = new Packages.cn.myapps.util.serial.number.GenerateSerialNumber();
join=ResultCodeJsonObject.getSerialNumberByPrefix(join,false,false,false,4);
}
join+=num_back_text
return join;
}
//机构性质
function getCompanyQuality(code){
code += "";
var value = "";
switch(code){
case "1" : { value += "国有"; break; }
case "2" : { value += "国有控股"; break; }
case "3" : { value += "民营"; break; }
case "4" : { value += "中外合资"; break; }
case "5" : { value += "中外合作"; break; }
case "6" : { value += "外资独资"; break; }
}
return value;
}
//经营范围
function getBusinessScope(code){
code += "";
println("code-->"+code)
var arr = splitString (code, ";");
println("arr-->"+arr)
var value = "";
for (var i=0;i"+arr[i]);
if("01".equals(arr[i])){
value += " 门卫 "
}else if("02".equals(arr[i])){
value += " 巡逻 "
}else if("03".equals(arr[i])){
value += " 守护 "
}else if("04".equals(arr[i])){
value += " 押运 "
}else if("05".equals(arr[i])){
value += " 随身护卫 "
}else if("06".equals(arr[i])){
value += " 安全检查 "
}else if("07".equals(arr[i])){
value += " 区域秩序维护 "
}else if("08".equals(arr[i])){
value += " 安全风险评估 "
}else if("09".equals(arr[i])){
value += " 安全技术防范 "
}else if("10".equals(arr[i])){
value += " 其他 "
}
println("value-->"+value);
}
return value;
}
//性别
function getSex(code){
code += "";
var value = "";
switch(code){
case "1" : { value += "男"; break; }
case "2" : { value += "女"; break; }
}
return value;
}
//法人的机构性质
function getShareholderCompanyQuality(code){
code += "";
var value = "";
switch(code){
case "1" : { value += "企业"; break; }
case "2" : { value += "政府授权国有资产监管管理机构"; break; }
case "3" : { value += "具有法人资格的事业单位"; break; }
case "4" : { value += "具有法人资格的民办非企业单位"; break; }
}
return value;
}
//民族
function getNation(code){
code += "";
var nation = "";
if("01".equals(code)){
nation += " 汉族 "
}else if("02".equals(code)){
nation += " 蒙古族 "
}else if("03".equals(code)){
nation += " 回族 "
}else if("04".equals(code)){
nation += " 藏族 "
}else if("05".equals(code)){
nation += " 维吾尔族 "
}else if("06".equals(code)){
nation += " 苗族 "
}else if("07".equals(code)){
nation += " 彝族 "
}else if("08".equals(code)){
nation += " 壮族 "
}else if("09".equals(code)){
nation += " 布依族 "
}
switch(code){
case "1" : { nation += "汉族"; break; }
case "2" : { nation += "蒙古族"; break; }
case "3" : { nation += "回族"; break; }
case "4" : { nation += "藏族"; break; }
case "5" : { nation += "维吾尔族"; break; }
case "6" : { nation += "苗族"; break; }
case "7" : { nation += "彝族"; break; }
case "8" : { nation += "壮族"; break; }
case "9" : { nation += "布依族"; break; }
case "10" : { nation += "朝鲜族"; break; }
case "11" : { nation += "满族"; break; }
case "12" : { nation += "侗族"; break; }
case "13" : { nation += "瑶族"; break; }
case "14" : { nation += "白族"; break; }
case "15" : { nation += "土家族"; break; }
case "16" : { nation += "哈尼族"; break; }
case "17" : { nation += "哈萨克族"; break; }
case "18" : { nation += "傣族"; break; }
case "19" : { nation += "黎族"; break; }
case "20" : { nation += "傈僳族"; break; }
case "21" : { nation += "佤族"; break; }
case "22" : { nation += "畲族"; break; }
case "23" : { nation += "高山族"; break; }
case "24" : { nation += "拉祜族"; break; }
case "25" : { nation += "水族"; break; }
case "26" : { nation += "东乡族"; break; }
case "27" : { nation += "纳西族"; break; }
case "28" : { nation += "景颇族"; break; }
case "29" : { nation += "柯尔克孜族"; break; }
case "30" : { nation += "土族"; break; }
case "31" : { nation += "达斡尔族"; break; }
case "32" : { nation += "仫佬族"; break; }
case "33" : { nation += "羌族"; break; }
case "34" : { nation += "布朗族"; break; }
case "35" : { nation += "撒拉族"; break; }
case "36" : { nation += "毛难族"; break; }
case "37" : { nation += "仡佬族"; break; }
case "38" : { nation += "锡伯族"; break; }
case "39" : { nation += "阿昌族"; break; }
case "40" : { nation += "普米族"; break; }
case "41" : { nation += "塔吉克族"; break; }
case "42" : { nation += "怒族"; break; }
case "43" : { nation += "乌孜别克族"; break; }
case "44" : { nation += "俄罗斯族"; break; }
case "45" : { nation += "鄂温克族"; break; }
case "46" : { nation += "崩龙族"; break; }
case "47" : { nation += "保安族"; break; }
case "48" : { nation += "裕固族"; break; }
case "49" : { nation += "京族"; break; }
case "50" : { nation += "塔塔尔族"; break; }
case "51" : { nation += "独龙族"; break; }
case "52" : { nation += "鄂伦春族"; break; }
case "53" : { nation += "赫哲族"; break; }
case "54" : { nation += "门巴族"; break; }
case "55" : { nation += "珞巴族"; break; }
case "56" : { nation += "基诺族"; break; }
case "57" : { nation += "其他"; break; }
case "58" : { nation += "外国血统中国籍人士"; break; }
}
return nation;
}
//学历
function getEducation(code){
code += "";
var education = "";
switch(code){
case "1" : { education += "小学"; break; }
case "2" : { education += "初中"; break; }
case "3" : { education += "高中"; break; }
case "4" : { education += "中专"; break; }
case "5" : { education += "大专"; break; }
case "6" : { education += "本科"; break; }
case "7" : { education += "硕士研究生"; break; }
case "8" : { education += "博士"; break; }
case "9" : { education += "博士后"; break; }
case "10" : { education += "其他"; break; }
}
return education;
}
//职位
function getJobType(code){
code += "";
var value = "";
switch(code){
case "1" : { value += "总经理"; break; }
case "2" : { value += "副总经理"; break; }
case "3" : { value += "法定代表人"; break; }
case "4" : { value += "实际负责人"; break; }
}
return value;
}
//去掉编码里面特殊字符
function rmIllegalChars(code){
//var value = "( 东) 公()()(大括号)〔〕 自招 【备】【字】[2024 ]第 [0]001 号〔〕111〔〕";
if(!isNotNull(code)){
return "";
}
// var illegalChars = /[\[\]()()〔〕【】]+/g;
// var newCode = code.replace(illegalChars,'');
var illegalChars = "[\\[\\]()()〔〕【】\\s]+";
var pattern = java.util.regex.Pattern.compile(illegalChars);
var matcher = pattern.matcher(code);
var newCode = matcher.replaceAll("");
return newCode;
}
//背筛接口
function bgPerReview(idNumber,realName){
var authUrl = getSettingValueByCategoryAndKeyWithExpired("认证服务域名", "authUrl", 60);
var url = authUrl + "/background/personnelReview?idNumber="+idNumber+"&realName="+realName;
var header = new Packages.java.util.HashMap();
header.put("Content-Type","application/json");
var response = Packages.cn.hutool.http.HttpUtil.createGet(url).addHeaders(header).execute().body();
println("调用背筛接口返回结果============" + response);
var responseJsonObj = Packages.com.alibaba.fastjson.JSON.parseObject(response);
var code = responseJsonObj.get("code");
if(code== '0'){
var resultJsonArr = responseJsonObj.getJSONObject("data").getJSONArray("censorResult");
//println("背筛结果数组==========" + resultJsonArr);
if(resultJsonArr.isEmpty()){
return "正常";
}else{
var superviseCode = getCurrentSuperviseRegionCode();
//println("背景筛查地区编码===========" + superviseCode);
if(superviseCode.startsWith(61)){
//陕西
var bg_result = resultJsonArr.getJSONObject(0).getJSONObject("data").get("detail");
return "关注(" + bg_result + ")";
}else{
var bgResultStr = "";
for(var i = 0; i < resultJsonArr.size(); i++){
var item = resultJsonArr.getJSONObject(i).getJSONObject("data").get("detail");
//println("背筛数组元素item==============" + item);
if(isNotNull(item)){
bgResultStr += item + ",";
}
}
if (bgResultStr.charAt(bgResultStr.length - 1) == ",") {
bgResultStr = bgResultStr.substring(0, bgResultStr.length - 1);
}
return "关注(" + bgResultStr + ")";
}
}
}else{
println("调用背景筛查接口不成功====" + responseJsonObj.get("msg"));
return "";
}
}
/**
通用:获取下级监管机构
*/
function getSubordinateRegulatorId(regulatorId,dbName){
try {
println("获取"+regulatorId+"下级监管机构,数据库为:organizationAuth")
if (regulatorId != null && regulatorId != ''&& dbName != null && dbName != ''){
var subordinateRegulatorIds="('"+regulatorId+"'";
regulatorId=regulatorId.replace("_","\\_");
var regulatorSql = "SELECT '" + getDomainid() + "' AS domainid,id,id as item_id,ITEM_CODE FROM " +
" tlk_departmentlevel WHERE ITEM_INDEXCODE like '%" + regulatorId + "\\_\\_\\_%';";
var datas = queryByDSName("organizationAuth", regulatorSql);
println("获取下级监管机构SQL ===>" + regulatorSql);
if (datas != null) {
for(var iterator = datas.iterator();iterator.hasNext();){
var map1 = iterator.next();//取值
var code= map1.get("ITEM_CODE");
subordinateRegulatorIds+=",'"+code+"'";
}
}
subordinateRegulatorIds+=")";
println("获取"+regulatorId+"下级监管机构,结果:"+subordinateRegulatorIds);
println("77777"+subordinateRegulatorIds)
return subordinateRegulatorIds;
}
}catch (e){
println("获取下级监管机构异常"+e)
}
}
/**
* 插入工作经历
* @param {string} cardNumber - 身份证号
* @param {string} companyName - 公司名称
*/
function insertWorkExperience(cardNumber, companyName, oldCompany) {
try {
// 根据身份证号查询保安师管理表获取ID
var querySql = "SELECT ID FROM tlk_securitymastermanagement WHERE ITEM_DOCUMENTID = '" + cardNumber + "'";
var queryResults = queryByDSName("securityflow", querySql);
println("打印sql"+querySql)
var parentId = null;
if (queryResults != null) {
for (var iterator = queryResults.iterator(); iterator.hasNext();) {
var map1 = iterator.next();
parentId = map1.get("ID");
println("保安师信息"+parentId)
break; // 获取第一条记录的ID即可
}
}
if (parentId == null) {
println("❌ 未找到对应的保安师记录,身份证号: " + cardNumber);
return false;
}
var workId = generateUniqueWorkIdWithRetry();
println("生成的工作经历ID: " + workId);
// 插入工作经历 - 包含所有必要字段
var insertSql = "INSERT INTO tlk_workexperience (ID, PARENT, ITEM_COMPANYNAME, ITEM_STARTDATE, ITEM_ENDDATE, FORMID, APPLICATIONID, LASTMODIFIED, CREATED, FORMNAME) " +
"VALUES ('" + workId + "', '" + parentId + "', '" + companyName + "', NOW(), NULL, '__YoNqD8zJZFH2AvrEiin', '__zG1ZQsueGwri0O6cXww', NOW(), NOW(), '证书管理/保安师管理/WorkExperience')";
var insertResult = insertByDSName("securityflow", insertSql);
// 检查插入是否成功
if (checkWorkExperienceExists(workId)) {
println("✅ 工作经历插入成功");
// 工作经历插入成功后,插入变更记录
// ⭐ 修改这一行:传递新旧公司信息
var logSuccess = insertCertificateLog(parentId, oldCompany, companyName);
if (logSuccess) {
println("✅ 工作经历和变更记录都插入成功");
return true;
}
return true;
} else {
println("❌ 工作经历插入失败");
return false;
}
} catch (e) {
println("❌ 插入工作经历时发生异常: " + e.message);
return false;
}
}
/**
* 更新保安师信息并插入工作经历
* @param {string} legalCardnumber - 身份证号
* @param {string} companyName - 公司名称
* @param {string} legalName - 姓名
*/
function updateSecurityMasterInfo(legalCardnumber, companyName, legalName) {
try {
// 保安师库变更信息
var oldCompany = getCurrentCompany(legalCardnumber);
println("变更前公司: " + (oldCompany || "空"));
println("变更后公司: " + companyName);
var updateSqls = "UPDATE tlk_securitymastermanagement SET " +
"ITEM_SECURITYCOMPANY = '" + companyName + "', " +
"ITEM_NAME = '" + legalName + "', " +
"ITEM_STARTDATE = NOW(), " +
"ITEM_ENDDATE = NULL, " + "LASTMODIFIED = NOW() " + "WHERE ITEM_DOCUMENTID = '" + legalCardnumber + "'";
var updateResults = updateByDSName("securityflow", updateSqls);
println("保安师更新记录数: " + updateResults);
// 更新成功就插入工作经历
if (updateResults > 0) {
insertWorkExperience(legalCardnumber, companyName, oldCompany);
return true;
} else {
println("❌ 保安师信息更新失败,未找到对应记录");
return false;
}
} catch (e) {
println("❌ 更新保安师信息时发生异常: " + e.message);
return false;
}
}
/**
* 生成唯一的工作经历ID(带重试机制)
* @returns {string} 唯一的工作经历ID
*/
function generateUniqueWorkIdWithRetry() {
var maxRetries = 5;
var retryCount = 0;
while (retryCount < maxRetries) {
try {
// 使用原有的序列生成器
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var workId = uuid.getSequence() + "--__YoNqD8zJZFH2AvrEiin";
println("尝试生成ID (第" + (retryCount + 1) + "次): " + workId);
// 检查是否已存在
if (!isWorkIdExists(workId)) {
println("✅ ID生成成功且唯一: " + workId);
return workId;
} else {
println("⚠️ ID已存在,重试生成: " + workId);
retryCount++;
// 短暂延迟后重试
Thread.sleep(10);
}
} catch (e) {
println("❌ ID生成异常: " + e.message);
retryCount++;
}
}
// 如果重试失败,使用时间戳后备方案
println("⚠️ 原生成器重试失败,使用时间戳后备方案");
return generateBackupWorkId();
}
/**
* 后备ID生成方案(使用时间戳)
* @returns {string} 后备生成的工作经历ID
*/
function generateBackupWorkId() {
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 100000);
var workId = timestamp + "_" + random + "--__YoNqD8zJZFH2AvrEiin";
// 确保后备方案生成的ID也是唯一的
var counter = 0;
while (isWorkIdExists(workId) && counter < 10) {
counter++;
random = Math.floor(Math.random() * 100000);
workId = timestamp + "_" + random + "_" + counter + "--__YoNqD8zJZFH2AvrEiin";
}
return workId;
}
/**
* 检查工作经历ID是否已存在
* @param {string} workId - 要检查的ID
* @returns {boolean} true表示已存在,false表示不存在
*/
function isWorkIdExists(workId) {
try {
var checkSql = "SELECT COUNT(*) as count FROM tlk_workexperience WHERE ID = '" + workId + "'";
var results = queryByDSName("securityflow", checkSql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
return count > 0;
}
}
return false;
} catch (e) {
println("❌ 检查ID是否存在时发生异常: " + e.message);
return false; // 发生异常时假设不存在,允许继续
}
}
/**
* 检查tlk_workexperience表中是否存在指定ID的记录
* @param {string} workId - 工作经历ID
* @returns {boolean} true表示存在(插入成功),false表示不存在(插入失败)
*/
function checkWorkExperienceExists(workId) {
try {
var checkSql = "SELECT COUNT(*) as count FROM tlk_workexperience WHERE ID = '" + workId + "'";
println("检查插入SQL: " + checkSql);
var results = queryByDSName("securityflow", checkSql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println("检查结果,记录数: " + count);
return count > 0; // 大于0说明存在,插入成功
}
}
println("检查查询无结果");
return false;
} catch (e) {
println("❌ 检查工作经历是否存在时发生异常: " + e.message);
return false;
}
}
/**
* 插入证书变更记录 - 修改参数
* @param {string} certificateId - 保安师ID (ITEM_CERTIFICATE_ID)
* @param {string} oldCompany - 旧公司名称
* @param {string} newCompany - 新公司名称
* @returns {boolean} 插入是否成功
*/
function insertCertificateLog(certificateId, oldCompany, newCompany) {
try {
// 生成变更记录的唯一ID(这部分不变)
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 1000);
var logId = uuid.getSequence() + "_" + timestamp + "_" + random + "--__yIdcspeI12iRFiI0e35";
println("生成的变更记录ID: " + logId);
// 插入变更记录SQL(这部分不变)
var logSql = "INSERT INTO tlk_certificate_log " +
"(ID, LASTMODIFIED, FORMNAME, FORMID, CREATED, APPLICATIONID, " +
"ITEM_CERTIFICATE_ID, ITEM_TYPE, ITEM_MODIFIED_NAME, ITEM_MODIFIED_TIME, ITEM_REMAKES) " +
"VALUES ('" + logId + "', NOW(), '证书管理/旧证管理/certificate_log', " +
"'__YoNqD8zJZFH2AvrEiin', NOW(), '__zG1ZQsueGwri0O6cXww', " +
"'" + certificateId + "', '0', '电子政务', NOW(), '无')";
println("变更记录插入SQL: " + logSql);
// 执行插入
insertByDSName("securityflow", logSql);
println("变更记录插入命令已执行");
// 验证插入是否成功
if (checkCertificateLogExists(logId)) {
println("✅ 证书变更记录插入成功");
// ⭐ 新增:变更记录插入成功后,插入变更详情
var detailSuccess = insertCertificateLogDetail(logId, oldCompany, newCompany);
if (detailSuccess) {
println("✅ 证书变更记录和详情都插入成功");
} else {
println("⚠️ 变更记录插入成功,但详情插入失败");
}
return true;
} else {
println("❌ 证书变更记录插入失败");
return false;
}
} catch (e) {
println("❌ 插入证书变更记录时发生异常: " + e.message);
return false;
}
}
/**
* 检查证书变更记录是否存在
* @param {string} logId - 变更记录ID
* @returns {boolean} true表示存在,false表示不存在
*/
function checkCertificateLogExists(logId) {
try {
var checkSql = "SELECT COUNT(*) as count FROM tlk_certificate_log WHERE ID = '" + logId + "'";
println("检查变更记录SQL: " + checkSql);
var results = queryByDSName("securityflow", checkSql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println("变更记录检查结果,记录数: " + count);
return count > 0;
}
}
println("变更记录检查查询无结果");
return false;
} catch (e) {
println("❌ 检查证书变更记录是否存在时发生异常: " + e.message);
return false;
}
}
/**
* 获取当前公司信息(在UPDATE之前调用)
* @param {string} cardNumber - 身份证号
* @returns {string} 当前公司名称
*/
function getCurrentCompany(cardNumber) {
try {
var querySql = "SELECT ITEM_SECURITYCOMPANY FROM tlk_securitymastermanagement WHERE ITEM_DOCUMENTID = '" + cardNumber + "'";
println("查询当前公司SQL: " + querySql);
var results = queryByDSName("securityflow", querySql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var currentCompany = map.get("ITEM_SECURITYCOMPANY");
println("查询到当前公司: " + (currentCompany || "空"));
return currentCompany || "";
}
}
return "";
} catch (e) {
println("❌ 获取当前公司信息时发生异常: " + e.message);
return "";
}
}
/**
* 插入证书变更详情记录
* @param {string} mainLogId - certificate_log表的ID
* @param {string} oldCompany - 旧公司名称
* @param {string} newCompany - 新公司名称
* @returns {boolean} 插入是否成功
*/
function insertCertificateLogDetail(mainLogId, oldCompany, newCompany) {
try {
// 生成详情记录的唯一ID
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 1000);
var detailId = uuid.getSequence() + "_" + timestamp + "_" + random + "--__DdVJUkc7RoW1GeJhADQ";
println("生成的变更详情ID: " + detailId);
println("变更项: 服务单位变更");
println("变更前: " + (oldCompany || "空"));
println("变更后: " + newCompany);
// 插入变更详情SQL
var detailSql = "INSERT INTO tlk_certificate_log_detail " +
"(ID, LASTMODIFIED, FORMNAME, FORMID, CREATED, APPLICATIONID, " +
"ITEM_change_item, ITEM_change_before, ITEM_change_after, ITEM_main_id) " +
"VALUES ('" + detailId + "', NOW(), '证书管理/旧证管理/certificate_log_detail', " +
"'__DdVJUkc7RoW1GeJhADQ', NOW(), '__zG1ZQsueGwri0O6cXww', " +
"'服务公司', '无', '" + newCompany + "', '" + mainLogId + "')";
println("变更详情插入SQL: " + detailSql);
// 执行插入
insertByDSName("securityflow", detailSql);
println("变更详情插入命令已执行");
// 验证插入是否成功
if (checkCertificateLogDetailExists(detailId)) {
println("✅ 证书变更详情插入成功");
return true;
} else {
println("❌ 证书变更详情插入失败");
return false;
}
} catch (e) {
println("❌ 插入证书变更详情时发生异常: " + e.message);
return false;
}
}
/**
* 检查证书变更详情记录是否存在
* @param {string} detailId - 变更详情ID
* @returns {boolean} true表示存在,false表示不存在
*/
function checkCertificateLogDetailExists(detailId) {
try {
var checkSql = "SELECT COUNT(*) as count FROM tlk_certificate_log_detail WHERE ID = '" + detailId + "'";
println("检查变更详情SQL: " + checkSql);
var results = queryByDSName("securityflow", checkSql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println("变更详情检查结果,记录数: " + count);
return count > 0;
}
}
return false;
} catch (e) {
println("❌ 检查证书变更详情是否存在时发生异常: " + e.message);
return false;
}
}
/**
* 批量处理管理层记录并更新保安师信息
* @param {string} docId - 文档ID
* @param {string} companyName - 公司名称
*/
function processManagementLayer(docId, companyName) {
try {
println("🚀 开始处理管理层记录");
println("DocId: " + docId);
println("公司名称: " + companyName);
var querySql = "SELECT ITEM_DOCUMENTID, ITEM_NAME, ITEM_JOBTYPE, ITEM_COMPANYNAME FROM tlk_CompanyPermitManagementLayer WHERE item_topid = '" + docId + "'";
println("查询管理层记录SQL: " + querySql);
var results = queryByDSName("securityflow", querySql);
var processedCount = 0;
var successCount = 0;
var failureCount = 0;
if (results != null) {
// 直接处理每条记录,不判断职务类型
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var cardNumber = map.get("ITEM_DOCUMENTID");
var name = map.get("ITEM_NAME");
var jobType = map.get("ITEM_JOBTYPE");
var itemCompanyName = map.get("ITEM_COMPANYNAME");
processedCount++;
println("=== 处理第 " + processedCount + " 条管理层记录 ===");
println("管理层身份证: " + cardNumber);
println("管理层名字: " + name);
println("管理层职务类型: " + jobType);
println("管理层公司名字: " + itemCompanyName);
println("✅ 开始更新保安师信息");
try {
// 直接调用保安师更新方法
var success = updateSecurityMasterInfo(cardNumber, companyName, name);
if (success) {
successCount++;
println("✅ " + name + " 保安师信息更新成功");
} else {
failureCount++;
println("❌ " + name + " 保安师信息更新失败");
}
} catch (e) {
failureCount++;
println("❌ " + name + " 处理异常: " + e.message);
}
println("---");
}
} else {
println("⚠️ 未查询到管理层记录");
}
println("🎉 管理层记录处理完成");
println("总共处理: " + processedCount + " 条记录");
println("成功: " + successCount + " 条");
println("失败: " + failureCount + " 条");
return {
total: processedCount,
success: successCount,
failure: failureCount
};
} catch (e) {
println("❌ 处理管理层记录时发生异常: " + e.message);
return { total: 0, success: 0, failure: 0, error: e.message };
}
}
/**
* 处理法人变更 - 原法人服务结束,新法人开始服务
* @param {string} companyName - 公司名称
* @param {string} legalName - 原法定代表人姓名
* @param {string} legalCardnumber - 原法定代表人身份证号
* @param {string} appointmentLegalName - 新法定代表人姓名
* @param {string} appointmentLegalCardnumber - 新法定代表人身份证号
*/
function processLegalPersonChange(companyName, legalName, legalCardnumber, appointmentLegalName, appointmentLegalCardnumber) {
try {
println("🚀 开始处理法人变更");
println("公司名称: " + companyName);
println("原法人: " + legalName + " (" + legalCardnumber + ")");
println("新法人: " + appointmentLegalName + " (" + appointmentLegalCardnumber + ")");
var originalLegalResult = false;
var newLegalResult = false;
// 1. 处理原法人 - 结束在该公司的服务
println("=== 处理原法人服务结束 ===");
originalLegalResult = endOriginalLegalService(legalCardnumber, legalName, companyName);
// 2. 处理新法人 - 开始在该公司的服务
println("=== 处理新法人服务开始 ===");
newLegalResult = startNewLegalService(appointmentLegalCardnumber, appointmentLegalName, companyName);
// 3. 输出处理结果
println("🎉 法人变更处理完成");
println("原法人处理结果: " + (originalLegalResult ? "成功" : "失败"));
println("新法人处理结果: " + (newLegalResult ? "成功" : "失败"));
return originalLegalResult && newLegalResult;
} catch (e) {
println("❌ 处理法人变更时发生异常: " + e.message);
return false;
}
}
/**
* 结束原法人在公司的服务
* @param {string} cardNumber - 原法人身份证号
* @param {string} name - 原法人姓名
* @param {string} companyName - 公司名称
* @returns {boolean} 处理是否成功
*/
function endOriginalLegalService(cardNumber, name, companyName) {
try {
// 获取原法人当前的公司信息
var currentCompany = getCurrentCompany(cardNumber);
println("原法人当前服务公司: " + (currentCompany || "无"));
// 更新保安师信息 - 结束服务
var updateSql = "UPDATE tlk_securitymastermanagement SET " +
"ITEM_SECURITYCOMPANY = NULL, " +
"ITEM_ENDDATE = NOW(), " +
"LASTMODIFIED = NOW() " +
"WHERE ITEM_DOCUMENTID = '" + cardNumber + "'";
println("原法人结束服务SQL: " + updateSql);
var updateResult = updateByDSName("securityflow", updateSql);
println("原法人更新记录数: " + updateResult);
if (updateResult > 0) {
// 插入工作经历 - 记录在该公司的服务结束
var workResult = insertWorkExperienceForEnd(cardNumber, companyName, currentCompany);
if (workResult) {
println("✅ 原法人服务结束处理成功");
return true;
} else {
println("❌ 原法人工作经历插入失败");
return false;
}
} else {
println("❌ 原法人保安师信息更新失败");
return false;
}
} catch (e) {
println("❌ 结束原法人服务时发生异常: " + e.message);
return false;
}
}
/**
* 开始新法人在公司的服务
* @param {string} cardNumber - 新法人身份证号
* @param {string} name - 新法人姓名
* @param {string} companyName - 公司名称
* @returns {boolean} 处理是否成功
*/
function startNewLegalService(cardNumber, name, companyName) {
try {
// 获取新法人当前的公司信息(变更前)
var oldCompany = getCurrentCompany(cardNumber);
println("新法人变更前公司: " + (oldCompany || "无"));
// 更新保安师信息 - 开始新服务
var updateSql = "UPDATE tlk_securitymastermanagement SET " +
"ITEM_SECURITYCOMPANY = '" + companyName + "', " +
"ITEM_NAME = '" + name + "', " +
"ITEM_STARTDATE = NOW(), " +
"ITEM_ENDDATE = NULL, " +
"LASTMODIFIED = NOW() " +
"WHERE ITEM_DOCUMENTID = '" + cardNumber + "'";
println("新法人开始服务SQL: " + updateSql);
var updateResult = updateByDSName("securityflow", updateSql);
println("新法人更新记录数: " + updateResult);
if (updateResult > 0) {
// 插入工作经历 - 记录开始在新公司的服务
var workResult = insertWorkExperience(cardNumber, companyName, oldCompany);
if (workResult) {
println("✅ 新法人服务开始处理成功");
return true;
} else {
println("❌ 新法人工作经历插入失败");
return false;
}
} else {
println("❌ 新法人保安师信息更新失败");
return false;
}
} catch (e) {
println("❌ 开始新法人服务时发生异常: " + e.message);
return false;
}
}
/**
* 为服务结束插入工作经历记录
* @param {string} cardNumber - 身份证号
* @param {string} companyName - 公司名称
* @param {string} oldCompany - 原公司名称
* @returns {boolean} 插入是否成功
*/
function insertWorkExperienceForEnd(cardNumber, companyName, oldCompany) {
try {
// 根据身份证号查询保安师管理表获取ID
var querySql = "SELECT ID,ITEM_STARTDATE FROM tlk_securitymastermanagement WHERE ITEM_DOCUMENTID = '" + cardNumber + "'";
var queryResults = queryByDSName("securityflow", querySql);
println("查询保安师ID的SQL: " + querySql);
var parentId = null;
var startDate=null;
if (queryResults != null) {
for (var iterator = queryResults.iterator(); iterator.hasNext();) {
var map1 = iterator.next();
parentId = map1.get("ID");
startDate = map1.get("ITEM_STARTDATE");
println("找到保安师ID: " + parentId);
break;
}
}
if (parentId == null) {
println("❌ 未找到对应的保安师记录,身份证号: " + cardNumber);
return false;
}
// 生成工作经历ID
var workId = generateUniqueWorkIdWithRetry();
println("生成的工作经历ID: " + workId);
var startDateSql;
if (startDate == null || startDate == "" || startDate == "null") {
println("❌ 开始时间为空,请完善原法人服务开始时间");
return false; // 保持返回布尔值的一致性
} else {
startDateSql = format(startDate, "yyyy-MM-dd"); // 格式化为目标格式
println("使用保安师的开始时间: " + startDateSql);
}
// 插入工作经历 - 服务结束,直接使用获取到的开始时间
var insertSql = "INSERT INTO tlk_workexperience (ID, PARENT, ITEM_COMPANYNAME, ITEM_STARTDATE, ITEM_ENDDATE, FORMID, APPLICATIONID, LASTMODIFIED, CREATED, FORMNAME) " +
"VALUES ('" + workId + "', '" + parentId + "', '" + companyName + "', '" + startDateSql + "', " +
"NOW(), '__YoNqD8zJZFH2AvrEiin', '__zG1ZQsueGwri0O6cXww', NOW(), NOW(), '证书管理/保安师管理/WorkExperience')";
println("插入服务结束工作经历SQL: " + insertSql);
var insertResult = insertByDSName("securityflow", insertSql);
// 检查插入是否成功
if (checkWorkExperienceExists(workId)) {
println("✅ 服务结束工作经历插入成功");
// 插入变更记录 - 原法人从公司离职
var logSuccess = insertCertificateLogForEnd(parentId, oldCompany || companyName);
if (logSuccess) {
println("✅ 服务结束工作经历和变更记录都插入成功");
}
return true;
} else {
println("❌ 服务结束工作经历插入失败");
return false;
}
} catch (e) {
println("❌ 插入服务结束工作经历时发生异常: " + e.message);
return false;
}
}
/**
* 插入服务结束的证书变更记录
* @param {string} certificateId - 保安师ID
* @param {string} oldCompany - 原公司名称
* @returns {boolean} 插入是否成功
*/
function insertCertificateLogForEnd(certificateId, oldCompany) {
try {
// 生成变更记录的唯一ID
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 1000);
var logId = uuid.getSequence() + "_" + timestamp + "_" + random + "--__yIdcspeI12iRFiI0e35";
println("生成的服务结束变更记录ID: " + logId);
// 插入变更记录SQL
var logSql = "INSERT INTO tlk_certificate_log " +
"(ID, LASTMODIFIED, FORMNAME, FORMID, CREATED, APPLICATIONID, " +
"ITEM_CERTIFICATE_ID, ITEM_TYPE, ITEM_MODIFIED_NAME, ITEM_MODIFIED_TIME, ITEM_REMAKES) " +
"VALUES ('" + logId + "', NOW(), '证书管理/旧证管理/certificate_log', " +
"'__YoNqD8zJZFH2AvrEiin', NOW(), '__zG1ZQsueGwri0O6cXww', " +
"'" + certificateId + "', '0', '电子政务', NOW(), '无')";
println("服务结束变更记录插入SQL: " + logSql);
// 执行插入
insertByDSName("securityflow", logSql);
// 验证插入是否成功
if (checkCertificateLogExists(logId)) {
println("✅ 服务结束证书变更记录插入成功");
// 插入变更详情 - 从原公司变更为无
var detailSuccess = insertCertificateLogDetailForEnd(logId, oldCompany);
if (detailSuccess) {
println("✅ 服务结束证书变更记录和详情都插入成功");
}
return true;
} else {
println("❌ 服务结束证书变更记录插入失败");
return false;
}
} catch (e) {
println("❌ 插入服务结束证书变更记录时发生异常: " + e.message);
return false;
}
}
/**
* 插入服务结束的证书变更详情记录
* @param {string} mainLogId - certificate_log表的ID
* @param {string} oldCompany - 原公司名称
* @returns {boolean} 插入是否成功
*/
function insertCertificateLogDetailForEnd(mainLogId, oldCompany) {
try {
// 生成详情记录的唯一ID
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 1000);
var detailId = uuid.getSequence() + "_" + timestamp + "_" + random + "--__DdVJUkc7RoW1GeJhADQ";
println("生成的服务结束变更详情ID: " + detailId);
println("变更项: 服务单位变更");
println("变更前: " + (oldCompany || "无"));
println("变更后: 无");
// 插入变更详情SQL - 从原公司变更为无
var detailSql = "INSERT INTO tlk_certificate_log_detail " +
"(ID, LASTMODIFIED, FORMNAME, FORMID, CREATED, APPLICATIONID, " +
"ITEM_change_item, ITEM_change_before, ITEM_change_after, ITEM_main_id) " +
"VALUES ('" + detailId + "', NOW(), '证书管理/旧证管理/certificate_log_detail', " +
"'__DdVJUkc7RoW1GeJhADQ', NOW(), '__zG1ZQsueGwri0O6cXww', " +
"'服务公司', '" + (oldCompany || "无") + "', '无', '" + mainLogId + "')";
println("服务结束变更详情插入SQL: " + detailSql);
// 执行插入
insertByDSName("securityflow", detailSql);
// 验证插入是否成功
if (checkCertificateLogDetailExists(detailId)) {
println("✅ 服务结束证书变更详情插入成功");
return true;
} else {
println("❌ 服务结束证书变更详情插入失败");
return false;
}
} catch (e) {
println("❌ 插入服务结束证书变更详情时发生异常: " + e.message);
return false;
}
}
/**
* 处理企业主要管理人员变更
* @param {string} companyName - 保安服务公司名称
* @param {string} old_manager_name - 原总经理姓名
* @param {string} old_manager_num - 原总经理身份证号
* @param {string} old_vmanager_name - 原副总经理姓名
* @param {string} old_vmanager_num - 原副总经理身份证号
* @param {string} new_manager_name - 拟设总经理姓名
* @param {string} new_manager_num - 拟设总经理身份证号
* @param {string} new_vmanager_name - 拟设副总经理姓名
* @param {string} new_vmanager_num - 拟设副总经理身份证号
*/
function processManagementPersonnelChange(companyName, old_manager_name, old_manager_num, old_vmanager_name, old_vmanager_num, new_manager_name, new_manager_num, new_vmanager_name, new_vmanager_num) {
try {
println("🚀 开始处理企业主要管理人员变更");
println("保安服务公司: " + companyName);
println("原总经理: " + old_manager_name + " (" + old_manager_num + ")");
println("原副总经理: " + old_vmanager_name + " (" + old_vmanager_num + ")");
println("新总经理: " + new_manager_name + " (" + new_manager_num + ")");
println("新副总经理: " + new_vmanager_name + " (" + new_vmanager_num + ")");
// 1. 处理原总经理服务结束
if (old_manager_num && old_manager_num.trim() !== "") {
println("=== 处理原总经理服务结束 ===");
endOriginalLegalService(old_manager_num, old_manager_name, companyName);
}
// 2. 处理原副总经理服务结束
if (old_vmanager_num && old_vmanager_num.trim() !== "") {
println("=== 处理原副总经理服务结束 ===");
endOriginalLegalService(old_vmanager_num, old_vmanager_name, companyName);
}
// 3. 处理新总经理服务开始
if (new_manager_num && new_manager_num.trim() !== "") {
println("=== 处理新总经理服务开始 ===");
startNewLegalService(new_manager_num, new_manager_name, companyName);
}
// 4. 处理新副总经理服务开始
if (new_vmanager_num && new_vmanager_num.trim() !== "") {
println("=== 处理新副总经理服务开始 ===");
startNewLegalService(new_vmanager_num, new_vmanager_name, companyName);
}
println("🎉 企业主要管理人员变更处理完成");
} catch (e) {
println("❌ 处理企业主要管理人员变更时发生异常: " + e.message);
}
}
/**
* 更新等级证信息并插入工作经历
* @param {string} chargeName - 负责人姓名
* @param {string} chargeCardNumber - 负责人身份证号
* @param {string} companyName - 保安培训单位名称
*/
function updateGradeCertificateInfo(chargeName, chargeCardNumber, companyName) {
try {
println("🚀 开始处理等级证变更");
println("专职师资姓名: " + chargeName);
println("身份证号: " + chargeCardNumber);
println("保安培训单位: " + companyName);
// 不查询旧公司,按需求变更前统一为"无"
var oldCompany = "无";
println("变更前公司: " + oldCompany);
println("变更后公司: " + companyName);
// 更新等级证信息
var updateSqls = "UPDATE tlk_certificate " +
"SET ITEM_COMPANYNAME = '" + companyName + "', " +
"LASTMODIFIED = NOW() " +
"WHERE ITEM_SECURITYNAME = '" + chargeName + "' " +
"AND ITEM_DOCUMENTID = '" + chargeCardNumber + "'";
try {
var updateResults = updateByDSName("securityflow", updateSqls);
println("执行SQL: " + updateSqls);
println("✅ 证书表更新成功,影响行数: " + updateResults);
// 更新成功后插入工作经历
if (updateResults > 0) {
var workResult = insertGradeCertificateWorkExperience(chargeName, chargeCardNumber, companyName, oldCompany);
if (workResult) {
println("✅ 等级证变更处理完成");
return true;
} else {
println("❌ 工作经历插入失败");
return false;
}
} else {
println("❌ 证书表更新失败,未找到对应记录");
return false;
}
} catch (e) {
println("❌ 证书表更新失败,错误信息: " + e.message);
return false;
}
} catch (e) {
println("❌ 更新等级证信息时发生异常: " + e.message);
return false;
}
}
/**
* 插入等级证工作经历
* @param {string} securityName - 姓名
* @param {string} documentId - 身份证号
* @param {string} companyName - 保安培训单位名称
* @param {string} oldCompany - 原公司名称
*/
function insertGradeCertificateWorkExperience(securityName, documentId, companyName, oldCompany) {
try {
// 根据姓名和身份证号查询等级证表获取ID
var querySql = "SELECT ID FROM tlk_certificate WHERE ITEM_SECURITYNAME = '" + securityName + "' AND ITEM_DOCUMENTID = '" + documentId + "'";
var queryResults = queryByDSName("securityflow", querySql);
println("查询等级证ID的SQL: " + querySql);
var parentId = null;
if (queryResults != null) {
for (var iterator = queryResults.iterator(); iterator.hasNext();) {
var map1 = iterator.next();
parentId = map1.get("ID");
println("等级证信息ID: " + parentId);
break; // 获取第一条记录的ID即可
}
}
if (parentId == null) {
println("❌ 未找到对应的等级证记录,姓名: " + securityName + ", 身份证号: " + documentId);
return false;
}
// 生成唯一的工作经历ID
var workId = generateUniqueGradeWorkIdWithRetry();
println("生成的等级证工作经历ID: " + workId);
// 插入工作经历到 tlk_WorkExper 表 - 包含所有必要字段
var insertSql = "INSERT INTO tlk_WorkExper (ID, PARENT, ITEM_COMPANYNAME, ITEM_STARTDATE, ITEM_ENDDATE, FORMID, APPLICATIONID, LASTMODIFIED, CREATED, FORMNAME) " +
"VALUES ('" + workId + "', '" + parentId + "', '" + companyName + "', NOW(), NULL, '__YoNqD8zJZFH2AvrEiin', '__zG1ZQsueGwri0O6cXww', NOW(), NOW(), '证书管理/等级证管理/WorkExper')";
println("插入等级证工作经历SQL: " + insertSql);
var insertResult = insertByDSName("securityflow", insertSql);
// 检查插入是否成功
if (checkGradeWorkExperienceExists(workId)) {
println("✅ 等级证工作经历插入成功");
// 工作经历插入成功后,插入变更记录
var logSuccess = insertGradeCertificateLog(parentId, oldCompany, companyName);
if (logSuccess) {
println("✅ 等级证工作经历和变更记录都插入成功");
return true;
}
return true;
} else {
println("❌ 等级证工作经历插入失败");
return false;
}
} catch (e) {
println("❌ 插入等级证工作经历时发生异常: " + e.message);
return false;
}
}
/**
* 生成唯一的等级证工作经历ID(带重试机制)
* @returns {string} 唯一的工作经历ID
*/
function generateUniqueGradeWorkIdWithRetry() {
var maxRetries = 5;
var retryCount = 0;
while (retryCount < maxRetries) {
try {
// 使用原有的序列生成器
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var workId = uuid.getSequence() + "--__YoNqD8zJZFH2AvrEiin";
println("尝试生成等级证工作经历ID (第" + (retryCount + 1) + "次): " + workId);
// 检查是否已存在
if (!isGradeWorkIdExists(workId)) {
println("✅ 等级证工作经历ID生成成功且唯一: " + workId);
return workId;
} else {
println("⚠️ 等级证工作经历ID已存在,重试生成: " + workId);
retryCount++;
// 短暂延迟后重试
Thread.sleep(10);
}
} catch (e) {
println("❌ 等级证工作经历ID生成异常: " + e.message);
retryCount++;
}
}
// 如果重试失败,使用时间戳后备方案
println("⚠️ 原生成器重试失败,使用时间戳后备方案");
return generateBackupGradeWorkId();
}
/**
* 后备等级证工作经历ID生成方案(使用时间戳)
* @returns {string} 后备生成的工作经历ID
*/
function generateBackupGradeWorkId() {
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 100000);
var workId = timestamp + "_" + random + "--__YoNqD8zJZFH2AvrEiin";
// 确保后备方案生成的ID也是唯一的
var counter = 0;
while (isGradeWorkIdExists(workId) && counter < 10) {
counter++;
random = Math.floor(Math.random() * 100000);
workId = timestamp + "_" + random + "_" + counter + "--__YoNqD8zJZFH2AvrEiin";
}
return workId;
}
/**
* 检查等级证工作经历ID是否已存在
* @param {string} workId - 要检查的ID
* @returns {boolean} true表示已存在,false表示不存在
*/
function isGradeWorkIdExists(workId) {
try {
var checkSql = "SELECT COUNT(*) as count FROM tlk_WorkExper WHERE ID = '" + workId + "'";
var results = queryByDSName("securityflow", checkSql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
return count > 0;
}
}
return false;
} catch (e) {
println("❌ 检查等级证工作经历ID是否存在时发生异常: " + e.message);
return false; // 发生异常时假设不存在,允许继续
}
}
/**
* 检查tlk_WorkExper表中是否存在指定ID的记录
* @param {string} workId - 工作经历ID
* @returns {boolean} true表示存在(插入成功),false表示不存在(插入失败)
*/
function checkGradeWorkExperienceExists(workId) {
try {
var checkSql = "SELECT COUNT(*) as count FROM tlk_WorkExper WHERE ID = '" + workId + "'";
println("检查等级证工作经历插入SQL: " + checkSql);
var results = queryByDSName("securityflow", checkSql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println("等级证工作经历检查结果,记录数: " + count);
return count > 0; // 大于0说明存在,插入成功
}
}
println("等级证工作经历检查查询无结果");
return false;
} catch (e) {
println("❌ 检查等级证工作经历是否存在时发生异常: " + e.message);
return false;
}
}
/**
* 插入等级证变更记录
* @param {string} certificateId - 等级证ID (ITEM_CERTIFICATE_ID)
* @param {string} oldCompany - 旧公司名称
* @param {string} newCompany - 新公司名称(保安培训单位名称)
* @returns {boolean} 插入是否成功
*/
function insertGradeCertificateLog(certificateId, oldCompany, newCompany) {
try {
// 生成变更记录的唯一ID
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 1000);
var logId = uuid.getSequence() + "_" + timestamp + "_" + random + "--__yIdcspeI12iRFiI0e35";
println("生成的等级证变更记录ID: " + logId);
// 插入变更记录SQL
var logSql = "INSERT INTO tlk_certificate_log " +
"(ID, LASTMODIFIED, FORMNAME, FORMID, CREATED, APPLICATIONID, " +
"ITEM_CERTIFICATE_ID, ITEM_TYPE, ITEM_MODIFIED_NAME, ITEM_MODIFIED_TIME, ITEM_REMAKES) " +
"VALUES ('" + logId + "', NOW(), '证书管理/等级证管理/certificate_log', " +
"'__YoNqD8zJZFH2AvrEiin', NOW(), '__zG1ZQsueGwri0O6cXww', " +
"'" + certificateId + "', '2', '电子政务', NOW(), '无')";
println("等级证变更记录插入SQL: " + logSql);
// 执行插入
insertByDSName("securityflow", logSql);
println("等级证变更记录插入命令已执行");
// 验证插入是否成功
if (checkCertificateLogExists(logId)) {
println("✅ 等级证变更记录插入成功");
// 变更记录插入成功后,插入变更详情
var detailSuccess = insertGradeCertificateLogDetail(logId, oldCompany, newCompany);
if (detailSuccess) {
println("✅ 等级证变更记录和详情都插入成功");
} else {
println("⚠️ 等级证变更记录插入成功,但详情插入失败");
}
return true;
} else {
println("❌ 等级证变更记录插入失败");
return false;
}
} catch (e) {
println("❌ 插入等级证变更记录时发生异常: " + e.message);
return false;
}
}
/**
* 插入等级证变更详情记录
* @param {string} mainLogId - certificate_log表的ID
* @param {string} oldCompany - 旧公司名称(固定为"无")
* @param {string} newCompany - 新公司名称(保安培训单位名称)
* @returns {boolean} 插入是否成功
*/
function insertGradeCertificateLogDetail(mainLogId, oldCompany, newCompany) {
try {
// 生成详情记录的唯一ID
var uuid = new Packages.cn.myapps.util.sequence.Sequence();
var timestamp = new Date().getTime();
var random = Math.floor(Math.random() * 1000);
var detailId = uuid.getSequence() + "_" + timestamp + "_" + random + "--__DdVJUkc7RoW1GeJhADQ";
println("生成的等级证变更详情ID: " + detailId);
println("变更项: 服务公司");
println("变更前: 无");
println("变更后: " + newCompany);
// 插入变更详情SQL - 变更前固定为"无",变更后为保安培训单位名称
var detailSql = "INSERT INTO tlk_certificate_log_detail " +
"(ID, LASTMODIFIED, FORMNAME, FORMID, CREATED, APPLICATIONID, " +
"ITEM_change_item, ITEM_change_before, ITEM_change_after, ITEM_main_id) " +
"VALUES ('" + detailId + "', NOW(), '证书管理/等级证管理/certificate_log_detail', " +
"'__DdVJUkc7RoW1GeJhADQ', NOW(), '__zG1ZQsueGwri0O6cXww', " +
"'服务公司', '无', '" + newCompany + "', '" + mainLogId + "')";
println("等级证变更详情插入SQL: " + detailSql);
// 执行插入
insertByDSName("securityflow", detailSql);
println("等级证变更详情插入命令已执行");
// 验证插入是否成功
if (checkCertificateLogDetailExists(detailId)) {
println("✅ 等级证变更详情插入成功");
return true;
} else {
println("❌ 等级证变更详情插入失败");
return false;
}
} catch (e) {
println("❌ 插入等级证变更详情时发生异常: " + e.message);
return false;
}
}
/**
* 检查是否存在专职师资人员记录
* @param {string} docId - 文档ID
* @returns {boolean} true表示存在,false表示不存在
*/
function checkTeachingStaffExists(docId) {
try {
var querySql = "SELECT COUNT(*) as count FROM tlk_teaching WHERE item_topid = '" + docId + "'";
println("检查专职师资人员SQL: " + querySql);
var results = queryByDSName("securityflow", querySql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println("专职师资人员记录数: " + count);
return count > 0;
}
}
println("查询专职师资人员无结果");
return false;
} catch (e) {
println("❌ 检查专职师资人员时发生异常: " + e.message);
return false;
}
}
/**
* 检查等级证是否存在
* @param {string} name - 姓名
* @param {string} cardNumber - 身份证号
* @returns {boolean} true表示存在,false表示不存在
*/
function checkGradeCertificateExists(name, cardNumber) {
try {
var querySql = "SELECT COUNT(*) as count FROM tlk_certificate WHERE ITEM_SECURITYNAME = '" + name + "' AND ITEM_DOCUMENTID = '" + cardNumber + "'";
println(" 检查等级证是否存在SQL: " + querySql);
var results = queryByDSName("securityflow", querySql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println(" 等级证记录数: " + count);
return count > 0;
}
}
return false;
} catch (e) {
println(" ❌ 检查等级证是否存在时发生异常: " + e.message);
return false;
}
}
/**
* 综合处理专职师资人员的证书变更(等级证 + 保安师)
* @param {string} docId - 文档ID
* @param {string} companyName - 公司名称
* @returns {object} 处理结果统计
*/
function processTeachingStaffCertificates(docId, companyName) {
try {
println("🚀 开始综合处理专职师资人员证书变更");
println("DocId: " + docId);
println("公司名称: " + companyName);
// 查询专职师资人员信息
var querySql = "SELECT ITEM_NAME, ITEM_IDCARDNUM FROM tlk_teaching WHERE item_topid = '" + docId + "'";
println("查询专职师资人员记录SQL: " + querySql);
var results = queryByDSName("securityflow", querySql);
var processedCount = 0;
// 分别统计等级证和保安师处理结果
var gradeTotal = 0, gradeSuccess = 0, gradeFailure = 0;
var securityTotal = 0, securitySuccess = 0, securityFailure = 0;
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var name = map.get("ITEM_NAME");
var cardNumber = map.get("ITEM_IDCARDNUM");
processedCount++;
println("=== 处理第 " + processedCount + " 个专职师资人员 ===");
println("姓名: " + name);
println("身份证: " + cardNumber);
// 1. 检查并处理等级证
if (checkGradeCertificateExists(name, cardNumber)) {
println(" ✅ 找到等级证记录,开始处理等级证变更");
gradeTotal++;
try {
var gradeSuccess_result = updateGradeCertificateInfo(name, cardNumber, companyName);
if (gradeSuccess_result) {
gradeSuccess++;
println(" ✅ " + name + " 等级证变更成功");
} else {
gradeFailure++;
println(" ❌ " + name + " 等级证变更失败");
}
} catch (e) {
gradeFailure++;
println(" ❌ " + name + " 等级证处理异常: " + e.message);
}
} else {
println(" ⚠️ 未找到等级证记录,跳过等级证处理");
}
// 2. 检查并处理保安师
if (checkSecurityMasterExists(cardNumber)) {
println(" ✅ 找到保安师记录,开始处理保安师变更");
securityTotal++;
try {
var securitySuccess_result = updateSecurityMasterInfo(cardNumber, companyName, name);
if (securitySuccess_result) {
securitySuccess++;
println(" ✅ " + name + " 保安师变更成功");
} else {
securityFailure++;
println(" ❌ " + name + " 保安师变更失败");
}
} catch (e) {
securityFailure++;
println(" ❌ " + name + " 保安师处理异常: " + e.message);
}
} else {
println(" ⚠️ 未找到保安师记录,跳过保安师处理");
}
println(" ---");
}
} else {
println("⚠️ 未查询到专职师资人员记录");
}
println("🎉 专职师资人员证书变更处理完成");
println("处理人员总数: " + processedCount);
println("等级证处理: 总计 " + gradeTotal + ", 成功 " + gradeSuccess + ", 失败 " + gradeFailure);
println("保安师处理: 总计 " + securityTotal + ", 成功 " + securitySuccess + ", 失败 " + securityFailure);
return {
totalPeople: processedCount,
gradeTotal: gradeTotal,
gradeSuccess: gradeSuccess,
gradeFailure: gradeFailure,
securityTotal: securityTotal,
securitySuccess: securitySuccess,
securityFailure: securityFailure
};
} catch (e) {
println("❌ 综合处理专职师资人员证书变更时发生异常: " + e.message);
return {
totalPeople: 0,
gradeTotal: 0, gradeSuccess: 0, gradeFailure: 0,
securityTotal: 0, securitySuccess: 0, securityFailure: 0,
error: e.message
};
}
}
/**
* 检查保安师是否存在
* @param {string} cardNumber - 身份证号
* @returns {boolean} true表示存在,false表示不存在
*/
function checkSecurityMasterExists(cardNumber) {
try {
var querySql = "SELECT COUNT(*) as count FROM tlk_securitymastermanagement WHERE ITEM_DOCUMENTID = '" + cardNumber + "'";
println(" 检查保安师是否存在SQL: " + querySql);
var results = queryByDSName("securityflow", querySql);
if (results != null) {
for (var iterator = results.iterator(); iterator.hasNext();) {
var map = iterator.next();
var count = parseInt(map.get("count"));
println(" 保安师记录数: " + count);
return count > 0;
}
}
return false;
} catch (e) {
println(" ❌ 检查保安师是否存在时发生异常: " + e.message);
return false;
}
}
//自增批准文号的函数
function generateNextFzwh() {
var prefix = "京公"; // 定义文号的前缀
var query = "SELECT item_pzwh FROM tlk_companycertificate WHERE item_pzwh RLIKE '京公[0-9]+$' AND item_pzwh >= '京公0637' ORDER BY item_pzwh DESC limit 1";
var datas = queryByDSName("securityflow",query);
if (datas.size()>0) {
iterator = datas.iterator();iterator.hasNext();
var map1 = iterator.next();//取值
println(map1);
var pzwh= map1.get("item_pzwh");//获取pawn的值
var numberPart = pzwh.substring(prefix.length);
println(numberPart)
var number = parseInt(numberPart, 10);
println(number);
//if(isNotNull(number)){
//println("别报错了");
//println(number);
//return null;
// }
// 自动递增数字部分
number += 1;
// 格式化数字部分以保持四位数
//var newNumberPart = number.toString().padStart(4, '0');
// 使用 for 循环手动格式化数字部分以保持四位数
var newNumberPart = number.toString();
while (newNumberPart.length < 4) {
newNumberPart = '0' + newNumberPart;
}
// 返回新的批准文号
var s= prefix + newNumberPart;
println(s);
return s;
}
}]]>
125