Kaynağa Gözat

论文专著

git 5 yıl önce
ebeveyn
işleme
7c37bfab68

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PublicationsDao.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.PublicationsPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import javax.transaction.Transactional;
+
+
+
+@Transactional
+public interface PublicationsDao extends PagingAndSortingRepository<PublicationsPO, Long> ,CrudRepository<PublicationsPO, Long>, JpaRepository<PublicationsPO, Long> ,JpaSpecificationExecutor<PublicationsPO>{
+
+    Page<PublicationsPO> findAll(Specification<PublicationsPO> spec, Pageable pageable);
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Publications.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class Publications {
+    private Long id;
+    private String title;
+    private String publicYear;
+    private String  conferenceJournal;
+    private String authorList;
+    private String longTitle;
+    private String author;
+    private Timestamp uploadedDate;
+    private String chineseBrief;
+}

+ 42 - 0
core/src/main/java/com/mooctest/crowd/domain/model/PublicationsPO.java

@@ -0,0 +1,42 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+
+@Data
+@Entity
+@Table(name = "publications")
+public class PublicationsPO {
+
+    @Id
+    @Column(name = "P_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "P_TITLE")
+    private String title;
+
+    @Column(name = "P_YEAR")
+    private String publicYear;
+
+    @Column(name = "P_CONFERENCE_JOURNAL")
+    private String  conferenceJournal;
+
+    @Column(name = "P_AUTHOR_LIST")
+    private String authorList;
+
+    @Column(name = "P_SEC_LANG_TITLE")
+    private String longTitle;
+
+    @Column(name = "P_CH_AUTHORS")
+    private String author;
+
+    @Column(name = "P_UPLOADED_DATE")
+    private Timestamp uploadedDate;
+
+    @Column(name="P_CHINESE_BRIEF")
+    private  String chineseBrief;
+}

+ 12 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IPublicationsRepo.java

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.Publications;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+
+public interface IPublicationsRepo {
+
+    Page<Publications> getPublications(Pageable pageable, String keyword);
+
+}

+ 1 - 5
core/src/main/java/com/mooctest/crowd/domain/repository/ITechnicalArticlesRepo.java

@@ -4,12 +4,8 @@ import com.mooctest.crowd.domain.domainobject.TechnicalArticles;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
-import java.util.List;
 
-/**
- * @Author: xuexb
- * @Date: 2019.7.5 14:58
- */
+
 public interface ITechnicalArticlesRepo {
 
     Page<TechnicalArticles> getTechnicalArticles(Pageable pageable, String keyword);

+ 49 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/PublicationsRepo.java

@@ -0,0 +1,49 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.dao.PublicationsDao;
+import com.mooctest.crowd.domain.domainobject.Publications;
+import com.mooctest.crowd.domain.model.PublicationsPO;
+import com.mooctest.crowd.domain.util.Converter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.domain.Specifications;
+import org.springframework.stereotype.Component;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+@Slf4j
+@Component
+public class PublicationsRepo implements IPublicationsRepo{
+
+
+    @Autowired
+    private PublicationsDao publicationsDao;
+
+    @Override
+    public Page<Publications> getPublications(Pageable pageable, String keyword) {
+        Specifications<PublicationsPO> where =  Specifications.where(getPublicationsByIsNotDeleted(keyword));
+        return publicationsDao.findAll(where, pageable).map(PublicationsPO->Converter.convert(Publications.class, PublicationsPO));
+    }
+
+    private Specification<PublicationsPO> getPublicationsByIsNotDeleted(String keyword) {
+        return new Specification<PublicationsPO>() {
+            @Override
+            public Predicate toPredicate(Root<PublicationsPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
+                Predicate predicate = cb.conjunction();
+                if(keyword != null) {
+                    predicate.getExpressions().add(
+                            cb.like(a.<String>get("longTitle"), "%" + StringUtils.trim(keyword) + "%")
+                    );
+                }
+                return predicate;
+            }
+        };
+    }
+}

+ 11 - 2
site/src/main/java/com/mooctest/crowd/site/controller/TechnicalArticlesController.java

@@ -8,12 +8,15 @@ import com.mooctest.crowd.site.data.vo.SearchConditionVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -22,16 +25,22 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/api/technical")
-public class TechnicalArticlesController {
+public class TechnicalArticlesController extends BaseSearchController{
 
     @Autowired
     private TechnicalArticlesService technical;
 
     @RequestMapping(value = "/articles", method = RequestMethod.POST)
     public ResponseVO<TechnicalArticlesDTO> technicalarticles(@RequestBody SearchConditionVO searchConditionVO){
+        Map<String, String> extraCondition = searchConditionVO.getColumnFilters()==null? new HashMap<>() :super.getExtraCondition(searchConditionVO);
         Pageable pageable = this.getPageable(searchConditionVO);
         String keyword = searchConditionVO.getKeyword();
-        return new ResponseVO<>(ServerCode.SUCCESS, technical.getArticles(pageable, keyword));
+        return new ResponseVO<>(ServerCode.SUCCESS, technical.getArticles(pageable, keyword,extraCondition));
+    }
+
+    @Override
+    public Page<?> search(String searchCondition) {
+        return null;
     }
 
     Pageable getPageable(SearchConditionVO searchConditionVO){

+ 3 - 1
site/src/main/java/com/mooctest/crowd/site/data/dto/TechnicalArticlesDTO.java

@@ -1,11 +1,13 @@
 package com.mooctest.crowd.site.data.dto;
 
+import com.mooctest.crowd.site.data.vo.PublicationsVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import lombok.Data;
 import org.springframework.data.domain.Page;
 
 @Data
 public class TechnicalArticlesDTO {
-    Page<TechnicalArticlesVO>  technicalArticlespage;
+    Page<TechnicalArticlesVO>  technicalArticlesPage;
+    Page<PublicationsVO>  publicationsPage;
     int count;
 }

+ 33 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/PublicationsVO.java

@@ -0,0 +1,33 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Publications;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.sql.Timestamp;
+
+
+@Data
+@NoArgsConstructor
+public class PublicationsVO {
+    private Long id;
+    private String title;
+    private String publicYear;
+    private String  conferenceJournal;
+    private String authorList;
+    private String longTitle;
+    private String author;
+    private Timestamp uploadedDate;
+    private String chineseBrief;
+
+    public PublicationsVO(Publications publications){
+        this.id=publications.getId();
+        this.title=publications.getTitle();
+        this.publicYear=publications.getPublicYear();
+        this.conferenceJournal=publications.getConferenceJournal();
+        this.authorList=publications.getAuthorList();
+        this.longTitle=publications.getLongTitle();
+        this.author=publications.getAuthor();
+        this.uploadedDate=publications.getUploadedDate();
+        this.chineseBrief=publications.getChineseBrief();
+    }
+}

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/service/TechnicalArticlesService.java

@@ -5,7 +5,7 @@ import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import org.springframework.data.domain.Pageable;
 
 import java.util.List;
-
+import java.util.Map;
 
 
 /**
@@ -16,7 +16,7 @@ import java.util.List;
 
 public interface TechnicalArticlesService {
 
-    TechnicalArticlesDTO getArticles(Pageable pageable,String keyword);
+    TechnicalArticlesDTO getArticles(Pageable pageable,String keyword,Map<String, String> extraCondition);
 
     List<TechnicalArticlesVO> articlesRanking();
 

+ 15 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java

@@ -1,8 +1,10 @@
 package com.mooctest.crowd.site.service.impl;
 
 
+import com.mooctest.crowd.domain.repository.PublicationsRepo;
 import com.mooctest.crowd.domain.repository.TechnicalArticlesRepo;
 import com.mooctest.crowd.site.data.dto.TechnicalArticlesDTO;
+import com.mooctest.crowd.site.data.vo.PublicationsVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
@@ -11,6 +13,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
@@ -24,10 +27,20 @@ public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
     @Autowired
     private TechnicalArticlesRepo technicalArticlesRepo;
 
+    @Autowired
+    private PublicationsRepo publicationsRepo;
+
     @Override
-    public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword) {
+    public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword,Map<String, String> extraCondition) {
         TechnicalArticlesDTO  technicalArticlesDTO= new  TechnicalArticlesDTO();
-        technicalArticlesDTO.setTechnicalArticlespage(technicalArticlesRepo.getTechnicalArticles(pageable, keyword).map(technicalArticles -> new TechnicalArticlesVO(technicalArticles)));
+        for(String key:extraCondition.keySet()) {
+            String value = extraCondition.get(key);
+            if(value.equals("0")){
+                technicalArticlesDTO.setTechnicalArticlesPage(technicalArticlesRepo.getTechnicalArticles(pageable, keyword).map(technicalArticles -> new TechnicalArticlesVO(technicalArticles)));
+            }else if(value.equals("1")){
+                technicalArticlesDTO.setPublicationsPage(publicationsRepo.getPublications(pageable, keyword).map(publications -> new PublicationsVO(publications)));
+            }
+        }
         return technicalArticlesDTO;
     }