Browse Source

科技成果&科技需求审核通过发布匹配

Antiloveg 8 years ago
parent
commit
4ff0c723e7

+ 2 - 5
schema/2017-05-25.sql

@@ -1,9 +1,6 @@
 CREATE TABLE `achievement_demand` (
-  `id` VARCHAR(36) NOT NULL,
   `achievement_id` VARCHAR(36) NOT NULL COMMENT '科技成果ID',
   `demand_id` VARCHAR(36) NOT NULL COMMENT '科技需求ID',
-  `keyword` VARCHAR(16) NOT NULL COMMENT '关键词',
-  PRIMARY KEY (`id`))
+  PRIMARY KEY (`achievement_id`, `demand_id`))
 ENGINE = InnoDB
-COMMENT = '科技成果及科技需求匹配'
-	
+COMMENT = '科技成果及科技需求匹配'

+ 28 - 12
src/main/java/com/goafanti/achievement/service/impl/AchievementServiceImpl.java

@@ -18,8 +18,10 @@ import com.goafanti.achievement.bo.AchievementOrgOwnerDetailBo;
 import com.goafanti.achievement.bo.AchievementUserOwnerDetailBo;
 import com.goafanti.achievement.service.AchievementService;
 import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.dao.AchievementDemandMapper;
 import com.goafanti.common.dao.AchievementKeywordMapper;
 import com.goafanti.common.dao.AchievementMapper;
+import com.goafanti.common.dao.DemandKeywordMapper;
 import com.goafanti.common.dao.NoticeMapper;
 import com.goafanti.common.dao.UserRoleMapper;
 import com.goafanti.common.enums.AchievementAuditStatus;
@@ -31,6 +33,7 @@ import com.goafanti.common.enums.NoticeReadStatus;
 import com.goafanti.common.enums.NoticeStatus;
 import com.goafanti.common.enums.UserType;
 import com.goafanti.common.model.Achievement;
+import com.goafanti.common.model.AchievementDemand;
 import com.goafanti.common.model.AchievementKeyword;
 import com.goafanti.common.model.Admin;
 import com.goafanti.common.model.Notice;
@@ -43,13 +46,17 @@ import com.goafanti.core.shiro.token.TokenManager;
 public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> implements AchievementService {
 
 	@Autowired
-	private AchievementMapper	achievementMapper;
+	private AchievementMapper			achievementMapper;
 	@Autowired
-	private UserRoleMapper		userRoleMapper;
+	private UserRoleMapper				userRoleMapper;
 	@Autowired
-	private NoticeMapper		noticeMapper;
+	private NoticeMapper				noticeMapper;
 	@Autowired
-	private AchievementKeywordMapper achievementKeywordMapper;
+	private AchievementKeywordMapper	achievementKeywordMapper;
+	@Autowired
+	private AchievementDemandMapper		achievementDemandMapper;
+	@Autowired
+	private DemandKeywordMapper			demandKeywordMapper;
 
 	@SuppressWarnings("unchecked")
 	@Override
@@ -128,6 +135,7 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 	@Override
 	public int deleteByPrimaryKey(List<String> id) {
 		achievementKeywordMapper.batcheDeleteByDemandIds(id);
+		achievementDemandMapper.batchDeleteByAchievementIds(id);
 		return achievementMapper.batchDeleteByPrimaryKey(id);
 	}
 
@@ -223,6 +231,16 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 			a.setReleaseDate(now.getTime());
 			a.setReleaseStatus(DemandReleaseStatus.RELEASED.getCode());
 			a.setTechBrokerId(techBroderId);
+			List<String> keywords = achievementKeywordMapper.selectKeywordsByAchievementId(a.getId());
+			if (null != keywords && keywords.size() > 0) {
+				List<AchievementDemand> list = demandKeywordMapper.selectAchievementDemand(keywords);
+				if (null != list && list.size() > 0) {
+					for (AchievementDemand ad : list) {
+						ad.setAchievementId(a.getId());
+					}
+					achievementDemandMapper.insertBatch(list);
+				}
+			}
 		} else {
 			a.setReleaseStatus(DemandReleaseStatus.UNRELEASE.getCode());
 		}
@@ -235,14 +253,15 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 		a.setAuditStatus(AchievementAuditStatus.CREATE.getCode());
 		a.setReleaseStatus(AchievementReleaseStatus.UNRELEASE.getCode());
 		achievementMapper.updateReleaseDate(a.getId());
+		achievementDemandMapper.deleteByAchievementId(a.getId());
 		return achievementMapper.updateByPrimaryKeySelective(a);
 	}
-	
+
 	@Override
 	public AchievementUserOwnerDetailBo selectUserOwnerDetail(String id) {
 		return achievementMapper.selectUserOwnerDetail(id);
 	}
-	
+
 	@Override
 	public AchievementOrgOwnerDetailBo selectOrgOwnerDetail(String id) {
 		return achievementMapper.selectOrgOwnerDetail(id);
@@ -302,10 +321,10 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 		}
 		return n;
 	}
-	
-	private void disposeAchievementKeyword(String[] keywords, Achievement a, boolean delete){
+
+	private void disposeAchievementKeyword(String[] keywords, Achievement a, boolean delete) {
 		if (null != keywords && keywords.length > 0) {
-			if (delete){
+			if (delete) {
 				achievementKeywordMapper.batcheDeleteByDemandId(a.getId());
 			}
 			List<AchievementKeyword> list = new ArrayList<>();
@@ -320,7 +339,4 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 		}
 	}
 
-	
-
-	
 }

+ 5 - 5
src/main/java/com/goafanti/admin/controller/AdminAuditApiController.java

@@ -53,13 +53,13 @@ public class AdminAuditApiController extends CertifyApiController {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "需求ID"));
 			return res;
 		}
-		
+
 		if (DemandAuditStatus.INAUDIT.getCode().equals(d.getAuditStatus())
-				|| DemandAuditStatus.UNAUDITED.getCode().equals(d.getAuditStatus())){
+				|| DemandAuditStatus.UNAUDITED.getCode().equals(d.getAuditStatus())) {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "当前需求状态无法审核!"));
 			return res;
 		}
-		
+
 		res.setData(demandService.updateAuditDemand(d, techBroderId, auditStatus));
 		return res;
 	}
@@ -81,12 +81,12 @@ public class AdminAuditApiController extends CertifyApiController {
 		}
 
 		if (AchievementAuditStatus.INAUDIT.getCode().equals(a.getAuditStatus())
-				|| AchievementAuditStatus.UNAUDITED.getCode().equals(a.getAuditStatus())){
+				|| AchievementAuditStatus.UNAUDITED.getCode().equals(a.getAuditStatus())) {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "当前成果状态无法审核!"));
 			return res;
 		}
 
-			res.setData(achievementService.updateAuditAchievement(a, techBroderId, auditStatus));
+		res.setData(achievementService.updateAuditAchievement(a, techBroderId, auditStatus));
 		return res;
 	}
 

+ 10 - 4
src/main/java/com/goafanti/common/dao/AchievementDemandMapper.java

@@ -1,17 +1,23 @@
 package com.goafanti.common.dao;
 
+import java.util.List;
+
 import com.goafanti.common.model.AchievementDemand;
 
 public interface AchievementDemandMapper {
-    int deleteByPrimaryKey(String id);
+    int deleteByPrimaryKey(AchievementDemand key);
 
     int insert(AchievementDemand record);
 
     int insertSelective(AchievementDemand record);
 
-    AchievementDemand selectByPrimaryKey(String id);
+	void insertBatch(List<AchievementDemand> list);
+
+	int deleteByDemandId(String id);
+
+	int batchDeleteByDemandIds(List<String> id);
 
-    int updateByPrimaryKeySelective(AchievementDemand record);
+	int deleteByAchievementId(String id);
 
-    int updateByPrimaryKey(AchievementDemand record);
+	int batchDeleteByAchievementIds(List<String> id);
 }

+ 5 - 0
src/main/java/com/goafanti/common/dao/AchievementKeywordMapper.java

@@ -2,6 +2,7 @@ package com.goafanti.common.dao;
 
 import java.util.List;
 
+import com.goafanti.common.model.AchievementDemand;
 import com.goafanti.common.model.AchievementKeyword;
 
 public interface AchievementKeywordMapper {
@@ -22,4 +23,8 @@ public interface AchievementKeywordMapper {
 	int batcheDeleteByDemandId(String id);
 
 	int batcheDeleteByDemandIds(List<String> id);
+
+	List<AchievementDemand> selectAchievementDemand(List<String> keywords);
+
+	List<String> selectKeywordsByAchievementId(String id);
 }

+ 7 - 2
src/main/java/com/goafanti/common/dao/DemandKeywordMapper.java

@@ -2,6 +2,7 @@ package com.goafanti.common.dao;
 
 import java.util.List;
 
+import com.goafanti.common.model.AchievementDemand;
 import com.goafanti.common.model.DemandKeyword;
 
 public interface DemandKeywordMapper {
@@ -19,7 +20,11 @@ public interface DemandKeywordMapper {
 
 	void insertBatch(List<DemandKeyword> list);
 
-	int batcheDeleteByDemandId(String demandId);
+	int batchDeleteByDemandId(String demandId);
 
-	int batcheDeleteByDemandIds(List<String> id);
+	int batchDeleteByDemandIds(List<String> id);
+
+	List<String> selectKeywordsByDemandId(String id);
+
+	List<AchievementDemand> selectAchievementDemand(List<String> keywords);
 }

+ 39 - 53
src/main/java/com/goafanti/common/mapper/AchievementDemandMapper.xml

@@ -2,81 +2,67 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.goafanti.common.dao.AchievementDemandMapper" >
   <resultMap id="BaseResultMap" type="com.goafanti.common.model.AchievementDemand" >
-    <id column="id" property="id" jdbcType="VARCHAR" />
-    <result column="achievement_id" property="achievementId" jdbcType="VARCHAR" />
-    <result column="demand_id" property="demandId" jdbcType="VARCHAR" />
-    <result column="keyword" property="keyword" jdbcType="VARCHAR" />
+    <id column="achievement_id" property="achievementId" jdbcType="VARCHAR" />
+    <id column="demand_id" property="demandId" jdbcType="VARCHAR" />
   </resultMap>
-  <sql id="Base_Column_List" >
-    id, achievement_id, demand_id, keyword
-  </sql>
-  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
-    select 
-    <include refid="Base_Column_List" />
-    from achievement_demand
-    where id = #{id,jdbcType=VARCHAR}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
+  <delete id="deleteByPrimaryKey" parameterType="com.goafanti.common.model.AchievementDemand" >
     delete from achievement_demand
-    where id = #{id,jdbcType=VARCHAR}
+    where achievement_id = #{achievementId,jdbcType=VARCHAR}
+      and demand_id = #{demandId,jdbcType=VARCHAR}
   </delete>
   <insert id="insert" parameterType="com.goafanti.common.model.AchievementDemand" >
-    insert into achievement_demand (id, achievement_id, demand_id, 
-      keyword)
-    values (#{id,jdbcType=VARCHAR}, #{achievementId,jdbcType=VARCHAR}, #{demandId,jdbcType=VARCHAR}, 
-      #{keyword,jdbcType=VARCHAR})
+    insert into achievement_demand (achievement_id, demand_id)
+    values (#{achievementId,jdbcType=VARCHAR}, #{demandId,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.goafanti.common.model.AchievementDemand" >
     insert into achievement_demand
     <trim prefix="(" suffix=")" suffixOverrides="," >
-      <if test="id != null" >
-        id,
-      </if>
       <if test="achievementId != null" >
         achievement_id,
       </if>
       <if test="demandId != null" >
         demand_id,
       </if>
-      <if test="keyword != null" >
-        keyword,
-      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
-      <if test="id != null" >
-        #{id,jdbcType=VARCHAR},
-      </if>
       <if test="achievementId != null" >
         #{achievementId,jdbcType=VARCHAR},
       </if>
       <if test="demandId != null" >
         #{demandId,jdbcType=VARCHAR},
       </if>
-      <if test="keyword != null" >
-        #{keyword,jdbcType=VARCHAR},
-      </if>
     </trim>
   </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.AchievementDemand" >
-    update achievement_demand
-    <set >
-      <if test="achievementId != null" >
-        achievement_id = #{achievementId,jdbcType=VARCHAR},
-      </if>
-      <if test="demandId != null" >
-        demand_id = #{demandId,jdbcType=VARCHAR},
-      </if>
-      <if test="keyword != null" >
-        keyword = #{keyword,jdbcType=VARCHAR},
-      </if>
-    </set>
-    where id = #{id,jdbcType=VARCHAR}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.AchievementDemand" >
-    update achievement_demand
-    set achievement_id = #{achievementId,jdbcType=VARCHAR},
-      demand_id = #{demandId,jdbcType=VARCHAR},
-      keyword = #{keyword,jdbcType=VARCHAR}
-    where id = #{id,jdbcType=VARCHAR}
-  </update>
+  
+  <insert id="insertBatch" parameterType="com.goafanti.common.model.AchievementDemand">
+    insert into achievement_demand (achievement_id, demand_id)
+    values 
+    <foreach item="item" index="index" collection="list" separator=",">
+      (
+      	#{item.achievementId,jdbcType=VARCHAR}, #{item.demandId,jdbcType=VARCHAR}
+      )
+    </foreach>
+  </insert>
+  
+   <delete id="deleteByDemandId" parameterType="java.lang.String">
+  	 delete from achievement_demand where demand_id = #{id,jdbcType=VARCHAR}
+  </delete>
+  
+   <delete id="batchDeleteByDemandIds" parameterType="java.util.List">
+  	 delete from achievement_demand where demand_id in
+        <foreach item="item" collection="index" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+  </delete>
+  
+   <delete id="deleteByAchievementId" parameterType="java.lang.String">
+  	 delete from achievement_demand where achievement_id = #{id,jdbcType=VARCHAR}
+  </delete>
+  
+   <delete id="batchDeleteByAchievementIds" parameterType="java.util.List">
+  	 delete from achievement_demand where achievement_id in
+        <foreach item="item" collection="index" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+  </delete>
 </mapper>

+ 20 - 1
src/main/java/com/goafanti/common/mapper/AchievementKeywordMapper.xml

@@ -79,7 +79,7 @@
     </foreach>
   </insert>
   
-  <delete id="batcheDeleteByAchievementId" parameterType="java.lang.String">
+  <delete id="batchDeleteByAchievementId" parameterType="java.lang.String">
   	 delete from achievement_keyword where achievement_id = #{achievementId,jdbcType=VARCHAR}
        
   </delete>
@@ -90,4 +90,23 @@
             #{item}
         </foreach>
   </delete>
+  
+  <select id="selectAchievementDemand" parameterType="java.util.List"
+  				reslutType="com.goafanti.common.model.AchievementDemand">
+  	select count(ak.achievement_id), ak.achievement_id as achievementId
+  		from achievement_keyword ak 
+  		left join achievement a on a.id = ak.achievement_id
+  		where a.audit_status = 4 and a.deleted_sign = 0 and ak.keyword in
+	  		<foreach item="item" collection="index" open="(" separator="," close=")">
+	            #{item}
+	        </foreach> 
+        group by ak.achievement_id
+        order by count(ak.achievement_id) desc
+        LIMIT 20
+  </select>
+  
+  <select id="selectKeywordsByAchievementId" parameterType="java.lang.String" >
+  	select keyword from achievement_keyword where achievement_id = #{id,jdbcType=VARCHAR}
+  </select>
+  
 </mapper>

+ 20 - 2
src/main/java/com/goafanti/common/mapper/DemandKeywordMapper.xml

@@ -79,14 +79,32 @@
     </foreach>
   </insert>
   
-  <delete id="batcheDeleteByDemandId" parameterType="java.lang.String">
+  <delete id="batchDeleteByDemandId" parameterType="java.lang.String">
   	 delete from demand_keyword where demand_id = #{demandId,jdbcType=VARCHAR}
   </delete>
   
-  <delete id="batcheDeleteByDemandIds" parameterType="java.util.List">
+  <delete id="batchDeleteByDemandIds" parameterType="java.util.List">
   	 delete from demand_keyword where demand_id in
         <foreach item="item" collection="index" open="(" separator="," close=")">
             #{item}
         </foreach>
   </delete>
+  
+  <select id="selectKeywordsByDemandId" parameterType="java.lang.String" >
+  	select keyword from demand_keyword where demand_id = #{id,jdbcType=VARCHAR}
+  </select>
+  
+  <select id="selectAchievementDemand" parameterType="java.util.List"
+  				reslutType="com.goafanti.common.model.AchievementDemand">
+  	select count(dk.demand_id), dk.demand_id as demandId
+  		from demand_keyword dk 
+  		left join demand d on d.id = dk.demand_id
+  		where d.audit_status = 4 and d.deleted_sign = 0 and dk.keyword in
+	  		<foreach item="item" collection="index" open="(" separator="," close=")">
+	            #{item}
+	        </foreach> 
+        group by dk.demand_id
+        order by count(dk.demand_id) desc
+        LIMIT 20
+  </select>
 </mapper>

+ 0 - 23
src/main/java/com/goafanti/common/model/AchievementDemand.java

@@ -1,8 +1,6 @@
 package com.goafanti.common.model;
 
 public class AchievementDemand {
-    private String id;
-
     /**
     * 科技成果ID
     */
@@ -13,19 +11,6 @@ public class AchievementDemand {
     */
     private String demandId;
 
-    /**
-    * 关键词
-    */
-    private String keyword;
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
     public String getAchievementId() {
         return achievementId;
     }
@@ -41,12 +26,4 @@ public class AchievementDemand {
     public void setDemandId(String demandId) {
         this.demandId = demandId;
     }
-
-    public String getKeyword() {
-        return keyword;
-    }
-
-    public void setKeyword(String keyword) {
-        this.keyword = keyword;
-    }
 }

+ 30 - 11
src/main/java/com/goafanti/demand/service/impl/DemandServiceImpl.java

@@ -14,6 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.dao.AchievementDemandMapper;
+import com.goafanti.common.dao.AchievementKeywordMapper;
 import com.goafanti.common.dao.DemandKeywordMapper;
 import com.goafanti.common.dao.DemandMapper;
 import com.goafanti.common.dao.NoticeMapper;
@@ -26,6 +28,7 @@ import com.goafanti.common.enums.DemandStatus;
 import com.goafanti.common.enums.NoticeReadStatus;
 import com.goafanti.common.enums.NoticeStatus;
 import com.goafanti.common.enums.UserType;
+import com.goafanti.common.model.AchievementDemand;
 import com.goafanti.common.model.Demand;
 import com.goafanti.common.model.DemandKeyword;
 import com.goafanti.common.model.Notice;
@@ -42,15 +45,19 @@ import com.goafanti.demand.service.DemandService;
 @Service
 public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements DemandService {
 	@Autowired
-	private DemandMapper	demandMapper;
+	private DemandMapper				demandMapper;
 	@Autowired
-	private UserMapper		userMapper;
+	private UserMapper					userMapper;
 	@Autowired
-	private UserRoleMapper	userRoleMapper;
+	private UserRoleMapper				userRoleMapper;
 	@Autowired
-	private NoticeMapper	noticeMapper;
+	private NoticeMapper				noticeMapper;
 	@Autowired
-	private DemandKeywordMapper demandKeywordMapper;
+	private DemandKeywordMapper			demandKeywordMapper;
+	@Autowired
+	private AchievementDemandMapper		achievementDemandMapper;
+	@Autowired
+	private AchievementKeywordMapper	achievementKeywordMapper;
 
 	@SuppressWarnings("unchecked")
 	@Override
@@ -180,7 +187,8 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 
 	@Override
 	public int deleteByPrimaryKey(List<String> id) {
-		demandKeywordMapper.batcheDeleteByDemandIds(id);
+		demandKeywordMapper.batchDeleteByDemandIds(id);
+		achievementDemandMapper.batchDeleteByDemandIds(id);
 		return demandMapper.batchDeleteByPrimaryKey(id);
 	}
 
@@ -221,7 +229,8 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 		d.setReleaseStatus(DemandReleaseStatus.UNRELEASE.getCode());
 		d.setStatus(DemandStatus.UNRESOLVED.getCode());
 		demandMapper.updateReleaseDate(d.getId());
-		demandKeywordMapper.batcheDeleteByDemandId(d.getId());
+		demandKeywordMapper.batchDeleteByDemandId(d.getId());
+		achievementDemandMapper.deleteByDemandId(d.getId());
 		return demandMapper.updateByPrimaryKeySelective(d);
 	}
 
@@ -234,6 +243,16 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 			d.setReleaseDate(now.getTime());
 			d.setReleaseStatus(DemandReleaseStatus.RELEASED.getCode());
 			d.setTechBrokerId(techBroderId);
+			List<String> keywords = demandKeywordMapper.selectKeywordsByDemandId(d.getId());
+			if (null != keywords && keywords.size() > 0) {
+				List<AchievementDemand> list = achievementKeywordMapper.selectAchievementDemand(keywords);
+				if (null != list && list.size() > 0) {
+					for(AchievementDemand ad : list){
+						ad.setDemandId(d.getId());
+					}
+					achievementDemandMapper.insertBatch(list);
+				}
+			}
 		} else {
 			d.setReleaseStatus(DemandReleaseStatus.UNRELEASE.getCode());
 		}
@@ -425,11 +444,11 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 		}
 		return n;
 	}
-	
-	private void disposeDemandKeyword(String[] keywords, Demand d, boolean delete){
+
+	private void disposeDemandKeyword(String[] keywords, Demand d, boolean delete) {
 		if (null != keywords && keywords.length > 0) {
-			if (delete){
-				demandKeywordMapper.batcheDeleteByDemandId(d.getId());
+			if (delete) {
+				demandKeywordMapper.batchDeleteByDemandId(d.getId());
 			}
 			List<DemandKeyword> list = new ArrayList<>();
 			for (int i = 0; i < keywords.length; i++) {