package com.product.administration.service; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.google.common.collect.Sets; import com.product.administration.config.SystemCode; import com.product.common.collect.SetUtils; import com.product.util.SystemParamReplace; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.product.administration.config.CmnConst; import com.product.common.lang.StringUtils; import com.product.core.config.Global; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.exception.BaseException; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.websocket.service.WebsocketMesssageServiceThread; import com.product.email.util.SmtpSendMail; import com.product.text.message.util.HttpSmsSendUtil; import com.product.tool.flow.service.FlowService; import com.product.util.BaseUtil; @Service("warnTask") public class EarlyWarningServer { @Autowired BaseDao baseDao; @Autowired FlowService flowService; public BaseDao getBaseDao() { return baseDao; } public void setBaseDao(BaseDao baseDao) { this.baseDao = baseDao; } /** * 预警任务 */ public void warningTask() { // 获取所有预警配置 DataTableEntity dtWarningConfig = baseDao.listTable(CmnConst.PRODUCT_SYS_EARLY_WARNING, "config_status=1"); if (!BaseUtil.dataTableIsEmpty(dtWarningConfig)) { // 遍历预警配置 for (int i = 0; i < dtWarningConfig.getRows(); i++) { FieldSetEntity fseWarningConfig = dtWarningConfig.getFieldSetEntity(i); singleWarningTask(fseWarningConfig); } } } /** * 预警-给定uuid单个预警,通常为定时任务触发 * @param uuid */ public void triggerSingleWarningTask(String uuid) { try { FieldSetEntity fseWarningConfig = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_EARLY_WARNING, uuid, false); if (!"1".equals(fseWarningConfig.getString(CmnConst.CONFIG_STATUS))) { throw new BaseException(SystemCode.WARN_NO_NORMAL_STATUS_RECORD); } singleWarningTask(fseWarningConfig); } catch (Exception e) { SpringMVCContextHolder.getSystemLogger().error(e); } } /** * 单个预警 * @param fseWarningConfig */ private void singleWarningTask(FieldSetEntity fseWarningConfig) { String mainTableName = fseWarningConfig.getString(CmnConst.SOURCE_TABLE); //主表名 String mainTableAlias = mainTableName + "1"; //主表别名 String warnCondition = fseWarningConfig.getString(CmnConst.CONDITION_EXPRESSION_HIDE); //预警表达式 String warnContent = fseWarningConfig.getString(CmnConst.WARNING_CONTENT_HIDE); //提醒内容 String warnMethod = fseWarningConfig.getString(CmnConst.WARNING_METHOD); //预警方式 String serviceReceiver = fseWarningConfig.getString(CmnConst.BUSINESS_RELATED_PERSON); //业务相关人员(表名.字段名) String fixedReceiver = fseWarningConfig.getString(CmnConst.FIXED_RECEIVER); //固定接收人 String flowReceiver = fseWarningConfig.getString(CmnConst.FLOW_RELATED_PERSON); //流程相关人 String flowFixedUser = fseWarningConfig.getString(CmnConst.FLOW_FIX_USER); //流程固定发起人 String flowBusinessUser = fseWarningConfig.getString(CmnConst.FLOW_BUSINESS_USER); //流程动态发起人 String flowCode = fseWarningConfig.getString(CmnConst.FLOW_CODE); //流程type_code String flowParam = fseWarningConfig.getString(CmnConst.FLOW_PARAM); //流程参数转换 Map tableNameAndAlias = new HashMap<>(); //相关表名-->表别名,tableName-->tableName1 Map fieldAndAlias = new HashMap<>(); //相关字段-->字段别名,tableName.fieldName-->tableName1fieldName Map fieldReference = new HashMap<>(); //组合相关字段的参照,tableName1fieldName-->referenceName StringBuilder concatField = new StringBuilder(); //组合相关字段,tableName1.fieldName tableName1fieldName //解析业务相关人员 if (!StringUtils.isEmpty(serviceReceiver)) { parseWarningContent(serviceReceiver, concatField, tableNameAndAlias, fieldAndAlias, fieldReference); } //解析预警内容 if (!StringUtils.isEmpty(warnContent)) { parseWarningContent(warnContent, concatField, tableNameAndAlias, fieldAndAlias, fieldReference); } //解析预警条件 if (!StringUtils.isEmpty(warnCondition)) { parseWarningContent(warnCondition, concatField, tableNameAndAlias, fieldAndAlias, fieldReference); } //解析流程参数 if (!StringUtils.isEmpty(flowParam)) { parseWarningContent(flowParam, concatField, tableNameAndAlias, fieldAndAlias, fieldReference); } //解析流程发起人 if (StringUtils.isEmpty(flowFixedUser) && !StringUtils.isEmpty(flowBusinessUser)) { // parseWarningContent(flowBusinessUser,concatField,tableNameAndAlias,fieldAndAlias,fieldReference); } //生成主子表关联SQL String relationSQL = createTableRelation(tableNameAndAlias, mainTableName); StringBuilder serviceSQL = new StringBuilder(); serviceSQL.append(" SELECT "); serviceSQL.append(concatField.subSequence(1, concatField.length())); serviceSQL.append(" FROM "); serviceSQL.append(relationSQL); serviceSQL.append(" WHERE "); serviceSQL.append(parseWarnCondition(warnCondition, tableNameAndAlias)); //查询符合预警的数据 DataTableEntity dtService = baseDao.listTable(serviceSQL.toString(), new Object[]{}); if (!BaseUtil.dataTableIsEmpty(dtService)) { for (int j = 0; j < dtService.getRows(); j++) { FieldSetEntity fseService = dtService.getFieldSetEntity(j); //业务uuid String serviceId = fseService.getString(mainTableAlias + "uuid"); //预警uuid String warnUUID = fseWarningConfig.getUUID(); //信息接收人 Set receiverSet = Sets.newTreeSet(); //装载业务接收人 String tempStr; if (!StringUtils.isEmpty(serviceReceiver)) { String[] splitReceiver = serviceReceiver.replace("{#", "").replace("#}", "").split(","); for (int k = 0; k < splitReceiver.length; k++) { tempStr = fseService.getString(fieldAndAlias.get(splitReceiver[k])); if (!StringUtils.isEmpty(tempStr)) { for (String singlePerson : tempStr.split(",")) { receiverSet.add(singlePerson); } } } } // 若是勾选了直属领导,那么一并添加上 6c 2022年3月22日 09:25:43 if ("1".equals(fseWarningConfig.getString(CmnConst.DIRECT_LEADER_FLAG)) && !receiverSet.isEmpty()) { StringBuilder directLeaderSql = new StringBuilder(256); directLeaderSql.append("\nselect l.user_id,l.show_name,l.direct_leader_code,l.tricode"); directLeaderSql.append("\nfrom product_sys_staffs l"); directLeaderSql.append("\ninner join ("); directLeaderSql.append("\n select user_id,show_name,direct_leader_code,tricode"); directLeaderSql.append("\n from product_sys_staffs"); directLeaderSql.append("\n where ").append(BaseUtil.buildQuestionMarkFilter("user_id", receiverSet.size(), true)); directLeaderSql.append("\n) p on l.tricode=p.direct_leader_code"); DataTableEntity directLeaderDte = baseDao.listTable(directLeaderSql.toString(), receiverSet.toArray()); FieldSetEntity directLeaderFse; for (int k = 0; k < directLeaderDte.getRows(); k++) { directLeaderFse = directLeaderDte.getFieldSetEntity(k); receiverSet.add(directLeaderFse.getString(CmnConst.USER_ID)); } } //装载固定接收人 if (!StringUtils.isEmpty(fixedReceiver)) { FieldSetEntity fseOrgnaiztion = baseDao.getFieldSetEntity("product_sys_organizational_structure_storage", fixedReceiver, false); if (!StringUtils.isEmpty(fseOrgnaiztion.getString("staff_ids"))) { String[] splitReceiver = fseOrgnaiztion.getString("staff_ids").split(","); for (int k = 0; k < splitReceiver.length; k++) { FieldSetEntity fseStaff = baseDao.getFieldSetEntityByFilter("product_sys_staffs", "staff_id=?", new Object[]{splitReceiver[k]}, false); receiverSet.add(fseStaff.getString(CmnConst.USER_ID)); } } } //装载流程相关人 if (!StringUtils.isEmpty(flowReceiver)) { } //暂时替换提醒内容 warnContent = SystemParamReplace.replaceParams(warnContent, fseService); String content = getContentByTableSource(fseService, warnContent, fieldReference); String allReceiver = SetUtils.set2String(receiverSet, ","); //自动生成预警日志信息 FieldSetEntity fse = new FieldSetEntity(); fse.setTableName(CmnConst.PRODUCT_SYS_EARLY_WARNING_INFO); fse.setValue(CmnConst.EARLY_WARNING_DATETIME, new Date()); fse.setValue(CmnConst.EARLY_WARNING_UUID, warnUUID); fse.setValue(CmnConst.DATA_UUID, serviceId); fse.setValue(CmnConst.WARNING_CONTENT, content); fse.setValue(CmnConst.RECEIVER, allReceiver); fse.setValue(CmnConst.WARNING_METHOD, warnMethod); baseDao.add(fse); //发送信息 if (!StringUtils.isEmpty(warnMethod)) { String[] send_method = warnMethod.split(","); for (int k = 0; k < send_method.length; k++) { if ("1".equals(send_method[k])) { //系统消息 WebsocketMesssageServiceThread.getInstance().appendMessage(allReceiver, content, "预警消息", 1, "31", CmnConst.BUTTON_URL_WARN_MESSAGE_INFO + "?uuid=" + fse.getUUID(), CmnConst.PRODUCT_SYS_EARLY_WARNING_INFO, fse.getUUID(), 1, 0, 0); } else if ("2".equals(send_method[k])) { //电子邮件 parseMail(content, allReceiver); } else if ("3".equals(send_method[k])) { //短信消息 parseSMS(content, allReceiver); } } } //发起流程 if (!StringUtils.isEmpty(flowFixedUser)) { autoStartFlow(fseWarningConfig.getString("config_name"), flowCode, flowParam, fseService, fieldAndAlias, Integer.valueOf(flowFixedUser)); } else { if (!StringUtils.isEmpty(flowBusinessUser)) { autoStartFlow(fseWarningConfig.getString("config_name"), flowCode, flowParam, fseService, fieldAndAlias, fseService.getInteger(flowBusinessUser)); } } } } } /** * 根据提醒内容中的表属性,进行拼接成标准格式 * @param content 预警内容 * @param concatField 组合字段 * @param tableNameAndAlias 表名及别名 * @param fieldAndAlias 字段名及别名 * @param fieldReference 字段及参照 * @return */ public Object[] parseWarningContent(String warnContent, StringBuilder concatField, Map tableNameAndAlias, MapfieldAndAlias, Map fieldReference) { int s = 0; String tableAndField=null; while (s >= 0) { int c = warnContent.indexOf("{#", s); if (c == -1) { break; } int m = warnContent.indexOf("#}", c); s = c + 2; //表名.字段名 tableAndField=warnContent.substring(s, m); //获取表名 String relationTable=tableAndField.split("\\.")[0]; //表别名 String relationTableAlias=relationTable+"1"; //字段名 String fieldName=tableAndField.split("\\.")[1]; if (tableNameAndAlias.get(relationTable)==null) { concatField.append(","); concatField.append(relationTableAlias); concatField.append(".uuid "); concatField.append(relationTableAlias); concatField.append("uuid"); fieldAndAlias.put(relationTable+".uuid", relationTable+"1uuid"); tableNameAndAlias.put(relationTable, relationTableAlias); } //生成字段别名-->表名1字段名 String tableFieldAlias=tableAndField.replace(".", "1"); if (fieldAndAlias.get(tableAndField)==null) { fieldAndAlias.put(tableAndField,tableFieldAlias); concatField.append(","); concatField.append(relationTableAlias+"."+fieldName); concatField.append(" "); concatField.append(tableFieldAlias); fieldReference.put(tableFieldAlias, getReferenceByField(tableAndField)); } } return new Object[]{concatField,tableNameAndAlias,fieldAndAlias,fieldReference}; } /** * 根据提醒内容中的表属性,进行拼接成标准格式 * @param flowParam 预警内容 * @param concatField 组合字段 * @param tableNameAndAlias 表名及别名 * @param fieldAndAlias 字段名及别名 * @param fieldReference 字段及参照 * @return */ public Object[] parseFlowParam(String flowParam, StringBuilder concatField, Map tableNameAndAlias, MapfieldAndAlias, Map fieldReference) { String[] warnAndFlows=flowParam.split(","); for (int i = 0; i < warnAndFlows.length; i++) { String[] warnAndFlow=warnAndFlows[i].split("="); String tableAndField=warnAndFlow[0]; //获取表名 String relationTable=tableAndField.split("\\.")[0]; //表别名 String relationTableAlias=relationTable+"1"; //字段名 String fieldName=tableAndField.split("\\.")[1]; if (tableNameAndAlias.get(relationTable)==null) { concatField.append(","); concatField.append(relationTableAlias); concatField.append(".uuid "); concatField.append(relationTableAlias); concatField.append("uuid"); fieldAndAlias.put(relationTable+".uuid", relationTable+"1uuid"); tableNameAndAlias.put(relationTable, relationTableAlias); } //生成字段别名-->表名1字段名 String tableFieldAlias=tableAndField.replace(".", "1"); if (fieldAndAlias.get(tableAndField)==null) { fieldAndAlias.put(tableAndField,tableFieldAlias); concatField.append(","); concatField.append(relationTableAlias+"."+fieldName); concatField.append(" "); concatField.append(tableFieldAlias); fieldReference.put(tableFieldAlias, getReferenceByField(tableAndField)); } } return new Object[]{concatField,tableNameAndAlias,fieldAndAlias,fieldReference}; } /** * 根据表名和字段的获取对应参照 * @param tableAndField 表别名.字段名 * @return 参照名 */ public String getReferenceByField(String tableAndField) { String [] tableField=tableAndField.replace("1.", ".").split("\\."); String tableName=tableField[0]; String fieldName=tableField[1]; FieldSetEntity fseTableInfo=baseDao.getFieldSetEntityByFilter("product_sys_datamodel_table", "table_name=?",new Object[] {tableName}, false); FieldSetEntity fseFieldInfo=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DATAMODEL_FIELD, "table_uuid=? and field_name=?", new Object[] {fseTableInfo.getUUID(),fieldName}, false); if (fseFieldInfo==null) { throw new BaseException("", "", this.getClass(), ""); } String fieldType=fseFieldInfo.getString(CmnConst.FIELD_TYPE); if (CmnConst.USERID.equals(fieldType)) { return CmnConst.USERID; }else { return fseFieldInfo.getString(CmnConst.FIELD_REFERENCE); } } /** * 生成关联SQL * @param tableNameAndAlias * @param subTable 当前表 * @return */ public String createTableRelation(MaptableNameAndAlias, String subTable) { //关联SQL StringBuilder relationSql=new StringBuilder(); relationSql.append(subTable+" "); relationSql.append(subTable+"1"); //判断是否使用子表 if (tableNameAndAlias!=null) { //根据关联子表生成关联SQL for (String mainTableName : tableNameAndAlias.keySet()) { //获取外键字段 String foreignKey=baseDao.getSubTableRelation(mainTableName, subTable); if (!StringUtils.isEmpty(foreignKey)) { relationSql.append(" LEFT JOIN "); relationSql.append(mainTableName+" "); relationSql.append(mainTableName+"1"); relationSql.append(" ON "); relationSql.append(mainTableName+"1.uuid="); relationSql.append(subTable+"1."+foreignKey); } } } return relationSql.toString(); } public String getContentByTableSource(FieldSetEntity fse,String content, Map concatFieldReference) { if (content.indexOf("{#")==-1) { return content; } content=content.replace(".", "1"); return replaceParamText(content, fse, concatFieldReference); } /** * 替换文本参数 * * @param paramText 原文本 * @param fseData 业务数据 * @return 新文本 * @throws BaseException */ public String replaceParamText(String paramText, FieldSetEntity fseData, Map concatFieldReference) throws BaseException { String str = paramText; // 系统参数{{参数名:sys}} Pattern p3 = Pattern.compile("(\\{\\{)([\\w]+)(:sys\\}\\})"); // 普通业务参数{{参数名}} Pattern p4 = Pattern.compile("(\\{\\#)([\\w]+)(\\#\\})"); StringBuffer sb1 = new StringBuffer(); Matcher m = p3.matcher(str); while (m.find()) { String group = m.group(2); String replaceValue= SystemParamReplace.replaceSystemParameter(group); if(StringUtils.isEmpty(replaceValue)) { continue; } m.appendReplacement(sb1, replaceValue); } m.appendTail(sb1); StringBuffer sb2 = new StringBuffer(); if (fseData != null) { m = p4.matcher(sb1); while (m.find()) { String group = m.group(2); String value = fseData.getString(group); if (null != value) { if (StringUtils.isEmpty(concatFieldReference.get(group))) { m.appendReplacement(sb2, value); }else { m.appendReplacement(sb2, parseReference(concatFieldReference.get(group),value,fseData)); } } } m.appendTail(sb2); } return sb2.toString(); } /** * 参照替换 * @param referenceName * @param originValue * @param fseData * @return */ public String parseReference(String referenceName, String originValue, FieldSetEntity fseData) { if (CmnConst.USERID.equals(referenceName)) { //人员 FieldSetEntity fseUser=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, "user_id=?", new Object[] {originValue}, false); if (fseUser==null) { throw new BaseException("", "", this.getClass(), ""); }else { return fseUser.getString(CmnConst.USER_NAME); } }else if (referenceName.indexOf("》")>-1) { //数据字典 referenceName.replace("《", "").replace("》", ""); FieldSetEntity fseDict=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DICT, "dict_name=? AND dict_value=?", new Object[] {referenceName, originValue}, false); if (fseDict==null) { throw new BaseException("", "", this.getClass(), ""); }else { return fseDict.getString(CmnConst.DICT_LABEL); } }else { //高级参照 FieldSetEntity fsePrompt=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_PROMPT, "prompt_name=?", new Object[] {referenceName}, false); if (fsePrompt==null) { throw new BaseException("", "",this.getClass(),""); }else { String valueField=fsePrompt.getString("value_field"); String viewField=fsePrompt.getString("view_fields"); String sourceTable=fsePrompt.getString("source_table"); FieldSetEntity fsePromptData=baseDao.getFieldSetEntityByFilter(sourceTable, valueField+"=?", new Object[] {originValue}, false); if (fsePromptData!=null) { return fsePromptData.getString(viewField); } } } return originValue; } /** * 解析条件表达式 * @param warnCOnditon * @param tableNameAndAlias * @return */ public String parseWarnCondition(String warnConditon, Map tableNameAndAlias) { for (String tableName : tableNameAndAlias.keySet()) { if (warnConditon.indexOf(tableName)>-1) { warnConditon=warnConditon.replace(tableName, tableNameAndAlias.get(tableName)); } } warnConditon=warnConditon.replace("{#", "").replace("#}", ""); warnConditon=warnConditon.replace("{%", "").replace("%}", ""); return warnConditon; } /** * 预警发邮件解析 * @param content * @param receiver */ public void parseMail(String content,String receiver) { String[] user_ids=receiver.split(","); for (int i = 0; i < user_ids.length; i++) { FieldSetEntity fseStaff=baseDao.getFieldSetEntityByFilter("product_sys_staffs", "user_id=?", new Object[] {user_ids[i]}, false); if (fseStaff==null) { continue; } String org_level_uuid=fseStaff.getString(CmnConst.ORG_LEVEL_UUID); String userEmail=fseStaff.getString("staff_email"); FieldSetEntity fseCompanySmtp=baseDao.getFieldSetEntityByFilter("product_sys_company_email_smtp", "org_level_uuid=?", new Object[] {org_level_uuid}, false); FieldSetEntity fseMailInfo=new FieldSetEntity(); fseMailInfo.setTableName(CmnConst.PRODUCT_SYS_MAIL_SEND); fseMailInfo.setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid); fseMailInfo.setValue(CmnConst.ADDRESSEE, userEmail); fseMailInfo.setValue(CmnConst.MAIL_TITLE, "预警信息"); fseMailInfo.setValue(CmnConst.MAIL_CONTENT, content); if (fseCompanySmtp!=null) { fseMailInfo.setValue(CmnConst.SMTP_SERVER_HOST, fseCompanySmtp.getString(CmnConst.SMTP_SERVER_HOST)); fseMailInfo.setValue(CmnConst.SMTP_SERVER_PORT, fseCompanySmtp.getString(CmnConst.SMTP_SERVER_PORT)); fseMailInfo.setValue(CmnConst.SMTP_USERNAME, fseCompanySmtp.getString(CmnConst.SMTP_USERNAME)); fseMailInfo.setValue(CmnConst.SMTP_LICENSE_CODE, fseCompanySmtp.getString(CmnConst.SMTP_LICENSE_CODE)); }else { fseMailInfo.setValue(CmnConst.SMTP_SERVER_HOST, Global.getSystemConfig("spring.mail.host","")); fseMailInfo.setValue(CmnConst.SMTP_SERVER_PORT, Global.getSystemConfig("spring.mail.port","")); fseMailInfo.setValue(CmnConst.SMTP_USERNAME, Global.getSystemConfig("spring.mail.username","")); fseMailInfo.setValue(CmnConst.SMTP_LICENSE_CODE, Global.getSystemConfig("spring.mail.password","")); } fseMailInfo.setValue("send_mode", "smtp"); SmtpSendMail.sendMail(fseMailInfo,null); //创建人和创建时间 if (SpringMVCContextHolder.getCurrentUser()!=null) { fseMailInfo.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); } fseMailInfo.setValue(CmnConst.CREATED_UTC_DATETIME,new Date()); baseDao.add(fseMailInfo); } } /** * 预警发短信解析 * @param content * @param receiver */ public void parseSMS(String content,String receiver) { String[] user_ids=receiver.split(","); for (int i = 0; i < user_ids.length; i++) { FieldSetEntity fseuser=baseDao.getFieldSetEntityByFilter("product_sys_users", "user_id=?", new Object[] {user_ids[i]}, false); FieldSetEntity fseStaff=baseDao.getFieldSetEntityByFilter("product_sys_staffs", "user_id=?", new Object[] {user_ids[i]}, false); if (fseStaff==null) { continue; } String org_level_uuid=fseStaff.getString(CmnConst.ORG_LEVEL_UUID); String userPhone=fseuser.getString("user_phone_number"); FieldSetEntity fseMessageInfo=new FieldSetEntity(); fseMessageInfo.setTableName(CmnConst.PRODUCT_SYS_MESSAGE_SEND); fseMessageInfo.setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid); fseMessageInfo.setValue("send_user", "2"); fseMessageInfo.setValue("receive_user",userPhone); fseMessageInfo.setValue("content", content); FieldSetEntity fseCompanyMessage=baseDao.getFieldSetEntityByFilter("product_sys_company_email_smtp", "org_level_uuid=?", new Object[] {org_level_uuid}, false); if (fseCompanyMessage!=null) { fseMessageInfo.setValue(CmnConst.USER_ACCOUNT, fseCompanyMessage.getString(CmnConst.USER_ACCOUNT)); fseMessageInfo.setValue(CmnConst.SECRETKEY, fseCompanyMessage.getString(CmnConst.SECRETKEY)); fseMessageInfo.setValue(CmnConst.ECNAME, fseCompanyMessage.getString(CmnConst.ECNAME)); fseMessageInfo.setValue(CmnConst.SIGN, fseCompanyMessage.getString(CmnConst.SIGN)); fseMessageInfo.setValue(CmnConst.ADDSERIAL, fseCompanyMessage.getString(CmnConst.ADDSERIAL)); fseMessageInfo.setValue(CmnConst.URL, fseCompanyMessage.getString(CmnConst.URL)); fseMessageInfo.setValue(CmnConst.TREATY, fseCompanyMessage.getString(CmnConst.TREATY)); }else { fseMessageInfo.setValue(CmnConst.USER_ACCOUNT, "zgctjt"); fseMessageInfo.setValue(CmnConst.SECRETKEY, "zgctjt2019"); fseMessageInfo.setValue(CmnConst.ECNAME, "自贡市城市建设投资开发集团有限公司"); fseMessageInfo.setValue(CmnConst.SIGN, "9OOWx4mtn"); fseMessageInfo.setValue(CmnConst.ADDSERIAL, ""); fseMessageInfo.setValue(CmnConst.URL, "http://112.35.1.155:1992/sms/norsubmit"); fseMessageInfo.setValue(CmnConst.TREATY, "HTTP"); } fseMessageInfo.setValue("send_mode", "smtp"); HttpSmsSendUtil.sendMsg(fseMessageInfo); fseMessageInfo.setValue(CmnConst.CREATED_BY, 1); fseMessageInfo.setValue(CmnConst.CREATED_UTC_DATETIME,new Date()); baseDao.add(fseMessageInfo); } } /** * 自动发起流程 * @param flowCode * @param flowParam * @param fseService * @param fieldAndAlias */ public void autoStartFlow(String warnName,String flowCode, String flowParam, FieldSetEntity fseService, MapfieldAndAlias, Integer createdBy) { if (flowCode==null) { return ; } FieldSetEntity fseFlowService=new FieldSetEntity(); String [] warnAndFlows=flowParam.split(","); for (int i = 0; i < warnAndFlows.length; i++) { String [] warnAndFlow=warnAndFlows[i].split("="); String warnField=warnAndFlow[0]; String flowField=warnAndFlow[1]; fseFlowService.setTableName(flowField.split("\\.")[0]); fseFlowService.setValue(flowField.split("\\.")[1], fseService.getObject(fieldAndAlias.get(warnField.replace("{#", "").replace("#}", "")))); } baseDao.add(fseFlowService); FieldSetEntity fseFLow=new FieldSetEntity(); fseFLow.setTableName(fseFlowService.getTableName()); fseFLow.setValue("flow_title", warnName); fseFLow.setValue("uuid", fseFlowService.getUUID()); fseFLow.setValue("type_code", flowCode); fseFLow.setValue("accepters", createdBy); flowService.autoSendFlow(fseFLow); } }