package com.caimei.modules.user.service; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import com.caimei.modules.bulkpurchase.dao.CmClubDao; import com.caimei.modules.consult.entity.type.CmConsulttype; import com.caimei.modules.oss.service.CmOssArchiveService; import com.caimei.modules.oss.utils.OSSUtils; import com.caimei.modules.project.model.ServiceProviderModel; import com.caimei.modules.user.entity.*; import com.caimei.utils.AppUtils; import com.thinkgem.jeesite.common.utils.StringUtils; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.thinkgem.jeesite.common.persistence.Page; import com.thinkgem.jeesite.common.service.CrudService; import com.caimei.modules.user.dao.NewCmClubDao; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.crypto.Data; /** * 用户模块重构--会所管理Service * * @author zcp * @version 2018-05-21 */ @Service @Transactional(readOnly = true) public class NewCmClubService extends CrudService { @Autowired private NewCmClubDao newCmClubDao; @Autowired private CmClubDao cmClubDao; @Autowired private CmOssArchiveService cmOssArchiveService; public NewCmClub get(String id) { return super.get(id); } public NewCmClub getclubByUserId(Integer userId) { return newCmClubDao.getclubByUserId(userId); } public List findList(NewCmClub userClub) { return super.findList(userClub); } public Page findPage(Page page, NewCmClub userClub) { return super.findPage(page, userClub); } @Transactional(readOnly = false) public void save(NewCmClub userClub) { super.save(userClub); } @Transactional(readOnly = false) public void insert(NewCmClub userClub) { newCmClubDao.insert(userClub); } @Transactional(readOnly = false) public void delete(NewCmClub userClub) { super.delete(userClub); } @Transactional(readOnly = false) public void update(NewCmClub userClub) { newCmClubDao.update(userClub); } public NewCmClub findClubById(Integer clubId) { List newCmClubs = newCmClubDao.findClubById(clubId); if (CollectionUtils.isNotEmpty(newCmClubs) && newCmClubs.size() > 0) { return newCmClubs.get(0); } else { return null; } } @Transactional(readOnly = false) public void insertBeansHistory(UserBeansHistory beansHistory) { newCmClubDao.insertBeansHistory(beansHistory); } public Page findRemarksPage(Page page, CmClubRemarks cmClubRemarks) { cmClubRemarks.setPage(page); List remarksList = newCmClubDao.findRemarksList(cmClubRemarks); remarksList.forEach(remarks -> { if (StringUtils.isNotBlank(remarks.getConsult())) { StringBuilder cons = new StringBuilder(); if (remarks.getConsult().contains(",")) { String[] split = remarks.getConsult().split(","); for (String string : split) { cons.append(newCmClubDao.findClassName(string)).append(","); } cons = new StringBuilder(cons.substring(0, cons.length() - 1)); } else { cons = new StringBuilder(newCmClubDao.findClassName(remarks.getConsult())); } remarks.setConsultType(cons.toString()); } List imageList = newCmClubDao.getRemarksImageList(remarks.getRemarksId()); List fileList = newCmClubDao.getRemarksFileList(remarks.getRemarksId()); fileList.forEach(f -> f.setFileUrl(OSSUtils.getOssUrl(f.getOssName()))); remarks.setImageList(imageList); remarks.setFileList(fileList); }); page.setList(remarksList); return page; } public void downloadRemarks(String fileName, String ossName, HttpServletRequest request, HttpServletResponse response) throws IOException { OSSUtils.downFile(ossName, fileName); cmOssArchiveService.download(request, response, fileName); } public Page findRegistPage(Page cmClubRemarksPage, CmClubRemarks cmClubRemarks) { cmClubRemarks.setPage(cmClubRemarksPage); List remarksList = newCmClubDao.findRegistList(cmClubRemarks); remarksList.forEach(remarks -> { if (StringUtils.isNotBlank(remarks.getConsult())) { StringBuilder cons = new StringBuilder(); if (remarks.getConsult().contains(",")) { String[] split = remarks.getConsult().split(","); for (String string : split) { cons.append(newCmClubDao.findClassName(string)).append(","); } cons = new StringBuilder(cons.substring(0, cons.length() - 1)); } else { cons = new StringBuilder(newCmClubDao.findClassName(remarks.getConsult())); } remarks.setConsultType(cons.toString()); } List imageList = newCmClubDao.getRemarksImageList(remarks.getRemarksId()); List fileList = newCmClubDao.getRemarksFileList(remarks.getRemarksId()); fileList.forEach(f -> f.setFileUrl(OSSUtils.getOssUrl(f.getOssName()))); if (StringUtils.isNotBlank(remarks.getMainImage())) { remarks.setMainImage(AppUtils.getImageURL("product", remarks.getMainImage(), 0, "")); } remarks.setImageList(imageList); remarks.setFileList(fileList); }); if (StringUtils.isNotBlank(cmClubRemarks.getConsult())) { remarksList.removeIf(r -> !r.getConsult().contains(cmClubRemarks.getConsult())); } cmClubRemarksPage.setList(remarksList); return cmClubRemarksPage; } public List findConsults() { return newCmClubDao.findConsults(); } public List findTeams() { return newCmClubDao.findTeams(); } public List findGroup(Integer leaderId) { return newCmClubDao.findGroup(leaderId); } @Transactional(readOnly = false) public String upremakasList(CmRemaks cmRemaks) { return newCmClubDao.upremakasList(cmRemaks); } @Transactional(readOnly = false) public void upremarks(CmRemaks cmRemaks) { newCmClubDao.upremarks(cmRemaks); } @Transactional(readOnly = false) public void addRemarks(CmRemaks cmRemaks) { newCmClubDao.addRemarks(cmRemaks); } @Transactional(readOnly = false) public void deleteRamarks(CmRemaks cmRemaks) { newCmClubDao.deleteRamarks(cmRemaks); } @Transactional(readOnly = false) public List ClubsIds(ClubChangeSp clubChangeSp) { return newCmClubDao.ClubsIds(clubChangeSp); } @Transactional(readOnly = false) public void oldname(Integer oldserviceProviderId, Integer clubID, Integer oldSpID, Integer newSpID) { newCmClubDao.oldname(oldserviceProviderId, clubID, oldSpID, newSpID); } @Transactional(readOnly = false) public void oldnames(Integer clubID, Integer oldSpID, Integer newSpID) { newCmClubDao.oldnames(clubID, oldSpID, newSpID); } @Transactional(readOnly = false) public void updateServiceProvider(Integer clubId, Integer oldSpID, Integer newSpID) { cmClubDao.updateServiceProvider(clubId, oldSpID, newSpID); } public Page ReportList(Page cmReports, CmReport cmReport) { cmReport.setPage(cmReports); List list = newCmClubDao.ReportList(cmReport); cmReports.setList(list); return cmReports; } public Page statisticsList(Page page, ClubStatistics statistics) { statistics.setPage(page); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String monthStartTime = ""; String yearStartTime = ""; String endTime = ""; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // 获取近一个月、近一年结束时间 calendar.add(Calendar.DAY_OF_MONTH, -1); Date time = calendar.getTime(); endTime = dateFormat.format(date); statistics.setMonthEndTime(endTime); statistics.setYearEndTime(endTime); // 近一个月开始时间 calendar.setTime(time); calendar.add(Calendar.MONTH, -1); statistics.setMonthStartTime(dateFormat.format(calendar.getTime())); // 近一年开始时间 calendar.setTime(time); calendar.add(Calendar.YEAR, -1); statistics.setYearStartTime(dateFormat.format(calendar.getTime())); List selStatisticsList = new ArrayList<>(); if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) { // 初始化查询条件,排除sql分页 ClubStatistics clubData = new ClubStatistics(); clubData.setMonthStartTime(statistics.getMonthStartTime()); clubData.setMonthEndTime(statistics.getMonthEndTime()); clubData.setYearStartTime(statistics.getYearStartTime()); clubData.setYearEndTime(statistics.getYearEndTime()); clubData.setClubDataIntegrity(statistics.getClubDataIntegrity()); if (StringUtils.isNotBlank(statistics.getRegisterStartTime())) { clubData.setRegisterStartTime(statistics.getRegisterStartTime()); } if (StringUtils.isNotBlank(statistics.getRegisterEndTime())) { clubData.setRegisterEndTime(statistics.getRegisterEndTime()); } if (StringUtils.isNotBlank(statistics.getSearchStartTime())) { clubData.setSearchStartTime(statistics.getSearchStartTime()); } if (StringUtils.isNotBlank(statistics.getSearchEndTime())) { clubData.setSearchEndTime(statistics.getSearchEndTime()); } if (StringUtils.isNotBlank(statistics.getCustomerValue())) { clubData.setCustomerValue(statistics.getCustomerValue()); } if (StringUtils.isNotBlank(statistics.getSearchUserIdentity())) { clubData.setSearchUserIdentity(statistics.getSearchUserIdentity()); } if (StringUtils.isNotBlank(statistics.getSearchStatus())) { clubData.setSearchStatus(statistics.getSearchStatus()); } clubData.setLinkManIdentity(statistics.getLinkManIdentity()); clubData.setCustomStartTime(statistics.getCustomStartTime()); clubData.setCustomEndTime(statistics.getCustomEndTime()); clubData.setPayTotalMonth(statistics.getPayTotalMonth()); clubData.setPayTotalYear(statistics.getPayTotalYear()); clubData.setPayTotal(statistics.getPayTotal()); clubData.setPayTotalMonthType(statistics.getPayTotalMonthType()); clubData.setOrderCountMonthType(statistics.getOrderCountMonthType()); clubData.setPayTotalYearType(statistics.getPayTotalYearType()); clubData.setOrderCountYearType(statistics.getOrderCountYearType()); clubData.setPayTotalType(statistics.getPayTotalType()); selStatisticsList = newCmClubDao.selStatisticsList(clubData); } else { selStatisticsList = newCmClubDao.selStatisticsList(statistics); } List statisticsList = setListData(selStatisticsList, statistics); if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) { int pageNo = page.getPageNo(); int pageSize = page.getPageSize(); int number = 0; if (pageNo == 1) { number = 0; } else { number = (pageNo - 1) * pageSize; } List list = new ArrayList<>(); for (int i = 0; i <= statisticsList.size() - 1; i++) { if (i >= number && i < number + pageSize) { list.add(statisticsList.get(i)); } } page.setCount(statisticsList.size()); page.setList(list); } else { page.setList(statisticsList); } return page; } public List exportExcel(ClubStatistics statistics) { List statisticsList = newCmClubDao.findExcelList(statistics); List easyExcels = setExData(statisticsList, statistics); return easyExcels; } public List setExData(List selStatisticsList, ClubStatistics statistics) { int number = 0; String type = ""; Integer item = 0; // List clubStatisticsList = selStatisticsList; List pageLableList = newCmClubDao.selPageLable(); for (easyExcel clubStatistics : selStatisticsList) { // 机构类型 if (StringUtils.isNotBlank(clubStatistics.getFirstClubType())) { type += clubStatistics.getFirstClubType(); } if (StringUtils.isNotBlank(clubStatistics.getClassify())) { type += "-" + clubStatistics.getClassify(); } clubStatistics.setClubType(type); // 计算资料完整度 if (StringUtils.isNotBlank(clubStatistics.getName())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getLinkMan())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getContractMobile())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getLinkManIdentity())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getAddress())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getBusinessLicenseImage())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getUserIdentity())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getSname())) { number += 3; } if (StringUtils.isNotBlank(clubStatistics.getContractEmail())) { number += 5; } if (StringUtils.isNotBlank(clubStatistics.getContractPhone())) { number += 4; } if (StringUtils.isNotBlank(clubStatistics.getFax())) { number += 3; } if (StringUtils.isNotBlank(clubStatistics.getHeadpic())) { number += 5; } if (StringUtils.isNotBlank(clubStatistics.getSocialCreditCode())) { number += 5; } if (StringUtils.isNotBlank(clubStatistics.getInfo())) { number += 5; } clubStatistics.setNumber(number); clubStatistics.setClubDataIntegrity(number + "%"); number = 0; type = ""; // 处理最常搜索词 List collect = pageLableList.stream().filter(data -> data.getUserID().equals(clubStatistics.getUserID())).collect(Collectors.toList()); if (collect.size() > 0) { clubStatistics.setPageLabel(collect.get(0).getPageLabel()); item = collect.get(0).getNumber(); for (int i = 0; i < collect.size() - 1; i++) { if (item < collect.get(i).getNumber()) { item = collect.get(i).getNumber(); clubStatistics.setPageLabel(collect.get(i).getPageLabel()); } } } } // 资料完整度处理 if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) { if ("1".equals(statistics.getClubDataIntegrity())) { selStatisticsList = selStatisticsList.stream().filter(data -> (data.getNumber() > 20 && data.getNumber() < 70)).collect(Collectors.toList()); } else { selStatisticsList = selStatisticsList.stream().filter(data -> data.getNumber() > 70).collect(Collectors.toList()); } } return selStatisticsList; } public List setListData(List selStatisticsList, ClubStatistics statistics) { int number = 0; String type = ""; Integer item = 0; // List clubStatisticsList = selStatisticsList; List pageLableList = newCmClubDao.selPageLable(); for (ClubStatistics clubStatistics : selStatisticsList) { // 机构类型 if (StringUtils.isNotBlank(clubStatistics.getFirstClubType())) { type += clubStatistics.getFirstClubType(); } if (StringUtils.isNotBlank(clubStatistics.getClassify())) { type += "-" + clubStatistics.getClassify(); } clubStatistics.setClubType(type); // 计算资料完整度 if (StringUtils.isNotBlank(clubStatistics.getName())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getLinkMan())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getContractMobile())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getLinkManIdentity())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getAddress())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getBusinessLicenseImage())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getUserIdentity())) { number += 10; } if (StringUtils.isNotBlank(clubStatistics.getSname())) { number += 3; } if (StringUtils.isNotBlank(clubStatistics.getContractEmail())) { number += 5; } if (StringUtils.isNotBlank(clubStatistics.getContractPhone())) { number += 4; } if (StringUtils.isNotBlank(clubStatistics.getFax())) { number += 3; } if (StringUtils.isNotBlank(clubStatistics.getHeadpic())) { number += 5; } if (StringUtils.isNotBlank(clubStatistics.getSocialCreditCode())) { number += 5; } if (StringUtils.isNotBlank(clubStatistics.getInfo())) { number += 5; } clubStatistics.setNumber(number); clubStatistics.setClubDataIntegrity(number + "%"); number = 0; type = ""; // 处理最常搜索词 List collect = pageLableList.stream().filter(data -> data.getUserID().equals(clubStatistics.getUserID())).collect(Collectors.toList()); if (collect.size() > 0) { clubStatistics.setPageLabel(collect.get(0).getPageLabel()); item = collect.get(0).getNumber(); for (int i = 0; i < collect.size() - 1; i++) { if (item < collect.get(i).getNumber()) { item = collect.get(i).getNumber(); clubStatistics.setPageLabel(collect.get(i).getPageLabel()); } } } } // 资料完整度处理 if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) { if ("1".equals(statistics.getClubDataIntegrity())) { selStatisticsList = selStatisticsList.stream().filter(data -> (data.getNumber() > 20 && data.getNumber() < 70)).collect(Collectors.toList()); } else { selStatisticsList = selStatisticsList.stream().filter(data -> data.getNumber() > 70).collect(Collectors.toList()); } } return selStatisticsList; } }