|
- package com.ningdatech.kqapi.zzsfw.manage;
-
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.date.StopWatch;
- import cn.hutool.core.lang.Assert;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.ningdatech.kqapi.common.enumeration.CommonEnum;
- import com.ningdatech.kqapi.common.helper.MatterCacheHelper;
- import com.ningdatech.kqapi.zzsfw.constants.ZzsfwMenuConstant;
- import com.ningdatech.kqapi.zzsfw.entity.dto.NdKqZzsfwMattersDeduplicateDTO;
- import com.ningdatech.kqapi.zzsfw.entity.dto.NdKqZzsfwMenuDTO;
- import com.ningdatech.kqapi.zzsfw.entity.entity.NdKqZzsfwMattersDeduplicate;
- import com.ningdatech.kqapi.zzsfw.entity.entity.NdKqZzsfwMenu;
- import com.ningdatech.kqapi.zzsfw.entity.vo.MatterTopVO;
- import com.ningdatech.kqapi.zzsfw.entity.vo.MattersVO;
- import com.ningdatech.kqapi.zzsfw.entity.vo.TreeVO;
- import com.ningdatech.kqapi.zzsfw.enumeration.ItemTypeEnum;
- import com.ningdatech.kqapi.zzsfw.service.INdKqZzsfwMatterDeduplicateService;
- import com.ningdatech.kqapi.zzsfw.service.INdKqZzsfwMenuService;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.poi.ss.usermodel.CellType;
- 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.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import org.springframework.web.multipart.MultipartFile;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- import java.text.DecimalFormat;
- import java.time.LocalDateTime;
- import java.util.*;
- import java.util.stream.Collectors;
-
- /**
- * @Classname MatterManage
- * @Description
- * @Date 2023/10/25 14:55
- * @Author PoffyZhang
- */
- @Component
- @Slf4j
- @RequiredArgsConstructor
- public class MatterManage {
-
- @Value("${spring.datasource.url}")
- public String url;
-
- @Value("${spring.datasource.username}")
- public String username;
-
- @Value("${spring.datasource.password}")
- public String password;
-
- private final INdKqZzsfwMenuService menuService;
-
- private final INdKqZzsfwMatterDeduplicateService matterDeduplicateService;
-
- public List<TreeVO> getMatters() {
- List<NdKqZzsfwMenu> matters = menuService.list(Wrappers.lambdaQuery(NdKqZzsfwMenu.class)
- .orderByAsc(NdKqZzsfwMenu::getSort));
- if(CollUtil.isEmpty(matters)){
- return Collections.emptyList();
- }
-
- //如果是政府类型的 就隐藏 没有链接的
- List<NdKqZzsfwMenu> finalMatters = matters.stream().filter(m -> Objects.nonNull(m.getType()) &&
- (!m.getType().equals(ItemTypeEnum.GOV.getCode()) || Objects.nonNull(m.getWebapplyurl())))
- .collect(Collectors.toList());
- Set<String> zoneSet = new HashSet<>();
- List<TreeVO> res = finalMatters.stream().filter(m -> zoneSet.add(m.getZoneName())).map(m -> {
- TreeVO zone = new TreeVO();
- zone.setName(m.getZoneName());
- zone.setChilren(generateWindows(m, finalMatters));
- zone.setType(ZzsfwMenuConstant.MENU_TYPE_ZONE);
- return zone;
- }).collect(Collectors.toList());
- return res;
- }
-
- /**
- * 查询社区
- * @return
- */
- public List<TreeVO> getZones() {
- List<NdKqZzsfwMenu> matters = menuService.list(Wrappers.lambdaQuery(NdKqZzsfwMenu.class)
- .orderByAsc(NdKqZzsfwMenu::getSort));
- if(CollUtil.isEmpty(matters)){
- return Collections.emptyList();
- }
-
- //如果是政府类型的 就隐藏 没有链接的
- List<NdKqZzsfwMenu> finalMatters = matters.stream().filter(m -> Objects.nonNull(m.getType()) &&
- (!m.getType().equals(ItemTypeEnum.GOV.getCode()) || Objects.nonNull(m.getWebapplyurl())))
- .collect(Collectors.toList());
- Set<String> zoneSet = new HashSet<>();
- List<TreeVO> res = finalMatters.stream().filter(m -> zoneSet.add(m.getZoneName())).map(m -> {
- TreeVO zone = new TreeVO();
- zone.setName(m.getZoneName());
- zone.setType(ZzsfwMenuConstant.MENU_TYPE_ZONE);
- return zone;
- }).collect(Collectors.toList());
- return res;
- }
-
- public List<TreeVO> getWindows(String zoneName) {
- List<NdKqZzsfwMenu> matters = menuService.list(Wrappers.lambdaQuery(NdKqZzsfwMenu.class)
- .eq(StringUtils.isNotBlank(zoneName),NdKqZzsfwMenu::getZoneName,zoneName)
- .orderByAsc(NdKqZzsfwMenu::getSort));
- if(CollUtil.isEmpty(matters)){
- return Collections.emptyList();
- }
-
- Set<String> windowSet = new HashSet<>();
- return matters.stream().filter(m -> windowSet.add(m.getWindow()))
- .map(m -> {
- TreeVO window = new TreeVO();
- window.setName(m.getWindow());
- window.setType(ZzsfwMenuConstant.MENU_TYPE_WINDOW);
- return window;
- }).collect(Collectors.toList());
- }
-
- public List<TreeVO> getDepartments(String zoneName,String windowName) {
- List<NdKqZzsfwMenu> matters = menuService.list(Wrappers.lambdaQuery(NdKqZzsfwMenu.class)
- .eq(StringUtils.isNotBlank(windowName),NdKqZzsfwMenu::getWindow,windowName)
- .eq(StringUtils.isNotBlank(zoneName),NdKqZzsfwMenu::getZoneName,zoneName)
- .orderByAsc(NdKqZzsfwMenu::getSort));
- if(CollUtil.isEmpty(matters)){
- return Collections.emptyList();
- }
-
- Set<String> departMentSet = new HashSet<>();
- return matters.stream().filter(m -> departMentSet.add(m.getDepartment()))
- .map(m -> {
- TreeVO department = new TreeVO();
- department.setName(m.getDepartment());
- department.setType(ZzsfwMenuConstant.MENU_TYPE_DEPARTMENT);
- return department;
- }).collect(Collectors.toList());
- }
-
- public List<MattersVO> matterList(String zoneName, String windowName, String department, Integer type) {
- List<NdKqZzsfwMenu> matters = menuService.list(Wrappers.lambdaQuery(NdKqZzsfwMenu.class)
- .eq(StringUtils.isNotBlank(windowName),NdKqZzsfwMenu::getWindow,windowName)
- .eq(StringUtils.isNotBlank(zoneName),NdKqZzsfwMenu::getZoneName,zoneName)
- .eq(StringUtils.isNotBlank(department),NdKqZzsfwMenu::getDepartment,department)
- .eq(Objects.nonNull(type),NdKqZzsfwMenu::getType,type)
- .orderByAsc(NdKqZzsfwMenu::getSort));
- if(CollUtil.isEmpty(matters)){
- return Collections.emptyList();
- }
-
- return matters.stream()
- .map(m -> {
- MattersVO mattersVO = BeanUtil.copyProperties(m, MattersVO.class);
- mattersVO.setMatterName(m.getItemName());
- return mattersVO;
- })
- .collect(Collectors.toList());
- }
-
- private List<TreeVO> generateWindows(NdKqZzsfwMenu menu, List<NdKqZzsfwMenu> matters) {
- Set<String> windowSet = new HashSet<>();
- return matters.stream().filter(m -> StringUtils.isNotBlank(m.getZoneName()) && m.getZoneName().equals(menu.getZoneName())
- && windowSet.add(m.getWindow()))
- .map(m -> {
- TreeVO window = new TreeVO();
- window.setName(m.getWindow());
- window.setChilren(generateDepartment(m,matters));
- window.setType(ZzsfwMenuConstant.MENU_TYPE_WINDOW);
- return window;
- }).collect(Collectors.toList());
- }
-
- private List<TreeVO> generateDepartment(NdKqZzsfwMenu menu, List<NdKqZzsfwMenu> matters) {
- Set<String> departmentSet = new HashSet<>();
- return matters.stream().filter( m -> StringUtils.isNotBlank(m.getWindow()) && m.getWindow().equals(menu.getWindow()) &&
- m.getZoneName().equals(menu.getZoneName()) && departmentSet.add(m.getDepartment()))
- .map(m -> {
- TreeVO department = new TreeVO();
- department.setName(m.getDepartment());
- department.setChilren(generateItemType(m,matters));
- department.setType(ZzsfwMenuConstant.MENU_TYPE_DEPARTMENT);
- return department;
- }).collect(Collectors.toList());
- }
-
- private List<TreeVO> generateItemType(NdKqZzsfwMenu menu, List<NdKqZzsfwMenu> matters) {
- Set<Integer> typeSet = new HashSet<>();
- return matters.stream().filter(m -> StringUtils.isNotBlank(m.getWindow()) && m.getWindow().equals(menu.getWindow()) &&
- m.getZoneName().equals(menu.getZoneName()) && Objects.nonNull(m.getType()) && typeSet.add(m.getType()))
- .map(m -> {
- TreeVO menuType = new TreeVO();
- ItemTypeEnum itemTypeEnum = ItemTypeEnum.match(m.getType());
- if(Objects.nonNull(itemTypeEnum)){
- menuType.setName(itemTypeEnum.getDesc());
- menuType.setChilren(generateMatters(m,matters));
- menuType.setType(ZzsfwMenuConstant.MENU_ITEM_TYPE);
- return menuType;
- }
- return null;
- })
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- }
-
- private List<TreeVO> generateMatters(NdKqZzsfwMenu menu, List<NdKqZzsfwMenu> matters) {
- return matters.stream().filter(m -> Objects.nonNull(m.getType()) && m.getType().equals(menu.getType()) &&
- (!m.getType().equals(ItemTypeEnum.GOV.getCode()) || Objects.nonNull(m.getHasUrl()) && m.getHasUrl() == 1) &&
- StringUtils.isNotBlank(m.getDepartment()) &&
- m.getDepartment().equals(menu.getDepartment()) && m.getWindow().equals(menu.getWindow()) &&
- m.getZoneName().equals(menu.getZoneName()))
- .map(m -> {
- TreeVO matter = new TreeVO();
- matter.setName(m.getItemName());
- matter.setUrl(m.getWebapplyurl());
- matter.setId(m.getItemRowid());
- matter.setSort(m.getSort());
- matter.setType(ZzsfwMenuConstant.MENU_TYPE_MATTER);
- matter.setServiceContent(m.getServiceContent());
- matter.setServiceProcess(m.getServiceProcess());
- matter.setTelephone(m.getTelephone());
- return matter;
- }).collect(Collectors.toList());
- }
-
- public List<MatterTopVO> topTen() {
- List<NdKqZzsfwMattersDeduplicate> topTen = matterDeduplicateService.list(Wrappers.lambdaQuery(NdKqZzsfwMattersDeduplicate.class)
- .orderByDesc(NdKqZzsfwMattersDeduplicate::getCountNum)
- .last("limit 10"));
- return topTen.stream().map(m -> {
- MatterTopVO vo = new MatterTopVO();
- vo.setMatterName(m.getQlName());
- vo.setWebapplyurl(m.getWebapplyurl());
- vo.setCount(m.getCountNum());
- return vo;
- }).collect(Collectors.toList());
- }
-
- public String save(NdKqZzsfwMenuDTO dto) {
- if(Objects.isNull(dto)){
- return "保存失败 传入为空";
- }
-
- NdKqZzsfwMenu entity = BeanUtil.copyProperties(dto,NdKqZzsfwMenu.class);
- if(menuService.save(entity)){
- return "保存成功 :" + entity;
- }else{
- return "保存失败";
- }
- }
-
- public String saveDup(NdKqZzsfwMattersDeduplicateDTO dto) {
- if(Objects.isNull(dto)){
- return "保存失败 传入为空";
- }
-
- NdKqZzsfwMattersDeduplicate entity = BeanUtil.copyProperties(dto,NdKqZzsfwMattersDeduplicate.class);
- if(matterDeduplicateService.save(entity)){
- return "保存成功 :" + entity;
- }else{
- return "保存失败";
- }
- }
-
- public String removeAll() {
- menuService.remove(Wrappers.lambdaQuery(NdKqZzsfwMenu.class));
- return "删除成功";
- }
-
- public String removeAllDup() {
- matterDeduplicateService.remove(Wrappers.lambdaQuery(NdKqZzsfwMattersDeduplicate.class));
- return "删除成功";
- }
-
- public String uploadMenu(MultipartFile file) throws IOException {
- InputStream inputStream = file.getInputStream();
- Workbook workbook = new XSSFWorkbook(inputStream);
- Assert.notNull(workbook);
- Row row;
- //获取最大行数
- Sheet sheet = workbook.getSheetAt(0);
- int rownum = sheet.getPhysicalNumberOfRows();
- //获取最大列数
- Integer num = 1;
-
- for (int i = 2; i < rownum; i++) {
- row = sheet.getRow(i);
- if (row.getZeroHeight()) {
- continue;
- }
- System.out.println("记数:" + (num++));
- String zoneName = row.getCell(0).getStringCellValue();
- System.out.println(zoneName);
- DecimalFormat decimalFormat = new DecimalFormat("#");
- Integer sort = Integer.valueOf(decimalFormat.format(row.getCell(1).getNumericCellValue()));
- System.out.println(sort);
- String windowName = row.getCell(2).getStringCellValue();
- System.out.println(windowName);
- String department = row.getCell(3).getStringCellValue();
- System.out.println(department);
- String itemName = row.getCell(4).getStringCellValue();
- System.out.println(itemName);
- String serviceContent = row.getCell(5).getStringCellValue();
- System.out.println(serviceContent);
- String serviceProcess = row.getCell(6).getStringCellValue();
- System.out.println(serviceProcess);
- String telephone = "";
- CellType cellType = row.getCell(7).getCellType();
- if (cellType.equals(CellType.STRING)) {
- telephone = row.getCell(7).getStringCellValue();
- System.out.println(telephone);
- } else if (cellType.equals(CellType.NUMERIC)) {
- DecimalFormat decimalFormat2 = new DecimalFormat("#.#######");
- telephone = decimalFormat2.format(row.getCell(7).getNumericCellValue());
- System.out.println(telephone);
- }
- NdKqZzsfwMenu menu = new NdKqZzsfwMenu();
- menu.setItemName(itemName);
- menu.setZoneName(zoneName);
- menu.setWindow(windowName);
- menu.setDepartment(department);
- menu.setServiceContent(serviceContent);
- menu.setServiceProcess(serviceProcess);
- menu.setTelephone(telephone);
- menu.setType(ItemTypeEnum.ADDED.getCode());
- menu.setCreateOn(LocalDateTime.now());
- menu.setSort(sort);
- menuService.save(menu);
- }
- return "upload success!";
- }
-
- public String ddl(String sql) {
- try {
- // 1. 加载数据库驱动
- Class.forName("com.mysql.cj.jdbc.Driver");
-
- // 2. 建立数据库连接
- Connection connection = DriverManager.getConnection(url, username, password);
-
- // 3. 创建Statement对象
- Statement statement = connection.createStatement();
-
- // 4. 编写并执行DDL语句(创建一个名为`users`的表)
- statement.executeUpdate(sql);
-
- System.out.println(" Table updated successfully.");
-
- // 5. 关闭资源
- statement.close();
- connection.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return "success!";
- }
- }
|