Просмотр исходного кода

【众志祥EIS】【列表查询】

wuyx 2 недель назад
Родитель
Сommit
2959bea2cc

+ 13 - 11
src/main/java/com/uas/eis/controller/ERPController.java

@@ -1,18 +1,21 @@
 package com.uas.eis.controller;
 
+import com.uas.eis.core.config.SpObserver;
+import com.uas.eis.sdk.dto.QueryListReq;
+import com.uas.eis.sdk.dto.QueryOrderReq;
 import com.uas.eis.sdk.dto.QueryReq;
-import com.uas.eis.beans.result.Result;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.ERPService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.Map;
 
 /**
  * @author wuyx
- * @email wuyx@usoftchina.com
- * @date 2025-11-14
  */
 @RestController
 @RequestMapping("/api")
@@ -21,17 +24,16 @@ public class ERPController {
     private ERPService erpService;
     @RequestMapping(value="/queryList",method=RequestMethod.POST)
     @ResponseBody
-    public Map<String,Object> queryList(@RequestBody QueryReq queryReq){
-        Map<String,Object> res = new HashMap<>();
-        res.put("code", 0);
-        res.put("msg", "ok");
-        return res;
+    public ApiResult queryList(HttpServletRequest request, @RequestBody QueryListReq queryListReq){
+        SpObserver.putSp(request.getHeader("AccessKey"));
+        return ApiResponse.successRsp("1", "查询成功",request.getHeader("RequestId"), erpService.queryList(queryListReq));
     }
 
-    @RequestMapping(value="/mesapi/prod/query",method=RequestMethod.POST)
+    @RequestMapping(value="/queryOrder",method=RequestMethod.POST)
     @ResponseBody
-    public Map<String,Object> queryFromProd(@RequestBody QueryReq queryReq){
-        return erpService.getList(queryReq,"prod");
+    public ApiResult queryOrder(HttpServletRequest request, @RequestBody QueryOrderReq queryOrderReq){
+        SpObserver.putSp(request.getHeader("AccessKey"));
+        return ApiResponse.successRsp("1", "查询成功",request.getHeader("RequestId"), erpService.queryOrder(queryOrderReq));
     }
 
 }

+ 5 - 2
src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java

@@ -25,6 +25,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
     private static final String TIMESTAMP_KEY = "Timestamp";
     private static final String SIGN_KEY = "Signature";
     private static final String RequestId = "RequestId";
+    private static final String IGNORE_TIMESTAMP = "IGT";
     private static Map<String,String> tokenConfig = TokenProperties.getAllProperty();
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -43,12 +44,14 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
         String accessKey = request.getHeader(ACCESS_KEY);
         String requestId = request.getHeader(RequestId);
         String originSign = request.getHeader(SIGN_KEY);
+        String ignoreTime = request.getHeader(IGNORE_TIMESTAMP);
         logger.info("timestamp=="+timestamp);
         logger.info("accessKey=="+accessKey);
         logger.info("requestId=="+requestId);
         logger.info("originSign=="+originSign);
+        logger.info("IgnoreTime=="+ignoreTime);
 
-        String accessSecret = tokenConfig.get(accessKey);
+        String accessSecret = tokenConfig.get(ACCESS_SECRET);
         if (StringUtils.isEmpty(requestId)) {
             ApiResult apiResult = new ApiResult();
             apiResult.setCode(ErrorMessage.REQUESTID_ILLEGAL.getCode());
@@ -75,7 +78,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
 
         Long ts = Long.valueOf(timestamp);
         // 禁止超时签名
-        if (System.currentTimeMillis() - ts > SIGN_EXPIRED_TIME) {
+        if ((ignoreTime == null)&&System.currentTimeMillis() - ts > SIGN_EXPIRED_TIME) {
             ApiResult apiResult = new ApiResult();
             apiResult.setCode(ErrorMessage.TIMEOUT_ILLEGAL.getCode());
             apiResult.setMessage(ErrorMessage.TIMEOUT_ILLEGAL.getMessage());

+ 16 - 0
src/main/java/com/uas/eis/dao/BaseDao.java

@@ -708,6 +708,22 @@ public class BaseDao{
 		}
 	}
 
+	public boolean isDBSetting( String code) {
+		int count = getCount("select count(1)  from configs where caller='sys' and code='" + code + "'");
+		if (count==0){
+			return false;
+		}
+		Configs configs = jdbcTemplate.queryForObject("select *  from configs where caller='sys' and code=?",
+				new BeanPropertyRowMapper<Configs>(Configs.class), code);
+		if (configs != null) {
+			String data = configs.getData();
+			if ("YN".equals(configs.getData_type())) {
+				return String.valueOf(Constant.YES).equals(data);
+			}
+			return data == null ? false : true;
+		}
+		return false;
+	}
 	/**
 	 * 判断指定参数是否配置为“是”
 	 *

+ 39 - 0
src/main/java/com/uas/eis/sdk/dto/PaginatedResult.java

@@ -0,0 +1,39 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.sql.*;
+import java.util.*;
+/**
+ * 分页结果封装类
+ */
+@Data
+public class PaginatedResult {
+        private List<Map<String, Object>> data;
+        private int totalCount;
+        private int pageNum;
+        private int pageSize;
+
+        public PaginatedResult(List<Map<String, Object>> data, int totalCount,
+                               int pageNum, int pageSize) {
+            this.data = data;
+            this.totalCount = totalCount;
+            this.pageNum = pageNum;
+            this.pageSize = pageSize;
+        }
+        public int getTotalPages() {
+            return (int) Math.ceil((double) totalCount / pageSize);
+        }
+
+        @Override
+        public String toString() {
+            return String.format("PaginatedResult{totalCount=%d, pageNum=%d, pageSize=%d, totalPages=%d, dataSize=%d}",
+                    totalCount, pageNum, pageSize, getTotalPages(), data.size());
+        }
+}

+ 179 - 14
src/main/java/com/uas/eis/sdk/dto/QueryListReq.java

@@ -1,22 +1,187 @@
 package com.uas.eis.sdk.dto;
 
 
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.uas.eis.utils.CollectionUtil;
+import com.uas.eis.utils.StringUtil;
 import lombok.Data;
 
+import java.math.BigDecimal;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
 @Data
 public class QueryListReq {
-    private String code; //表单名称
-    @JsonProperty("FieldKeys")
-    private String fieldKeys; //字段名
-    @JsonProperty("FilterString")
-    private String filterString; //过滤条件
-    @JsonProperty("OrderString")
-    private String orderString; //排序条件
-    @JsonProperty("TopRowCount")
-    private Integer topRowCount = 0; //返回记录行数,0 不限制
-    @JsonProperty("StartRow")
-    private Integer startRow = 0; //起始行数(分页显示用) 0 默认从第一行记录
-    @JsonProperty("Limit")
-    private Integer limit = 2000; //最多行数 默认2000
+    private String code; //表单caller
+    private QueryListObj data;
+    @Data
+    public static class QueryListObj {
+        private Integer pageNum = 0; //返回记录行数,0 不限制
+        private Integer pageSize = 0; //起始行数(分页显示用) 0 默认从第一行记录
+        private List<Filter> filters ;
+        private List<SortBy> sortBy;
+
+        @Data
+        public static class Filter {
+            private String field; //筛选字段名
+            private String operator; //操作符(见下方列表)
+            private Object value; //单个值(eq/like/gt等时使用
+            /*
+            * ### operator 操作符枚举
+        | 操作符 | 说明 | SQL对应 | value示例 | values示例 |
+        |--------|------|---------|-----------|------------|
+        | `eq` | 等于 | `=` | `1` | - |
+        | `ne` | 不等于 | `!=` | `1` | - |
+        | `gt` | 大于 | `>` | `100` | - |
+        | `ge` | 大于等于 | `>=` | `100` | - |
+        | `lt` | 小于 | `<` | `100` | - |
+        | `le` | 小于等于 | `<=` | `100` | - |
+        | `like` | 模糊匹配 | `LIKE %value%` | `"张三"` | - |
+        | `in` | 在列表中 | `IN (...)` | - | `[1, 2, 3]` |
+        | `between` | 在范围内 | `BETWEEN ... AND ...` | - | `[18, 30]` |
+        * */
+            private List<Object> values; //多个值(in/between时使用)
+            /** 针对 `sortBy` 参数说明
+             | 参数名 | 类型 | 必填 | 默认值 | 说明 |
+             |--------|------|------|--------|------|
+             | `sortField` | string | 否 | - | 排序字段名 |
+             | `sortOrder` | string | 否 | asc | 排序方向:`asc`(升序)/ `desc`(降序) |
+             * */
+        }
+
+        @Data
+        public static class SortBy {
+            String sortField;//排序字段名
+            String sortOrder;//排序方向:`asc`(升序)/ `desc`(降序)
+        }
+
+        public String getOrderBy() {
+            if (sortBy == null || sortBy.isEmpty()) {
+                return "";
+            }
+            StringBuffer orderBy = new StringBuffer(" order by ");
+            for (SortBy sortByItem : sortBy) {
+                orderBy.append(sortByItem.getSortField()).append(" ").append(StringUtil.nvl(sortByItem.getSortOrder(),"asc"));
+            }
+            return orderBy.toString();
+        }
+        public class FilterResult {
+            private String whereClause;
+            private List<Object> parameters;
+
+            public FilterResult(String whereClause, List<Object> parameters) {
+                this.whereClause = whereClause;
+                this.parameters = parameters;
+            }
+
+            public String getWhereClause() { return whereClause; }
+            public List<Object> getParameters() { return parameters; }
+        }
+        public  FilterResult buildWhereClause() {
+            if (filters == null || filters.isEmpty()) {
+                return new FilterResult("", new ArrayList<>());
+            }
+
+            List<String> conditions = new ArrayList<>();
+            List<Object> parameters = new ArrayList<>();
+
+            for (Filter filter : filters) {
+                String condition = buildSingleCondition(filter, parameters);
+                if (condition != null && !condition.isEmpty()) {
+                    conditions.add(condition);
+                }
+            }
+
+            String whereClause = conditions.isEmpty() ? "" : " " + String.join(" AND ", conditions);
+            return new FilterResult(whereClause, parameters);
+        }
+        private String buildSingleCondition(Filter filter, List<Object> parameters) {
+            String field = filter.getField();
+            String operator = filter.getOperator();
+            Object value = filter.getValue();
+            List<Object> values = filter.getValues();
+
+            if (field == null || field.isEmpty() || operator == null) {
+                return null;
+            }
+
+            // 验证字段名
+            if (!field.matches("^[a-zA-Z0-9_]+$")) {
+                throw new IllegalArgumentException("Invalid field name: " + field);
+            }
+
+            String paramPlaceholder = "?"; // Oracle使用?作为参数占位符
+
+            switch (operator.toLowerCase()) {
+                case "eq":
+                    if (value == null) {
+                        return field + " IS NULL";
+                    }
+                    parameters.add(value);
+                    return field + " = " + paramPlaceholder;
+
+                case "ne":
+                    if (value == null) {
+                        return field + " IS NOT NULL";
+                    }
+                    parameters.add(value);
+                    return field + " != " + paramPlaceholder;
+
+                case "gt":
+                    if (value == null) return null;
+                    parameters.add(value);
+                    return field + " > " + paramPlaceholder;
+
+                case "ge":
+                    if (value == null) return null;
+                    parameters.add(value);
+                    return field + " >= " + paramPlaceholder;
+
+                case "lt":
+                    if (value == null) return null;
+                    parameters.add(value);
+                    return field + " < " + paramPlaceholder;
+
+                case "le":
+                    if (value == null) return null;
+                    parameters.add(value);
+                    return field + " <= " + paramPlaceholder;
+
+                case "like":
+                    if (value == null) return null;
+                    // Oracle LIKE 使用 % 作为通配符
+                    parameters.add("%" + value + "%");
+                    return field + " LIKE " + paramPlaceholder;
+
+                case "in":
+                    if (values == null || values.isEmpty()) return null;
+                    List<String> placeholders = new ArrayList<>();
+                    for (Object v : values) {
+                        placeholders.add(paramPlaceholder);
+                        parameters.add(v);
+                    }
+                    return field + " IN (" + String.join(", ", placeholders) + ")";
+
+                case "between":
+                    if (values == null || values.size() < 2) return null;
+                    Object start = values.get(0);
+                    Object end = values.get(1);
+                    if (start == null || end == null) return null;
+                    parameters.add(start);
+                    parameters.add(end);
+                    return field + " BETWEEN " + paramPlaceholder + " AND " + paramPlaceholder;
+
+                default:
+                    throw new IllegalArgumentException("Unsupported operator: " + operator);
+            }
+        }
+    }
+
+
+
 }
+
+
+

+ 9 - 0
src/main/java/com/uas/eis/sdk/dto/QueryOrderReq.java

@@ -0,0 +1,9 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+
+@Data
+public class QueryOrderReq {
+    private String code; //表单caller
+    private Integer data;
+}

+ 99 - 0
src/main/java/com/uas/eis/sdk/entity/DataList.java

@@ -0,0 +1,99 @@
+package com.uas.eis.sdk.entity;
+
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.utils.ContextUtil;
+import lombok.Data;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Data
+public class DataList {
+	private int dl_id;
+	private String dl_caller;
+	private String dl_tablename;
+	private String dl_title;
+	private String dl_relative;// 关联列表
+	private String dl_lockpage;
+	private String dl_pfcaption;
+	private String dl_fixedcondition;
+	private String dl_condition;
+	private String dl_search;
+	private String dl_recordfield;
+	private String dl_groupby;
+	private Float dl_total;
+	private String dl_orderby;
+	private String dl_distinct;
+	private String dl_keyfield;
+	private String dl_statusfield;
+	private Integer dl_pagesize;
+	private String dl_enid;
+	private String dl_pffield;
+	private Integer dl_fixedcols;
+	private String dl_entryfield;// 录入人字段
+	private List<DataListDetail> dataListDetails;
+
+	public String getSearchSql(String condition, String orderby, int page, int pageSize) {
+		StringBuffer aliasStr = new StringBuffer();
+		StringBuffer fieldStr = new StringBuffer();
+		condition = "".equals(condition) ? "" : " WHERE " + condition;
+		if (this.dl_groupby != null && this.dl_groupby.length() > 0) {
+			orderby=orderby!=null?orderby:"";
+			orderby = this.dl_groupby+" "+ orderby;
+		}
+		else if ((orderby == null || orderby.equals("")) && this.dl_keyfield != null && this.dl_keyfield.indexOf("@") < 0) {
+			orderby = "order by " + this.dl_keyfield + " desc";
+		}
+		else if (orderby != null && !orderby.equals("") && this.dl_keyfield != null && this.dl_keyfield.indexOf("@") < 0 && !orderby.equals(this.getDl_orderby()) ) {
+			orderby += ", " + this.dl_keyfield + " desc";
+		}
+		orderby = orderby == null ? " " : orderby;
+			String patternstr="";
+			for (DataListDetail detail : this.dataListDetails) {
+				if (fieldStr.length() > 0)
+					fieldStr.append(",");
+				String fieldString=detail.getDld_field().trim();
+				if (fieldString.contains(" ")) {
+					String aliasfield=fieldString.substring( fieldString.lastIndexOf(" ")).trim();
+					String repString=fieldString.substring(0, fieldString.lastIndexOf(" ")).trim();
+					patternstr="(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)("+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)";
+					Pattern pattern=Pattern.compile(patternstr,Pattern.CASE_INSENSITIVE);
+					while(condition.matches(".*(\\s|\\(|\\)|>|=|<|\\+|\\-|\\*|\\/)((?i)"+aliasfield+")(\\s|\\(|\\)|>|=|<|!=|<>|\\,|\\+|\\-|\\*|\\/)[^a-z].*")){
+						Matcher matcher=pattern.matcher(condition);
+						if(matcher.find())
+						{
+							String str2=condition.substring(0,matcher.start()+1);
+							String str3=condition.substring(matcher.end()-1,condition.length());
+							condition=str2+" ("+repString+") "+str3;
+						}
+					}
+				}
+				fieldStr.append(detail.getDld_field());
+			}
+			int start = ((page - 1) * pageSize + 1);
+			int end = page * pageSize;
+			StringBuffer sb = new StringBuffer("select * from (select TT.*, ROWNUM rn from (select ");
+			sb.append(fieldStr);
+			sb.append(" from ");
+			sb.append(this.dl_tablename);
+			sb.append(" ");
+			sb.append(condition);
+			sb.append(" ");
+			sb.append(orderby);
+			sb.append(" )TT where ROWNUM <= ");
+			sb.append(end);
+			sb.append(") where rn >= ");
+			sb.append(start);
+			return sb.toString();
+
+	}
+
+	public String getTotalSql(String condition){
+		StringBuffer sb = new StringBuffer("SELECT count(1) FROM ");
+		sb.append(this.dl_tablename);
+		sb.append(" where ");
+		sb.append(condition);
+		return sb.toString();
+	}
+}

+ 44 - 0
src/main/java/com/uas/eis/sdk/entity/DataListDetail.java

@@ -0,0 +1,44 @@
+package com.uas.eis.sdk.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+import java.io.Serializable;
+
+@Data
+public class DataListDetail {
+	private int dld_id;
+	private String dld_caller;
+	private int dld_detno;
+	private String dld_field;
+	private String dld_caption;
+	private String dld_caption_en;
+	private String dld_caption_fan;
+	private Integer dld_width;
+	private String dld_fieldtype;
+	private String dld_alignment;
+	private String dld_table;
+	private DataList dataList;
+	private Integer dld_editable;
+	private String dld_render;
+	private Float dld_flex;
+	private String dld_summarytype;
+	private Integer dde_width;
+	private Integer dde_detno;
+	private String dde_orderby;
+	private String dde_priority;
+	private Integer dld_dlid;
+	private Integer dld_mobileused;
+	private Integer dld_mobilesearch;
+	private Integer dld_locked;
+	private Integer dde_locked;
+
+	public String table() {
+		return "datalistdetail";
+	}
+
+	public String[] keyColumns() {
+		return new String[] { "dld_id" };
+	}
+}

+ 8 - 0
src/main/java/com/uas/eis/service/ERPService.java

@@ -1,9 +1,14 @@
 package com.uas.eis.service;
 
 
+import com.uas.eis.sdk.dto.PaginatedResult;
+import com.uas.eis.sdk.dto.QueryListReq;
+import com.uas.eis.sdk.dto.QueryOrderReq;
 import com.uas.eis.sdk.dto.QueryReq;
 import com.uas.eis.beans.result.Result;
+import com.uas.eis.sdk.entity.ApiResult;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -14,4 +19,7 @@ import java.util.Map;
 public interface ERPService {
     Map<String,Object> getList(QueryReq queryReq, String ev);
 
+    PaginatedResult queryList(QueryListReq queryListReq);
+
+    Map<String,Object> queryOrder(QueryOrderReq queryOrderReq);
 }

+ 86 - 4
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -2,8 +2,13 @@ package com.uas.eis.service.Impl;
 
 import com.uas.eis.core.config.SpObserver;
 import com.uas.eis.dao.*;
+import com.uas.eis.entity.Employee;
 import com.uas.eis.sdk.dto.*;
 import com.uas.eis.beans.result.Result;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.DataList;
+import com.uas.eis.sdk.entity.DataListDetail;
+import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.ERPService;
 import com.uas.eis.utils.BaseUtil;
 import com.uas.eis.utils.CollectionUtil;
@@ -11,13 +16,15 @@ import com.uas.eis.utils.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.sql.*;
+import java.sql.Date;
+import java.util.*;
 
 
 /**
@@ -94,4 +101,79 @@ public class ERPServiceImpl implements ERPService {
         resMap.put("Msg","OK");
         return resMap;
     }
+
+    @Override
+    public PaginatedResult queryList(QueryListReq queryListReq) {
+        DataList dataList = getDataList(queryListReq.getCode());
+        QueryListReq.QueryListObj queryListObj =   queryListReq.getData();
+        return getDataListData(dataList, queryListObj.buildWhereClause(), queryListObj.getPageNum(), queryListObj.getPageSize(), queryListObj.getOrderBy());
+    }
+
+    @Override
+    public Map<String, Object> queryOrder(QueryOrderReq queryOrderReq) {
+
+
+        return Collections.emptyMap();
+    }
+
+
+    private  PaginatedResult getDataListData(DataList dataList, QueryListReq.QueryListObj.FilterResult filterResult,  int pageNum,int pageSize, String orderBy){
+        // 构建WHERE条件
+        String condition = filterResult.getWhereClause();
+        List<Object> parameters = filterResult.getParameters();
+        String defaultCond_ = dataList.getDl_condition();
+        condition = (defaultCond_ == null || "".equals(defaultCond_)) ? condition : ("(" + defaultCond_ + ")" + ((condition == null || "".equals(condition)) ? "" : " AND (" + condition + ")"));
+        String sql = null;
+        String sort = null;
+        String dlsort  = dataList.getDl_orderby();
+        if(StringUtils.hasText(orderBy)) {
+            if (StringUtils.hasText(dlsort)) {
+                sort = orderBy+","+dlsort.replace("order", "").replace("by", "");
+            }else {
+                sort = orderBy;
+            }
+        }else {
+            sort = dlsort;
+        }
+        sql = dataList.getSearchSql(condition, sort, pageNum, pageSize);
+        SqlRowList rs = baseDao.queryForRowSet(sql,parameters.toArray());
+        List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
+        while (rs.next()) {
+            Map<String, Object> map = new HashMap<String, Object>();
+            for (DataListDetail detail : dataList.getDataListDetails()) {
+                String field = detail.getDld_field();
+                if (field.contains(" ")) {// column有取别名
+                    String[] strs = field.split(" ");
+                    field = strs[strs.length - 1];
+                }
+                Object value = rs.getObject(field);
+                value = value == null || value.equals("null") ? "" : SqlRowList.parseValue(value);
+                map.put(field, value);
+            }
+                map.remove("RN");
+            datas.add(map);
+        }
+        // 查询总数
+        Integer total = baseDao.queryForObject(dataList.getTotalSql(condition),Integer.class,parameters.toArray());
+        return new PaginatedResult(datas, total, pageNum, pageSize);
+    }
+
+    public DataList getDataList(String caller) {
+        try {
+            DataList dataList = baseDao.getJdbcTemplate().queryForObject("select *  from datalist where dl_caller=?", new BeanPropertyRowMapper<DataList>(DataList.class), caller);
+            List<DataListDetail> dataListDetails = new ArrayList<>();
+            if(dataList!=null){
+                dataListDetails = baseDao.getJdbcTemplate().query("select * from datalistdetail where dld_dlid=? order by dld_detno"
+                        , new BeanPropertyRowMapper<DataListDetail>(DataListDetail.class), dataList.getDl_id());
+            }
+            dataList.setDataListDetails(dataListDetails);
+            return dataList;
+        } catch (EmptyResultDataAccessException e) {
+            e.printStackTrace();
+            return null;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
 }

+ 1 - 2
src/main/resources/token.properties

@@ -1,2 +1 @@
-SECURITY_KEY=435aMe9L5itTrckY35kfcOQvPkBGZtGo
-KEEP=86400000
+AccessSecret=435aMe9L5itTrckY35kfcOQvPkBGZtGo