package com.goafanti.common.controller; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; import com.goafanti.achievement.service.AchievementService; import com.goafanti.common.enums.AchievementBargainingMode; import com.goafanti.common.enums.AchievementMaturity; import com.goafanti.common.enums.AchievementTransferMode; import com.goafanti.common.enums.UserLevel; import com.goafanti.common.enums.UserType; import com.goafanti.common.service.FieldGlossoryService; import com.goafanti.demand.service.DemandService; import com.goafanti.portal.bo.AchievementPortalDetailBo; import com.goafanti.portal.bo.AchievementPortalSimilarListBo; import com.goafanti.portal.bo.DemandPortalDetailBo; import com.goafanti.portal.bo.DemandPortalSimilarListBo; @Controller public class PortalController extends BaseController { @Resource private AchievementService achievementService; @Resource private DemandService demandService; @Resource private FieldGlossoryService fieldGlossoryService; private static final String UNIT = "万元"; private static final int MULTIPLE = 20; private static final String DELIMITER = "/"; private static final String PRICE_NEGOTIABLE = "价格面议"; private static final String UNCERTIFY = "未认证"; @RequestMapping(value = "/index", method = RequestMethod.GET) public ModelAndView index(HttpServletRequest request, ModelAndView modelview) { return home(request, modelview); } @RequestMapping(value = "/", method = RequestMethod.GET) public ModelAndView home(HttpServletRequest request, ModelAndView modelview) { RedirectView rv = new RedirectView(); rv.setUrl(request.getContextPath() + "/portal/index"); rv.setExposeModelAttributes(false); modelview.setView(rv); return modelview; } /** * 科技需求详情 */ @RequestMapping(value = "/portal/detail/demandDetail", method = RequestMethod.GET) public ModelAndView portalDemandDetail(String id, Integer type) { ModelAndView mv = new ModelAndView(); DemandPortalDetailBo demand = null; if (UserType.PERSONAL.getCode().equals(type)) { demand = demandService.findUserPortalDemandDetail(id); } else if (UserType.ORGANIZATION.getCode().equals(type)) { demand = demandService.findOrgPortalDemandDetail(id); } if (null != demand) { if (null != demand.getBudgetCost()) { demand.setBudgetCostS(demand.getBudgetCost() + UNIT); } else { demand.setBudgetCostS(PRICE_NEGOTIABLE); } if (StringUtils.isBlank(demand.getEmployerName())) { if (UserLevel.GENERAL.getCode().equals(demand.getLevel())) { demand.setEmployerName(UNCERTIFY); } else { demand.setEmployerName(" "); } } Integer industryCategoryA = demand.getIndustryCategoryA(); boolean hasCategoryA = false; boolean hasCategoryB = false; if (null != industryCategoryA) { List similarList = demandService.findByIndustryCategoryA(industryCategoryA, demand.getId()); if (!similarList.isEmpty()) { for (DemandPortalSimilarListBo s : similarList) { hasCategoryA = StringUtils.isNotBlank(s.getIndustryCategoryAS()); hasCategoryB = StringUtils.isNotBlank(s.getIndustryCategoryBS()); s.setIndustryCategory((hasCategoryA ? s.getIndustryCategoryAS() : "") + (hasCategoryA && hasCategoryB ? DELIMITER : "") + (hasCategoryB ? s.getIndustryCategoryBS() : "")); if (null != s.getBudgetCost() || s.getBudgetCost().compareTo(BigDecimal.ZERO) > 0) { s.setBudgetCostS(s.getBudgetCost() + UNIT); } else { s.setBudgetCostS(PRICE_NEGOTIABLE); } } } mv.addObject("similarList", similarList); hasCategoryA = StringUtils.isNotBlank(demand.getIndustryCategoryAS()); } hasCategoryB = StringUtils.isNotBlank(demand.getIndustryCategoryBS()); demand.setIndustryCategory((hasCategoryA ? demand.getIndustryCategoryAS() : "") + (hasCategoryA && hasCategoryB ? DELIMITER : "") + (hasCategoryB ? demand.getIndustryCategoryBS() : "")); demand.setLocation((StringUtils.isBlank(demand.getProvince()) ? "" : demand.getProvince()) + (StringUtils.isBlank(demand.getCity()) ? "" : demand.getCity())); } mv.setViewName("/portal/detail/demandDetail"); mv.addObject("demand", demand); return mv; } /** * 科技成果详情 */ @RequestMapping(value = "/portal/detail/achievementDetail", method = RequestMethod.GET) public ModelAndView portalAchievementDetail(String id, Integer type) { ModelAndView mv = new ModelAndView(); AchievementPortalDetailBo achievement = null; if (UserType.PERSONAL.getCode().equals(type)) { achievement = achievementService.findUserPortalAchievementDetail(id); } else if (UserType.ORGANIZATION.getCode().equals(type)) { achievement = achievementService.findOrgPortalAchievementDetail(id); } if (null != achievement) { if (StringUtils.isBlank(achievement.getOwnerName())) { if (UserLevel.GENERAL.getCode().equals(achievement.getLevel())) { achievement.setOwnerName(UNCERTIFY); } else { achievement.setOwnerName(" "); } } Integer fieldA = achievement.getFieldA(); String field = ""; boolean a = Boolean.FALSE; boolean b = Boolean.FALSE; if (null != fieldA) { List similarList = achievementService.findByFieldA(fieldA, achievement.getId(), type); if (!similarList.isEmpty()) { for (AchievementPortalSimilarListBo bo : similarList) { if (null != bo.getMaturity()) { bo.setMaturityS(bo.getMaturity() * MULTIPLE + "%"); } if (null == bo.getBargainingMode() || AchievementBargainingMode.NEGOTIABLE.getCode().equals(bo.getBargainingMode())) { bo.setTransferPriceS(PRICE_NEGOTIABLE); } else { if (null != bo.getTransferPrice() && bo.getTransferPrice().compareTo(BigDecimal.ZERO) > 0) { bo.setTransferPriceS(bo.getTransferPrice() + UNIT); } else { bo.setTransferPriceS(PRICE_NEGOTIABLE); } } String ulocation = ""; String uprovince = bo.getUprovince(); String ucity = bo.getUcity(); ulocation += (StringUtils.isBlank(uprovince) ? "" : uprovince) + (StringUtils.isBlank(ucity) ? "" : ucity); String olocation = ""; String oprovince = bo.getOprovince(); String ocity = bo.getOcity(); olocation += (StringUtils.isBlank(oprovince) ? "" : oprovince) + (StringUtils.isBlank(ocity) ? "" : ocity); bo.setLocation(StringUtils.isNotBlank(ulocation) ? ulocation : (StringUtils.isNotBlank(olocation) ? olocation : "")); } } mv.addObject("similarList", similarList); if (StringUtils.isNotBlank(achievement.getFieldAS())) { a = Boolean.TRUE; } } if (StringUtils.isNotBlank(achievement.getFieldBS())) { b = Boolean.TRUE; } field += (a ? achievement.getFieldAS() : "") + (a && b ? DELIMITER : "") + (b ? achievement.getFieldBS() : ""); achievement.setField(field); String technicalPictureUrl = achievement.getTechnicalPictureUrl(); if (StringUtils.isNotBlank(technicalPictureUrl)) { achievement.setPictureList(Arrays.asList(technicalPictureUrl.trim().split(",|,"))); } Integer transfermode = achievement.getTransferMode(); if (null != transfermode) { if (AchievementTransferMode.FULLTRANSFER.getCode().equals(transfermode)) { achievement.setTransferModeS(AchievementTransferMode.FULLTRANSFER.getDesc()); } else if (AchievementTransferMode.PERMISSIONTRANSFER.getCode().equals(transfermode)) { achievement.setTransferModeS(AchievementTransferMode.PERMISSIONTRANSFER.getDesc()); } else if (AchievementTransferMode.TECHNOLOGYSHARES.getCode().equals(transfermode)) { achievement.setTransferModeS(AchievementTransferMode.TECHNOLOGYSHARES.getDesc()); } else if (AchievementTransferMode.EXCLUSIVETECHNOLOGYSHARES.getCode().equals(transfermode)) { achievement.setTransferModeS(AchievementTransferMode.EXCLUSIVETECHNOLOGYSHARES.getDesc()); } } Integer maturity = achievement.getMaturity(); if (null != maturity) { if (AchievementMaturity.RESEARCH.getCode().equals(maturity)) { achievement.setMaturityS(AchievementMaturity.RESEARCH.getDesc()); } else if (AchievementMaturity.SAMPLE.getCode().equals(maturity)) { achievement.setMaturityS(AchievementMaturity.SAMPLE.getDesc()); } else if (AchievementMaturity.PRIMARYTEST.getCode().equals(maturity)) { achievement.setMaturityS(AchievementMaturity.PRIMARYTEST.getDesc()); } else if (AchievementMaturity.INTERMEDIATETEST.getCode().equals(maturity)) { achievement.setMaturityS(AchievementMaturity.INTERMEDIATETEST.getDesc()); } else if (AchievementMaturity.MASSPRODUCTION.getCode().equals(maturity)) { achievement.setMaturityS(AchievementMaturity.MASSPRODUCTION.getDesc()); } } String location = ""; String province = achievement.getProvince(); String city = achievement.getCity(); location += (StringUtils.isBlank(province) ? "" : province) + (StringUtils.isBlank(city) ? "" : city); if (null == achievement.getBargainingMode() || AchievementBargainingMode.NEGOTIABLE.equals(achievement.getBargainingMode())) { achievement.setTransferPriceS(PRICE_NEGOTIABLE); } else { if (null != achievement.getTransferPrice()) { achievement.setTransferPriceS(achievement.getTransferPrice() + UNIT); } else { achievement.setTransferPriceS(PRICE_NEGOTIABLE); } } achievement.setLocation(location); } mv.setViewName("/portal/detail/achievementDetail"); mv.addObject("achievement", achievement); return mv; } }