11 changed files with 1051 additions and 0 deletions
-
44src/main/java/com/gaotao/modules/pda/config/ModuleFunction.java
-
47src/main/java/com/gaotao/modules/pda/config/SecurityConfig.java
-
47src/main/java/com/gaotao/modules/pda/config/XuJieConfig.java
-
57src/main/java/com/gaotao/modules/pda/dao/TransNoDao.java
-
87src/main/java/com/gaotao/modules/pda/dao/impl/TransNoDaoImpl.java
-
102src/main/java/com/gaotao/modules/pda/utils/DBUtil.java
-
135src/main/java/com/gaotao/modules/pda/utils/DateUtils.java
-
156src/main/java/com/gaotao/modules/pda/utils/DecimalUtils.java
-
250src/main/java/com/gaotao/modules/pda/utils/HttpClientUtil.java
-
57src/main/java/com/gaotao/modules/pda/utils/MD5.java
-
69src/main/java/com/gaotao/modules/pda/utils/ResponseData.java
@ -0,0 +1,44 @@ |
|||
package com.gaotao.modules.pda.config; |
|||
|
|||
/** |
|||
* |
|||
* @ClassName: ModuleFunction |
|||
* @Description: 关联配置文件数据 |
|||
* @author lirui |
|||
* @date 2018年3月29日 |
|||
* |
|||
*/ |
|||
public class ModuleFunction { |
|||
private String name;//名称 |
|||
private String mark;//标记 |
|||
private String url;//路径 |
|||
|
|||
public ModuleFunction() { |
|||
// TODO Auto-generated constructor stub |
|||
} |
|||
|
|||
public String getName() { |
|||
return name; |
|||
} |
|||
|
|||
public void setName(String name) { |
|||
this.name = name; |
|||
} |
|||
|
|||
public String getMark() { |
|||
return mark; |
|||
} |
|||
|
|||
public void setMark(String mark) { |
|||
this.mark = mark; |
|||
} |
|||
|
|||
public String getUrl() { |
|||
return url; |
|||
} |
|||
|
|||
public void setUrl(String url) { |
|||
this.url = url; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,47 @@ |
|||
package com.gaotao.modules.pda.config;//package com.gaotao.modules.pda.config; |
|||
// |
|||
// |
|||
//import org.springframework.beans.factory.annotation.Autowired; |
|||
//import org.springframework.context.annotation.Configuration; |
|||
// |
|||
// |
|||
//@Configuration |
|||
//@EnableWebSecurity |
|||
//@EnableGlobalMethodSecurity(prePostEnabled = true) |
|||
//public class SecurityConfig extends WebSecurityConfigurerAdapter { |
|||
// |
|||
// @Autowired |
|||
// CustomUserDetailsService userDetailsService; |
|||
// |
|||
// @Autowired |
|||
// CustomAuthSuccessHandler authSuccessHandler; |
|||
// |
|||
// @Autowired |
|||
// CustomPasswordEncoder passwordEncoder; |
|||
// @Autowired |
|||
// private CustomAuthFailureHandler authFailureHandler; |
|||
// |
|||
// @Override |
|||
// protected void configure(HttpSecurity http) throws Exception { |
|||
// http.headers().frameOptions().disable();//解决Spring Boot不允许加载iframe问题解决 |
|||
// http.csrf().disable() |
|||
// .authorizeRequests() |
|||
// .antMatchers("/js/**", "/img/**", "/css/**","/bootstrap/**", "/order/json", "/jeasyui/**").permitAll() |
|||
// .anyRequest().authenticated() |
|||
// .and() |
|||
// .formLogin() |
|||
// .successHandler(authSuccessHandler) |
|||
// //.failureUrl("/login?error=true") |
|||
// .failureHandler(authFailureHandler) |
|||
// .loginPage("/login") |
|||
// .permitAll() |
|||
// .and() |
|||
// .logout() |
|||
// .permitAll(); |
|||
// } |
|||
// |
|||
// //private PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |
|||
// public void configure(AuthenticationManagerBuilder auth) throws Exception { |
|||
// auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder); |
|||
// } |
|||
//} |
|||
@ -0,0 +1,47 @@ |
|||
package com.gaotao.modules.pda.config; |
|||
|
|||
|
|||
import org.springframework.boot.context.properties.ConfigurationProperties; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
import java.util.List; |
|||
|
|||
@ConfigurationProperties(prefix = "xujie") |
|||
@Configuration |
|||
public class XuJieConfig { |
|||
private String webservice;// webservice的路径 |
|||
private String excelpath;// excel服务器地址路径 |
|||
private List<ModuleFunction> modulefunction; |
|||
|
|||
|
|||
public XuJieConfig() { |
|||
super(); |
|||
// TODO Auto-generated constructor stub |
|||
} |
|||
|
|||
public String getWebservice() { |
|||
return webservice; |
|||
} |
|||
|
|||
public void setWebservice(String webservice) { |
|||
this.webservice = webservice; |
|||
} |
|||
|
|||
public String getExcelpath() { |
|||
return excelpath; |
|||
} |
|||
|
|||
public void setExcelpath(String excelpath) { |
|||
this.excelpath = excelpath; |
|||
} |
|||
|
|||
public List<ModuleFunction> getModulefunction() { |
|||
return modulefunction; |
|||
} |
|||
|
|||
public void setModulefunction(List<ModuleFunction> modulefunction) { |
|||
this.modulefunction = modulefunction; |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,57 @@ |
|||
package com.gaotao.modules.pda.dao; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* |
|||
* @ClassName: TransNoDao |
|||
* @Description: 获取通用的交易号码 |
|||
* @author lirui |
|||
* @date 2018年4月8日 |
|||
* |
|||
*/ |
|||
public interface TransNoDao { |
|||
|
|||
/** |
|||
* |
|||
* @Title: getTransNo |
|||
* @Description: 获取当前的交易号 |
|||
* @author lirui |
|||
* @date 2018年4月8日 |
|||
* @param @param site |
|||
* @param @param type |
|||
* @param @return 参数 |
|||
* @return String 返回类型 |
|||
* @throws |
|||
*/ |
|||
String getTransNo(String site,String type); |
|||
|
|||
/** |
|||
* |
|||
* @Title: updateTransNo |
|||
* @Description: 更新当前的交易号 |
|||
* @author lirui |
|||
* @date 2018年4月8日 |
|||
* @param @param site |
|||
* @param @param type 参数 |
|||
* @return void 返回类型 |
|||
* @throws |
|||
*/ |
|||
void updateTransNo(String site,String type); |
|||
|
|||
/** |
|||
* |
|||
* @Title: getRollTrees |
|||
* @Description: 测试存储过程 |
|||
* @author lirui |
|||
* @date 2018年11月27日 |
|||
* @param @param site |
|||
* @param @param rollNo |
|||
* @param @return 参数 |
|||
* @return List<Map<String,Object>> 返回类型 |
|||
* @throws |
|||
*/ |
|||
List<Map<String, Object>> getRollTrees(String site, String rollNo); |
|||
|
|||
} |
|||
@ -0,0 +1,87 @@ |
|||
package com.gaotao.modules.pda.dao.impl; |
|||
|
|||
|
|||
import com.gaotao.modules.pda.dao.TransNoDao; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.dao.DataAccessException; |
|||
import org.springframework.jdbc.core.CallableStatementCallback; |
|||
import org.springframework.jdbc.core.CallableStatementCreator; |
|||
import org.springframework.jdbc.core.JdbcTemplate; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
import java.sql.*; |
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* |
|||
* @ClassName: TransNoDaoImpl |
|||
* @Description: 通用交易号方法实现 |
|||
* @author lirui |
|||
* @date 2018年4月8日 |
|||
* |
|||
*/ |
|||
@Repository |
|||
public class TransNoDaoImpl implements TransNoDao { |
|||
|
|||
@Autowired |
|||
private JdbcTemplate jdbcTemplate; |
|||
|
|||
@Override |
|||
public String getTransNo(String site, String type) { |
|||
String sql = "SELECT dbo.Get_TransNo(?,?)"; |
|||
List<Object> params = new ArrayList<>(); |
|||
params.add(site); |
|||
params.add(type); |
|||
return jdbcTemplate.queryForObject(sql, String.class, params.toArray()); |
|||
} |
|||
|
|||
@Override |
|||
public void updateTransNo(String site, String type) { |
|||
String sql = "exec dbo.UpdateTransNo ?,?"; |
|||
List<Object> params = new ArrayList<>(); |
|||
params.add(site); |
|||
params.add(type); |
|||
jdbcTemplate.update(sql,params.toArray()); |
|||
} |
|||
|
|||
@Override |
|||
public List<Map<String, Object>> getRollTrees(String site, String rollNo) { |
|||
return jdbcTemplate.execute(new CallableStatementCreator() { |
|||
|
|||
@Override |
|||
public CallableStatement createCallableStatement(Connection con) throws SQLException { |
|||
String sql = "EXEC getRollTrees ?,?"; |
|||
CallableStatement cs = con.prepareCall(sql); |
|||
cs.setString(1, site); |
|||
cs.setString(2, rollNo); |
|||
return cs; |
|||
} |
|||
}, new CallableStatementCallback<List<Map<String, Object>>>() { |
|||
@Override |
|||
public List<Map<String, Object>> doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { |
|||
List<Map<String, Object>> list = new ArrayList<>(); |
|||
ResultSet rs = cs.executeQuery(); |
|||
ResultSetMetaData rmd = rs.getMetaData(); |
|||
int columnCount = rmd.getColumnCount(); |
|||
System.out.println("columnCount: " + columnCount); |
|||
while (rs.next()) { |
|||
Map<String, Object> rowMap = new HashMap<>(); |
|||
rowMap.put("site", rs.getString("site")); |
|||
rowMap.put("rollNo", rs.getString("rollNo")); |
|||
rowMap.put("oriRollNo", rs.getString("oriRollNo")); |
|||
rowMap.put("rollLevel", rs.getString("rollLevel")); |
|||
list.add(rowMap); |
|||
} |
|||
rs.close(); |
|||
return list; |
|||
} |
|||
}); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,102 @@ |
|||
package com.gaotao.modules.pda.utils; |
|||
|
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.jdbc.core.JdbcTemplate; |
|||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.text.ParseException; |
|||
import java.text.SimpleDateFormat; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Component |
|||
public class DBUtil { |
|||
@Autowired |
|||
public JdbcTemplate jdbcTemplate; |
|||
|
|||
@Autowired |
|||
public NamedParameterJdbcTemplate parameterJdbcTemplate; |
|||
|
|||
private Logger logger = LoggerFactory.getLogger(getClass()); |
|||
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|||
|
|||
public boolean exist(String sql, Object... args) { |
|||
long start = System.currentTimeMillis(); |
|||
try { |
|||
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, args); |
|||
return rows.size() > 0; |
|||
} finally { |
|||
log("SQL(" + (System.currentTimeMillis() - start) + "ms):" + sql, args); |
|||
} |
|||
} |
|||
|
|||
public int execute(String sql, Object... args) { |
|||
long start = System.currentTimeMillis(); |
|||
try { |
|||
return jdbcTemplate.update(sql, args); |
|||
} finally { |
|||
log("SQL(" + (System.currentTimeMillis() - start) + "ms):" + sql, args); |
|||
} |
|||
} |
|||
|
|||
public Map<String, Object> findOne(String sql, Object... args) { |
|||
long start = System.currentTimeMillis(); |
|||
try { |
|||
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, args); |
|||
if (rows.size() > 0) { |
|||
return rows.get(0); |
|||
} |
|||
return null; |
|||
} catch (Exception ex) { |
|||
throw ex; |
|||
} finally { |
|||
log("SQL(" + (System.currentTimeMillis() - start) + "ms):" + sql, args); |
|||
} |
|||
} |
|||
|
|||
public List<Map<String, Object>> findList(String sql, Object... args) { |
|||
long start = System.currentTimeMillis(); |
|||
try { |
|||
return jdbcTemplate.queryForList(sql, args); |
|||
} finally { |
|||
log("SQL(" + (System.currentTimeMillis() - start) + "ms):" + sql, args); |
|||
} |
|||
} |
|||
|
|||
public void log(String sql, Object... args) { |
|||
StringBuilder parameters = new StringBuilder(); |
|||
for (Object obj : args) { |
|||
parameters.append(obj.toString()).append(","); |
|||
} |
|||
logger.info(sql + " -- parameters=" + parameters.toString()); |
|||
} |
|||
|
|||
public Date formatDate(Object date) { |
|||
if (date == null) return null; |
|||
try { |
|||
return dateFormat.parse(date.toString()); |
|||
} catch (ParseException e) { |
|||
e.printStackTrace(); |
|||
return null; |
|||
} |
|||
} |
|||
|
|||
public Double getDouble(Object obj) { |
|||
if (obj == null) return null; |
|||
return Double.parseDouble(obj.toString()); |
|||
} |
|||
|
|||
public Boolean getBoolean(Object obj) { |
|||
if (obj == null) return null; |
|||
return obj.toString().equalsIgnoreCase("Y"); |
|||
} |
|||
|
|||
public String getString(Object obj) { |
|||
if (obj == null) return ""; |
|||
return obj.toString().toString(); |
|||
} |
|||
} |
|||
@ -0,0 +1,135 @@ |
|||
package com.gaotao.modules.pda.utils; |
|||
|
|||
import java.text.ParseException; |
|||
import java.text.SimpleDateFormat; |
|||
import java.util.Calendar; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* |
|||
* @ClassName: DateUtils |
|||
* @Description: 日期的工具类 |
|||
* @author LR |
|||
* @date 2017年6月12日 下午5:08:39 |
|||
* |
|||
*/ |
|||
public class DateUtils { |
|||
|
|||
/** |
|||
* |
|||
* |
|||
* @author LR |
|||
* @Description: 获取当前时间的年月日时分秒 |
|||
* @UpdateUser LR |
|||
* @UpdateRemark [说明本次修改内容] |
|||
* |
|||
*/ |
|||
public static String getStringNow() { |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|||
return sdf.format(new Date()); |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: getStringDate |
|||
* @author LR |
|||
* @Description: 返回String类型的yyyy-MM-dd的日期 |
|||
* @param @param date |
|||
* @param @return 设定文件 |
|||
* @return String 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static String getStringDate(Date date) { |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
|||
return sdf.format(date); |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: getStringDate |
|||
* @author LR |
|||
* @Description: 根据模版获取相应时间的格式 |
|||
* @param @param date |
|||
* @param @param parten |
|||
* @param @return 设定文件 |
|||
* @return String 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static String getStringDate(Date date, String parten) { |
|||
SimpleDateFormat sdf = new SimpleDateFormat(parten); |
|||
return sdf.format(date); |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: getYesterday |
|||
* @author LR |
|||
* @Description: 获取昨日的String类型的yyyy-MM-dd的日期 |
|||
* @param @return 设定文件 |
|||
* @return String 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static String getStringYesterday() { |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
|||
Calendar cal = Calendar.getInstance(); |
|||
cal.add(Calendar.DAY_OF_MONTH, -1); |
|||
return sdf.format(cal.getTime()); |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: getYesterday |
|||
* @author LR |
|||
* @Description: 获取明天的String类型的yyyy-MM-dd的日期 |
|||
* @param @return 设定文件 |
|||
* @return String 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static String getStringTomorrow() { |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
|||
Calendar cal = Calendar.getInstance(); |
|||
cal.add(Calendar.DAY_OF_MONTH, +1); |
|||
return sdf.format(cal.getTime()); |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* |
|||
* @author LR |
|||
* @throws ParseException |
|||
* @Description: String转换date |
|||
* @UpdateUser LR |
|||
* @UpdateRemark [说明本次修改内容] |
|||
* |
|||
*/ |
|||
public static Date getDate(String time) throws ParseException { |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
|||
return sdf.parse(time); |
|||
|
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: getLastMonth |
|||
* @author LR |
|||
* @Description: 获取上一个月的YYYY-MM |
|||
* @param @param date |
|||
* @param @return 设定文件 |
|||
* @return String 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static String getLastMonth(Date date) { |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); |
|||
Calendar cal = Calendar.getInstance(); |
|||
cal.setTime(date); |
|||
cal.add(Calendar.MONTH, -1); |
|||
Date lastDate = cal.getTime(); |
|||
return sdf.format(lastDate); |
|||
} |
|||
|
|||
public static Date getDateByParten(String date, String parten) |
|||
throws ParseException { |
|||
SimpleDateFormat sdf = new SimpleDateFormat(parten); |
|||
return sdf.parse(date); |
|||
} |
|||
} |
|||
@ -0,0 +1,156 @@ |
|||
package com.gaotao.modules.pda.utils; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @ClassName: DecimalUtils |
|||
* @Description: 进制专用工具类 |
|||
* @author LR |
|||
* @date 2019年7月5日 |
|||
* |
|||
*/ |
|||
public class DecimalUtils { |
|||
|
|||
/** |
|||
* @Title: getDecimalNums |
|||
* @Description: 获取当前数据进制转换成的(返回十进制对应的位数,从右往左方向) |
|||
* @author LR |
|||
* @date 2019年7月5日 |
|||
* @param @param nums |
|||
* @param @param i |
|||
* @param @return 参数 |
|||
* @return char [] 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static List<Integer> convertDecimalToArbitrary(List<Integer> resultInt, int nums, int decimal) { |
|||
//循环算出商 余数 |
|||
int quotient = nums / decimal; |
|||
int remainder = nums % decimal; |
|||
resultInt.add(remainder); |
|||
//判断是否递归调用 |
|||
if(quotient >= decimal){ |
|||
resultInt = convertDecimalToArbitrary(resultInt, quotient, decimal); |
|||
}else{ |
|||
resultInt.add(quotient); |
|||
} |
|||
return resultInt; |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: getNextArr |
|||
* @Description: 获取下一个字符数组 |
|||
* @author LR |
|||
* @date 2019年7月5日 |
|||
* @param @param tempArr |
|||
* @param @param num |
|||
* @param @param index |
|||
* @param @return 参数 |
|||
* @return char[] 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static char[] getNextArr(char[] tempArr, int index, char[] strArr, Map<Character, Integer> charMap) { |
|||
//获取当前的字符 |
|||
char temp = tempArr[index]; |
|||
//获取字符对应的下表 |
|||
int tempNums = charMap.get(temp) + 1; |
|||
//判断是否需要向前进1 |
|||
if(tempNums == 34){ |
|||
//重置当前的位数 |
|||
tempArr[index] = '0'; |
|||
index -= 1; |
|||
//但是index必须大于零 |
|||
if(index == -1){ |
|||
System.err.println("超过上限!"); |
|||
return null; |
|||
} |
|||
//递归算法 |
|||
tempArr = getNextArr(tempArr, index, strArr, charMap); |
|||
}else{ |
|||
tempArr[index] = strArr[tempNums]; |
|||
} |
|||
return tempArr; |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: convertArbitraryToDeciamal |
|||
* @Description: 任意进制转换成十进制数子 |
|||
* @author LR |
|||
* @date 2019年7月8日 |
|||
* @param @param tempArr |
|||
* @param @param strArr |
|||
* @param @param decimal |
|||
* @param @return 参数 |
|||
* @return List<Integer> 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static int convertArbitraryToDeciamal(char[] tempArr, Map<Character, Integer> charMap, int decimal){ |
|||
List<Integer> intNums = new ArrayList<>(); |
|||
//获取序列对应的字符串 |
|||
for(int i = 0; i <tempArr.length; i++){ |
|||
//当前字符串序列 |
|||
char temp = tempArr[i]; |
|||
//获取当前字符对应的数据 |
|||
intNums.add(charMap.get(temp)); |
|||
} |
|||
//获取当前的集合对应的数字大小 |
|||
double resultNums = 0; |
|||
int len = intNums.size(); |
|||
for(int i = 1; i <= len; i++){ |
|||
resultNums += intNums.get(i-1) * Math.pow(decimal, len-i); |
|||
} |
|||
return (int)resultNums; |
|||
} |
|||
|
|||
|
|||
public static void main(String[] args) { |
|||
/* |
|||
* List<Integer> resultInt = new ArrayList<>(); resultInt = |
|||
* convertDecimalToArbitrary(resultInt, 100000, 34); |
|||
* Collections.reverse(resultInt); System.out.println(resultInt.toString()); |
|||
*/ |
|||
char[] strArr = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', |
|||
'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; |
|||
Map<Integer, Character> intMap = new HashMap<>(); |
|||
Map<Character, Integer> charMap = new HashMap<>(); |
|||
//把字符存入map中形成对应的关系 |
|||
for(int i = 0; i < strArr.length; i++){ |
|||
intMap.put(i, strArr[i]); |
|||
charMap.put(strArr[i], i); |
|||
} |
|||
//设置起始值 |
|||
char[] startArr = new char[]{'0', '0', '0', '0', '0'}; |
|||
char[] tempArr = new char[5]; |
|||
Map<Integer, String> resultMap = new HashMap<>(); |
|||
//把第一个数值直接缓存进去 |
|||
resultMap.put(0, String.copyValueOf(startArr)); |
|||
//赋初始值 |
|||
tempArr = startArr; |
|||
int byteToMb = 1024 * 1024; |
|||
Runtime rt = Runtime.getRuntime(); |
|||
long vmTotal = rt.totalMemory() / byteToMb; |
|||
long vmFree = rt.freeMemory() / byteToMb; |
|||
long vmUse = vmTotal - vmFree; |
|||
System.out.println("JVM内存已用的空间为:" + vmUse + " MB"); |
|||
long start_mis = System.currentTimeMillis(); |
|||
for(int i = 1; i < 10000000; i++){ |
|||
tempArr = getNextArr(tempArr, 4, strArr, charMap); |
|||
resultMap.put(i, String.copyValueOf(tempArr)); |
|||
} |
|||
long end_mis = System.currentTimeMillis(); |
|||
long vmTotal1 = rt.totalMemory() / byteToMb; |
|||
long vmFree1 = rt.freeMemory() / byteToMb; |
|||
long vmUse1 = vmTotal1 - vmFree1; |
|||
System.out.println("JVM内存已用的空间为:" + vmUse1 + " MB"); |
|||
System.out.println(end_mis - start_mis); |
|||
System.out.println(resultMap.size()); |
|||
System.out.println(String.valueOf(tempArr)); |
|||
int resultNums = convertArbitraryToDeciamal(resultMap.get(98).toCharArray(), charMap, 34); |
|||
System.out.println(resultNums); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,250 @@ |
|||
package com.gaotao.modules.pda.utils;//package com.gaotao.modules.pda.utils; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import com.gaotao.common.utils.R; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringEscapeUtils; |
|||
import org.apache.http.*; |
|||
import org.apache.http.client.HttpClient; |
|||
import org.apache.http.client.config.RequestConfig; |
|||
import org.apache.http.client.entity.UrlEncodedFormEntity; |
|||
import org.apache.http.client.methods.HttpGet; |
|||
import org.apache.http.client.methods.HttpPost; |
|||
import org.apache.http.entity.StringEntity; |
|||
import org.apache.http.impl.client.HttpClients; |
|||
import org.apache.http.message.BasicNameValuePair; |
|||
import org.apache.http.util.EntityUtils; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* |
|||
* @ClassName: HttpClientUtil |
|||
* @Description: 处理http请求 |
|||
* @author lirui |
|||
* @date 2018年4月7日 |
|||
* |
|||
*/ |
|||
@Slf4j |
|||
public class HttpClientUtil { |
|||
|
|||
/** |
|||
* |
|||
* @Title: doGet |
|||
* @Description: get请求 |
|||
* @author lirui |
|||
* @date 2018年4月28日 |
|||
* @param @param url |
|||
* @param @param paramsMap |
|||
* @param @return 参数 |
|||
* @return ResponseData 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static ResponseData doGet(String url,Map<String, String> paramsMap){ |
|||
ResponseData responseData = new ResponseData(); |
|||
List<NameValuePair> params = new ArrayList<NameValuePair>(); |
|||
//设置参数 |
|||
for(Map.Entry<String, String> entry : paramsMap.entrySet()){ |
|||
params.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); |
|||
} |
|||
try { |
|||
//转字符串参数 |
|||
String str = EntityUtils.toString(new UrlEncodedFormEntity(params,Consts.UTF_8)); |
|||
HttpClient httpClient = HttpClients.createDefault(); |
|||
HttpGet httpGet = new HttpGet(url+"?"+str); |
|||
//设置请求的配置数据 |
|||
RequestConfig config = RequestConfig.custom() |
|||
.setConnectTimeout(180000) |
|||
.setConnectionRequestTimeout(120000).build(); |
|||
httpGet.setConfig(config); |
|||
HttpResponse response = httpClient.execute(httpGet); |
|||
log.info("发送sap请求 ----------------"); |
|||
//获取请求的状态码 |
|||
int statusCode = response.getStatusLine().getStatusCode(); |
|||
if(statusCode==HttpStatus.SC_OK){ |
|||
responseData.setSuccess(true); |
|||
responseData.setCode(statusCode+""); |
|||
HttpEntity entity = response.getEntity(); |
|||
log.info("发送sap成功 ----------------"); |
|||
String result = StringEscapeUtils.unescapeHtml4(EntityUtils.toString(entity,Consts.UTF_8)); |
|||
responseData.setMsg(result); |
|||
}else{ |
|||
log.info("发送sap失败 ----------------"); |
|||
responseData.setCode(statusCode+""); |
|||
responseData.setMsg("错误码:"+statusCode); |
|||
} |
|||
} catch (ParseException e) { |
|||
|
|||
e.printStackTrace(); |
|||
} catch (IOException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return responseData; |
|||
} |
|||
|
|||
/** |
|||
* |
|||
* @Title: doPost |
|||
* @Description: TODO(这里用一句话描述这个方法的作用) |
|||
* @author lirui |
|||
* @date 2018年4月28日 |
|||
* @param @param url |
|||
* @param @param paramsMap |
|||
* @param @return 参数 |
|||
* @return ResponseData 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static R doPost(String url,Map<String, String> paramsMap){ |
|||
|
|||
List<NameValuePair> params = new ArrayList<NameValuePair>(); |
|||
//设置参数 |
|||
for(Map.Entry<String, String> entry : paramsMap.entrySet()){ |
|||
params.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); |
|||
} |
|||
try { |
|||
HttpClient httpClient = HttpClients.createDefault(); |
|||
HttpPost httpPost = new HttpPost(url); |
|||
//设置请求的配置数据 |
|||
RequestConfig config = RequestConfig.custom() |
|||
.setConnectTimeout(180000) |
|||
.setConnectionRequestTimeout(120000).build(); |
|||
httpPost.setConfig(config); |
|||
HttpResponse response = httpClient.execute(httpPost); |
|||
//获取请求的状态码 |
|||
int statusCode = response.getStatusLine().getStatusCode(); |
|||
if(statusCode==HttpStatus.SC_OK){ |
|||
HttpEntity entity = response.getEntity(); |
|||
String result = StringEscapeUtils.unescapeHtml4(EntityUtils.toString(entity,Consts.UTF_8)); |
|||
return R.ok(result); |
|||
}else{ |
|||
return R.error(statusCode,"错误码:"+statusCode); |
|||
} |
|||
} catch (ParseException e) { |
|||
e.printStackTrace(); |
|||
} catch (IOException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return R.ok(); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* |
|||
* @Title: doPost |
|||
* @Description: post请求数据不封装 |
|||
* @author lirui |
|||
* @date 2018年4月28日 |
|||
* @param @param url |
|||
* @param @param paramsMap |
|||
* @param @return 参数 |
|||
* @return ResponseData 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static ResponseData doPostSendEntity(String url, Map<String, Object> paramsMap){ |
|||
ResponseData responseData = new ResponseData(); |
|||
List<NameValuePair> params = new ArrayList<NameValuePair>(); |
|||
//设置参数 |
|||
for(Map.Entry<String, Object> entry : paramsMap.entrySet()){ |
|||
params.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString())); |
|||
} |
|||
try { |
|||
HttpClient httpClient = HttpClients.createDefault(); |
|||
HttpPost httpPost = new HttpPost(url); |
|||
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params, "UTF-8"); |
|||
httpPost.setEntity(formEntity); |
|||
formEntity.setContentType("application/x-www-form-urlencoded"); |
|||
//设置请求的配置数据 |
|||
RequestConfig config = RequestConfig.custom() |
|||
.setConnectTimeout(180000) |
|||
.setConnectionRequestTimeout(120000).build(); |
|||
httpPost.setConfig(config); |
|||
HttpResponse response = httpClient.execute(httpPost); |
|||
//获取请求的状态码 |
|||
int statusCode = response.getStatusLine().getStatusCode(); |
|||
if(statusCode == HttpStatus.SC_OK){ |
|||
HttpEntity entity = response.getEntity(); |
|||
String result = StringEscapeUtils.unescapeHtml4(EntityUtils.toString(entity,Consts.UTF_8)); |
|||
Map<String, Object> resultMap = JSON.parseObject(result); |
|||
statusCode = (int) resultMap.get("StatusCode"); |
|||
responseData.setCode(statusCode+""); |
|||
String msg = (String) resultMap.get("ResultMsg"); |
|||
//成功失败区分开来 |
|||
if(HttpStatus.SC_OK == statusCode) { |
|||
responseData.setSuccess(true); |
|||
}else { |
|||
responseData.setSuccess(false); |
|||
} |
|||
responseData.setMsg(msg); |
|||
}else{ |
|||
responseData.setCode(statusCode+""); |
|||
responseData.setMsg("错误码:"+statusCode); |
|||
} |
|||
} catch (Exception e) { |
|||
responseData.setMsg("异常"+e.getMessage()); |
|||
e.printStackTrace(); |
|||
} |
|||
return responseData; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* |
|||
* @Title: doPostSendForm |
|||
* @Description: 请求form请求数据 |
|||
* @author LR |
|||
* @date 2019年11月22日 |
|||
* @param @param url |
|||
* @param @param paramsMap |
|||
* @param @return 参数 |
|||
* @return ResponseData 返回类型 |
|||
* @throws |
|||
*/ |
|||
public static ResponseData doPostByRaw(String url, Object inData){ |
|||
ResponseData responseData = new ResponseData(); |
|||
try { |
|||
HttpClient httpClient = HttpClients.createDefault(); |
|||
HttpPost httpPost = new HttpPost(url); |
|||
String jsonStr = JSON.toJSONString(inData); |
|||
StringEntity requestEntity = new StringEntity(jsonStr, "UTF-8"); |
|||
requestEntity.setContentEncoding("UTF-8"); |
|||
httpPost.setHeader("Content-type", "application/json"); |
|||
httpPost.setEntity(requestEntity); |
|||
//设置请求的配置数据 |
|||
RequestConfig config = RequestConfig.custom() |
|||
.setConnectTimeout(180000) |
|||
.setConnectionRequestTimeout(120000).build(); |
|||
httpPost.setConfig(config); |
|||
HttpResponse response = httpClient.execute(httpPost); |
|||
//获取请求的状态码 |
|||
int statusCode = response.getStatusLine().getStatusCode(); |
|||
if(statusCode== HttpStatus.SC_OK){ |
|||
responseData.setSuccess(true); |
|||
responseData.setCode(statusCode+""); |
|||
HttpEntity entity = response.getEntity(); |
|||
String result = StringEscapeUtils.unescapeHtml4(EntityUtils.toString(entity, Consts.UTF_8)); |
|||
Map<String, Object> resultMap = JSON.parseObject(result); |
|||
statusCode = (int) resultMap.get("StatusCode"); |
|||
responseData.setCode(statusCode+""); |
|||
String msg = (String) resultMap.get("ResultMsg"); |
|||
//成功失败区分开来 |
|||
if(HttpStatus.SC_OK == statusCode) { |
|||
responseData.setSuccess(true); |
|||
}else { |
|||
responseData.setSuccess(false); |
|||
} |
|||
responseData.setMsg(msg); |
|||
}else{ |
|||
responseData.setCode(statusCode+""); |
|||
responseData.setMsg("错误码:"+statusCode); |
|||
} |
|||
} catch (ParseException e) { |
|||
e.printStackTrace(); |
|||
} catch (IOException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return responseData; |
|||
} |
|||
} |
|||
@ -0,0 +1,57 @@ |
|||
package com.gaotao.modules.pda.utils; |
|||
|
|||
import java.security.MessageDigest; |
|||
import java.security.NoSuchAlgorithmException; |
|||
|
|||
/* |
|||
* MD5 算法 |
|||
*/ |
|||
public class MD5 { |
|||
|
|||
// 全局数组 |
|||
private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", |
|||
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; |
|||
|
|||
public MD5() { |
|||
} |
|||
|
|||
// 返回形式为数字跟字符串 |
|||
private static String byteToArrayString(byte bByte) { |
|||
int iRet = bByte; |
|||
// System.out.println("iRet="+iRet); |
|||
if (iRet < 0) { |
|||
iRet += 256; |
|||
} |
|||
int iD1 = iRet / 16; |
|||
int iD2 = iRet % 16; |
|||
return strDigits[iD1] + strDigits[iD2]; |
|||
} |
|||
|
|||
|
|||
// 转换字节数组为16进制字串 |
|||
private static String byteToString(byte[] bByte) { |
|||
StringBuffer sBuffer = new StringBuffer(); |
|||
for (int i = 0; i < bByte.length; i++) { |
|||
sBuffer.append(byteToArrayString(bByte[i])); |
|||
} |
|||
return sBuffer.toString(); |
|||
} |
|||
|
|||
public static String GetMD5Code(String strObj) { |
|||
String resultString = null; |
|||
try { |
|||
resultString = new String(strObj); |
|||
MessageDigest md = MessageDigest.getInstance("MD5"); |
|||
// md.digest() 该函数返回值为存放哈希值结果的byte数组 |
|||
resultString = byteToString(md.digest(strObj.getBytes())); |
|||
} catch (NoSuchAlgorithmException ex) { |
|||
ex.printStackTrace(); |
|||
} |
|||
return resultString; |
|||
} |
|||
|
|||
public static void main(String[] args) { |
|||
String str = GetMD5Code("123456"); |
|||
System.out.println(str); |
|||
} |
|||
} |
|||
@ -0,0 +1,69 @@ |
|||
package com.gaotao.modules.pda.utils; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* |
|||
* @ClassName: ResponseData |
|||
* @Description: 信息返回类 |
|||
* @author lirui |
|||
* @date 2018年3月29日 |
|||
* |
|||
*/ |
|||
public class ResponseData implements Serializable { |
|||
private static final long serialVersionUID = 8108588679509838467L; |
|||
|
|||
private boolean success = false; |
|||
|
|||
private String msg = ""; |
|||
|
|||
private Object obj = null;// 存数据 |
|||
|
|||
private String code = "400";// 200正常401失效500弹窗 |
|||
|
|||
public ResponseData() { |
|||
// TODO Auto-generated constructor stub |
|||
} |
|||
|
|||
public ResponseData(String msg) { |
|||
super(); |
|||
this.msg = msg; |
|||
} |
|||
|
|||
public ResponseData(Object obj) { |
|||
super(); |
|||
this.obj = obj; |
|||
} |
|||
|
|||
public boolean isSuccess() { |
|||
return success; |
|||
} |
|||
|
|||
public void setSuccess(boolean success) { |
|||
this.success = success; |
|||
} |
|||
|
|||
public String getMsg() { |
|||
return msg; |
|||
} |
|||
|
|||
public void setMsg(String msg) { |
|||
this.msg = msg; |
|||
} |
|||
|
|||
public Object getObj() { |
|||
return obj; |
|||
} |
|||
|
|||
public void setObj(Object obj) { |
|||
this.obj = obj; |
|||
} |
|||
|
|||
public String getCode() { |
|||
return code; |
|||
} |
|||
|
|||
public void setCode(String code) { |
|||
this.code = code; |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue