package platform.modules.carrier.service; import com.feilong.core.util.CollectionsUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import platform.common.Constant; import platform.common.base.model.DictionaryItem; import platform.common.base.service.BaseService; import platform.common.base.service.DictionaryItemService; import platform.common.util.ShiroUtils; import platform.modules.build.entity.Company; import platform.modules.build.service.CompanyContactService; import platform.modules.build.service.CompanyService; import platform.modules.carrier.dao.RentalProjectCompanyDao; import platform.modules.carrier.dao.RentalProjectDao; import platform.modules.carrier.dto.*; import platform.modules.carrier.entity.Park; import platform.modules.carrier.entity.RentalProject; import platform.modules.carrier.entity.RentalProjectCompany; import platform.modules.government.dao.AttachmentDao; import platform.modules.government.entity.Attachment; import platform.modules.government.entity.FileDown; import platform.modules.government.entity.Street; import platform.modules.government.entity.User; import platform.modules.government.service.AttachmentService; import platform.modules.government.service.StreetService; import platform.modules.government.service.UserService; import javax.servlet.http.HttpServletRequest; import java.util.*; @Service @Transactional public class RentalProjectService extends BaseService { @Autowired private RentalProjectDao rentalProjectDao; @Autowired private DictionaryItemService dictionaryItemService; @Autowired private StreetService streetService; @Autowired private UserService userService; @Autowired private CompanyService companyService; @Autowired private CompanyContactService companyContactService; @Autowired private AttachmentService attachmentService; @Autowired private RentalProjectCompanyService rentalProjectCompanyService; //保存 public int create(RentalProject rentalProject) { rentalProject.setStatus(1); int i = this.insertAndGetId(rentalProject); //项目主图 if (isMainPicture(rentalProject.getMain_pic())){ Attachment attachment = attachmentService.findById(rentalProject.getMain_pic().getFile_id()); if (attachment != null){ attachmentService.updateAttachment(Constant.Attachment.RENTAL_MAIN_PIC, i, rentalProject.getMain_pic().getFile_id()); } } //相关资质文件 List fileDownList = rentalProject.getFileDownList(); attachmentService.deleteByBusiness(Constant.Attachment.RENTAL, rentalProject.getId()); if (!CollectionUtils.isEmpty(fileDownList)) { for (FileDown fileDown : fileDownList) { attachmentService.updateAttachment(Constant.Attachment.RENTAL, rentalProject.getId(), fileDown.getFile_id()); } } //街道代办企业 if (rentalProject.getRentalProjectCompany() != null){ RentalProjectCompany company =rentalProject.getRentalProjectCompany(); company.setRental_id(i); rentalProjectCompanyService.insertAndGetId(company); } //给所有街道园区发送信息 saveMessage(rentalProject); return i; } private boolean isMainPicture(FileDown main_pic) { return main_pic != null && main_pic.getFile_id() != null; } /** * 发送消息 * @param rentalProject */ private void saveMessage(RentalProject rentalProject) { } //修改 public int modify(RentalProject rentalProject) { int i = this.updateSelective(rentalProject); attachmentService.deleteByBusiness(Constant.Attachment.RENTAL_MAIN_PIC, rentalProject.getId()); if (isMainPicture(rentalProject.getMain_pic())){ Attachment attachment = attachmentService.findById(rentalProject.getMain_pic().getFile_id()); if (isChangePic(attachment)){ attachmentService.updateAttachment(Constant.Attachment.RENTAL_MAIN_PIC, rentalProject.getId(), rentalProject.getMain_pic().getFile_id()); } } List fileDownList = rentalProject.getFileDownList(); attachmentService.deleteByBusiness(Constant.Attachment.RENTAL, rentalProject.getId()); if (!CollectionUtils.isEmpty(fileDownList)) { for (FileDown fileDown : fileDownList) { attachmentService.updateAttachment(Constant.Attachment.RENTAL, rentalProject.getId(), fileDown.getFile_id()); } } //街道代办企业 if (rentalProject.getRentalProjectCompany() != null){ int companyId = rentalProjectCompanyService.findByRentalId(rentalProject.getId()).getId(); RentalProjectCompany company = rentalProject.getRentalProjectCompany(); company.setId(companyId); rentalProjectCompanyService.updateSelective(company); } return i; } private boolean isChangePic(Attachment attachment) { return attachment == null || attachment.getBusiness_id() == null; } //获取详情 public RentalProject getById(Integer id) { RentalProject rentalProject = this.findById(id); int i = rentalProject.getRead_count() == null ? 0 : rentalProject.getRead_count(); rentalProject.setRead_count(i + 1); this.update(rentalProject); if (rentalProject.getIntention_street() != null) { Street street = streetService.selectById(rentalProject.getIntention_street()); rentalProject.setIntention_street_desc(street.getName()); } if (rentalProject.getDemand() != null) { rentalProject.setDemand_desc( dictionaryItemService.findByTypeAndValue(Constant.DictionaryType.DEMAND, rentalProject.getDemand().toString()).getName() ); } User user = userService.getUser(rentalProject.getCreate_by()); if (user != null) { Company company = companyService.getCompanyInfo(user.getCompany_id()); if (null != company) { company.setCompanyContacts(companyContactService.findByCompanyId(company.getId())); } if (Objects.equals(company.getIndustry_code(), "Empty")) { company.setIndustry_code(company.getIndustry_name()); } else { company.setIndustry_code(dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.INDUSTRY_TYPE, company.getIndustry_code())); } rentalProject.setCompany(company); } //获取街道代办的企业信息 RentalProjectCompany rentalProjectCompany = rentalProjectCompanyService.findByRentalId(rentalProject.getId()); rentalProject.setRentalProjectCompany(rentalProjectCompany); List attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.RENTAL, id, null); List fileDowns = new ArrayList<>(); if (null != attachments && attachments.size() > 0) { for (Attachment attachment : attachments) { FileDown fileDown = new FileDown(attachment.getId(), attachment.getFile_name(), attachment.getFile_url(), attachment.getDownload_uri()); fileDowns.add(fileDown); } } rentalProject.setFileDownList(fileDowns); //获取主图 List mainPic = attachmentService.selectByIdAndBusinessId(Constant.Attachment.RENTAL_MAIN_PIC, id, null); if (mainPic.size() > 0) { FileDown fileDown = new FileDown(mainPic.get(0).getId(), mainPic.get(0).getFile_name(), mainPic.get(0).getFile_url(), mainPic.get(0).getDownload_uri()); rentalProject.setMain_pic(fileDown); } return rentalProject; } //我的分页 @Transactional(readOnly = true) public PageInfo findMyList(Integer pageNum, Integer pageSize, CustomSearchCondition param) throws Exception { PageHelper.startPage(pageNum, pageSize); List list = rentalProjectDao.findListByCreater(param, ShiroUtils.getUserId()); List typeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.DEMAND); for (RentalProject rentalProject : list) { if (null != typeList && typeList.size() > 0) { for (DictionaryItem dictionaryItem : typeList) { if (Objects.equals(rentalProject.getDemand() + "", dictionaryItem.getValue())) { rentalProject.setDemand_desc(dictionaryItem.getName()); } } } if (!Objects.isNull(rentalProject.getIntention_street())) { rentalProject.setIntention_street_desc(streetService.getStreetName(rentalProject.getIntention_street())); } User user = userService.getUser(rentalProject.getCreate_by()); if (user != null) { Company company = companyService.getCompanyInfo(user.getCompany_id()); if (null != company) { company.setCompanyContacts(companyContactService.findByCompanyId(company.getId())); } if (Objects.equals(company.getIndustry_code(), "Empty")) { company.setIndustry_code(company.getIndustry_name()); } else { company.setIndustry_code(dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.INDUSTRY_TYPE, company.getIndustry_code())); } rentalProject.setCompany_name(company.getCompany_name()); rentalProject.setIndustry_name(company.getIndustry_name()); } if (rentalProject.getStatus() == 1) { rentalProject.setStatus_desc("已上架"); } else if (rentalProject.getStatus() == 0) { rentalProject.setStatus_desc("已下架"); } //获取主图 List mainPic = attachmentService.selectByIdAndBusinessId(Constant.Attachment.RENTAL_MAIN_PIC, rentalProject.getId(), null); if (mainPic.size() > 0) { FileDown fileDown = new FileDown(mainPic.get(0).getId(), mainPic.get(0).getFile_name(), mainPic.get(0).getFile_url(), param.getFile_url()); rentalProject.setMain_pic(fileDown); } } return new PageInfo<>(list); } //我的分页 @Transactional(readOnly = true) public PageInfo findMyList(Integer userId, CustomSearchCondition param) throws Exception { PageHelper.startPage(param.getPageNum(), param.getPageSize()); List list = rentalProjectDao.findListByCreater(param, userId); List typeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.DEMAND); for (RentalProject rentalProject : list) { if (null != typeList && typeList.size() > 0) { for (DictionaryItem dictionaryItem : typeList) { if (Objects.equals(rentalProject.getDemand() + "", dictionaryItem.getValue())) { rentalProject.setDemand_desc(dictionaryItem.getName()); } } } if (!Objects.isNull(rentalProject.getIntention_street())) { rentalProject.setIntention_street_desc(streetService.getStreetName(rentalProject.getIntention_street())); } User user = userService.getUser(rentalProject.getCreate_by()); if (user != null) { Company company = companyService.getCompanyInfo(user.getCompany_id()); if (null != company) { company.setCompanyContacts(companyContactService.findByCompanyId(company.getId())); } if (Objects.equals(company.getIndustry_code(), "Empty")) { company.setIndustry_code(company.getIndustry_name()); } else { company.setIndustry_code(dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.INDUSTRY_TYPE, company.getIndustry_code())); } rentalProject.setCompany_name(company.getCompany_name()); rentalProject.setIndustry_name(company.getIndustry_name()); } if (rentalProject.getStatus() == 1) { rentalProject.setStatus_desc("已上架"); } else if (rentalProject.getStatus() == 0) { rentalProject.setStatus_desc("已下架"); } //获取主图 List mainPic = attachmentService.selectByIdAndBusinessId(Constant.Attachment.RENTAL_MAIN_PIC, rentalProject.getId(), null); if (mainPic.size() > 0) { FileDown fileDown = new FileDown(mainPic.get(0).getId(), mainPic.get(0).getFile_name(), mainPic.get(0).getFile_url(), param.getFile_url()); rentalProject.setMain_pic(fileDown); } } return new PageInfo<>(list); } //前台分页 @Transactional(readOnly = true) public PageInfo findList(Integer pageNum, Integer pageSize, CustomSearchCondition param) throws Exception { PageHelper.startPage(pageNum, pageSize); List list = rentalProjectDao.findList(param); List typeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.DEMAND); for (RentalProject rentalProject : list) { if (null != typeList && typeList.size() > 0) { for (DictionaryItem dictionaryItem : typeList) { if (Objects.equals(rentalProject.getDemand() + "", dictionaryItem.getValue())) { rentalProject.setDemand_desc(dictionaryItem.getName()); } } } if (!Objects.isNull(rentalProject.getIntention_street())) { rentalProject.setIntention_street_desc(streetService.getStreetName(rentalProject.getIntention_street())); } User user = userService.getUser(rentalProject.getCreate_by()); if (user != null) { Company company = companyService.getCompanyInfo(user.getCompany_id()); if (null != company) { company.setCompanyContacts(companyContactService.findByCompanyId(company.getId())); } if (Objects.equals(company.getIndustry_code(), "Empty")) { company.setIndustry_code(company.getIndustry_name()); } else { company.setIndustry_name(dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.INDUSTRY_TYPE, company.getIndustry_code())); } rentalProject.setCompany_name(company.getCompany_name()); rentalProject.setIndustry_name(company.getIndustry_name()); } //获取街道代办的企业信息 RentalProjectCompany rentalProjectCompany = rentalProjectCompanyService.findByRentalId(rentalProject.getId()); if (rentalProjectCompany != null && rentalProjectCompany.getType() != null){ DictionaryItem item = dictionaryItemService.findByItemId(rentalProjectCompany.getType()); if (item != null){ rentalProjectCompany.setType_desc(item.getName()); } } rentalProject.setRentalProjectCompany(rentalProjectCompany); } return new PageInfo<>(list); } //获取登录人所在企业信息 public Company getCompanyInfoByCurrentUser() { Company company = companyService.getCompanyInfo(ShiroUtils.getCompanyId()); if (null != company) { company.setCompanyContacts(companyContactService.findByCompanyId(company.getId())); } if (Objects.equals(company.getIndustry_code(), "Empty")) { company.setIndustry_code(company.getIndustry_name()); } else { company.setIndustry_code(dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.INDUSTRY_TYPE, company.getIndustry_code())); } return company; } /** * 批量删除 * * @param ids */ public void batchDelete(List ids) { if (ids != null && ids.size() > 0) { for (Integer id : ids) { RentalProject rentalProject = new RentalProject(); rentalProject.setId(id); rentalProject.setDel_flag(true); updateSelective(rentalProject); } } } public void updateStatusBatch(List ids, String status) { rentalProjectDao.updateStatusBatch(ids, status); } public DrillInfoVo getInfoForDrill(CustomSearchCondition param) { DrillInfoVo drillInfoVo = new DrillInfoVo(); List list = rentalProjectDao.findList(param); Map streetMap = new HashMap<>(); for (RentalProject rentalProject : list) { if (!org.springframework.util.StringUtils.isEmpty(rentalProject.getIntention_street())) { streetMap.put(rentalProject.getStreet_id(), rentalProject.getStreet_name()); } } List streetVos = new ArrayList<>(); Iterator> streetIiterator = streetMap.entrySet().iterator(); while (streetIiterator.hasNext()) { Map.Entry streetEntry = streetIiterator.next(); StreetVo streetVo = new StreetVo(); streetVo.setId(streetEntry.getKey()); Street street = streetService.findById(Integer.parseInt(streetEntry.getKey())); if (street != null) { streetVo.setNo(street.getNo()); } streetVo.setRegion(streetEntry.getValue()); int streetCount = 0; List districtVos = new ArrayList<>(); Map parkMap = new HashMap<>(); for (RentalProject rentalProject : list) { if (Objects.equals(rentalProject.getStreet_id(), streetEntry.getKey())) { streetCount++; } } streetVo.setPlates(districtVos); streetVo.setSum(streetCount); streetVos.add(streetVo); } drillInfoVo.setPlate(streetVos); return drillInfoVo; } public OutlineResultVo getInfoForSide(CustomSearchCondition param) { OutlineResultVo outlineResultVo = new OutlineResultVo(); List list = rentalProjectDao.findList(param); List outlineVos = new ArrayList<>(); for (RentalProject rentalProject : list) { OutlineVo outlineVo = new OutlineVo(); outlineVo.setId(rentalProject.getStreet_id()); /*if (!StringUtils.isEmpty(rentalProject.getMain_picture_file())) { outlineVo.setImg(this.setFileUrl() + rentalProject.getMain_picture_file()); }*/ Street street = streetService.findById(Integer.parseInt(rentalProject.getStreet_id())); if (street != null) { outlineVo.setNo(street.getNo()); } outlineVo.setTitle(rentalProject.getProject_name()); outlineVo.setStreetName(rentalProject.getStreet_name()); //outlineVo.setLocal(rentalProject.getLocation()); outlineVo.setArea(rentalProject.getDemand_area() + ""); outlineVo.setPrice(rentalProject.getDemand_price() + ""); outlineVo.setDetailUrl(this.setFileUrl() + "/front/home/index.html#/projectDetail?id=" + rentalProject.getId()); outlineVos.add(outlineVo); } outlineResultVo.setListData(outlineVos); return outlineResultVo; } @Autowired private Environment environment; @Autowired private HttpServletRequest request; protected static final String COMPANY_REPORT_ADD = "/government/companyReport/add"; protected static final String OUT_HOME = "/home"; public String setFileUrl() { //外网 if (environment.getProperty("spring.profiles").equals(Constant.Environment.PROD_OUT)) { if (!request.getServletPath().contains(OUT_HOME) && !request.getServletPath().contains(COMPANY_REPORT_ADD)) { return environment.getProperty("fileOutUrl"); } } return environment.getProperty("fileUrl"); } }