Răsfoiți Sursa

新增自动抓取功能代码

Wayne 4 luni în urmă
părinte
comite
ee541c03fe

+ 9 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.java

@@ -3,10 +3,12 @@ package com.rtrh.projects.modules.projects.mapper;
 import java.util.List;
 
 import com.rtrh.projects.modules.projects.dto.SubFixCbSearch;
+import com.rtrh.projects.modules.projects.po.SubFix;
 import com.rtrh.projects.modules.projects.po.SubInfo;
 import com.rtrh.projects.modules.projects.vo.SubFixCbVo;
 import com.rtrh.projects.modules.projects.po.SubInfoGxj;
 import com.rtrh.projects.modules.projects.vo.SubInfoQueryTzVO;
+import com.rtrh.projects.modules.projects.vo.SubInfoToSubFixVo;
 import org.apache.ibatis.annotations.Param;
 
 import com.rtrh.core.repository.mybatis.MyBatisRepository;
@@ -36,4 +38,11 @@ public interface SubInfoMapper {
     List<SubInfoGxj> queryPage(@Param("vo") SubInfoQueryTzVO queryVO);
 
     List<SubFixCbVo> subFixCbAll(@Param("subFixCbSearch") SubFixCbSearch subFixCbSearch);
+
+    @Select("SELECT sub_id FROM sub_fix where year = #{subInfoToSubFixVo.year} and cat = #{subInfoToSubFixVo.cat}")
+    List<String> getSubIdForSubFix(@Param("subInfoToSubFixVo") SubInfoToSubFixVo subInfoToSubFixVo);
+
+    List<String> selectAllSubInfoIdsNotSubFix(@Param("subIdList") List<String> subIdList, @Param("status")String status);
+
+    void batchInsertSubFix(@Param("subFixList") List<SubFix> subFixList);
 }

+ 22 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml

@@ -1,6 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.rtrh.projects.modules.projects.mapper.SubInfoMapper" >
+    <insert id="batchInsertSubFix">
+        INSERT INTO sub_fix (id, sub_id, year, cat, create_time, create_user_id)
+        VALUES
+        <foreach collection="subFixList" item="item" separator=",">
+            (#{item.id}, #{item.subId}, #{item.year}, #{item.cat}, #{item.createTime}, #{item.createUserId})
+        </foreach>
+    </insert>
 
 
     <select id="smartSiteQuery" resultType="com.rtrh.projects.modules.projects.vo.SubSmartVO"  >
@@ -214,5 +221,20 @@
             AND sub_info.sbdw LIKE CONCAT('%', #{subFixCbSearch.sbdw}, '%')
         </if>
     </select>
+    <select id="selectAllSubInfoIdsNotSubFix" resultType="java.lang.String">
+        SELECT id
+        FROM sub_info
+        <where>
+            <if test="subIdList != null and subIdList.size > 0">
+                id NOT IN
+                <foreach collection="subIdList" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="status != null and status != ''">
+                AND status = #{status}
+            </if>
+        </where>
+    </select>
 
 </mapper>

+ 2 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubInfoService.java

@@ -395,4 +395,6 @@ public interface SubInfoService {
 	List<SubLabel> getSubLabels(SubLabelAddVO vo);
 
 	void addLabelS(SubLabelAddVO vo, List list);
+
+	void subInfoToSubFix(SubInfoToSubFixVo subInfoToSubFixVo,String userId);
 }

+ 34 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -4663,6 +4663,40 @@ public class SubInfoServiceImpl implements SubInfoService {
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void subInfoToSubFix(SubInfoToSubFixVo subInfoToSubFixVo,String userId) {
+        // 1、查询出subFix中已经存在的当年的subInfo对应的数据id
+        List<String> subIdList =  subInfoMapper.getSubIdForSubFix(subInfoToSubFixVo);
+        // 2、查询出sub_Info表中所有不存在重点库中该类型的数据
+        // 默认查询储备库
+        String status = "1";
+        if ("1".equals(subInfoToSubFixVo.getCat())){
+            status = "2";
+        }else if ("2".equals(subInfoToSubFixVo.getCat())){
+            status = "3";
+        }else if ("3".equals(subInfoToSubFixVo.getCat())){}{
+            status = "1";
+        }
+        List<String> newSubInfoIdList = subInfoMapper.selectAllSubInfoIdsNotSubFix(subIdList,status);
+        // 3、将这些数据插入到sub_fix表中
+        if (CollectionUtil.isNotEmpty(newSubInfoIdList)){
+            // 遍历newSubInfoIdList,创建SubFix对象,并插入到数据库中
+            List<SubFix> subFixList = newSubInfoIdList.stream().map(e -> {
+                SubFix subFix = new SubFix();
+                subFix.setId(Identities.uuid());
+                subFix.setSubId(e);
+                subFix.setYear(subInfoToSubFixVo.getYear());
+                subFix.setCat(subInfoToSubFixVo.getCat());
+                subFix.setCreateTime(new Date());
+                subFix.setCreateUserId(userId);
+                return subFix;
+            }).collect(Collectors.toList());
+
+            subInfoMapper.batchInsertSubFix(subFixList);
+        }
+    }
+
 
     public List<SubLabel> getSubLabels(SubLabelAddVO vo) {
         List<SubLabel> labelList = subLabelDao.findByCon(vo);

+ 19 - 0
projects/src/main/java/com/rtrh/projects/web/controller/subject/api/SubInfoApiController.java

@@ -139,6 +139,25 @@ public class SubInfoApiController extends BaseController {
         return message;
     }
 
+    /**
+     * 抓取四库代码到重点项目库中
+     *
+     */
+    @PostMapping(value = "/subInfoToSubFix")
+    public ListMessage subInfoToSubFix(@RequestBody SubInfoToSubFixVo subInfoToSubFixVo) {
+        ListMessage message = new ListMessage();
+        try {
+            subInfoService.subInfoToSubFix(subInfoToSubFixVo,getCurUser().getId());
+            message.setMessage("抓取成功");
+        } catch (Exception e) {
+            logger.error("", e);
+            message.add("抓取失败");
+        }
+        return message;
+    }
+
+
+
 
     /**
      * 申报项目管理