|
@@ -1,15 +1,27 @@
|
|
|
package com.uas.eis.serviceImpl;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.uas.eis.core.support.TokenHandler;
|
|
|
import com.uas.eis.dao.BaseDao;
|
|
|
+import com.uas.eis.entity.QueryArgs;
|
|
|
+import com.uas.eis.entity.QueryConfig;
|
|
|
+import com.uas.eis.entity.QueryConfigDetail;
|
|
|
import com.uas.eis.service.UserService;
|
|
|
+import com.uas.eis.utils.BaseUtil;
|
|
|
|
|
|
import net.sf.json.JSONObject;
|
|
|
|
|
@@ -61,5 +73,162 @@ public class UserServiceImpl implements UserService {
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
+ public String getUsers(){
|
|
|
+ String sql = "SELECT EM_NAME,EM_CODE,TO_CHAR(EM_INDATE,'yyyy-MM-dd hh24:mm:ss') EM_INDATE FROM EMPLOYEE WHERE EM_CODE = 'U0818'";
|
|
|
+ Map<String, Object> map = baseDao.getJdbcTemplate().queryForMap(sql);
|
|
|
+ List<Map<String,Object>> list = baseDao.queryForList("SELECT * FROM UPLOADDOCDETAIL WHERE UDD_UDID=284");
|
|
|
+ System.out.println(list);
|
|
|
+ return BaseUtil.parseDataToJson(map,list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 标准查询API
|
|
|
+ * @param code 查询方案Code
|
|
|
+ * @param param 参数
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Object query(String code, String param){
|
|
|
+ Map<String, Object> resultmap = new HashMap<String, Object>();
|
|
|
+ List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
|
|
|
+ com.alibaba.fastjson.JSONObject json = JSON.parseObject(param);
|
|
|
+
|
|
|
+ String getInOutParamsSql = "select * from queryArgs where qa_qccode = ?";
|
|
|
+ List<QueryArgs> inOutParamList = baseDao.query(getInOutParamsSql, QueryArgs.class, code);
|
|
|
+ Map<String, String> argsMap = new HashMap<String, String>();
|
|
|
+ Map<String, String> argsTypeMap = new HashMap<String, String>();
|
|
|
+ for(QueryArgs args : inOutParamList){
|
|
|
+ argsMap.put(args.getQa_param(),json.getString(args.getQa_param()));
|
|
|
+ argsTypeMap.put(args.getQa_param(), args.getQa_paramtype());
|
|
|
+ }
|
|
|
+
|
|
|
+ checkParam(code, param);
|
|
|
+
|
|
|
+ String getQueryConfigsql = "select * from queryconfig where qc_code=? order by qc_detno";
|
|
|
+ List<QueryConfig> queryConfigList = baseDao.query(getQueryConfigsql, QueryConfig.class, code);
|
|
|
+ if(queryConfigList != null){
|
|
|
+ List<String> valueList = new ArrayList<String>();
|
|
|
+ Object mainField = baseDao.getFieldDataByCondition("queryArgs", "qa_param", "qa_qccode='"+code+"' and qa_ismainfield=1");
|
|
|
+ if(mainField != null && "array".equals(argsTypeMap.get(mainField))){
|
|
|
+ String argValue = argsMap.get(mainField);
|
|
|
+ String[] valueArray = argValue.replace("[", "").replace("]", "").replaceAll("\"", "").split(",");
|
|
|
+ valueList = new ArrayList<String>(Arrays.asList(valueArray));
|
|
|
+ }else{
|
|
|
+ valueList.add(argsMap.get(mainField));
|
|
|
+ }
|
|
|
+ for(int i = 0; i < valueList.size(); i++){
|
|
|
+ Map<String, Object> map = new HashMap<String, Object>();
|
|
|
+ for(QueryConfig queryConfig : queryConfigList){
|
|
|
+
|
|
|
+ String getQueryFieldssql = "select * from queryConfigDetail where qcd_qcid = ?";
|
|
|
+ List<QueryConfigDetail> queryFieldsList = baseDao.query(getQueryFieldssql, QueryConfigDetail.class, queryConfig.getQc_id());
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append("select ");
|
|
|
+ for(QueryConfigDetail field : queryFieldsList){
|
|
|
+ sb.append(field.getQcd_field() + " \"" + field.getQcd_mappingkey() + "\",");
|
|
|
+ }
|
|
|
+ sb.deleteCharAt(sb.length()-1);
|
|
|
+ sb.append(" from " + queryConfig.getQc_table());
|
|
|
+
|
|
|
+ String condition = queryConfig.getQc_condition();
|
|
|
+ Pattern pattern = Pattern.compile("@[\\w]+");
|
|
|
+ Matcher m = pattern.matcher(condition);
|
|
|
+ List<String> matchList = new ArrayList<String>();
|
|
|
+ while(m.find()){
|
|
|
+ matchList.add(m.group());
|
|
|
+ }
|
|
|
+ for(String match : matchList){
|
|
|
+
|
|
|
+ String value = argsMap.get(match.replace("@", ""));
|
|
|
+ value = value.replaceAll("\"", "'");
|
|
|
+ condition = condition.replaceAll(match, value);
|
|
|
+ }else{
|
|
|
+ condition = condition.replaceAll(match, "'"+argsMap.get(match.replace("@", ""))+"'");
|
|
|
+ }*/
|
|
|
+ if(match.equals("@"+mainField)){
|
|
|
+ condition = condition.replaceAll(match, "'"+valueList.get(i)+"'");
|
|
|
+ }else{
|
|
|
+ condition = condition.replaceAll(match, "'"+argsMap.get(match.replace("@", ""))+"'");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sb.append(" " + condition);
|
|
|
+
|
|
|
+ if(!StringUtils.isEmpty(queryConfig.getQc_orderby())){
|
|
|
+ sb.append(" " + queryConfig.getQc_orderby());
|
|
|
+ }
|
|
|
+ if(queryFieldsList != null && queryFieldsList.size()>0){
|
|
|
+ if(queryConfig.getQc_isArray() != null && queryConfig.getQc_isArray() == 0){
|
|
|
+ map.put(queryConfig.getQc_mapkey(), baseDao.getJdbcTemplate().queryForMap(sb.toString()));
|
|
|
+ }else{
|
|
|
+ map.put(queryConfig.getQc_mapkey(), baseDao.queryForList(sb.toString()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(!StringUtils.isEmpty(queryConfig.getQc_return())){
|
|
|
+ String getReturnSql = "select " + queryConfig.getQc_return() + " from " + queryConfig.getQc_table() + " " + condition;
|
|
|
+ Map<String, Object> returnMap = baseDao.getJdbcTemplate().queryForMap(getReturnSql);
|
|
|
+ List<Object> list = baseDao.getFieldDatasByCondition("queryArgs", "qa_param", "qa_qccode='"+queryConfig.getQc_code()+"' and qa_relation="+queryConfig.getQc_id()+" order by qa_detno");
|
|
|
+ Iterator<Object> it = returnMap.values().iterator();
|
|
|
+ int j = 0;
|
|
|
+ while(it.hasNext()){
|
|
|
+ String value = String.valueOf(it.next());
|
|
|
+ argsMap.put(String.valueOf(list.get(j)), value);
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("记录日志");
|
|
|
+ }
|
|
|
+ if(valueList.size() > 1){
|
|
|
+ System.out.println(map);
|
|
|
+ resultList.add(map);
|
|
|
+ }else{
|
|
|
+ resultmap.putAll(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(valueList.size() > 1)
|
|
|
+ return resultList;
|
|
|
+ else
|
|
|
+ return resultmap;
|
|
|
+ }else{
|
|
|
+ return resultmap;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 传入参数的合法性校验
|
|
|
+ * @param code
|
|
|
+ * @param param
|
|
|
+ */
|
|
|
+ private void checkParam(String code, String param){
|
|
|
+ com.alibaba.fastjson.JSONObject json = JSON.parseObject(param);
|
|
|
+ if(StringUtils.isEmpty(code)){
|
|
|
+ BaseUtil.showError("查询方案编号不能为空");
|
|
|
+ }
|
|
|
+ if(json == null){
|
|
|
+ BaseUtil.showError("传入的参数个数不正确");
|
|
|
+ }
|
|
|
+ String getInParamsSql = "select * from queryArgs where qa_qccode = ? and qa_relation is null";
|
|
|
+ List<QueryArgs> inParamList = baseDao.query(getInParamsSql, QueryArgs.class, code);
|
|
|
+ if(inParamList.size() != json.size()){
|
|
|
+ BaseUtil.showError("传入的参数个数不正确");
|
|
|
+ }else{
|
|
|
+ for(QueryArgs queryArgs : inParamList){
|
|
|
+ if(json.getString(queryArgs.getQa_param()) == null){
|
|
|
+ BaseUtil.showError("传入的参数名不正确");
|
|
|
+ }else{
|
|
|
+ if("array".equals(queryArgs.getQa_paramtype())){
|
|
|
+ String stringArray = json.getString(queryArgs.getQa_param());
|
|
|
+ if(!(stringArray.contains("[") && stringArray.contains("]"))){
|
|
|
+ BaseUtil.showError("传入的参数:"+queryArgs.getQa_param()+"格式不正确");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|