1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-08-01 16:38:02 +08:00

Clean up MainUtils

This commit is contained in:
dengchao@xgtl 2020-04-16 14:52:10 +08:00
parent 1644826f5b
commit c45941540c
2 changed files with 1888 additions and 1988 deletions

View File

@ -37,6 +37,7 @@ import com.googlecode.aviator.AviatorEvaluator;
import freemarker.template.Configuration;
import freemarker.template.TemplateException;
import io.netty.handler.codec.http.HttpHeaders;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.ConversionException;
@ -49,8 +50,6 @@ import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.FatalBeanException;
@ -63,39 +62,39 @@ import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SuppressWarnings("unused")
@Slf4j
public class MainUtils {
private final static Logger logger = LoggerFactory.getLogger(MainUtils.class);
private static MD5 md5 = new MD5();
private static final ObjectMapper JSON = new ObjectMapper();
private static final MD5 md5 = new MD5();
private static final Random random = new Random();
public static SimpleDateFormat dateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat timeRangeDateFormat = new SimpleDateFormat("HH:mm");
static {
JSON.setSerializationInclusion(Include.NON_NULL);
JSON.configure(SerializationFeature.INDENT_OUTPUT, Boolean.TRUE);
}
/**
* 当前时间+已过随机生成的 长整形数字
*
* @return
*/
public static String genID() {
return Base62.encode(getUUID()).toLowerCase();
return Objects.requireNonNull(Base62.encode(getUUID())).toLowerCase();
}
public static String genIDByKey(String key) {
return Base62.encode(key).toLowerCase();
return Objects.requireNonNull(Base62.encode(key)).toLowerCase();
}
public static String getUUID() {
@ -156,7 +155,7 @@ public class MainUtils {
public static long ipToLong(String ipAddress) {
long result = 0;
String[] ipAddressInArray = ipAddress.split("\\.");
if (ipAddressInArray != null && ipAddressInArray.length == 4) {
if (ipAddressInArray.length == 4) {
for (int i = 3; i >= 0; i--) {
long ip = Long.parseLong(ipAddressInArray[3 - i]);
@ -181,12 +180,9 @@ public class MainUtils {
/***
* ID编码 发送对话的时候使用
* @param id
* @param nid
* @return
*/
public static String genNewID(String id, String nid) {
StringBuffer strb = new StringBuffer();
StringBuilder strb = new StringBuilder();
if (id != null && nid != null) {
int length = Math.max(id.length(), nid.length());
for (int i = 0; i < length; i++) {
@ -203,12 +199,8 @@ public class MainUtils {
return strb.toString();
}
/**
* @param request
* @return
*/
public static Map<String, Object> getRequestParam(HttpServletRequest request) {
Map<String, Object> values = new HashMap<String, Object>();
Map<String, Object> values = new HashMap<>();
Enumeration<String> enums = request.getParameterNames();
while (enums.hasMoreElements()) {
String param = enums.nextElement();
@ -218,15 +210,14 @@ public class MainUtils {
}
/**
* @param request
* @return
*
*/
public static String getParameter(HttpServletRequest request) {
Enumeration<String> names = request.getParameterNames();
StringBuffer strb = new StringBuffer();
StringBuilder strb = new StringBuilder();
while (names.hasMoreElements()) {
String name = names.nextElement();
if (name.indexOf("password") < 0) { //不记录 任何包含 password 的参数内容
if (!name.contains("password")) { //不记录 任何包含 password 的参数内容
if (strb.length() > 0) {
strb.append(",");
}
@ -239,8 +230,6 @@ public class MainUtils {
/**
* 获取一天的开始时间
*
* @return
*/
public static Date getStartTime() {
Calendar todayStart = Calendar.getInstance();
@ -253,13 +242,11 @@ public class MainUtils {
/**
* 获取一天的开始时间
*
* @return
*/
public static Date getWeekStartTime() {
Calendar weekStart = Calendar.getInstance();
weekStart.set(
weekStart.get(Calendar.YEAR), weekStart.get(Calendar.MONDAY), weekStart.get(Calendar.DAY_OF_MONTH), 0,
weekStart.get(Calendar.YEAR), weekStart.get(Calendar.MONTH), weekStart.get(Calendar.DAY_OF_MONTH), 0,
0, 0);
weekStart.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return weekStart.getTime();
@ -267,8 +254,6 @@ public class MainUtils {
/**
* 获取一天的开始时间
*
* @return
*/
public static Date getLast30Day() {
Calendar todayStart = Calendar.getInstance();
@ -282,8 +267,6 @@ public class MainUtils {
/**
* 获取一天的开始时间
*
* @return
*/
public static Date getLastDay(int days) {
Calendar todayStart = Calendar.getInstance();
@ -297,8 +280,6 @@ public class MainUtils {
/**
* 获取一天的结束时间
*
* @return
*/
public static Date getEndTime() {
Calendar todayEnd = Calendar.getInstance();
@ -311,8 +292,6 @@ public class MainUtils {
/**
* 获取一天的结束时间
*
* @return
*/
public static Date getLastTime(int secs) {
Calendar todayEnd = Calendar.getInstance();
@ -335,34 +314,35 @@ public class MainUtils {
public static BrowserClient parseClient(HttpServletRequest request) {
BrowserClient client = new BrowserClient();
String browserDetails = request.getHeader("User-Agent");
String userAgent = browserDetails;
String user = userAgent.toLowerCase();
String os = "";
String user = browserDetails.toLowerCase();
String os;
String browser = "", version = "";
//=================OS=======================
if (userAgent.toLowerCase().indexOf("windows") >= 0) {
if (user.contains("windows")) {
os = "windows";
} else if (userAgent.toLowerCase().indexOf("mac") >= 0) {
} else if (user.contains("mac")) {
os = "mac";
} else if (userAgent.toLowerCase().indexOf("x11") >= 0) {
} else if (user.contains("x11")) {
os = "unix";
} else if (userAgent.toLowerCase().indexOf("android") >= 0) {
} else if (user.contains("android")) {
os = "android";
} else if (userAgent.toLowerCase().indexOf("iphone") >= 0) {
} else if (user.contains("iphone")) {
os = "iphone";
} else {
os = "UnKnown";
}
//===============Browser===========================
if (user.contains("qqbrowser")) {
browser = "QQBrowser";
} else if (user.contains("msie") || user.indexOf("rv:11") > -1) {
if (user.indexOf("rv:11") >= 0) {
} else if (user.contains("msie") || user.contains("rv:11")) {
if (user.contains("rv:11")) {
browser = "IE11";
} else {
String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
String substring = browserDetails.substring(browserDetails.indexOf("MSIE")).split(";")[0];
browser = substring.split(" ")[0].replace("MSIE", "IE") + substring.split(" ")[1];
}
} else if (user.contains("trident")) {
@ -370,25 +350,24 @@ public class MainUtils {
} else if (user.contains("edge")) {
browser = "Edge";
} else if (user.contains("safari") && user.contains("version")) {
browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0];
version = (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
browser = (browserDetails.substring(browserDetails.indexOf("Safari")).split(" ")[0]).split("/")[0];
version = (browserDetails.substring(browserDetails.indexOf("Version")).split(" ")[0]).split("/")[1];
} else if (user.contains("opr") || user.contains("opera")) {
if (user.contains("opera")) {
browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split(
"/")[0] + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
browser = (browserDetails.substring(browserDetails.indexOf("Opera")).split(" ")[0]).split(
"/")[0] + "-" + (browserDetails.substring(browserDetails.indexOf("Version")).split(" ")[0]).split("/")[1];
} else if (user.contains("opr")) {
browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-")).replace(
browser = ((browserDetails.substring(browserDetails.indexOf("OPR")).split(" ")[0]).replace("/", "-")).replace(
"OPR", "Opera");
}
} else if (user.contains("chrome")) {
browser = "Chrome";
} else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1) || (user.indexOf(
"mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1) || (user.indexOf(
"mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1)) {
} else if (user.contains("mozilla/7.0") || user.contains("netscape6") || user.contains("mozilla/4.7") ||
user.contains("mozilla/4.78") || user.contains("mozilla/4.08") || user.contains("mozilla/3")) {
//browser=(userAgent.substring(userAgent.indexOf("MSIE")).split(" ")[0]).replace("/", "-");
browser = "Netscape-?";
} else if ((user.indexOf("mozilla") > -1)) {
} else if (user.contains("mozilla")) {
//browser=(userAgent.substring(userAgent.indexOf("MSIE")).split(" ")[0]).replace("/", "-");
if (browserDetails.indexOf(" ") > 0) {
browser = browserDetails.substring(0, browserDetails.indexOf(" "));
@ -397,7 +376,7 @@ public class MainUtils {
}
} else if (user.contains("firefox")) {
browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
browser = (browserDetails.substring(browserDetails.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
} else if (user.contains("rv")) {
browser = "ie";
} else {
@ -413,9 +392,6 @@ public class MainUtils {
/**
* 活动JPA统计结果
*
* @param values
* @return
*/
public static WebIMReport getWebIMReport(List<Object> values) {
WebIMReport report = new WebIMReport();
@ -431,16 +407,12 @@ public class MainUtils {
/**
* 活动JPA统计结果
*
* @param values
* @return
*/
public static WebIMReport getWebIMInviteStatus(List<Object> values) {
WebIMReport report = new WebIMReport();
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
Object[] value = (Object[]) values.get(i);
for (Object o : values) {
Object[] value = (Object[]) o;
if (value.length >= 2) {
String invitestatus = (String) value[0];
if (MainContext.OnlineUserInviteStatus.DEFAULT.toString().equals(
@ -459,15 +431,12 @@ public class MainUtils {
/**
* 活动JPA统计结果
*
* @param values
* @return
*/
public static List<WebIMReport> getWebIMInviteAgg(List<Object> values) {
List<WebIMReport> webIMReportList = new ArrayList<WebIMReport>();
List<WebIMReport> webIMReportList = new ArrayList<>();
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
Object[] value = (Object[]) values.get(i);
for (Object o : values) {
Object[] value = (Object[]) o;
WebIMReport report = new WebIMReport();
if (value.length == 3) {
report.setData((String) value[0]);
@ -482,15 +451,12 @@ public class MainUtils {
/**
* 活动JPA统计结果
*
* @param values
* @return
*/
public static List<WebIMReport> getWebIMDataAgg(List<Object> values) {
List<WebIMReport> webIMReportList = new ArrayList<WebIMReport>();
List<WebIMReport> webIMReportList = new ArrayList<>();
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
Object[] value = (Object[]) values.get(i);
for (Object o : values) {
Object[] value = (Object[]) o;
WebIMReport report = new WebIMReport();
if (value.length == 2) {
if (value[0] == null || value[0].toString().equalsIgnoreCase("null") || StringUtils.isBlank(value[0].toString())) {
@ -508,16 +474,12 @@ public class MainUtils {
/**
* 活动JPA统计结果
*
* @param values
* @return
*/
public static WebIMReport getWebIMInviteResult(List<Object> values) {
WebIMReport report = new WebIMReport();
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
Object[] value = (Object[]) values.get(i);
for (Object o : values) {
Object[] value = (Object[]) o;
if (value.length >= 2) {
String invitestatus = (String) value[0];
if (MainContext.OnlineUserInviteStatus.DEFAULT.toString().equals(
@ -536,15 +498,12 @@ public class MainUtils {
/**
* 活动JPA统计结果
*
* @param values
* @return
*/
public static WeiXinReport getWeiXinReportResult(List<Object> values) {
WeiXinReport report = new WeiXinReport();
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
Object[] value = (Object[]) values.get(i);
for (Object o : values) {
Object[] value = (Object[]) o;
if (value.length >= 2) {
String event = (String) value[0];
if (MainContext.WeiXinEventType.SUB.toString().equals(event)) {
@ -563,7 +522,7 @@ public class MainUtils {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
@ -593,9 +552,9 @@ public class MainUtils {
}
public static void populate(Object bean, Map<Object, Object> properties) throws IllegalAccessException, InvocationTargetException {
public static void populate(Object bean, Map<String, Object> properties) {
//noinspection unchecked
ConvertUtils.register(new Converter() {
@SuppressWarnings("rawtypes")
@Override
public Object convert(Class arg0, Object arg1) {
if (arg1 == null) {
@ -645,30 +604,21 @@ public class MainUtils {
return objectInput.readObject();
}
/**
* @param str
* @return
* @throws NoSuchAlgorithmException
*/
public static String encryption(final String str) throws NoSuchAlgorithmException {
public static String encryption(final String str) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
textEncryptor.setPassword(MainContext.getSystemSecrityPassword());
return textEncryptor.encrypt(str);
}
/**
* @param str
* @return
* @throws NoSuchAlgorithmException
*/
public static String decryption(final String str) throws NoSuchAlgorithmException {
public static String decryption(final String str) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
textEncryptor.setPassword(MainContext.getSystemSecrityPassword());
return textEncryptor.decrypt(str);
}
public static String getTopic(final String snsid, final String msgtype, final String eventype, final String eventkey, final String msg) {
StringBuffer strb = new StringBuffer();
StringBuilder strb = new StringBuilder();
strb.append(snsid);
strb.append(".").append(msgtype);
if (msgtype.equals("text")) {
@ -685,7 +635,7 @@ public class MainUtils {
}
public static String getTopic(String snsid, String msgtype, String eventype) {
StringBuffer strb = new StringBuffer();
StringBuilder strb = new StringBuilder();
strb.append(snsid);
strb.append(".").append(msgtype);
if (msgtype.equals("text")) {
@ -700,16 +650,13 @@ public class MainUtils {
/**
* 处理 对话消息中的图片
*
* @param message
* @return
*/
public static String filterChatMessage(String message) {
Document document = Jsoup.parse(message);
Elements pngs = document.select("img[src]");
for (Element element : pngs) {
String imgUrl = element.attr("src");
if (imgUrl.indexOf("/res/image") >= 0) {
if (imgUrl.contains("/res/image")) {
element.attr("class", "ukefu-media-image");
}
}
@ -718,9 +665,6 @@ public class MainUtils {
/**
* 检查当前时间是否是在 时间范围内 时间范围的格式为 08:30~11:30,13:30~17:30
*
* @param timeRanges
* @return
*/
public static boolean isInWorkingHours(String timeRanges) {
boolean workintTime = true;
@ -746,22 +690,20 @@ public class MainUtils {
return workintTime;
}
public static File processImage(final File destFile, final File imageFile) throws IOException {
public static void processImage(final File destFile, final File imageFile) throws IOException {
if (imageFile != null && imageFile.exists()) {
Thumbnails.of(imageFile).width(460).keepAspectRatio(true).toFile(destFile);
}
return destFile;
}
public static File scaleImage(final File destFile, final File imageFile, float quality) throws IOException {
public static void scaleImage(final File destFile, final File imageFile, float quality) throws IOException {
if (imageFile != null && imageFile.exists()) {
Thumbnails.of(imageFile).scale(1f).outputQuality(quality).toFile(destFile);
}
return destFile;
}
public static String processEmoti(String message) {
Pattern pattern = Pattern.compile("\\[([\\d]*?)\\]");
Pattern pattern = Pattern.compile("\\[([\\d]*?)]");
SystemConfig systemConfig = MainContext.getCache().findOneSystemByIdAndOrgi(
"systemConfig", MainContext.SYSTEM_ORGI);
@ -814,7 +756,7 @@ public class MainUtils {
}
public static boolean secConfirm(SecretRepository secRes, String orgi, String confirm) {
/**
/*
* 先调用 IMServer
*/
boolean execute = false;
@ -834,8 +776,6 @@ public class MainUtils {
/**
* 获取系统配置
*
* @return
*/
public static SystemConfig getSystemConfig() {
SystemConfig systemConfig = MainContext.getCache().findOneSystemByIdAndOrgi(
@ -849,8 +789,6 @@ public class MainUtils {
/**
* 初始化呼叫中心功能里需要隐藏号码的字段
*
* @param tpRes
*/
public static void initSystemSecField(TablePropertiesRepository tpRes) {
if (tpRes != null) {
@ -862,8 +800,6 @@ public class MainUtils {
/**
* 获取系统地区配置
*
* @return
*/
public static void initSystemArea() {
MainContext.getCache().deleteSystembyIdAndOrgi(Constants.CSKEFU_SYSTEM_AREA, MainContext.SYSTEM_ORGI);
@ -874,8 +810,6 @@ public class MainUtils {
/**
* 缓存 广告位
*
* @return
*/
public static void initAdv(String orgi) {
MainContext.getCache().deleteSystembyIdAndOrgi(Constants.CSKEFU_SYSTEM_ADV + "_" + orgi, orgi);
@ -885,7 +819,7 @@ public class MainUtils {
}
public static Template getTemplate(String id) {
Template templet = null;
Template templet;
if ((templet = MainContext.getCache().findOneSystemByIdAndOrgi(id, MainContext.SYSTEM_ORGI)) == null) {
TemplateRepository templateRes = MainContext.getContext().getBean(TemplateRepository.class);
templet = templateRes.findByIdAndOrgi(id, MainContext.SYSTEM_ORGI);
@ -896,13 +830,9 @@ public class MainUtils {
/**
* 按照权重获取广告
*
* @param adpos
* @return
*/
@SuppressWarnings("unchecked")
public static AdType getPointAdv(String adpos, String orgi) {
List<AdType> adTypeList = new ArrayList<AdType>();
List<AdType> adTypeList = new ArrayList<>();
List<AdType> cacheAdTypeList = MainContext.getCache().findOneSystemListByIdAndOrgi(
Constants.CSKEFU_SYSTEM_ADV + "_" + orgi, orgi);
if (cacheAdTypeList == null) {
@ -921,7 +851,7 @@ public class MainUtils {
}
}
}
if (adTypeList != null && sysDic != null) {
if (sysDic != null) {
for (AdType adType : cacheAdTypeList) {
if (adType.getAdpos().equals(sysDic.getId())) {
adTypeList.add(adType);
@ -931,13 +861,8 @@ public class MainUtils {
return weitht(adTypeList);
}
private static Random random = new Random();
/**
* 按照权重获取广告内容
*
* @param adList
* @return
*/
private static AdType weitht(List<AdType> adList) {
AdType adType = null;
@ -960,30 +885,24 @@ public class MainUtils {
/**
* 16进制字符串转换为字符串
*
* @return
*/
public static String string2HexString(String strPart) {
StringBuffer hexString = new StringBuffer();
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < strPart.length(); i++) {
int ch = (int) strPart.charAt(i);
int ch = strPart.charAt(i);
String strHex = Integer.toHexString(ch);
hexString.append(strHex);
}
return hexString.toString();
}
/**
* @throws IOException
* @throws TemplateException
*/
@SuppressWarnings("deprecation")
public static String getTemplet(String templet, Map<String, Object> values) throws IOException, TemplateException {
StringWriter writer = new StringWriter();
Configuration cfg = null;
freemarker.template.Template template = null;
Configuration cfg;
freemarker.template.Template template;
String retValue = templet;
if (templet != null && templet.length() > 0 && templet.indexOf("$") >= 0) {
if (templet != null && templet.length() > 0 && templet.contains("$")) {
cfg = new Configuration();
TempletLoader loader = new TempletLoader(templet);
cfg.setTemplateLoader(loader);
@ -997,12 +916,6 @@ public class MainUtils {
/**
* 发送邮件
*
* @param email
* @param cc
* @param subject
* @param content
* @throws Exception
*/
public static void sendMail(String email, String cc, String subject, String content, List<String> filenames) throws Exception {
SystemConfig config = MainUtils.getSystemConfig();
@ -1028,24 +941,19 @@ public class MainUtils {
return null;
}
public static String processContentEncode(String str) throws Exception {
public static String processContentEncode(String str) {
return Base64.encodeBase64String(str.getBytes(StandardCharsets.UTF_8)).replaceAll("\\+", "-");
}
public static String processContentDecode(String str) throws Exception {
public static String processContentDecode(String str) {
return new String(Base64.decodeBase64(str.replaceAll("-", "\\+").getBytes()), StandardCharsets.UTF_8);
}
/**
* @param defaultFormatValue
* @param text
* @return
*/
public static String processParam(String defaultFormatValue, String text) {
String formatValue = "yyyy-MM-dd";
if (text.matches("[ ]{0,}([Yy]{1,})[ ]{0,}[+-]{0,1}([\\d]{0,})")) {
if (text.matches("[ ]*([Yy]+)[ ]*[+-]?([\\d]*)")) {
formatValue = "yyyy";
} else if (text.matches("[ ]{0,}([Mm]{1,})[ ]{0,}[+-]{0,1}([\\d]{0,})")) {
} else if (text.matches("[ ]*([Mm]+)[ ]*[+-]?([\\d]*)")) {
formatValue = "yyyy-MM";
}
@ -1055,13 +963,10 @@ public class MainUtils {
/***
* 计算T+1
* @param text
* @param format
* @return
*/
public static String getDays(String text, String format) {
String retDateFormat = text;
Pattern pattern = Pattern.compile("[ ]{0,}([TtMmYy]{1,})[ ]{0,}[+-]{0,1}([\\d]{0,})");
Pattern pattern = Pattern.compile("[ ]*([TtMmYy]+)[ ]*[+-]?([\\d]*)");
Matcher matcher = pattern.matcher(text);
if (matcher.find() && matcher.groupCount() >= 1) {
try {
@ -1081,11 +986,9 @@ public class MainUtils {
/***
* 计算T+1
* @param text
* @return
*/
public static Object getDaysParam(String text) {
Map<String, Object> context = new HashMap<String, Object>();
Map<String, Object> context = new HashMap<>();
context.put("T", processDays());
context.put("t", processDays());
context.put("M", processMonth());
@ -1096,13 +999,7 @@ public class MainUtils {
return AviatorEvaluator.execute(text, context);
}
/**
* @param value
* @return
* @throws ParseException
* @throws Exception
*/
public static String formatDateValue(String format, Object value) throws ParseException {
public static String formatDateValue(String format, Object value) {
if (value != null && value.toString().matches("[\\d.]{5,}")) {
value = new SimpleDateFormat(format).format(
new Date((long) (Double.parseDouble(value.toString()) * 24 * 60 * 60 * 1000)));
@ -1110,17 +1007,11 @@ public class MainUtils {
return value != null ? value.toString() : "0";
}
/**
* @param value
* @return
* @throws ParseException
* @throws Exception
*/
public static String formatMonthValue(String formatValue, Object value) throws ParseException {
if (value != null && value.toString().matches("[\\d.]{3,}")) {
int months = (int) Double.parseDouble(String.valueOf(value));
int year = 0;
int month = 0;
int year;
int month;
if (months % 12 == 0) {
year = months / 12 - 1;
month = 12;
@ -1139,36 +1030,19 @@ public class MainUtils {
return value != null ? value.toString() : "0";
}
/**
* @return
*/
public static double processDays() {
return System.currentTimeMillis() * 1.0f / (1000 * 60 * 60 * 24);
}
/**
* @return
*/
public static double processMonth() {
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.YEAR) * 12 + calendar.get(Calendar.MONTH) + 1;
return month;
return calendar.get(Calendar.YEAR) * 12 + calendar.get(Calendar.MONTH) + 1;
}
/**
* @return
*/
public static double processYear() {
return Calendar.getInstance().get(Calendar.YEAR);
}
private static final ObjectMapper JSON = new ObjectMapper();
static {
JSON.setSerializationInclusion(Include.NON_NULL);
JSON.configure(SerializationFeature.INDENT_OUTPUT, Boolean.TRUE);
}
public static String toJson(Object obj) {
try {
return JSON.writeValueAsString(obj);
@ -1179,12 +1053,9 @@ public class MainUtils {
return null;
}
/**
* @param message
*/
public static AsrResult parseAsrResult(String id, String message, int speakms) {
AsrResult asrResult = null;
Pattern pattern = Pattern.compile("([\\d]{1,})[\\.]{1}([\\s\\S]*);");
Pattern pattern = Pattern.compile("([\\d]+)[.]([\\s\\S]*);");
Matcher matcher = pattern.matcher(message);
if (matcher.find() && matcher.groupCount() == 2) {
asrResult = new AsrResult(id, matcher.group(2), matcher.group(1));
@ -1200,13 +1071,6 @@ public class MainUtils {
/**
* 发送短信
*
* @param phone
* @param id
* @param tpId
* @param tplValuesMap
* @return
* @throws Exception
*/
public static boolean sendSms(String phone, String id, String tpId, Map<String, Object> tplValuesMap) throws Exception {
SystemConfig config = MainUtils.getSystemConfig();
@ -1237,12 +1101,12 @@ public class MainUtils {
//初始化ascClient,暂时不支持多region请勿修改
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
DefaultProfile.addEndpoint("cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象
SendSmsRequest request = new SendSmsRequest();
//使用post提交
request.setMethod(MethodType.POST);
request.setSysMethod(MethodType.POST);
//必填:待发送手机号支持以逗号分隔的形式进行批量调用批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request.setPhoneNumbers(phone);
//必填:短信签名-可在短信控制台中找到
@ -1272,15 +1136,6 @@ public class MainUtils {
return false;
}
/**
* @param userid
* @param client
* @param session
* @param orgi
* @param ipaddr
* @param hostname
* @return
*/
public static WorkSession createWorkSession(String userid, String client, String session, String orgi, String ipaddr, String hostname, String admin, boolean first) {
WorkSession workSession = new WorkSession();
workSession.setCreatetime(new Date());
@ -1306,44 +1161,33 @@ public class MainUtils {
return workSession;
}
/**
* @param plan
* @return
*/
public static String convertCrond(JobTask plan) {
StringBuffer strb = new StringBuffer();
if ("day".equals(plan.getRunCycle())) {
StringBuilder strb = new StringBuilder();
strb.append(plan.getRunBeginSecond()).append(" ").append(plan.getRunBeginMinute()).append(
plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() < 60 ? "/" + plan.getRepeatSpace() : "").append(
" ").append(plan.getRunBeginHour()).append(
plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() > 60 ? "/" + plan.getRepeatSpace() / 60 : (plan.getRepeatJustTime() != null && plan.getRepeatJustTime() > 0 ? "-" + (plan.getRunBeginHour() + plan.getRepeatJustTime()) : "")).append(
" ").append("*").append(
" ");
if ("day".equals(plan.getRunCycle())) {
strb.append("*").append(
plan.getRunSpace() != null && plan.getRunSpace() > 0 ? "/" + plan.getRunSpace() : "").append(
" ").append(" * ?");
}
if ("week".equals(plan.getRunCycle())) {
strb.append(plan.getRunBeginSecond()).append(" ").append(plan.getRunBeginMinute()).append(
plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() < 60 ? "/" + plan.getRepeatSpace() : "").append(
" ").append(plan.getRunBeginHour()).append(
plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() > 60 ? "/" + plan.getRepeatSpace() / 60 : (plan.getRepeatJustTime() != null && plan.getRepeatJustTime() > 0 ? "-" + (plan.getRunBeginHour() + plan.getRepeatJustTime()) : "")).append(
" ").append(plan.getRunDates() == null || plan.getRunDates().length == 0 ? "*" : "?").append(
strb.append(plan.getRunDates() == null || plan.getRunDates().length == 0 ? "*" : "?").append(
" * ").append(plan.getRunDates() == null || plan.getRunDates().length == 0 ? "?" : StringUtils.join(
plan.getRunDates(), ",")).append(
plan.getRunSpace() != null && plan.getRunSpace() > 0 ? "/" + plan.getRunSpace() : "");
}
if ("month".equals(plan.getRunCycle())) {
strb.append(plan.getRunBeginSecond()).append(" ").append(plan.getRunBeginMinute()).append(
plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() < 60 ? "/" + plan.getRepeatSpace() : "").append(
" ").append(plan.getRunBeginHour()).append(
plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() > 60 ? "/" + plan.getRepeatSpace() / 60 : (plan.getRepeatJustTime() != null && plan.getRepeatJustTime() > 0 ? "-" + (plan.getRunBeginHour() + plan.getRepeatJustTime()) : "")).append(
" ").append(plan.getRunBeginDate()).append(" ").append(
strb.append(plan.getRunBeginDate()).append(" ").append(
plan.getRunDates() == null || plan.getRunDates().length == 0 ? "*" : StringUtils.join(
plan.getRunDates(), ",")).append(" ").append(" ?");
}
return strb.toString();
}
public static Date updateTaskNextFireTime(JobDetail jobDetail) throws Exception {
public static Date updateTaskNextFireTime(JobDetail jobDetail) {
Date nextFireDate = new Date();
Date date = new Date();
if (jobDetail != null && jobDetail.getCronexp() != null && jobDetail.getCronexp().length() > 0) {
@ -1360,37 +1204,33 @@ public class MainUtils {
return nextFireDate;
}
/**
* @param dialNum
* @param distype
* @return
*/
public static String processSecField(String dialNum, String distype) {
StringBuilder strb = new StringBuilder(dialNum);
if (distype.equals("01")) {
switch (distype) {
case "01":
if (strb.length() > 4) {
strb.replace(strb.length() / 2 - 2, strb.length() / 2 + 2, "****");
} else {
strb.replace(0, strb.length(), "****");
}
} else if (distype.equals("02")) {
break;
case "02":
if (strb.length() > 4) {
strb.replace(strb.length() - 4, strb.length(), "****");
} else {
strb.replace(0, strb.length(), "****");
}
} else if (distype.equals("03")) {
if (strb.length() > 4) {
strb.replace(0, 4, "****");
} else {
strb.replace(0, strb.length(), "****");
}
} else if (distype.equals("04")) {
break;
case "03":
strb.replace(0, Math.min(strb.length(), 4), "****");
break;
case "04":
int length = strb.length();
strb.setLength(0);
for (int i = 0; i < length; i++) {
strb.append("*");
}
break;
}
return strb.toString();
}
@ -1398,8 +1238,8 @@ public class MainUtils {
public static void putMapEntry(
Map<String, String[]> map, String name,
String value) {
String[] newValues = null;
String[] oldValues = (String[]) (String[]) map.get(name);
String[] newValues;
String[] oldValues = map.get(name);
if (oldValues == null) {
newValues = new String[1];
newValues[0] = value;

View File

@ -49,11 +49,12 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class ExcelImportProecess extends DataProcess{
private DecimalFormat format = new DecimalFormat("###");
private AtomicInteger pages = new AtomicInteger() , errors = new AtomicInteger();
public class ExcelImportProecess extends DataProcess {
private final DecimalFormat format = new DecimalFormat("###");
private final AtomicInteger pages = new AtomicInteger();
private final AtomicInteger errors = new AtomicInteger();
public ExcelImportProecess(DSDataEvent event){
public ExcelImportProecess(DSDataEvent event) {
super(event);
}
@ -62,12 +63,12 @@ public class ExcelImportProecess extends DataProcess{
processExcel(event);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private void processExcel(final DSDataEvent event){
@SuppressWarnings({"unchecked", "rawtypes"})
private void processExcel(final DSDataEvent event) {
InputStream is = null;
try {
event.getDSData().getReport().setTableid(event.getDSData().getTask().getId());
if(event.getDSData().getUser()!=null){
if (event.getDSData().getUser() != null) {
event.getDSData().getReport().setUserid(event.getDSData().getUser().getId());
event.getDSData().getReport().setUsername(event.getDSData().getUser().getUsername());
}
@ -93,115 +94,122 @@ public class ExcelImportProecess extends DataProcess{
Row valueRow = sheet.getRow(1);
int totalRows = sheet.getPhysicalNumberOfRows();
int colNum = titleRow.getPhysicalNumberOfCells();
for(int i=2 ; i<totalRows && valueRow == null ; i++){
for (int i = 2; i < totalRows && valueRow == null; i++) {
valueRow = sheet.getRow(i);
if(valueRow !=null){
break ;
if (valueRow != null) {
break;
}
}
/**
* 需要检查Mapping 是否存在
*/
long start = System.currentTimeMillis() ;
Map<Object, List> refValues = new HashMap<Object , List>() ;
MetadataTable table = event.getDSData().getTask() ;
for(TableProperties tp : table.getTableproperty()){
if(tp.isReffk() && !StringUtils.isBlank(tp.getReftbid())){
DataExchangeInterface exchange = (DataExchangeInterface) MainContext.getContext().getBean(tp.getReftbid()) ;
refValues.put(tp.getFieldname(), exchange.getListDataByIdAndOrgi(null, null, event.getOrgi())) ;
long start = System.currentTimeMillis();
Map<Object, List> refValues = new HashMap<Object, List>();
MetadataTable table = event.getDSData().getTask();
for (TableProperties tp : table.getTableproperty()) {
if (tp.isReffk() && !StringUtils.isBlank(tp.getReftbid())) {
DataExchangeInterface exchange = (DataExchangeInterface) MainContext.getContext().getBean(tp.getReftbid());
refValues.put(tp.getFieldname(), exchange.getListDataByIdAndOrgi(null, null, event.getOrgi()));
}
}
for(int i=1 ; i<totalRows; i++){
Row row = sheet.getRow(i) ;
Object data = null ;
if(row!=null){
if(event.getDSData().getClazz() != null) {
data = event.getDSData().getClazz().newInstance() ;
for (int i = 1; i < totalRows; i++) {
Row row = sheet.getRow(i);
Object data = null;
if (row != null) {
if (event.getDSData().getClazz() != null) {
data = event.getDSData().getClazz().newInstance();
}
Map<Object, Object> values = new HashMap<Object , Object>() ;
Map<String, Object> values = new HashMap<>();
ArrayListMultimap<String, Object> multiValues = ArrayListMultimap.create();
boolean skipDataVal = false; //跳过数据校验
StringBuffer pkStr = new StringBuffer() , allStr = new StringBuffer();
for(int col=0 ; col<colNum ; col++){
Cell value = row.getCell(col) ;
Cell title = titleRow.getCell(col) ;
String titleValue = getValue(title) ;
StringBuffer pkStr = new StringBuffer(), allStr = new StringBuffer();
for (int col = 0; col < colNum; col++) {
Cell value = row.getCell(col);
Cell title = titleRow.getCell(col);
String titleValue = getValue(title);
TableProperties tableProperties = getTableProperties(event, titleValue);
if(tableProperties!=null && value!=null){
String valuestr = getValue(value) ;
if(!StringUtils.isBlank(valuestr)) {
if(tableProperties.isModits()){
if(!StringUtils.isBlank(valuestr)) {
multiValues.put(tableProperties.getFieldname(), valuestr) ;
if (tableProperties != null && value != null) {
String valuestr = getValue(value);
if (!StringUtils.isBlank(valuestr)) {
if (tableProperties.isModits()) {
if (!StringUtils.isBlank(valuestr)) {
multiValues.put(tableProperties.getFieldname(), valuestr);
}
}else{
if(tableProperties.isSeldata()){
SysDic sysDic = Dict.getInstance().getDicItem(valuestr) ;
if(sysDic!=null){
values.put(tableProperties.getFieldname(), sysDic.getName()) ;
}else{
} else {
if (tableProperties.isSeldata()) {
SysDic sysDic = Dict.getInstance().getDicItem(valuestr);
if (sysDic != null) {
values.put(tableProperties.getFieldname(), sysDic.getName());
} else {
List<SysDic> dicItemList = Dict.getInstance().getSysDic(tableProperties.getSeldatacode());
if(dicItemList!=null && dicItemList.size() > 0) {
for(SysDic dicItem : dicItemList) {
if(dicItem.getName().equals(valuestr)) {
values.put(tableProperties.getFieldname(), dicItem.isDiscode()?dicItem.getCode():dicItem.getId()) ; break ;
if (dicItemList != null && dicItemList.size() > 0) {
for (SysDic dicItem : dicItemList) {
if (dicItem.getName().equals(valuestr)) {
values.put(tableProperties.getFieldname(), dicItem.isDiscode() ? dicItem.getCode() : dicItem.getId());
break;
}
}
}
}
}else if(tableProperties.isReffk() && refValues.get(tableProperties.getFieldname())!=null){
List keys = refValues.get(tableProperties.getFieldname()) ;
if(keys != null) {
values.put(tableProperties.getFieldname() , getRefid(tableProperties,refValues.get(tableProperties.getFieldname()) , valuestr)) ;
} else if (tableProperties.isReffk() && refValues.get(tableProperties.getFieldname()) != null) {
List keys = refValues.get(tableProperties.getFieldname());
if (keys != null) {
values.put(tableProperties.getFieldname(), getRefid(tableProperties, refValues.get(tableProperties.getFieldname()), valuestr));
}
}else{
values.put(tableProperties.getFieldname(), valuestr) ;
} else {
values.put(tableProperties.getFieldname(), valuestr);
}
if(tableProperties.isPk() && !tableProperties.getFieldname().equalsIgnoreCase("id")){
pkStr.append(valuestr) ;
if (tableProperties.isPk() && !tableProperties.getFieldname().equalsIgnoreCase("id")) {
pkStr.append(valuestr);
}
}
allStr.append(valuestr) ;
allStr.append(valuestr);
}
event.getDSData().getReport().setBytes(event.getDSData().getReport().getBytes() + valuestr.length());
event.getDSData().getReport().getAtompages().incrementAndGet() ;
event.getDSData().getReport().getAtompages().incrementAndGet();
}
}
values.put("orgi", event.getOrgi()) ;
if(values.get("id") == null){
if(pkStr.length() > 0) {
values.put("id", MainUtils.md5(pkStr.append(event.getDSData().getTask().getTablename()).toString())) ;
}else {
values.put("id", MainUtils.md5(allStr.append(event.getDSData().getTask().getTablename()).toString())) ;
values.put("orgi", event.getOrgi());
if (values.get("id") == null) {
if (pkStr.length() > 0) {
values.put("id", MainUtils.md5(pkStr.append(event.getDSData().getTask().getTablename()).toString()));
} else {
values.put("id", MainUtils.md5(allStr.append(event.getDSData().getTask().getTablename()).toString()));
}
}
if(event.getValues()!=null && event.getValues().size() > 0){
if (event.getValues() != null && event.getValues().size() > 0) {
values.putAll(event.getValues());
}
values.putAll(multiValues.asMap());
String validFaildMessage = null ;
for(TableProperties tp : table.getTableproperty()){
if(!StringUtils.isBlank(tp.getDefaultvaluetitle())) {
String valuestr = (String) values.get(tp.getFieldname()) ;
if(tp.getDefaultvaluetitle().indexOf("required") >= 0 && StringUtils.isBlank(valuestr)) {
skipDataVal = true ; validFaildMessage = "required" ;break ;
}else if(valuestr!=null && (tp.getDefaultvaluetitle().indexOf("numstr") >= 0 && !valuestr.matches("[\\d]{1,}"))) {
skipDataVal = true ; validFaildMessage = "numstr" ;break ;
}else if(valuestr!=null && (tp.getDefaultvaluetitle().indexOf("datenum") >= 0 || tp.getDefaultvaluetitle().indexOf("datetime") >= 0 )) {
if(!valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-[\\d]{2,2}") && !valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-[\\d]{2} [\\d]{2,2}:[\\d]{2,2}:[\\d]{2,2}")) {
skipDataVal = true ; validFaildMessage = "datenum" ; break ;
}else {
if(valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-{1,1}")) {
if("date".equals(tp.getDefaultfieldvalue())) {
String validFaildMessage = null;
for (TableProperties tp : table.getTableproperty()) {
if (!StringUtils.isBlank(tp.getDefaultvaluetitle())) {
String valuestr = (String) values.get(tp.getFieldname());
if (tp.getDefaultvaluetitle().indexOf("required") >= 0 && StringUtils.isBlank(valuestr)) {
skipDataVal = true;
validFaildMessage = "required";
break;
} else if (valuestr != null && (tp.getDefaultvaluetitle().indexOf("numstr") >= 0 && !valuestr.matches("[\\d]{1,}"))) {
skipDataVal = true;
validFaildMessage = "numstr";
break;
} else if (valuestr != null && (tp.getDefaultvaluetitle().indexOf("datenum") >= 0 || tp.getDefaultvaluetitle().indexOf("datetime") >= 0)) {
if (!valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-[\\d]{2,2}") && !valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-[\\d]{2} [\\d]{2,2}:[\\d]{2,2}:[\\d]{2,2}")) {
skipDataVal = true;
validFaildMessage = "datenum";
break;
} else {
if (valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-{1,1}")) {
if ("date".equals(tp.getDefaultfieldvalue())) {
values.put(tp.getFieldname(), MainUtils.simpleDateFormat.parse(valuestr));
}else {
} else {
values.put(tp.getFieldname(), MainUtils.simpleDateFormat.format(MainUtils.simpleDateFormat.parse(valuestr)));
}
}else if(valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-[\\d]{2,2} [\\d]{2,2}:[\\d]{2,2}:[\\d]{2,2}")) {
if("date".equals(tp.getDefaultfieldvalue())) {
} else if (valuestr.matches("[\\d]{4,4}-[\\d]{2,2}-[\\d]{2,2} [\\d]{2,2}:[\\d]{2,2}:[\\d]{2,2}")) {
if ("date".equals(tp.getDefaultfieldvalue())) {
values.put(tp.getFieldname(), MainUtils.dateFormate.parse(valuestr));
}else {
} else {
values.put(tp.getFieldname(), MainUtils.simpleDateFormat.format(MainUtils.dateFormate.parse(valuestr)));
}
@ -209,143 +217,144 @@ public class ExcelImportProecess extends DataProcess{
}
}
}
if(tp.isReffk() && !StringUtils.isBlank(tp.getReftbid()) && refValues.get(tp.getFieldname()) == null){
DataExchangeInterface exchange = (DataExchangeInterface) MainContext.getContext().getBean(tp.getReftbid()) ;
if (tp.isReffk() && !StringUtils.isBlank(tp.getReftbid()) && refValues.get(tp.getFieldname()) == null) {
DataExchangeInterface exchange = (DataExchangeInterface) MainContext.getContext().getBean(tp.getReftbid());
exchange.process(data, event.getOrgi());
}
}
if(!values.containsKey("orgi")) {
skipDataVal = true ;
if (!values.containsKey("orgi")) {
skipDataVal = true;
}
event.getDSData().getReport().setTotal(pages.intValue());
values.put("creater", event.getValues().get("creater")) ;
if(data!=null && skipDataVal == false) {
values.put("creater", event.getValues().get("creater"));
if (data != null && skipDataVal == false) {
MainUtils.populate(data, values);
pages.incrementAndGet() ;
pages.incrementAndGet();
event.getDSData().getProcess().process(data);
}else if(data == null){
} else if (data == null) {
/**
* 导入的数据只写入ES
*/
if(skipDataVal == true) { //跳过
values.put("status", "invalid") ;
values.put("validresult", "invalid") ;
values.put("validmessage", validFaildMessage!=null ? validFaildMessage : "") ;
}else {
values.put("validresult", "valid") ;
if (skipDataVal == true) { //跳过
values.put("status", "invalid");
values.put("validresult", "invalid");
values.put("validmessage", validFaildMessage != null ? validFaildMessage : "");
} else {
values.put("validresult", "valid");
}
values.put("status", MainContext.NamesDisStatusType.NOT.toString()) ;
values.put("batid", event.getBatid()) ;
values.put("status", MainContext.NamesDisStatusType.NOT.toString());
values.put("batid", event.getBatid());
values.put("createtime", System.currentTimeMillis()) ;
values.put("callstatus", MainContext.NameStatusType.NOTCALL.toString()) ;
values.put("execid", event.getDSData().getReport().getId()) ;
values.put("createtime", System.currentTimeMillis());
values.put("callstatus", MainContext.NameStatusType.NOTCALL.toString());
values.put("execid", event.getDSData().getReport().getId());
if(i%500 == 0) {
MainContext.getContext().getBean(ReporterRepository.class).save(event.getDSData().getReport()) ;
if (i % 500 == 0) {
MainContext.getContext().getBean(ReporterRepository.class).save(event.getDSData().getReport());
}
if(values.get("cusid")==null) {
if (values.get("cusid") == null) {
/**
*
*/
values.put("cusid", values.get("id")) ;
values.put("cusid", values.get("id"));
}
pages.incrementAndGet() ;
pages.incrementAndGet();
event.getDSData().getProcess().process(values);
/**
* 访客信息表
*/
}
if(skipDataVal == true) { //跳过
if (skipDataVal == true) { //跳过
errors.incrementAndGet();
continue ;
continue;
}
}
}
event.setTimes(System.currentTimeMillis() - start);
event.getDSData().getReport().setEndtime(new Date());
event.getDSData().getReport().setAmount(String.valueOf((float)event.getTimes()/1000f));
event.getDSData().getReport().setAmount(String.valueOf((float) event.getTimes() / 1000f));
event.getDSData().getReport().setStatus(MainContext.TaskStatusType.END.getType());
event.getDSData().getReport().setTotal(pages.intValue());
event.getDSData().getReport().setPages(pages.intValue());
event.getDSData().getReport().setErrors(errors.intValue());
} catch (Exception e) {
e.printStackTrace();
}finally{
if(is!=null){
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(event.getDSData().getFile().exists()){
event.getDSData().getFile().delete() ;
if (event.getDSData().getFile().exists()) {
event.getDSData().getFile().delete();
}
/**
* 更新数据
*/
MainContext.getContext().getBean(ReporterRepository.class).save(event.getDSData().getReport()) ;
if(event.getDSData().getClazz() == null && !StringUtils.isBlank(event.getBatid())) {
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class) ;
MainContext.getContext().getBean(ReporterRepository.class).save(event.getDSData().getReport());
if (event.getDSData().getClazz() == null && !StringUtils.isBlank(event.getBatid())) {
JobDetailRepository batchRes = MainContext.getContext().getBean(JobDetailRepository.class);
JobDetail batch = this.event.getDSData().getJobDetail();
if(batch == null) {
batch = batchRes.findByIdAndOrgi(event.getBatid(), event.getOrgi()) ;
if (batch == null) {
batch = batchRes.findByIdAndOrgi(event.getBatid(), event.getOrgi());
}
if(batch!=null) {
if (batch != null) {
batch.setNamenum(batch.getNamenum() + pages.intValue());
batch.setValidnum(batch.getValidnum() + (pages.intValue() - errors.intValue()));
batch.setInvalidnum(batch.getInvalidnum() + errors.intValue());
batch.setExecnum(batch.getExecnum() + 1);
batch.setNotassigned(batch.getNotassigned() + (pages.intValue() - errors.intValue()));
batchRes.save(batch) ;
batchRes.save(batch);
}
}
event.getDSData().getProcess().end();
}
}
private String getRefid(TableProperties tp , List<Object> dataList , String value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
String id = "" ;
for(Object data : dataList){
Object target = null ;
if(PropertyUtils.isReadable(data, "name")){
target = BeanUtils.getProperty(data, "name") ;
if(target!=null && target.equals(value)){
id = BeanUtils.getProperty(data, "id") ;
private String getRefid(TableProperties tp, List<Object> dataList, String value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
String id = "";
for (Object data : dataList) {
Object target = null;
if (PropertyUtils.isReadable(data, "name")) {
target = BeanUtils.getProperty(data, "name");
if (target != null && target.equals(value)) {
id = BeanUtils.getProperty(data, "id");
}
}
if(PropertyUtils.isReadable(data, "tag")){
target = BeanUtils.getProperty(data, "tag") ;
if(target!=null && target.equals(value)){
id = BeanUtils.getProperty(data, "id") ;
if (PropertyUtils.isReadable(data, "tag")) {
target = BeanUtils.getProperty(data, "tag");
if (target != null && target.equals(value)) {
id = BeanUtils.getProperty(data, "id");
}
}
if(StringUtils.isBlank(id) && PropertyUtils.isReadable(data, "title")){
target = BeanUtils.getProperty(data, "title") ;
if(target!=null && target.equals(value)){
id = BeanUtils.getProperty(data, "id") ;
if (StringUtils.isBlank(id) && PropertyUtils.isReadable(data, "title")) {
target = BeanUtils.getProperty(data, "title");
if (target != null && target.equals(value)) {
id = BeanUtils.getProperty(data, "id");
}
}
if(StringUtils.isBlank(id)){
target = BeanUtils.getProperty(data, "id") ;
if(target!=null && target.equals(value)){
id = target.toString() ;
if (StringUtils.isBlank(id)) {
target = BeanUtils.getProperty(data, "id");
if (target != null && target.equals(value)) {
id = target.toString();
}
}
}
return id ;
return id;
}
private TableProperties getTableProperties(DSDataEvent event , String title){
TableProperties tableProperties = null ;
for(TableProperties tp : event.getDSData().getTask().getTableproperty()){
if(tp.getName().equals(title) || tp.getFieldname().equals(title)){
tableProperties = tp ; break ;
private TableProperties getTableProperties(DSDataEvent event, String title) {
TableProperties tableProperties = null;
for (TableProperties tp : event.getDSData().getTask().getTableproperty()) {
if (tp.getName().equals(title) || tp.getFieldname().equals(title)) {
tableProperties = tp;
break;
}
}
return tableProperties;
@ -354,11 +363,12 @@ public class ExcelImportProecess extends DataProcess{
private boolean isExcel2007(String fileName) {
return fileName.matches("^.+\\.(?i)(xlsx)$");
}
@SuppressWarnings("deprecation")
private String getValue(Cell cell){
private String getValue(Cell cell) {
String strCell = "";
if(cell!=null){
short dt = cell.getCellStyle().getDataFormat() ;
if (cell != null) {
short dt = cell.getCellStyle().getDataFormat();
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
strCell = cell.getStringCellValue();
@ -383,7 +393,7 @@ public class ExcelImportProecess extends DataProcess{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
double value = cell.getNumericCellValue();
strCell = sdf.format(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value));
}else{
} else {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = null;
@ -393,31 +403,31 @@ public class ExcelImportProecess extends DataProcess{
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
strCell = sdf.format(cell.getDateCellValue());
}else{
boolean isNumber = isNumberFormat(dt) ;
if(isNumber){
DecimalFormat numberFormat = getNumberFormat(cell.getCellStyle().getDataFormatString()) ;
if(numberFormat!=null){
} else {
boolean isNumber = isNumberFormat(dt);
if (isNumber) {
DecimalFormat numberFormat = getNumberFormat(cell.getCellStyle().getDataFormatString());
if (numberFormat != null) {
strCell = String.valueOf(numberFormat.format(cell.getNumericCellValue()));
}else{
} else {
strCell = String.valueOf(cell.getNumericCellValue());
}
}else{
strCell = String.valueOf(format.format(cell.getNumericCellValue())) ;
} else {
strCell = String.valueOf(format.format(cell.getNumericCellValue()));
}
}
}
break;
case HSSFCell.CELL_TYPE_FORMULA: {
// 判断当前的cell是否为Date
boolean isNumber = isNumberFormat(dt) ;
try{
if(isNumber){
boolean isNumber = isNumberFormat(dt);
try {
if (isNumber) {
strCell = String.valueOf(cell.getNumericCellValue());
}else{
} else {
strCell = "";
}
}catch(Exception ex){
} catch (Exception ex) {
ex.printStackTrace();
strCell = cell.getRichStringCellValue().getString();
}
@ -434,11 +444,11 @@ public class ExcelImportProecess extends DataProcess{
return strCell;
}
@SuppressWarnings({ "deprecation", "unused" })
private String getDataType(Cell cell){
@SuppressWarnings({"deprecation", "unused"})
private String getDataType(Cell cell) {
String dataType = "string";
if(cell!=null){
short dt = cell.getCellStyle().getDataFormat() ;
if (cell != null) {
short dt = cell.getCellStyle().getDataFormat();
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
dataType = "string";
@ -449,18 +459,18 @@ public class ExcelImportProecess extends DataProcess{
case HSSFCell.CELL_TYPE_BLANK:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
dataType = "datetime" ;
dataType = "datetime";
} else {// 日期
dataType = "datetime" ;
dataType = "datetime";
}
} else if (cell.getCellStyle().getDataFormat() == 58){
dataType = "datetime" ;
}else{
boolean isNumber = isNumberFormat(dt) ;
if(isNumber){
} else if (cell.getCellStyle().getDataFormat() == 58) {
dataType = "datetime";
} else {
boolean isNumber = isNumberFormat(dt);
if (isNumber) {
dataType = "number";
}else{
} else {
dataType = "string";
}
}
@ -468,25 +478,25 @@ public class ExcelImportProecess extends DataProcess{
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
dataType = "datetime" ;
dataType = "datetime";
} else {// 日期
dataType = "datetime" ;
dataType = "datetime";
}
} else if (cell.getCellStyle().getDataFormat() == 58){
dataType = "datetime" ;
}else{
} else if (cell.getCellStyle().getDataFormat() == 58) {
dataType = "datetime";
} else {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
dataType = "datetime" ;
dataType = "datetime";
} else {// 日期
dataType = "datetime" ;
dataType = "datetime";
}
}else{
boolean isNumber = isNumberFormat(dt) ;
if(isNumber){
} else {
boolean isNumber = isNumberFormat(dt);
if (isNumber) {
dataType = "number";
}else{
} else {
dataType = "string";
}
}
@ -494,10 +504,10 @@ public class ExcelImportProecess extends DataProcess{
break;
case HSSFCell.CELL_TYPE_FORMULA: {
// 判断当前的cell是否为Date
boolean isNumber = isNumberFormat(dt) ;
if(isNumber){
boolean isNumber = isNumberFormat(dt);
if (isNumber) {
dataType = "number";
}else{
} else {
dataType = "string";
}
break;
@ -511,50 +521,100 @@ public class ExcelImportProecess extends DataProcess{
return dataType;
}
private DecimalFormat getNumberFormat(String dataformat){
DecimalFormat numberFormat = null ;
int index = dataformat.indexOf("_") > 0 ? dataformat.indexOf("_") : dataformat.indexOf(";") ;
if(index > 0){
String format = dataformat.substring( 0 , index) ;
if(format.matches("[\\d.]{1,}")){
private DecimalFormat getNumberFormat(String dataformat) {
DecimalFormat numberFormat = null;
int index = dataformat.indexOf("_") > 0 ? dataformat.indexOf("_") : dataformat.indexOf(";");
if (index > 0) {
String format = dataformat.substring(0, index);
if (format.matches("[\\d.]{1,}")) {
numberFormat = new DecimalFormat(format);
}
}
return numberFormat ;
return numberFormat;
}
private boolean isNumberFormat(short dataType){
boolean number = false ;
switch(dataType){
case 180 : number = true ; break;
case 181 : number = true ; break;
case 182 : number = true ; break;
case 178 : number = true ; break;
case 177 : number = true ; break;
case 176 : number = true ; break;
case 183 : number = true ; break;
case 185 : number = true ; break;
case 186 : number = true ; break;
case 179 : number = true ; break;
case 187 : number = true ; break;
case 7 : number = true ; break;
case 8 : number = true ; break;
case 44 : number = true ; break;
case 10 : number = true ; break;
case 12 : number = true ; break;
case 13 : number = true ; break;
case 188 : number = true ; break;
case 189 : number = true ; break;
case 190 : number = true ; break;
case 191 : number = true ; break;
case 192 : number = true ; break;
case 193 : number = true ; break;
case 194 : number = true ; break;
case 11 : number = true ; break;
private boolean isNumberFormat(short dataType) {
boolean number = false;
switch (dataType) {
case 180:
number = true;
break;
case 181:
number = true;
break;
case 182:
number = true;
break;
case 178:
number = true;
break;
case 177:
number = true;
break;
case 176:
number = true;
break;
case 183:
number = true;
break;
case 185:
number = true;
break;
case 186:
number = true;
break;
case 179:
number = true;
break;
case 187:
number = true;
break;
case 7:
number = true;
break;
case 8:
number = true;
break;
case 44:
number = true;
break;
case 10:
number = true;
break;
case 12:
number = true;
break;
case 13:
number = true;
break;
case 188:
number = true;
break;
case 189:
number = true;
break;
case 190:
number = true;
break;
case 191:
number = true;
break;
case 192:
number = true;
break;
case 193:
number = true;
break;
case 194:
number = true;
break;
case 11:
number = true;
break;
}
return number ;
return number;
}