Browse Source

代码修改

LAPTOP-KB9HII50\70708 2 years ago
parent
commit
5c4abb5566

+ 31 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/controller/AdapterDictEntryController.java

@ -9,6 +9,7 @@ import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
/**
 * Created by LLH on 2016/1/6.
@ -90,4 +91,34 @@ public class AdapterDictEntryController extends EnvelopRestEndpoint {
            @RequestParam(value = "adapterDictId") Integer adapterDictId) {
        return dictentryService.deleteMultiple(adapterVersion, dictEntryId, stdDictId, adapterDictId);
    }
    @RequestMapping(value = "/clearAdapt", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
    @ApiOperation(value = "清除字典项适配", response = Envelop.class, produces = "application/json", notes = "清除字典项适配")
    public Envelop clearAdapt(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "stdDictId", value = "标准字典ID")
            @RequestParam(value = "stdDictId") Long stdDictId) {
        return dictentryService.clearAdapt(adapterVersion, stdDictId);
    }
    @RequestMapping(value = "/cloneDictEntry", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
    @ApiOperation(value = "克隆字典项", response = Envelop.class, produces = "application/json", notes = "克隆字典项")
    public Envelop cloneDictEntry(
            @ApiParam(name = "version", value = "版本号")
            @RequestParam(value = "version") String version,
            @ApiParam(name = "id", value = "adapter_dictentry_*的id")
            @RequestParam(value = "id") Long id) throws IOException {
        return dictentryService.cloneDictEntry(version, id);
    }
    @RequestMapping(value = "/deletecloneDictEntry", method = RequestMethod.DELETE,produces="application/json;charset=UTF-8")
    @ApiOperation(value = "克隆字典项", response = Envelop.class, produces = "application/json", notes = "克隆字典项")
    public Envelop deletecloneDictEntry(
            @ApiParam(name = "version", value = "版本号")
            @RequestParam(value = "version") String version,
            @ApiParam(name = "id", value = "adapter_dictentry_*的id")
            @RequestParam(value = "id") Long id) throws IOException {
        return dictentryService.deletecloneDictEntry(version, id);
    }
}

+ 12 - 1
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/controller/AdapterMetadataController.java

@ -112,7 +112,6 @@ public class AdapterMetadataController extends EnvelopRestEndpoint {
        }
    }
    @RequestMapping(value = "/strategy", method = RequestMethod.POST)
    @ApiOperation(value = "智能匹配", response = Object.class, produces = "application/json", notes = "智能匹配")
    public Envelop strategy(
@ -166,5 +165,17 @@ public class AdapterMetadataController extends EnvelopRestEndpoint {
        }
        return Envelop.getSuccess("操作成功");
    }
    @RequestMapping(value = "/clearMetadaAdapt", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
    @ApiOperation(value = "清除数据集数据元适配", response = Envelop.class, produces = "application/json")
    public Envelop clearAdapt(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "stdDataSetId", value = "标准字典ID")
            @RequestParam(value = "stdDataSetId") Long stdDataSetId,
            @ApiParam(name = "belongAdapterId", value = "所属id")
            @RequestParam(value = "belongAdapterId") Long belongAdapterId) {
        return metadataService.clearAdapt(adapterVersion, stdDataSetId,belongAdapterId);
    }
}

+ 62 - 59
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/dao/SQLGeneralDAO.java

@ -11,12 +11,9 @@ import com.yihu.jw.util.common.NumberUtil;
import com.yihu.jw.util.common.StringUtil;
import com.yihu.jw.util.sql.SqlCreator;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -29,6 +26,11 @@ import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Table;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigInteger;
@ -207,9 +209,10 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
    }
    public <T> List getEntityList(Class<T> cls, String condition, String order, Integer limit, Integer offset) throws IOException {
        Session session = this.getCurrentSession();
        Criteria criteria = session.createCriteria(cls);
        ObjectMapper objectMapper = new ObjectMapper();
        CriteriaBuilder criteriaBuilder = getCurrentSession().getCriteriaBuilder();
        CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(cls);
        Root<T> root = criteriaQuery.from(cls);
        List<Predicate> predicateList = new ArrayList<>();
        JsonNode jsonNode;
        Iterator fieldNames;
        String fieldName;
@ -220,9 +223,11 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
            while (fieldNames.hasNext()) {
                fieldName = (String) fieldNames.next();
                if (jsonNode.get(fieldName).isInt()) {
                    criteria.add(Restrictions.eq(fieldName, Integer.valueOf(jsonNode.get(fieldName).asInt())));
                    Predicate predicate1 = criteriaBuilder.equal(root.get(fieldName), jsonNode.get(fieldName).asInt());
                    predicateList.add(predicate1);
                } else {
                    criteria.add(Restrictions.eq(fieldName, jsonNode.get(fieldName).asText()));
                    Predicate predicate1 = criteriaBuilder.equal(root.get(fieldName), jsonNode.get(fieldName).asText());
                    predicateList.add(predicate1);
                }
            }
        }
@ -231,31 +236,45 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
            jsonNode = objectMapper.readTree(order);
            fieldNames = jsonNode.fieldNames();
            List<javax.persistence.criteria.Order> orderList = new ArrayList<>();
            while (fieldNames.hasNext()) {
                fieldName = (String) fieldNames.next();
                String value = jsonNode.get(fieldName).asText().toUpperCase();
                if (value.equals("ASC")) {
                    criteria.addOrder(Order.asc(fieldName));
                    orderList.add(criteriaBuilder.asc(root.get(fieldName)));
                } else if (value.equals("DESC")) {
                    criteria.addOrder(Order.desc(fieldName));
                    orderList.add(criteriaBuilder.desc(root.get(fieldName)));
                }
            }
            criteriaQuery.orderBy(orderList);
        }
        if(predicateList.size()>0){
            Predicate[] predicates = new Predicate[predicateList.size()];
            for (int i = 0; i < predicates.length; i++) {
                predicates[i] = predicateList.get(i);
            }
            criteriaQuery.where(predicates);
        }
        TypedQuery<T> typedQuery = getCurrentSession().createQuery(criteriaQuery);
        if (limit != null) {
            criteria.setMaxResults(limit.intValue());
            typedQuery.setMaxResults(limit);
            if (offset != null &&offset>0) {
                criteria.setFirstResult((offset.intValue() - 1) * limit.intValue());
                typedQuery.setFirstResult((offset - 1) * limit);
            }
        }
        return criteria.list();
        return typedQuery.getResultList();
    }
    public <T> List<T> getEntityListByParentId(Class<T> cls, String parentFiledName, Long patentId, String condition, String order, Integer limit, Integer offset) throws IOException {
        Session session = this.getCurrentSession();
        Criteria criteria = session.createCriteria(cls);
        criteria.add(Restrictions.eq(parentFiledName, patentId));
        CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
        CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(cls);
        Root<T> root = criteriaQuery.from(cls);
        List<Predicate> predicateList = new ArrayList<>();
        Predicate predicate = criteriaBuilder.equal(root.get(parentFiledName), patentId);
        predicateList.add(predicate);
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode;
        Iterator fieldNames;
@ -267,9 +286,11 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
            while (fieldNames.hasNext()) {
                fieldName = (String) fieldNames.next();
                if (jsonNode.get(fieldName).isInt()) {
                    criteria.add(Restrictions.eq(fieldName, Integer.valueOf(jsonNode.get(fieldName).asInt())));
                    Predicate predicate1 = criteriaBuilder.equal(root.get(fieldName), jsonNode.get(fieldName).asInt());
                    predicateList.add(predicate1);
                } else {
                    criteria.add(Restrictions.eq(fieldName, jsonNode.get(fieldName).asText()));
                    Predicate predicate1 = criteriaBuilder.equal(root.get(fieldName), jsonNode.get(fieldName).asText());
                    predicateList.add(predicate1);
                }
            }
        }
@ -277,26 +298,34 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
        if (!StringUtil.isEmpty(order)) {
            jsonNode = objectMapper.readTree(order);
            fieldNames = jsonNode.fieldNames();
            List<javax.persistence.criteria.Order> orderList = new ArrayList<>();
            while (fieldNames.hasNext()) {
                fieldName = (String) fieldNames.next();
                String value = jsonNode.get(fieldName).asText().toUpperCase();
                if (value.equals("ASC")) {
                    criteria.addOrder(Order.asc(fieldName));
                    orderList.add(criteriaBuilder.asc(root.get(fieldName)));
                } else if (value.equals("DESC")) {
                    criteria.addOrder(Order.desc(fieldName));
                    orderList.add(criteriaBuilder.desc(root.get(fieldName)));
                }
            }
            criteriaQuery.orderBy(orderList);
        }
        Predicate[] predicates = new Predicate[predicateList.size()];
        for (int i = 0; i < predicates.length; i++) {
            predicates[i] = predicateList.get(i);
        }
        criteriaQuery.where(predicates);
        TypedQuery<T> typedQuery = session.createQuery(criteriaQuery);
        if (limit != null) {
            criteria.setMaxResults(limit.intValue());
            typedQuery.setMaxResults(limit);
            if (offset != null &&offset>0) {
                criteria.setFirstResult((offset.intValue() - 1) * limit.intValue());
                typedQuery.setFirstResult((offset - 1) * limit);
            }
        }
        return criteria.list();
        return typedQuery.getResultList();
    }
    public List getList(Class tClass, String tableName, String condition, String order, Integer limit, Integer offset) {
@ -316,7 +345,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
                    fieldName = (String) query.next();
                    value = sql.get(fieldName).asText();
                    if (sql.get(fieldName).getNodeType().equals(JsonNodeType.NUMBER)) {
                        sqlCreator.equalCondition(fieldName, Integer.valueOf(Integer.parseInt(value)));
                        sqlCreator.equalCondition(fieldName, Integer.parseInt(value));
                    } else {
                        sqlCreator.equalCondition(fieldName, value);
                    }
@ -395,8 +424,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
        SqlCreator sqlCreator = new SqlCreator(tClass);
        sqlCreator.equalCondition("id", id);
        String sql = sqlCreator.selectData(tableName);
        Query query = this.getQuery(sqlCreator, sql);
        return query.uniqueResult();
        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(tClass)).get(0);
    }
    public Object get(Class tClass, String stdVersion, String dataType, String id) {
@ -407,8 +435,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
                SqlCreator sqlCreator = new SqlCreator(tClass);
                sqlCreator.equalCondition("id", id);
                String sql = sqlCreator.selectData(tableName);
                Query query = getQuery(sqlCreator, sql);
                return query.uniqueResult();
                return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(tClass)).get(0);
            }
        } catch (Exception e) {
            e.printStackTrace();
@ -416,34 +443,10 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
        return Envelop.getError("获取标准数据元失败");
    }
    private Query getQuery(SqlCreator sqlCreator, String sql) {
        SQLQuery query = this.getCurrentSession().createSQLQuery(sql);
        Iterator var4 = sqlCreator.getKeyValueMap().keySet().iterator();
        while (var4.hasNext()) {
            String key = (String) var4.next();
            Object value = sqlCreator.getKeyValueMap().get(key);
            if (value instanceof Collection) {
                query.setParameterList(key, (Collection) value);
            } else {
                query.setParameter(key, value);
            }
        }
        query.setResultTransformer(sqlCreator.getTransformer());
        return query;
    }
    public void insertBatch(final List<String> insertSqlList) {
//        Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
        String[] sqlStr = new String[insertSqlList.size()];
        String[] sqlArr = insertSqlList.toArray(sqlStr);
        this.jdbcTemplate.batchUpdate(sqlArr);
    }
    public Session openSession() {
        return null;
    }
    public Session getCurrentSession() {
@ -452,14 +455,14 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
    public Long getMaxId(String tableName) {
        String sql = "select max(id) from " + tableName;
        SQLQuery query = this.getCurrentSession().createSQLQuery(sql);
        NativeQuery query = this.getCurrentSession().createSQLQuery(sql);
        Object object = query.uniqueResult();
        Long maxId = object == null ? 1L : (Long.parseLong(object.toString()) + 1);
        return maxId;
    }
    public Query getExeuteQuery(SqlCreator sqlCreator, String sql) {
        SQLQuery query = this.getCurrentSession().createSQLQuery(sql);
    public NativeQuery getExeuteQuery(SqlCreator sqlCreator, String sql) {
        NativeQuery query = this.getCurrentSession().createSQLQuery(sql);
        Iterator var4 = sqlCreator.getKeyValueMap().keySet().iterator();
        while (var4.hasNext()) {

+ 1 - 1
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/dao/XSQLGeneralDAO.java

@ -66,7 +66,7 @@ public interface XSQLGeneralDAO {
    Session getCurrentSession();
    Session openSession();
//    Session openSession();
//    Query getQuery(SqlCreator var1, String var2);

+ 10 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/model/adapter/AdapterDictEntryModel.java

@ -35,6 +35,8 @@ public class AdapterDictEntryModel implements Serializable {
    private String adapterEntryValue;
    @Column(name = "adapter_info")
    private String adapterInfo;
    @Column(name="is_clone")
    private Integer isClone; //0 不是克隆(默认)   1是克隆
    public String getAdapterInfo() {
        return adapterInfo;
@ -123,4 +125,12 @@ public class AdapterDictEntryModel implements Serializable {
    public void setAdapterEntryValue(String adapterEntryValue) {
        this.adapterEntryValue = adapterEntryValue;
    }
    public Integer getIsClone() {
        return isClone;
    }
    public void setIsClone(Integer isClone) {
        this.isClone = isClone;
    }
}

+ 2 - 1
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/service/adapter/AdapterDatasetRelationService.java

@ -12,6 +12,7 @@ import com.yihu.jw.exception.ApiException;
import com.yihu.jw.util.sql.SqlCreator;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.query.NativeQuery;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -34,7 +35,7 @@ public class AdapterDatasetRelationService extends SQLGeneralDAO {
            AdapterDatasetRelationModel adapterDatasetRelationModel = objectMapper.readValue(datasetRelation, AdapterDatasetRelationModel.class);
            Session session = getCurrentSession();
            String sql = "select max(id) from " + version.getMetaDataTableName();
            Query query = session.createSQLQuery(sql);
            NativeQuery query = session.createSQLQuery(sql);
            Object object = query.uniqueResult();
            adapterDatasetRelationModel.setId(object == null ? 1L : Long.parseLong(object.toString()) + 1);

+ 65 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/standard/service/adapter/AdapterDictEntryService.java

@ -19,6 +19,7 @@ import com.yihu.jw.util.sql.ErrorCode;
import com.yihu.jw.basic.standard.dao.SQLGeneralDAO;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.util.sql.BeanTransformer;
import com.yihu.jw.util.sql.SqlConstants;
import com.yihu.jw.util.sql.SqlCreator;
import org.hibernate.Query;
import org.hibernate.Session;
@ -364,4 +365,68 @@ public class AdapterDictEntryService extends SQLGeneralDAO {
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    public Envelop clearAdapt(String adapterVersion, Long stdDictId) {
        Envelop envelop = new Envelop();
        //字典项可能数量比较多--->>使用原生sql提高清空字典适配效率
        StringBuilder sqlBuffer = new StringBuilder();
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String dictEntryTableName = version.getDictEntryTableName();
        //清空字典项适配
        sqlBuffer.append(SqlConstants.UPDATE + dictEntryTableName + SqlConstants.SET );
        sqlBuffer.append(" adapter_dict_id = null , adapter_entry_id = null , adapter_entry_code = null  ,adapter_entry_value = null, adapter_info=0 where std_dict_id="+ stdDictId);
        jdbcTemplate.execute(sqlBuffer.toString());
        //清空字典适配
        String dictTable = version.getDictTableName();
        String sql = SqlConstants.UPDATE + dictTable + SqlConstants.SET+" adapter_dict_id = null, adapter_dict_code = null,adapter_dict_name= null where std_dict_id="+stdDictId;
        jdbcTemplate.execute(sql);
        return Envelop.getSuccess("清除成功");
    }
    public Envelop cloneDictEntry(String version, Long id) throws IOException {
        Envelop envelop = new Envelop();
        //通过id查找
        AdapterVersion adapterVersion = new AdapterVersion(version);
        String dictEntryTableName = adapterVersion.getDictEntryTableName();
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT m.*").append(" FROM "+dictEntryTableName).append(" m where m.id="+id);
        Session session = getCurrentSession();
        Query query = session.createSQLQuery(sql.toString());
        query.setResultTransformer(new BeanTransformer(AdapterDictEntryModel.class));
        AdapterDictEntryModel adapterDictEntryModel = (AdapterDictEntryModel) query.uniqueResult();
        //为克隆出来的dictEntry赋值
        AdapterDictEntryModel cloneDictEntry = new AdapterDictEntryModel();
        cloneDictEntry.setSchemeId(adapterDictEntryModel.getSchemeId());
        cloneDictEntry.setStdDictId(adapterDictEntryModel.getStdDictId());
        cloneDictEntry.setStdEntryId(adapterDictEntryModel.getStdEntryId());
        cloneDictEntry.setStdEntryCode(adapterDictEntryModel.getStdEntryCode());
        cloneDictEntry.setStdEntryValue(adapterDictEntryModel.getStdEntryValue());
        cloneDictEntry.setAdapterInfo("0");
        cloneDictEntry.setIsClone(1);
        query = session.createSQLQuery("select max(id) from " + dictEntryTableName);
        Object object = query.uniqueResult();
        cloneDictEntry.setId(object == null ? 1 : Long.parseLong(object.toString()) + 1);
        //插入数据库
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(cloneDictEntry));
        SqlCreator sqlCreator = new SqlCreator(AdapterDictEntryModel.class);
        String insertSql = sqlCreator.insertData(dictEntryTableName, jsonNode);
        query = getExeuteQuery(sqlCreator, insertSql);
        query.executeUpdate();
        return Envelop.getSuccess("克隆成功");
    }
    public Envelop deletecloneDictEntry(String version, Long id){
        //通过id查找
        AdapterVersion adapterVersion = new AdapterVersion(version);
        String dictEntryTableName = adapterVersion.getDictEntryTableName();
        jdbcTemplate.execute("delete from " + dictEntryTableName + " WHERE id = "+id);
        return Envelop.getSuccess("删除成功");
    }
}