From 9bbe23024b988c44abcaeb81f725ad3d13a42fc0 Mon Sep 17 00:00:00 2001 From: fengjin <1435304038@qq.com> Date: 星期二, 08 十一月 2022 16:26:06 +0800 Subject: [PATCH] 办事指南导入功能 --- flower_city/src/main/java/com/dg/core/service/impl/TransactionEventImpl.java | 339 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 293 insertions(+), 46 deletions(-) diff --git a/flower_city/src/main/java/com/dg/core/service/impl/TransactionEventImpl.java b/flower_city/src/main/java/com/dg/core/service/impl/TransactionEventImpl.java index 7374151..8afa77d 100644 --- a/flower_city/src/main/java/com/dg/core/service/impl/TransactionEventImpl.java +++ b/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,35 +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); - 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")); - 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 (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")); + 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); + } } return transactionEvent; } @Override public List<TransactionEvent> selectConfigList(IPage<TransactionEvent> page, Integer state, - String matterAndUser, String classifyGrade) { - return baseMapper.selectConfigList(page, state, matterAndUser, classifyGrade); + 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 @@ -78,41 +98,97 @@ @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) { - return baseMapper.countNum( matterAndUser, classifyGrade); + 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; + } + + @Override + 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.selectSearchAssociateDistinct(keyWord); + for (Search search : searchesAssociate) { + search.setTransactionEventList(baseMapper.queryAssociateNamesList(keyWord, search.getClassifyId().toString())); + } + queryResults.setTransactionEventList(searchesAssociate); + 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) { - String[] associateNames = transactionEvent.getAssociateNames().split(","); - for (String associateName: associateNames) { + 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) { + 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(associateName); + keywordEntity.setName(keyword); keywordEntityList.add(keywordEntity); } - } recommendResult.setKeywordEntityList(keywordEntityList); List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByKeyWord(keyWord); @@ -121,13 +197,34 @@ } @Override + public String selectDataIfExist(String departmentId, String 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); + } + + + @Override public int countNumByMatterName(String matterName) { return baseMapper.countNumByMatterName(matterName); } @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); } @Override @@ -149,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()+" " + +row.getCell(1).getStringCellValue()+" " + +row.getCell(2).getStringCellValue()+" "; + 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()+" " + +row.getCell(1).getStringCellValue()+" " + +row.getCell(2).getStringCellValue()+" "; + 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()+" " + +row.getCell(1).getStringCellValue()+" " + +row.getCell(2).getStringCellValue()+" "; + 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()+" " + +row.getCell(1).getStringCellValue()+" " + +row.getCell(2).getStringCellValue()+" "; + 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; + } + + + + } -- Gitblit v1.7.1