Browse Source

科技成果及科技需求匹配

Antiloveg 8 years ago
parent
commit
261171ef91

+ 14 - 1
src/main/java/com/goafanti/achievement/controller/AchievementApiController.java

@@ -1,6 +1,7 @@
 package com.goafanti.achievement.controller;
 
 import java.util.Arrays;
+import java.util.List;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.goafanti.achievement.bo.InputAchievement;
+import com.goafanti.achievement.service.AchievementOrderService;
 import com.goafanti.achievement.service.AchievementService;
 import com.goafanti.admin.service.AftFileService;
 import com.goafanti.common.bo.Result;
@@ -23,8 +25,10 @@ import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.enums.AchievementAuditStatus;
 import com.goafanti.common.enums.AchievementFields;
+import com.goafanti.common.enums.AchievementOrderStatus;
 import com.goafanti.common.enums.AttachmentType;
 import com.goafanti.common.model.Achievement;
+import com.goafanti.common.model.AchievementOrder;
 import com.goafanti.common.model.AftFile;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.shiro.token.TokenManager;
@@ -36,6 +40,8 @@ public class AchievementApiController extends CertifyApiController {
 	private AchievementService	achievementService;
 	@Resource
 	private AftFileService		aftFileService;
+	@Resource
+	private AchievementOrderService achievementOrderService;
 	
 	
 	
@@ -288,7 +294,14 @@ public class AchievementApiController extends CertifyApiController {
 	@RequestMapping(value = "/delete", method = RequestMethod.POST)
 	private Result delete(@RequestParam(name = "ids[]", required = false) String[] ids) {
 		Result res = new Result();
-		if (ids == null || ids.length < 1) {
+		if (ids == null || ids.length == 1) {
+			List<AchievementOrder> list = achievementOrderService.selectAchievementOrderByAchievementId(ids[0]);
+			for (AchievementOrder order : list){
+				if (!AchievementOrderStatus.CREATE.getCode().equals(order.getStatus())){
+					res.getError().add(buildError("", "当前科技成果有订单,无法删除!"));
+					return res;
+				}
+			}
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
 		} else {
 			res.setData(achievementService.deleteByPrimaryKey(Arrays.asList(ids)));

+ 4 - 0
src/main/java/com/goafanti/achievement/service/AchievementOrderService.java

@@ -1,5 +1,7 @@
 package com.goafanti.achievement.service;
 
+import java.util.List;
+
 import com.goafanti.achievement.bo.AchievementOrderListBo;
 import com.goafanti.common.model.AchievementOrder;
 import com.goafanti.common.model.AchievementOrderLog;
@@ -17,4 +19,6 @@ public interface AchievementOrderService {
 
 	int updateShutdownByUser(AchievementOrder order);
 
+	List<AchievementOrder> selectAchievementOrderByAchievementId(String string);
+
 }

+ 2 - 0
src/main/java/com/goafanti/achievement/service/AchievementService.java

@@ -53,5 +53,7 @@ public interface AchievementService {
 
 	AchievementDetailBo selectAchievementSearchDetail(String uid, String id);
 
+	void updateMatchDemand(Achievement a);
+
 
 }

+ 5 - 0
src/main/java/com/goafanti/achievement/service/impl/AchievementOrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.goafanti.achievement.service.impl;
 
 import java.util.Calendar;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
@@ -77,5 +78,9 @@ public class AchievementOrderServiceImpl extends BaseMybatisDao<AchievementOrder
 		order.setStatus(AchievementOrderStatus.SHUTDOWNUNSIGN.getCode());
 		return achievementOrderMapper.updateByPrimaryKeySelective(order);
 	}
+	@Override
+	public List<AchievementOrder> selectAchievementOrderByAchievementId(String achievementId) {
+		return achievementOrderMapper.selectAchievementOrderByAchievementId(achievementId);
+	}
 
 }

+ 15 - 10
src/main/java/com/goafanti/achievement/service/impl/AchievementServiceImpl.java

@@ -237,16 +237,6 @@ 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());
 		}
@@ -447,4 +437,19 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 		}
 	}
 
+	@Override
+	public void updateMatchDemand(Achievement a) {
+		achievementDemandMapper.deleteByAchievementId(a.getId());//删除之前匹配单
+		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);
+			}
+		}
+	}
+
 }

+ 23 - 0
src/main/java/com/goafanti/admin/controller/AdminAchievementApiController.java

@@ -32,6 +32,7 @@ import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.enums.AchievementAuditStatus;
 import com.goafanti.common.enums.AchievementFields;
 import com.goafanti.common.enums.AchievementImportFields;
+import com.goafanti.common.enums.AchievementReleaseStatus;
 import com.goafanti.common.enums.AttachmentType;
 import com.goafanti.common.enums.DeleteStatus;
 import com.goafanti.common.model.Achievement;
@@ -49,6 +50,28 @@ public class AdminAchievementApiController extends CertifyApiController {
 	private UserService			userService;
 	@Resource
 	private AftFileService		aftFileService;
+	
+	/**
+	 * 科技成果匹配科技需求
+	 */
+	@RequestMapping(value = "/matchDemand", method = RequestMethod.POST)
+	public Result matchDemand(String id){
+		Result res = new Result();
+		if (StringUtils.isBlank(id)) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到成果ID", "成果ID"));
+			return res;
+		}
+		
+		Achievement a = achievementService.selectByPrimaryKey(id);
+		if (null == a || !AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
+				|| !DeleteStatus.UNDELETE.getCode().equals(a.getDeletedSign())
+				|| !AchievementReleaseStatus.RELEASED.getCode().equals(a.getReleaseStatus())){
+			res.getError().add(buildError("", "当前状态无法匹配!"));
+			return res;
+		}
+		achievementService.updateMatchDemand(a);
+		return res;
+	}
 
 	/**
 	 * 批量导入科技成果

+ 23 - 2
src/main/java/com/goafanti/admin/controller/AdminDemandApiController.java

@@ -33,6 +33,7 @@ import com.goafanti.common.enums.DemandAuditStatus;
 import com.goafanti.common.enums.DemandDataCategory;
 import com.goafanti.common.enums.DemandFields;
 import com.goafanti.common.enums.DemandImportFields;
+import com.goafanti.common.enums.DemandReleaseStatus;
 import com.goafanti.common.model.AftFile;
 import com.goafanti.common.model.Demand;
 import com.goafanti.common.utils.LoggerUtils;
@@ -53,6 +54,26 @@ public class AdminDemandApiController extends CertifyApiController {
 	private AftFileService	aftFileService;
 
 	/**
+	 * 科技需求匹配科技成果
+	 */
+	public Result matchAchievement(String id){
+		Result res = new Result();
+		if (StringUtils.isBlank(id)) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求ID", "成果ID"));
+			return res;
+		}
+		Demand d = demandService.selectByPrimaryKey(id);
+		if (null == d || !DemandReleaseStatus.RELEASED.getCode().equals(d.getReleaseStatus())
+				|| !DeleteStatus.UNDELETE.getCode().equals(d.getDeletedSign()) 
+				|| !DemandAuditStatus.AUDITED.getCode().equals(d.getAuditStatus())){
+			res.getError().add(buildError("", "当前状态无法匹配!"));
+			return res;
+		}
+		demandService.updateMatchAchievement(d);
+		return res;
+	}
+
+	/**
 	 * 批量导入科技需求
 	 */
 	@SuppressWarnings("unchecked")
@@ -502,8 +523,8 @@ public class AdminDemandApiController extends CertifyApiController {
 					f.setAccessible(true);
 					String fn = f.getName();
 					if (!fn.equals("keywords") && (fo == null || "".equals(fo))) {
-						res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "",
-								DemandImportFields.getFieldDesc(fn)));
+						res.getError().add(
+								buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", DemandImportFields.getFieldDesc(fn)));
 						return res;
 					}
 				} catch (IllegalArgumentException | IllegalAccessException e) {

+ 4 - 0
src/main/java/com/goafanti/common/dao/AchievementOrderMapper.java

@@ -1,5 +1,7 @@
 package com.goafanti.common.dao;
 
+import java.util.List;
+
 import com.goafanti.common.model.AchievementOrder;
 
 public interface AchievementOrderMapper {
@@ -16,4 +18,6 @@ public interface AchievementOrderMapper {
     int updateByPrimaryKey(AchievementOrder record);
 
 	AchievementOrder selectAchievementOrderByUidAndAchievementId(String uid, String achievementId);
+
+	List<AchievementOrder> selectAchievementOrderByAchievementId(String achievementId);
 }

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

@@ -96,7 +96,7 @@
   	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
+  		where a.audit_status = 3 and a.deleted_sign = 0 and ak.keyword in
 	  		<foreach item="item" collection="index" open="(" separator="," close=")">
 	            #{item}
 	        </foreach> 

+ 7 - 0
src/main/java/com/goafanti/common/mapper/AchievementOrderMapper.xml

@@ -215,4 +215,11 @@
   		and ao.status = #{status,jdbcType=INTEGER}
   	</if>
   </select>
+  
+  <select id="selectAchievementOrderByAchievementId" parameterType="java.lang.String" resultMap="BaseResultMap">
+  	 select 
+    <include refid="Base_Column_List" />
+    from achievement_order
+    where achievement_id = #{achievementId,jdbcType=VARCHAR}
+  </select>
 </mapper>

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

@@ -99,7 +99,7 @@
   	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
+  		where d.audit_status = 3 and d.deleted_sign = 0 and dk.keyword in
 	  		<foreach item="item" collection="index" open="(" separator="," close=")">
 	            #{item}
 	        </foreach> 

+ 2 - 0
src/main/java/com/goafanti/demand/service/DemandService.java

@@ -57,5 +57,7 @@ public interface DemandService {
 
 	DemandSearchDetailBo selectDemandSearchDetail(String uid, String id);
 
+	void updateMatchAchievement(Demand d);
+
 
 }

+ 15 - 10
src/main/java/com/goafanti/demand/service/impl/DemandServiceImpl.java

@@ -250,16 +250,6 @@ 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());
 		}
@@ -560,5 +550,20 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 		}
 	}
 
+	@Override
+	public void updateMatchAchievement(Demand d) {
+		achievementDemandMapper.deleteByDemandId(d.getId());
+		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);
+			}
+		}
+	}
+
 
 }