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<String, String> tableNameAndAlias = new HashMap<>(); //相关表名-->表别名,tableName-->tableName1
|
Map<String, String> fieldAndAlias = new HashMap<>(); //相关字段-->字段别名,tableName.fieldName-->tableName1fieldName
|
Map<String, String> 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<String> 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<String, String> tableNameAndAlias, Map<String, String>fieldAndAlias, Map<String, String> 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<String, String> tableNameAndAlias, Map<String, String>fieldAndAlias, Map<String, String> 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(Map<String,String>tableNameAndAlias, 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<String, String> 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<String, String> 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<String, String> 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, Map<String, String>fieldAndAlias, 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);
|
}
|
}
|