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