fengjin
2022-11-08 9bbe23024b988c44abcaeb81f725ad3d13a42fc0
flower_city/src/main/java/com/dg/core/service/impl/TransactionEventImpl.java
@@ -5,29 +5,37 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dg.core.db.gen.entity.*;
import com.dg.core.db.gen.mapper.AutomessageTransactionEventInterviewMapper;
import com.dg.core.db.gen.mapper.KeywordMapper;
import com.dg.core.db.gen.mapper.OrganizationChartMapper;
import com.dg.core.db.gen.mapper.TransactionEventMapper;
import com.dg.core.db.gen.mapper.*;
import com.dg.core.db.manual.pojo.QueryResults;
import com.dg.core.db.manual.pojo.RecommendResult;
import com.dg.core.db.manual.pojo.Search;
import com.dg.core.service.ITransactionEventService;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class TransactionEventImpl extends ServiceImpl<TransactionEventMapper, TransactionEvent> implements ITransactionEventService {
    @Resource
    private   OrganizationChartMapper organizationChartMapper;
    private OrganizationChartMapper organizationChartMapper;
    @Resource
    private KeywordMapper keywordMapper;
@@ -35,38 +43,47 @@
    @Resource
    private AutomessageTransactionEventInterviewMapper automessageTransactionEventInterviewMapper;
    @Resource
    private GuideRepairOrderMapper guideRepairOrderMapper;
    @Override
    public TransactionEvent selectConfigData(String Id,SysUser sysUser) {
    public TransactionEvent selectConfigData(String Id, SysUser sysUser) {
        TransactionEvent transactionEvent = baseMapper.selectConfigData(Id);
        //如果当前没有登录用户则不增加浏览次数
        if (sysUser!=null){
        if (sysUser != null) {
            LocalDateTime startTime = LocalDate.now().atTime(0, 0, 0);
            LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59);
            AutomessageTransactionEventInterview automessageTransactionEventInterview = automessageTransactionEventInterviewMapper.selectOne(new QueryWrapper<AutomessageTransactionEventInterview>()
                .lambda().eq(AutomessageTransactionEventInterview::getTransactionEventId, Id)
                .eq(AutomessageTransactionEventInterview::getUserId, sysUser.getUserId())
                .orderByDesc(AutomessageTransactionEventInterview::getInterviewTime)
                .last("limit 1"));
                    .lambda().eq(AutomessageTransactionEventInterview::getTransactionEventId, Id)
                    .eq(AutomessageTransactionEventInterview::getUserId, sysUser.getUserId())
                    .orderByDesc(AutomessageTransactionEventInterview::getInterviewTime)
                    .last("limit 1"));
            transactionEvent.setQueryTime(LocalDateTime.now());
            //判断上次访问时间是不是今天 如果是今天不增加浏览次数
            if (automessageTransactionEventInterview==null||(!(transactionEvent.getQueryTime().isAfter(startTime)&&transactionEvent.getQueryTime().isBefore(endTime)))) {
               transactionEvent.setBrowseNum(transactionEvent.getBrowseNum()+1);
               baseMapper.updateById(transactionEvent);
               AutomessageTransactionEventInterview automessageTransactionEventInterviewNew =
                    new AutomessageTransactionEventInterview();
               automessageTransactionEventInterviewNew.setTransactionEventId(Integer.valueOf(Id));
               automessageTransactionEventInterviewNew.setUserId(new Long(sysUser.getUserId()));
               automessageTransactionEventInterviewNew.setInterviewTime(LocalDateTime.now());
               automessageTransactionEventInterviewMapper.insert(automessageTransactionEventInterviewNew);
          }
            if (automessageTransactionEventInterview == null || (!(transactionEvent.getQueryTime().isAfter(startTime) && transactionEvent.getQueryTime().isBefore(endTime)))) {
                transactionEvent.setBrowseNum(transactionEvent.getBrowseNum() + 1);
                baseMapper.updateById(transactionEvent);
                AutomessageTransactionEventInterview automessageTransactionEventInterviewNew =
                        new AutomessageTransactionEventInterview();
                automessageTransactionEventInterviewNew.setTransactionEventId(Integer.valueOf(Id));
                automessageTransactionEventInterviewNew.setUserId(new Long(sysUser.getUserId()));
                automessageTransactionEventInterviewNew.setInterviewTime(LocalDateTime.now());
                automessageTransactionEventInterviewMapper.insert(automessageTransactionEventInterviewNew);
            }
        }
        return transactionEvent;
    }
    @Override
    public List<TransactionEvent> selectConfigList(IPage<TransactionEvent> page, Integer state,
                                                   String matterAndUser, String classifyGrade,List<String> ids) {
        return baseMapper.selectConfigList(page,  state, matterAndUser, classifyGrade,ids);
                                                   String keyword, String classifyGrade, List<String> ids) {
        return baseMapper.selectConfigList(page, state, keyword, classifyGrade, ids);
    }
    @Override
    public List<TransactionEvent> selectConfigList(String keyword, String classifyGrade, List<String> ids) {
        return baseMapper.selectConfigList(keyword, classifyGrade, ids);
    }
    @Override
@@ -81,23 +98,49 @@
    @Override
    public int deleteConfigById(String Id) {
        return baseMapper.deleteConfigById(Id);
        List<GuideRepairOrder> guideRepairOrders = guideRepairOrderMapper
                .selectList(new QueryWrapper<GuideRepairOrder>().lambda().eq(GuideRepairOrder::getMatterId, Id));
        if (guideRepairOrders.size() == 0){
            return baseMapper.deleteConfigById(Id);
        }
        return 0;
    }
    @Override
    public int countNum(String matterAndUser,String classifyGrade,List<String> ids) {
        return baseMapper.countNum( matterAndUser, classifyGrade, ids);
    public int countNum(String matterAndUser, String classifyGrade, List<String> ids) {
        return baseMapper.countNum(matterAndUser, classifyGrade, ids);
    }
    @Override
    public QueryResults queryMatterNameList(IPage<Search> page,Integer state, Integer recommendSize,String keyWord) {
    public QueryResults queryMatterNameList(IPage<Search> page, Integer state, Integer recommendSize, String keyWord) {
        QueryResults queryResults = new QueryResults();
        List<Search> searches = baseMapper.selectSearch(page, state, keyWord);
        queryResults.setSearchList(searches);
        List<Search> searchesAssociate = baseMapper.selectSearchAssociate(page, recommendSize, keyWord);
        queryResults.setTransactionEventList(searchesAssociate);
        queryResults.setKeywordEntityList( keywordMapper.selectByName(keyWord));
        queryResults.setTotal((baseMapper.selectSearch(keyWord).size())+(baseMapper.selectSearchAssociate(keyWord).size()));
        queryResults.setKeywordEntityList(keywordMapper.selectByName(keyWord));
        queryResults.setTotal((baseMapper.selectSearch(keyWord).size()) + (baseMapper.selectSearchAssociate(keyWord).size()));
        List<TransactionEvent> transactionEventEntities = baseMapper.queryMatterNameList(keyWord, null);
        List<String> list = new ArrayList<>();
        for (TransactionEvent transactionEvent : transactionEventEntities) {
            if (transactionEvent.getAssociateNames() != null) {
                String[] associateNames = transactionEvent.getAssociateNames().split(",");
                for (String associateName : associateNames) {
                    list.add(associateName);
                }
            }
        }
        List<KeywordEntity> keywordEntityList = new ArrayList<>();
        String[] keywords = list.stream().distinct().collect(Collectors.joining(",")).split(",");//去重
        for (String keyword : keywords) {
            if (keyword != null && !keyword.equals("")) {
                KeywordEntity keywordEntity = new KeywordEntity();
                keywordEntity.setName(keyword);
                keywordEntityList.add(keywordEntity);
            }
        }
        queryResults.setKeywordAssociationList(keywordEntityList);
        return queryResults;
    }
@@ -105,28 +148,46 @@
    public QueryResults queryMatterNameList(String keyWord) {
        QueryResults queryResults = new QueryResults();
        List<Search> searches = baseMapper.selectSearchList(keyWord);
        for (Search search : searches) {
            search.setTransactionEventList(baseMapper.queryMatterNameList(keyWord, search.getClassifyId().toString()));
        }
        queryResults.setOrganizationChartEntityList(organizationChartMapper.selectByKeyWord(keyWord));
        queryResults.setSearchList(searches);
        List<Search> searchesAssociate = baseMapper.selectSearchAssociate(keyWord);
        List<Search> searchesAssociate = baseMapper.selectSearchAssociateDistinct(keyWord);
        for (Search search : searchesAssociate) {
            search.setTransactionEventList(baseMapper.queryAssociateNamesList(keyWord, search.getClassifyId().toString()));
        }
        queryResults.setTransactionEventList(searchesAssociate);
        queryResults.setKeywordEntityList( keywordMapper.selectByName(keyWord));
        queryResults.setKeywordEntityList(keywordMapper.selectByName(keyWord));
        return queryResults;
    }
    @Override
    public RecommendResult smartConsulting(String keyWord){
        RecommendResult recommendResult=new RecommendResult();
        List<KeywordEntity> keywordEntityList=new ArrayList<>();
        List<TransactionEvent> transactionEventEntities = baseMapper.queryMatterNameList(keyWord);
    public RecommendResult smartConsulting(String keyWord) {
        RecommendResult recommendResult = new RecommendResult();
        List<KeywordEntity> keywordEntityList = new ArrayList<>();
        List<TransactionEvent> transactionEventEntities = baseMapper.queryMatterNameList(keyWord, null);
        List<TransactionEvent> transactionEvents = baseMapper.queryAssociateNamesList(keyWord, null);
        recommendResult.setTransactionEventList(transactionEventEntities);
        for (TransactionEvent transactionEvent: transactionEventEntities) {
            if (transactionEvent.getAssociateNames()!=null) {
        List<String> list = new ArrayList<>();
        for (TransactionEvent transactionEvent : transactionEvents) {
//            直接返回办事指南名称
            list.add(transactionEvent.getMatterName());
//            遍历关键词列表 可能后面流程更改会遇到暂时保存代码;
      /*      if (transactionEvent.getAssociateNames() != null) {
                String[] associateNames = transactionEvent.getAssociateNames().split(",");
                for (String associateName : associateNames) {
                    KeywordEntity keywordEntity = new KeywordEntity();
                    keywordEntity.setName(associateName);
                    keywordEntityList.add(keywordEntity);
                    list.add(associateName);
                }
            }*/
        }
        String[] keywords = list.stream().distinct().collect(Collectors.joining(",")).split(",");//去重
        for (String keyword : keywords) {
            if (keyword != null && !keyword.equals("")) {
                KeywordEntity keywordEntity = new KeywordEntity();
                keywordEntity.setName(keyword);
                keywordEntityList.add(keywordEntity);
            }
        }
        recommendResult.setKeywordEntityList(keywordEntityList);
@@ -137,7 +198,17 @@
    @Override
    public String selectDataIfExist(String departmentId, String matterName) {
        return baseMapper.selectDataIfExist(departmentId,matterName);
        return baseMapper.selectDataIfExist(departmentId, matterName);
    }
    @Override
    public List<String> selectclassifyId(String classifyId) {
        return baseMapper.selectclassifyId(classifyId);
    }
    @Override
    public List<TransactionEvent> selectClassifyList(List<String> ids) {
        return baseMapper.selectClassifyList(ids);
    }
@@ -147,13 +218,13 @@
    }
    @Override
    public List<TransactionEvent> queryByClassifyIdList(String classifyId,Integer departmentId) {
        return baseMapper.queryByClassifyIdList(classifyId,departmentId);
    public List<TransactionEvent> queryByClassifyIdList(String classifyId, Integer departmentId) {
        return baseMapper.queryByClassifyIdList(classifyId, departmentId);
    }
    @Override
    public List<TransactionEvent> queryByClassifyIdList(IPage<TransactionEvent> page, Integer state,String classifyId,Integer departmentId) {
        return baseMapper.queryByClassifyIdList(page,state,classifyId,departmentId);
    public List<TransactionEvent> queryByClassifyIdList(IPage<TransactionEvent> page, Integer state, String classifyId, Integer departmentId) {
        return baseMapper.queryByClassifyIdList(page, state, classifyId, departmentId);
    }
    @Override
@@ -175,11 +246,161 @@
    @Override
    public int countNumByClassifyIdList(String classifyId, Integer departmentId) {
        return baseMapper.countNumByClassifyIdList(classifyId,departmentId);
        return baseMapper.countNumByClassifyIdList(classifyId, departmentId);
    }
    @Override
    public List<TransactionEvent> selectList(){
        return  baseMapper.selectList(new QueryWrapper<TransactionEvent>().lambda());
    public List<TransactionEvent> selectList(String keyWord) {
        if (keyWord!=null&&keyWord!=""){
            return baseMapper.selectList(new QueryWrapper<TransactionEvent>().lambda().like(TransactionEvent::getMatterName,keyWord));
        }
        else {
        return baseMapper.selectList(new QueryWrapper<TransactionEvent>().lambda());
        }
    }
    @Override
    public boolean batchImport(String fileName, MultipartFile file)  {
        boolean notNull = false;
        if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
            throw   new RuntimeException("选择文件格式不正确,请下载模板上传");
        }
        boolean isExcel2003 = true;
        if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
            isExcel2003 = false;
        }
        InputStream is = null;
        try {
            is = file.getInputStream();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        Workbook wb = null;
        if (isExcel2003) {
            try {
                wb = new HSSFWorkbook(is);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        } else {
            try {
                wb = new XSSFWorkbook(is);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        // 获取excel的sheet页数
        int numberOfSheets = wb.getNumberOfSheets();
        //获取excel字段名称进行比较
        Sheet sheetAt = wb.getSheetAt(0);
        Row row1 = sheetAt.getRow(2);
        TransactionEvent transactionEvent = baseMapper.selectOne(new QueryWrapper<TransactionEvent>().lambda().eq(TransactionEvent::getMatterName, row1.getCell(1).getStringCellValue()));
        boolean isAdd=false;
        if(transactionEvent==null){
            transactionEvent=new TransactionEvent();
            isAdd=true;
        }
        transactionEvent.setMatterName(row1.getCell(1).getStringCellValue());
        Row row2 = sheetAt.getRow(3);
        transactionEvent.setSetGist("<p>"+row2.getCell(1).getStringCellValue()+"</p>");
        Row row3 = sheetAt.getRow(4);
        Row row4 = sheetAt.getRow(5);
        transactionEvent.setBasicInformation("<p> 事项名称:"+row1.getCell(1).getStringCellValue()+"<br />"
            +row3.getCell(0).getStringCellValue()+":"+row3.getCell(1).getStringCellValue()+"<br />"
            +row3.getCell(3).getStringCellValue()+":"+row3.getCell(4).getStringCellValue()+"<br />"
                +row4.getCell(0).getStringCellValue()+":"+row4.getCell(1).getStringCellValue()+"</p>");
        int i=7;
        String applicationMaterial="<p>";
        while (true){
            Row row = sheetAt.getRow(i);
            if (row.getCell(0).getStringCellValue().equals("办理途径、条件和注意事项")){
                i=i+2;
                break;
            }
            applicationMaterial=applicationMaterial+"办理区域:"+row.getCell(0).getStringCellValue()+"<br />"
                    +"咨询电话:"+row.getCell(1).getStringCellValue()+"<br />"
                    +"办公地址:"+row.getCell(2).getStringCellValue()+"<br />"
                    +"办公时间:"+row.getCell(3).getStringCellValue()+"<br />";
            applicationMaterial=applicationMaterial+"<br />";
            i++;
        }
        applicationMaterial=applicationMaterial+"</p>";
        transactionEvent.setApplicationMaterial(applicationMaterial);
        String acceptConditions="<p>";
        while (true){
            Row row = sheetAt.getRow(i);
            if (row.getCell(0).getStringCellValue().equals("(二)网上申报")){
                i=i+1;
                break;
            }
            acceptConditions=acceptConditions+row.getCell(0).getStringCellValue()+"&nbsp; "
                    +row.getCell(1).getStringCellValue()+"&nbsp; "
                    +row.getCell(2).getStringCellValue()+"&nbsp; ";
            acceptConditions=acceptConditions+"<br />";
            i++;
        }
        acceptConditions=acceptConditions+"</p>";
        transactionEvent.setAcceptConditions(acceptConditions);
        String rates="<p>";
        while (true){
            Row row = sheetAt.getRow(i);
            if (row.getCell(0).getStringCellValue().equals("(三)手机移动申报")){
                i=i+1;
                break;
            }
            rates=rates+row.getCell(0).getStringCellValue()+"&nbsp; "
                    +row.getCell(1).getStringCellValue()+"&nbsp; "
                    +row.getCell(2).getStringCellValue()+"&nbsp; ";
            rates=rates+"<br />";
            i++;
        }
        rates=rates+"</p>";
        transactionEvent.setRates(rates);
        String transactionArea="<p>";
        while (true){
            Row row = sheetAt.getRow(i);
            if (row.getCell(0).getStringCellValue().equals("(四)经营许可(备案)事项程序运行图谱(附电子版)")){
                i=i+1;
                break;
            }
            transactionArea=transactionArea+row.getCell(0).getStringCellValue()+"&nbsp; "
                    +row.getCell(1).getStringCellValue()+"&nbsp; "
                    +row.getCell(2).getStringCellValue()+"&nbsp; ";
            transactionArea=transactionArea+"<br />";
            i++;
        }
        transactionArea=transactionArea+"</p>";
        transactionEvent.setTransactionArea(transactionArea);
        String handlingProcedures="<p>";
        while (true){
            Row row = sheetAt.getRow(i);
            if (row.getCell(0).getStringCellValue().equals("(五)经营许可(备案)事项实施内容一览表(附电子版)")){
                i=i+1;
                break;
            }
            handlingProcedures=handlingProcedures+row.getCell(0).getStringCellValue()+"&nbsp; "
                    +row.getCell(1).getStringCellValue()+"&nbsp; "
                    +row.getCell(2).getStringCellValue()+"&nbsp; ";
            handlingProcedures=handlingProcedures+"<br />";
            i++;
        }
        handlingProcedures=handlingProcedures+"</p>";
        transactionEvent.setHandlingProcedures(handlingProcedures);
        int ans;
        if (isAdd){
            ans= baseMapper.insert(transactionEvent);
        }else {
            ans =baseMapper.updateById(transactionEvent);
        }
       if (ans>0){
           return  true;
       }
       return  false;
    }
}