linwe
2024-06-27 24f2e1047e0260915ce6e401ec36763974531eed
积木报表+业主大会统计
27 files modified
20 files added
1520 ■■■■■ changed files
pom.xml 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/controller/PublicDiscussController.java 46 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/controller/TopicsController.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/dto/TopicsDTO.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/entity/PublicDiscussEntity.java 51 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml 16 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml 14 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/service/IPublicDiscussService.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/service/ITopicsService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/service/impl/PublicDiscussServiceImpl.java 130 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/service/impl/TopicsServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/discuss/vo/PublicDiscussVO.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/entity/EcOrder.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml 39 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/IHouseService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/controller/ReportController.java 126 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/controller/ReportDbController.java 125 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/dto/ReportDTO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/dto/ReportDbDTO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/entity/ReportDbEntity.java 149 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/entity/ReportEntity.java 157 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/mapper/ReportDbMapper.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/mapper/ReportDbMapper.xml 15 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/mapper/ReportMapper.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/mapper/ReportMapper.xml 15 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/service/IReportDbService.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/service/IReportService.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/service/impl/ReportDbServiceImpl.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/service/impl/ReportServiceImpl.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/vo/ReportDbVO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/vo/ReportVO.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/wrapper/ReportDbWrapper.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/report/wrapper/ReportWrapper.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java 3 ●●●● patch | view | raw | blame | history
src/main/java/sql/report.menu.sql 10 ●●●●● patch | view | raw | blame | history
src/main/java/sql/reportdb.menu.sql 10 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 4 ●●●● patch | view | raw | blame | history
pom.xml
@@ -334,6 +334,14 @@
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
        <!-- JimuReport -->
        <dependency>
            <groupId>org.jeecgframework.jimureport</groupId>
            <artifactId>jimureport-spring-boot-starter</artifactId>
            <version>1.7.6</version>
        </dependency>
    </dependencies>
    <build>
src/main/java/org/springblade/modules/discuss/controller/PublicDiscussController.java
@@ -16,7 +16,6 @@
 */
package org.springblade.modules.discuss.controller;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
@@ -29,6 +28,7 @@
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.discuss.dto.TopicsDTO;
import org.springblade.modules.discuss.entity.PublicDiscussEntity;
import org.springblade.modules.discuss.service.IPublicDiscussService;
import org.springblade.modules.discuss.vo.PublicDiscussVO;
@@ -36,6 +36,8 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
 * 公益报名与议事 控制器
@@ -127,4 +129,46 @@
    }
    /**
     * 议事统计
     * @param publicDiscuss
     * @return
     */
    @GetMapping("/publicDiscussTotal")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "房屋统计", notes = "传入ids")
    public R publicDiscussTotal(PublicDiscussVO publicDiscuss) {
        Map<String, Object> result = publicDiscussService.GetPublicDiscussTotal(publicDiscuss);
        return R.data(result);
    }
    /**
     * 议事统计
     * @param publicDiscuss
     * @return
     */
    @GetMapping("/managementProtocol")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "管理规约", notes = "传入ids")
    public R managementProtocol(PublicDiscussVO publicDiscuss) {
        List<TopicsDTO> result = publicDiscussService.managementProtocol(publicDiscuss,1);
        return R.data(result);
    }
    /**
     * 议事统计
     * @param publicDiscuss
     * @return
     */
    @GetMapping("/candidate")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "candidate", notes = "传入ids")
    public R candidate(PublicDiscussVO publicDiscuss) {
        List<TopicsDTO> result = publicDiscussService.managementProtocol(publicDiscuss,2);
        return R.data(result);
    }
}
src/main/java/org/springblade/modules/discuss/controller/TopicsController.java
@@ -132,6 +132,7 @@
            for (TopicsDTO child : children) {
                child.setParentId(topics.getId());
                child.setDiscussContent(topics.getDiscussContent());
                child.setArticleId(topics.getArticleId());
                child.setLevel(2);
                boolean b2 = topicsService.saveOrUpdate(child);
            }
src/main/java/org/springblade/modules/discuss/dto/TopicsDTO.java
@@ -16,10 +16,12 @@
 */
package org.springblade.modules.discuss.dto;
import io.swagger.annotations.ApiModelProperty;
import org.springblade.modules.discuss.entity.TopicsEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -40,4 +42,10 @@
    private String houseCode;
    @ApiModelProperty(value = "数量", example = "")
    private Integer number;
    @ApiModelProperty(value = "比例", example = "")
    private BigDecimal proportion;
}
src/main/java/org/springblade/modules/discuss/entity/PublicDiscussEntity.java
@@ -44,128 +44,77 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 标题
     */
    @ApiModelProperty(value = "标题", example = "")
    @TableField("title")
    private String title;
    /**
     * 0 开启:1关闭
     */
    @ApiModelProperty(value = "0 开启:1关闭", example = "")
    @TableField("open_flag")
    private Integer openFlag;
    /**
     * 人数限制:0 不限制
     */
    @ApiModelProperty(value = "人数限制:0 不限制", example = "")
    @TableField("number_restrictions")
    private Integer numberRestrictions;
    /**
     * 投票限制:0 一人一票 1 一户一票
     */
    @ApiModelProperty(value = "投票限制:0 一人一票 1 一户一票", example = "")
    @TableField("vote_restrictions")
    private Integer voteRestrictions;
    /**
     * 用户限制 0 不限制 1 必须绑定手机 2 必须绑定住房
     */
    @ApiModelProperty(value = "用户限制 0 不限制 1 必须绑定手机 2 必须绑定住房", example = "")
    @TableField("user_restrictions")
    private Integer userRestrictions;
    /**
     * 截止时间
     */
    @ApiModelProperty(value = "截止时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("end_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("start_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
    /**
     * 文章id
     */
    @ApiModelProperty(value = "文章id", example = "")
    @TableField("article_id")
    private Integer articleId;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "update_time",fill = FieldFill.UPDATE)
    private Date updateTime;
    /**
     * 0:否 1 是
     */
    @ApiModelProperty(value = "0:否 1 是", example = "")
    @TableField("deleted_flag")
    @TableLogic
    private Integer deletedFlag;
    /**
     * 多房屋可重复投票 0否 1是
     */
    @ApiModelProperty(value = "多房屋可重复投票 0否 1是", example = "")
    @TableField("repeat_vote")
    private Integer repeatVote;
    /**
     * 票数公开 0 全程公开 1 投票后公开 2 投票结束公开 3 不公开
     */
    @ApiModelProperty(value = "票数公开 0 全程公开 1 投票后公开 2 投票结束公开 3 不公开", example = "")
    @TableField("vote_number_public")
    private Integer voteNumberPublic;
    /**
     * 指定用户 0 否 1是
     */
    @ApiModelProperty(value = "指定用户 0 否 1是", example = "")
    @TableField("appoint_user")
    private Integer appointUser;
    /**
     * 指定用户id [ 1,2,3,4,5,6,7,8,9 ]
     */
    @ApiModelProperty(value = "指定用户id [ 1,2,3,4,5,6,7,8,9 ]", example = "")
    @TableField("user_ids")
    private String userIds;
    /**
     * 0:公益报名 1:议事
     */
    @ApiModelProperty(value = "0:公益报名 1:议事", example = "")
    @TableField("event_type")
    private Integer eventType;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人", example = "")
    @TableField("create_by")
    private Long createBy;
src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.java
@@ -48,5 +48,11 @@
     */
    public List<TopicsDTO> selectTopicsList(TopicsDTO topicsDTO);
    /**
     *
     * @param articleId
     * @return
     */
    List<TopicsDTO> getTopicstotalbyarticleid(Integer articleId);
}
src/main/java/org/springblade/modules/discuss/mapper/TopicsMapper.xml
@@ -143,4 +143,20 @@
    </select>
    <select id="getTopicstotalbyarticleid" resultType="org.springblade.modules.discuss.dto.TopicsDTO">
        SELECT
            jt.discuss_content,
            jt.option_content,
            ( SELECT count( 1 ) FROM jczz_user_topics jut WHERE jut.topics_id = jt.id ) number
        FROM
            jczz_topics jt
        WHERE
            jt.article_id = #{articleId}
          AND jt.`level` = 2
          and jt.delete_flag = 0
    </select>
</mapper>
src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.java
@@ -26,6 +26,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
import java.util.Map;
/**
 * 用户议题报表 Mapper 接口
@@ -59,4 +60,6 @@
    UserTopicsVO getresult(UserTopicsVO userTopics);
    List<holdExcel> getHouseholdList(UserTopicsVO userTopics);
    Map<String, Object> getUserTopicsTotal(Integer articleId);
}
src/main/java/org/springblade/modules/discuss/mapper/UserTopicsMapper.xml
@@ -266,5 +266,19 @@
        GROUP BY id
    </select>
    <select id="getUserTopicsTotal" resultType="java.util.Map">
        SELECT IFNULL(sum(a.area), 0) AS area,
               IFNULL(COUNT(1), 0)       number
        FROM (SELECT DISTINCT jut.house_code,
                              jh.area
              FROM jczz_user_topics jut
                       LEFT JOIN jczz_household jhd ON jhd.id = jut.household_id
                       LEFT JOIN jczz_house jh ON jh.house_code = jhd.house_code
                       LEFT JOIN jczz_topics jt ON jt.id = jut.topics_id
                  AND jt.delete_flag = 0
              WHERE jut.article_id = #{articleId}) a
    </select>
</mapper>
src/main/java/org/springblade/modules/discuss/service/IPublicDiscussService.java
@@ -17,10 +17,14 @@
package org.springblade.modules.discuss.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.discuss.dto.TopicsDTO;
import org.springblade.modules.discuss.entity.PublicDiscussEntity;
import org.springblade.modules.discuss.vo.PublicDiscussVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
import java.util.Map;
/**
 * 公益报名与议事 服务类
@@ -41,4 +45,13 @@
    PublicDiscussVO getDetail(PublicDiscussVO publicDiscuss);
    /**
     * 获取统计数据
     * @param publicDiscuss
     * @return
     */
    Map<String, Object> GetPublicDiscussTotal(PublicDiscussVO publicDiscuss);
    List<TopicsDTO> managementProtocol(PublicDiscussVO publicDiscuss,Integer type);
}
src/main/java/org/springblade/modules/discuss/service/ITopicsService.java
@@ -49,5 +49,13 @@
     */
    public List<TopicsDTO> selectTopicsList(TopicsDTO topicsDTO);
    /**
     * 根据文章id查询用户参与次数
     * @param articleId
     * @return
     */
    List<TopicsDTO> getTopicsTotalByArticleId(Integer articleId);
}
src/main/java/org/springblade/modules/discuss/service/IUserTopicsService.java
@@ -25,6 +25,7 @@
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/**
 * 用户议题报表 服务类
@@ -53,4 +54,6 @@
    Boolean saveUserTopicsEntity(UserTopicsEntity userTopics);
    void handleExcel(OutputStream out,UserTopicsVO userTopics);
    Map<String,Object> getUserTopicsTotal(Integer articleId);
}
src/main/java/org/springblade/modules/discuss/service/impl/PublicDiscussServiceImpl.java
@@ -19,25 +19,39 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxl.job.core.util.DateUtil;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.article.entity.Article;
import org.springblade.modules.article.service.ArticleService;
import org.springblade.modules.discuss.dto.TopicsDTO;
import org.springblade.modules.discuss.entity.PublicDiscussEntity;
import org.springblade.modules.discuss.entity.UserTopicsEntity;
import org.springblade.modules.discuss.mapper.PublicDiscussMapper;
import org.springblade.modules.discuss.service.IPublicDiscussService;
import org.springblade.modules.discuss.service.ITopicsService;
import org.springblade.modules.discuss.service.IUserPublicEnrollService;
import org.springblade.modules.discuss.service.IUserTopicsService;
import org.springblade.modules.discuss.vo.PublicDiscussVO;
import org.springblade.modules.discuss.vo.UserTopicsVO;
import org.springblade.modules.district.entity.DistrictEntity;
import org.springblade.modules.district.service.IDistrictService;
import org.springblade.modules.house.entity.HouseholdEntity;
import org.springblade.modules.house.service.IHouseService;
import org.springblade.modules.house.service.IHouseholdService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 公益报名与议事 服务实现类
@@ -113,4 +127,120 @@
        }
        return publicDiscussVO;
    }
    @Override
    public Map<String, Object> GetPublicDiscussTotal(PublicDiscussVO publicDiscuss) {
        // 参与房屋投票的总数
        IDistrictService districtService = SpringUtils.getBean(IDistrictService.class);
        // 获取文章信息
        PublicDiscussEntity discussEntity = getOne(Wrappers.<PublicDiscussEntity>lambdaQuery().eq(PublicDiscussEntity::getArticleId, publicDiscuss.getArticleId()));
        ArticleService articleService = SpringUtils.getBean(ArticleService.class);
        Article serviceOne = articleService.getOne(Wrappers.<Article>lambdaQuery().eq(Article::getId, publicDiscuss.getArticleId()));
        String articleRange = serviceOne.getArticleRange();
        List<String> strings = Func.toStrList(articleRange);
        // 获取小区信息
        List<DistrictEntity> list = districtService.list(Wrappers.<DistrictEntity>lambdaQuery()
            .in(DistrictEntity::getId, strings));
        List<String> aoiCodeList = list.stream().map(districtEntity -> districtEntity.getAoiCode()).collect(Collectors.toList());
        IHouseService iHouseService = SpringUtils.getBean(IHouseService.class);
        // 获取小区房屋总数和面积
        Map<String, Object> buildingAreaStatistics = iHouseService.getHoseTotalAndAreaTotalByDistrictCode(aoiCodeList);
        // 获取投票数量和面积
        IUserTopicsService userTopicsService = SpringUtils.getBean(IUserTopicsService.class);
        Map<String, Object> userTopicsTotal = userTopicsService.getUserTopicsTotal(discussEntity.getArticleId());
        // 投票详情统计
        ITopicsService iTopicsService = SpringUtils.getBean(ITopicsService.class);
        List<TopicsDTO> userTopicsTotalByArticleId = iTopicsService.getTopicsTotalByArticleId(discussEntity.getArticleId());
        // 已投票房屋面积
        BigDecimal areaCount = (BigDecimal) userTopicsTotal.get("area");
        // 已投票房屋数量
        BigDecimal numberCount = BigDecimal.valueOf((Long) userTopicsTotal.get("number"));
        // 总房屋数量
        BigDecimal houseCount = BigDecimal.valueOf((Long) buildingAreaStatistics.get("houseCount"));
        // 总房屋面积
        BigDecimal houseAreaCount = (BigDecimal) buildingAreaStatistics.get("houseArea");
        // 已完成房屋投票数量占比
        if (houseCount.compareTo(BigDecimal.ZERO) > 0) {
            BigDecimal divide = numberCount.divide(houseCount, 4, BigDecimal.ROUND_HALF_UP);
            // 将结果乘以100得到百分比形式,然后设置为2位小数
            // 这里保持了原有的功能和精度要求
            userTopicsTotal.put("houseProportion", divide.multiply(BigDecimal.valueOf(100)).setScale(2));
        }
        if (houseAreaCount.compareTo(BigDecimal.ZERO) > 0) {
            // 已完成房屋投票面积占比
            BigDecimal divide1 = areaCount.divide(houseAreaCount, 4, BigDecimal.ROUND_HALF_UP);
            // 将结果乘以100得到百分比形式,然后设置为2位小数
            // 这里保持了原有的功能和精度要求
            userTopicsTotal.put("areaProportion", divide1.multiply(BigDecimal.valueOf(100)).setScale(2));
        }
        buildingAreaStatistics.putAll(userTopicsTotal);
        // 设置小区名称
        StringBuffer stringBuffer = new StringBuffer();
        for (DistrictEntity districtEntity : list) {
            if (stringBuffer.length() > 0) {
                stringBuffer.append(",");
            }
            stringBuffer.append(districtEntity.getName());
        }
        buildingAreaStatistics.put("districtName", stringBuffer.toString());
        // 设置当前时间并且格式化时间
        buildingAreaStatistics.put("time", DateUtil.format(new Date(), "yyyy-MM-dd"));
        return buildingAreaStatistics;
    }
    @Override
    public List<TopicsDTO> managementProtocol(PublicDiscussVO publicDiscuss, Integer type) {
        // 参与房屋投票的总数
        IDistrictService districtService = SpringUtils.getBean(IDistrictService.class);
        PublicDiscussEntity discussEntity = getOne(Wrappers.<PublicDiscussEntity>lambdaQuery().eq(PublicDiscussEntity::getArticleId, publicDiscuss.getArticleId()));
        ArticleService articleService = SpringUtils.getBean(ArticleService.class);
        Article serviceOne = articleService.getOne(Wrappers.<Article>lambdaQuery().eq(Article::getId, publicDiscuss.getArticleId()));
        String articleRange = serviceOne.getArticleRange();
        List<String> strings = Func.toStrList(articleRange);
        // 获取小区信息
        List<DistrictEntity> list = districtService.list(Wrappers.<DistrictEntity>lambdaQuery()
            .in(DistrictEntity::getId, strings));
        List<String> aoiCodeList = list.stream().map(districtEntity -> districtEntity.getAoiCode()).collect(Collectors.toList());
        // 投票详情统计
        ITopicsService iTopicsService = SpringUtils.getBean(ITopicsService.class);
        List<TopicsDTO> userTopicsTotalByArticleId = iTopicsService.getTopicsTotalByArticleId(discussEntity.getArticleId());
        // 按投票数量排序
        List<TopicsDTO> collect = userTopicsTotalByArticleId.stream().sorted(Comparator.comparing(TopicsDTO::getNumber).reversed()).collect(Collectors.toList());
        if (type == 2) {
            // 获取候选人
            List<TopicsDTO> candidate = collect.stream().filter(topicsDTO ->
                    !(topicsDTO.getDiscussContent().equals("管理规约") || topicsDTO.getDiscussContent().equals("议事规则")))
                .collect(Collectors.toList());
            Integer candidateNumber = candidate.stream().map(TopicsDTO::getNumber).reduce(0, Integer::sum);
            // 计算投票的占比
            candidate.forEach(topicsDTO -> {
                BigDecimal number = new BigDecimal(topicsDTO.getNumber());
                BigDecimal total = new BigDecimal(candidateNumber);
                if (total.compareTo(BigDecimal.ZERO) > 0) {
                    BigDecimal divide = number.divide(total, 4, BigDecimal.ROUND_HALF_UP);
                    topicsDTO.setProportion(divide.multiply(BigDecimal.valueOf(100)).setScale(2));
                }
            });
            return candidate;
        } else {
            // 获取管理规约和议事规则
            List<TopicsDTO> managementProtocol = collect.stream().filter(topicsDTO ->
                    topicsDTO.getDiscussContent().equals("管理规约") || topicsDTO.getDiscussContent().equals("议事规则"))
                .collect(Collectors.toList());
            Integer managementProtocolNumber = managementProtocol.stream().map(TopicsDTO::getNumber).reduce(0, Integer::sum);
            // 计算投票的占比
            managementProtocol.forEach(topicsDTO -> {
                BigDecimal number = new BigDecimal(topicsDTO.getNumber());
                BigDecimal total = new BigDecimal(managementProtocolNumber);
                if (total.compareTo(BigDecimal.ZERO) > 0) {
                    BigDecimal divide = number.divide(total, 4, BigDecimal.ROUND_HALF_UP);
                    topicsDTO.setProportion(divide.multiply(BigDecimal.valueOf(100)).setScale(2));
                }
            });
            return managementProtocol;
        }
    }
}
src/main/java/org/springblade/modules/discuss/service/impl/TopicsServiceImpl.java
@@ -68,4 +68,9 @@
        }
        return baseMapper.selectTopicsList(topicsDTO);
    }
    @Override
    public List<TopicsDTO> getTopicsTotalByArticleId(Integer articleId) {
        return baseMapper.getTopicstotalbyarticleid(articleId);
    }
}
src/main/java/org/springblade/modules/discuss/service/impl/UserTopicsServiceImpl.java
@@ -64,6 +64,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -417,4 +418,9 @@
        list.addAll(userTopicsExcels);
        return list;
    }
    @Override
    public Map<String, Object> getUserTopicsTotal(Integer articleId) {
        return baseMapper.getUserTopicsTotal(articleId);
    }
}
src/main/java/org/springblade/modules/discuss/vo/PublicDiscussVO.java
@@ -16,6 +16,7 @@
 */
package org.springblade.modules.discuss.vo;
import io.swagger.annotations.ApiModelProperty;
import org.springblade.modules.discuss.entity.PublicDiscussEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
@@ -32,15 +33,25 @@
public class PublicDiscussVO extends PublicDiscussEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "报名人数")
    private Integer enrollCount;
    @ApiModelProperty(value = "投票人数")
    private Integer topsCount;
    @ApiModelProperty(value = "住户id")
    private Long householdId;
    @ApiModelProperty(value = "住户姓名")
    private String userName;
    @ApiModelProperty(value = "地址编码")
    private String houseCode;
    @ApiModelProperty(value = "是否禁用")
    private Boolean disabled;
    @ApiModelProperty(value = "小区id")
    private String districtId;
}
src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
@@ -38,6 +38,9 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Map;
@@ -138,7 +141,16 @@
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "工单 同步")
    public R synchronizeData() {
        // 创建居住证发送短信定时任务
        EcOrderParamDTO ecOrderParamDTO = new EcOrderParamDTO();
        // 获取当前日期时间
        LocalDateTime now = LocalDateTime.now();
        // 获取前一天的开始时间
        LocalDateTime yesterdayStart = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MIN);
        // 获取前一天的结束时间
        LocalDateTime yesterdayEnd = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MAX);
        ecOrderParamDTO.setEndTime(yesterdayEnd);
        ecOrderParamDTO.setStartTime(yesterdayStart);
        boolean b = ecOrderService.SynchronizeData(ecOrderParamDTO);
        return R.status(b);
    }
src/main/java/org/springblade/modules/eCallEventTwo/entity/EcOrder.java
@@ -384,4 +384,9 @@
    @ApiModelProperty(value = "核实/督办(N1/N2)", example = "")
    @TableField("tag_redo")
    private String tagRedo;
    @ApiModelProperty(value = "导入时间", example = "")
    @TableField("import_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date importTime;
}
src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
@@ -22,6 +22,7 @@
import org.springblade.modules.police.service.IPoliceAffairsGridService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -111,13 +112,16 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean SynchronizeData(EcOrderParamDTO ecOrderParamDTO) {
        processPages(100, ecOrderParamDTO);
        return true;
    }
    public void processPages(int pageSize, EcOrderParamDTO ecOrderParamDTO) {
        long count = count(new QueryWrapper<>());
        QueryWrapper<EcOrder> ecOrderQueryWrapper = new QueryWrapper<>();
        ecOrderQueryWrapper.between("import_time", ecOrderParamDTO.getStartTime(), ecOrderParamDTO.getEndTime());
        long count = baseMapper.selectCount(ecOrderQueryWrapper);
        int totalPages = (int) Math.ceil((double) count / pageSize); // 计算总页数
        for (int pageNum = 1; pageNum <= totalPages; pageNum++) {
src/main/java/org/springblade/modules/house/mapper/HouseMapper.java
@@ -162,4 +162,11 @@
     * @return
     */
    List<HouseVO> getNotBindLabelHouseList(@Param("i") int i,@Param("size")  int size);
    /**
     *
     * @param aoiCodeList
     * @return
     */
    Map<String, Object> getHoseTotalAndAreaTotalByDistrictCode(List<String> aoiCodeList);
}
src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
@@ -955,16 +955,37 @@
            select house_code from jczz_household where is_deleted = 0 and relationship = 1 and house_code is not null and house_code != '' GROUP BY house_code
            ) a on a.house_code = jh.house_code
            left join
            (
            select house_code from jczz_household where is_deleted = 0 and relationship = 18 and house_code is not null and house_code != '' GROUP BY house_code
            ) b on b.house_code = jh.house_code
            (select house_code
             from jczz_household
             where is_deleted = 0
               and relationship = 18
               and house_code is not null
               and house_code != ''
             GROUP BY house_code) b on b.house_code = jh.house_code
            left join
            (
            select house_code from jczz_household where is_deleted = 0 and relationship is null or (relationship!=1 and relationship!=18) and house_code is not null and house_code != '' GROUP BY house_code
            ) c on c.house_code = jh.house_code
        ) d left join jczz_user_house_label juhl on d.house_code = juhl.house_code and lable_type = 2
        where juhl.id is null and status is not null
        limit #{i},#{size}
            (select house_code
             from jczz_household
             where is_deleted = 0 and relationship is null
                or (relationship!=1 and relationship!=18) and house_code is not null and house_code != ''
             GROUP BY house_code) c on c.house_code = jh.house_code) d
                            left join jczz_user_house_label juhl on d.house_code = juhl.house_code and lable_type = 2
        where juhl.id is null
          and status is not null
            limit #{i}
            , #{size}
    </select>
    <select id="getHoseTotalAndAreaTotalByDistrictCode" resultType="java.util.Map">
        SELECT
        count( 1 ) AS houseCount,
        IFNULL(sum( area ),0) AS houseArea
        FROM
        jczz_house jh
        WHERE
        jh.district_code in
        <foreach collection="aoiCodeList" item="code" open="(" close=")" separator=",">
            #{code}
        </foreach>
    </select>
src/main/java/org/springblade/modules/house/service/IHouseService.java
@@ -144,4 +144,10 @@
     * @param householdEntity
     */
    void saveOrUpdateUser(HouseholdEntity householdEntity);
    /**
     * 获取房屋总数和房屋面积总数
     * @return
     */
    Map<String, Object> getHoseTotalAndAreaTotalByDistrictCode(List<String> aoiCodeList);
}
src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
@@ -1026,4 +1026,9 @@
        }
        return true;
    }
    @Override
    public Map<String, Object> getHoseTotalAndAreaTotalByDistrictCode(List<String> aoiCodeList) {
        return baseMapper.getHoseTotalAndAreaTotalByDistrictCode(aoiCodeList);
    }
}
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
@@ -455,7 +455,7 @@
                }
            }
            // 判断是否租户导入
        if (StringUtils.isNotBlank(isTenant) || householdEntity.getRelationship() == 18) {
        if (StringUtils.isNotBlank(isTenant) || (householdEntity.getRelationship() != null && householdEntity.getRelationship() == 18)) {
            householdEntity.setRelationship(18);
            HouseRentalEntity houseRentalEntity = iHouseRentalService.getOne(Wrappers.<HouseRentalEntity>lambdaQuery()
                .eq(HouseRentalEntity::getHouseCode, householdEntity.getHouseCode()).last("limit 1"));
src/main/java/org/springblade/modules/report/controller/ReportController.java
New file
@@ -0,0 +1,126 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.report.entity.ReportEntity;
import org.springblade.modules.report.vo.ReportVO;
import org.springblade.modules.report.wrapper.ReportWrapper;
import org.springblade.modules.report.service.IReportService;
import org.springblade.core.boot.ctrl.BladeController;
/**
 * 在线excel设计器 控制器
 *
 * @author BladeX
 * @since 2024-06-27
 */
@RestController
@AllArgsConstructor
@RequestMapping("blade-report/report")
@Api(value = "在线excel设计器", tags = "在线excel设计器接口")
public class ReportController extends BladeController {
    private final IReportService reportService;
    /**
     * 在线excel设计器 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入report")
    public R<ReportVO> detail(ReportEntity report) {
        ReportEntity detail = reportService.getOne(Condition.getQueryWrapper(report));
        return R.data(ReportWrapper.build().entityVO(detail));
    }
    /**
     * 在线excel设计器 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入report")
    public R<IPage<ReportVO>> list(ReportEntity report, Query query) {
        IPage<ReportEntity> pages = reportService.page(Condition.getPage(query), Condition.getQueryWrapper(report));
        return R.data(ReportWrapper.build().pageVO(pages));
    }
    /**
     * 在线excel设计器 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入report")
    public R<IPage<ReportVO>> page(ReportVO report, Query query) {
        IPage<ReportVO> pages = reportService.selectReportPage(Condition.getPage(query), report);
        return R.data(pages);
    }
    /**
     * 在线excel设计器 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入report")
    public R save(@Valid @RequestBody ReportEntity report) {
        return R.status(reportService.save(report));
    }
    /**
     * 在线excel设计器 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入report")
    public R update(@Valid @RequestBody ReportEntity report) {
        return R.status(reportService.updateById(report));
    }
    /**
     * 在线excel设计器 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入report")
    public R submit(@Valid @RequestBody ReportEntity report) {
        return R.status(reportService.saveOrUpdate(report));
    }
    /**
     * 在线excel设计器 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(reportService.removeBatchByIds(Func.toStrList(ids)));
    }
}
src/main/java/org/springblade/modules/report/controller/ReportDbController.java
New file
@@ -0,0 +1,125 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.report.entity.ReportDbEntity;
import org.springblade.modules.report.vo.ReportDbVO;
import org.springblade.modules.report.wrapper.ReportDbWrapper;
import org.springblade.modules.report.service.IReportDbService;
import org.springblade.core.boot.ctrl.BladeController;
/**
 * 积木报表表 控制器
 *
 * @author BladeX
 * @since 2024-06-26
 */
@RestController
@AllArgsConstructor
@RequestMapping("blade-reportDb/reportDb")
@Api(value = "积木报表表", tags = "积木报表表接口")
public class ReportDbController extends BladeController {
    private final IReportDbService reportDbService;
    /**
     * 积木报表表 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入reportDb")
    public R<ReportDbVO> detail(ReportDbEntity reportDb) {
        ReportDbEntity detail = reportDbService.getOne(Condition.getQueryWrapper(reportDb));
        return R.data(ReportDbWrapper.build().entityVO(detail));
    }
    /**
     * 积木报表表 分页
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入reportDb")
    public R<IPage<ReportDbVO>> list(ReportDbEntity reportDb, Query query) {
        IPage<ReportDbEntity> pages = reportDbService.page(Condition.getPage(query), Condition.getQueryWrapper(reportDb));
        return R.data(ReportDbWrapper.build().pageVO(pages));
    }
    /**
     * 积木报表表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入reportDb")
    public R<IPage<ReportDbVO>> page(ReportDbVO reportDb, Query query) {
        IPage<ReportDbVO> pages = reportDbService.selectReportDbPage(Condition.getPage(query), reportDb);
        return R.data(pages);
    }
    /**
     * 积木报表表 新增
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入reportDb")
    public R save(@Valid @RequestBody ReportDbEntity reportDb) {
        return R.status(reportDbService.save(reportDb));
    }
    /**
     * 积木报表表 修改
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入reportDb")
    public R update(@Valid @RequestBody ReportDbEntity reportDb) {
        return R.status(reportDbService.updateById(reportDb));
    }
    /**
     * 积木报表表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入reportDb")
    public R submit(@Valid @RequestBody ReportDbEntity reportDb) {
        return R.status(reportDbService.saveOrUpdate(reportDb));
    }
    /**
     * 积木报表表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(reportDbService.removeBatchByIds(Func.toLongList(ids)));
    }
}
src/main/java/org/springblade/modules/report/dto/ReportDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.dto;
import org.springblade.modules.report.entity.ReportEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 在线excel设计器 数据传输对象实体类
 *
 * @author BladeX
 * @since 2024-06-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ReportDTO extends ReportEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/report/dto/ReportDbDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.dto;
import org.springblade.modules.report.entity.ReportDbEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 数据源 数据传输对象实体类
 *
 * @author BladeX
 * @since 2024-06-26
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ReportDbDTO extends ReportDbEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/report/entity/ReportDbEntity.java
New file
@@ -0,0 +1,149 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 积木报表表 实体类
 *
 * @author BladeX
 * @since 2024-06-26
 */
/**
 * 对象 jimu_report_db
 *
 * @author ${context.author}
 * @date 2024-06-26 14:26:27
 */
@ApiModel(value = "JimuReportDb对象", description = "")
@Data
@TableName("jimu_report_db")
public class ReportDbEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键ID", example = "")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;
    @ApiModelProperty(value = "主键字段", example = "")
    @TableField("jimu_report_id")
    private String jimuReportId;
    @ApiModelProperty(value = "创建人登录名称", example = "")
    @TableField("create_by")
    private String createBy;
    @ApiModelProperty(value = "更新人登录名称", example = "")
    @TableField("update_by")
    private String updateBy;
    @ApiModelProperty(value = "创建日期", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("create_time")
    private Date createTime;
    @ApiModelProperty(value = "更新日期", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("update_time")
    private Date updateTime;
    @ApiModelProperty(value = "数据集编码", example = "")
    @TableField("db_code")
    private String dbCode;
    @ApiModelProperty(value = "数据集名字", example = "")
    @TableField("db_ch_name")
    private String dbChName;
    @ApiModelProperty(value = "数据源类型", example = "")
    @TableField("db_type")
    private String dbType;
    @ApiModelProperty(value = "数据库表名", example = "")
    @TableField("db_table_name")
    private String dbTableName;
    @ApiModelProperty(value = "动态查询SQL", example = "")
    @TableField("db_dyn_sql")
    private String dbDynSql;
    @ApiModelProperty(value = "数据源KEY", example = "")
    @TableField("db_key")
    private String dbKey;
    @ApiModelProperty(value = "填报数据源", example = "")
    @TableField("tb_db_key")
    private String tbDbKey;
    @ApiModelProperty(value = "填报数据表", example = "")
    @TableField("tb_db_table_name")
    private String tbDbTableName;
    @ApiModelProperty(value = "java类数据集  类型(spring:springkey,class:java类名)", example = "")
    @TableField("java_type")
    private String javaType;
    @ApiModelProperty(value = "java类数据源  数值(bean key/java类名)", example = "")
    @TableField("java_value")
    private String javaValue;
    @ApiModelProperty(value = "请求地址", example = "")
    @TableField("api_url")
    private String apiUrl;
    @ApiModelProperty(value = "请求方法0-get,1-post", example = "")
    @TableField("api_method")
    private String apiMethod;
    @ApiModelProperty(value = "是否是列表0否1是 默认0", example = "")
    @TableField("is_list")
    private String isList;
    @ApiModelProperty(value = "是否作为分页,0:不分页,1:分页", example = "")
    @TableField("is_page")
    private String isPage;
    @ApiModelProperty(value = "数据源", example = "")
    @TableField("db_source")
    private String dbSource;
    @ApiModelProperty(value = "数据库类型 MYSQL ORACLE SQLSERVER", example = "")
    @TableField("db_source_type")
    private String dbSourceType;
    @ApiModelProperty(value = "json数据,直接解析json内容", example = "")
    @TableField("json_data")
    private String jsonData;
    @ApiModelProperty(value = "api转换器", example = "")
    @TableField("api_convert")
    private String apiConvert;
}
src/main/java/org/springblade/modules/report/entity/ReportEntity.java
New file
@@ -0,0 +1,157 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.Date;
/**
 * 在线excel设计器 实体类
 *
 * @author BladeX
 * @since 2024-06-27
 */
@Data
@TableName("jimu_report")
@ApiModel(value = "Report对象", description = "在线excel设计器")
public class ReportEntity  {
    private static final long serialVersionUID = 1L;
    /** 主键 */
    @ApiModelProperty(value = "主键ID", example = "")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;
    /** 编码 */
    @ApiModelProperty(value = "编码", example = "")
    @TableField("code")
    private String code;
    /** 名称 */
    @ApiModelProperty(value = "名称", example = "")
    @TableField("name")
    private String name;
    /** 说明 */
    @ApiModelProperty(value = "说明", example = "")
    @TableField("note")
    private String note;
    /** 状态 */
    @ApiModelProperty(value = "状态", example = "")
    @TableField("status")
    private String status;
    /** 类型 */
    @ApiModelProperty(value = "类型", example = "")
    @TableField("type")
    private String type;
    /** json字符串 */
    @ApiModelProperty(value = "json字符串", example = "")
    @TableField("json_str")
    private String jsonStr;
    /** 请求地址 */
    @ApiModelProperty(value = "请求地址", example = "")
    @TableField("api_url")
    private String apiUrl;
    /** 缩略图 */
    @ApiModelProperty(value = "缩略图", example = "")
    @TableField("thumb")
    private String thumb;
    /** 创建人 */
    @ApiModelProperty(value = "创建人", example = "")
    @TableField("create_by")
    private String createBy;
    /** 创建时间 */
    @ApiModelProperty(value = "创建时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("create_time")
    private Date createTime;
    /** 修改人 */
    @ApiModelProperty(value = "修改人", example = "")
    @TableField("update_by")
    private String updateBy;
    /** 修改时间 */
    @ApiModelProperty(value = "修改时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("update_time")
    private Date updateTime;
    /** 删除标识0-正常,1-已删除 */
    @ApiModelProperty(value = "删除标识0-正常,1-已删除", example = "")
    @TableField("del_flag")
    private Byte delFlag;
    /** 请求方法0-get,1-post */
    @ApiModelProperty(value = "请求方法0-get,1-post", example = "")
    @TableField("api_method")
    private String apiMethod;
    /** 请求编码 */
    @ApiModelProperty(value = "请求编码", example = "")
    @TableField("api_code")
    private String apiCode;
    /** 是否是模板 0-是,1-不是 */
    @ApiModelProperty(value = "是否是模板 0-是,1-不是", example = "")
    @TableField("template")
    private Byte template;
    /** 浏览次数 */
    @ApiModelProperty(value = "浏览次数", example = "")
    @TableField("view_count")
    private Long viewCount;
    /** css增强 */
    @ApiModelProperty(value = "css增强", example = "")
    @TableField("css_str")
    private String cssStr;
    /** js增强 */
    @ApiModelProperty(value = "js增强", example = "")
    @TableField("js_str")
    private String jsStr;
    /** py增强 */
    @ApiModelProperty(value = "py增强", example = "")
    @TableField("py_str")
    private String pyStr;
    /** 多租户标识 */
    @ApiModelProperty(value = "多租户标识", example = "")
    @TableField("tenant_id")
    private String tenantId;
}
src/main/java/org/springblade/modules/report/mapper/ReportDbMapper.java
New file
@@ -0,0 +1,43 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.mapper;
import org.springblade.modules.report.entity.ReportDbEntity;
import org.springblade.modules.report.vo.ReportDbVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * 积木报表表 Mapper 接口
 *
 * @author BladeX
 * @since 2024-06-26
 */
public interface ReportDbMapper extends BaseMapper<ReportDbEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param reportDb
     * @return
     */
    List<ReportDbVO> selectReportDbPage(IPage page, ReportDbVO reportDb);
}
src/main/java/org/springblade/modules/report/mapper/ReportDbMapper.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.modules.report.mapper.ReportDbMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="reportDbResultMap" type="org.springblade.modules.report.entity.ReportDbEntity">
    </resultMap>
    <select id="selectReportDbPage" resultMap="reportDbResultMap">
        select * from jimu_report_db order by create_time desc
    </select>
</mapper>
src/main/java/org/springblade/modules/report/mapper/ReportMapper.java
New file
@@ -0,0 +1,43 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.mapper;
import org.springblade.modules.report.entity.ReportEntity;
import org.springblade.modules.report.vo.ReportVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * 在线excel设计器 Mapper 接口
 *
 * @author BladeX
 * @since 2024-06-27
 */
public interface ReportMapper extends BaseMapper<ReportEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param report
     * @return
     */
    List<ReportVO> selectReportPage(IPage page, ReportVO report);
}
src/main/java/org/springblade/modules/report/mapper/ReportMapper.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.modules.report.mapper.ReportMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="reportResultMap" type="org.springblade.modules.report.entity.ReportEntity">
    </resultMap>
    <select id="selectReportPage" resultMap="reportResultMap">
        select * from jimu_report  order by create_time desc
    </select>
</mapper>
src/main/java/org/springblade/modules/report/service/IReportDbService.java
New file
@@ -0,0 +1,42 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.report.entity.ReportDbEntity;
import org.springblade.modules.report.vo.ReportDbVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 积木报表表 服务类
 *
 * @author BladeX
 * @since 2024-06-26
 */
public interface IReportDbService extends IService<ReportDbEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param reportDb
     * @return
     */
    IPage<ReportDbVO> selectReportDbPage(IPage<ReportDbVO> page, ReportDbVO reportDb);
}
src/main/java/org/springblade/modules/report/service/IReportService.java
New file
@@ -0,0 +1,43 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.report.entity.ReportEntity;
import org.springblade.modules.report.vo.ReportVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 在线excel设计器 服务类
 *
 * @author BladeX
 * @since 2024-06-27
 */
public interface IReportService extends IService<ReportEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param report
     * @return
     */
    IPage<ReportVO> selectReportPage(IPage<ReportVO> page, ReportVO report);
}
src/main/java/org/springblade/modules/report/service/impl/ReportDbServiceImpl.java
New file
@@ -0,0 +1,42 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.modules.report.entity.ReportDbEntity;
import org.springblade.modules.report.vo.ReportDbVO;
import org.springblade.modules.report.mapper.ReportDbMapper;
import org.springblade.modules.report.service.IReportDbService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 积木报表表 服务实现类
 *
 * @author BladeX
 * @since 2024-06-26
 */
@Service
public class ReportDbServiceImpl extends ServiceImpl<ReportDbMapper, ReportDbEntity> implements IReportDbService {
    @Override
    public IPage<ReportDbVO> selectReportDbPage(IPage<ReportDbVO> page, ReportDbVO reportDb) {
        return page.setRecords(baseMapper.selectReportDbPage(page, reportDb));
    }
}
src/main/java/org/springblade/modules/report/service/impl/ReportServiceImpl.java
New file
@@ -0,0 +1,43 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.modules.report.entity.ReportEntity;
import org.springblade.modules.report.vo.ReportVO;
import org.springblade.modules.report.mapper.ReportMapper;
import org.springblade.modules.report.service.IReportService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 在线excel设计器 服务实现类
 *
 * @author BladeX
 * @since 2024-06-27
 */
@Service
public class ReportServiceImpl extends ServiceImpl<ReportMapper, ReportEntity> implements IReportService {
    @Override
    public IPage<ReportVO> selectReportPage(IPage<ReportVO> page, ReportVO report) {
        return page.setRecords(baseMapper.selectReportPage(page, report));
    }
}
src/main/java/org/springblade/modules/report/vo/ReportDbVO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.vo;
import org.springblade.modules.report.entity.ReportDbEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 积木报表表 视图实体类
 *
 * @author BladeX
 * @since 2024-06-26
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ReportDbVO extends ReportDbEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/report/vo/ReportVO.java
New file
@@ -0,0 +1,35 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.vo;
import org.springblade.modules.report.entity.ReportEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 在线excel设计器 视图实体类
 *
 * @author BladeX
 * @since 2024-06-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ReportVO extends ReportEntity {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/report/wrapper/ReportDbWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.report.entity.ReportDbEntity;
import org.springblade.modules.report.vo.ReportDbVO;
import java.util.Objects;
/**
 * 数据源 包装类,返回视图层所需的字段
 *
 * @author BladeX
 * @since 2024-06-26
 */
public class ReportDbWrapper extends BaseEntityWrapper<ReportDbEntity, ReportDbVO>  {
    public static ReportDbWrapper build() {
        return new ReportDbWrapper();
     }
    @Override
    public ReportDbVO entityVO(ReportDbEntity reportDb) {
        ReportDbVO reportDbVO = Objects.requireNonNull(BeanUtil.copy(reportDb, ReportDbVO.class));
        //User createUser = UserCache.getUser(reportDb.getCreateUser());
        //User updateUser = UserCache.getUser(reportDb.getUpdateUser());
        //reportDbVO.setCreateUserName(createUser.getName());
        //reportDbVO.setUpdateUserName(updateUser.getName());
        return reportDbVO;
    }
}
src/main/java/org/springblade/modules/report/wrapper/ReportWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.report.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.report.entity.ReportEntity;
import org.springblade.modules.report.vo.ReportVO;
import java.util.Objects;
/**
 * 在线excel设计器 包装类,返回视图层所需的字段
 *
 * @author BladeX
 * @since 2024-06-27
 */
public class ReportWrapper extends BaseEntityWrapper<ReportEntity, ReportVO>  {
    public static ReportWrapper build() {
        return new ReportWrapper();
     }
    @Override
    public ReportVO entityVO(ReportEntity report) {
        ReportVO reportVO = Objects.requireNonNull(BeanUtil.copy(report, ReportVO.class));
        //User createUser = UserCache.getUser(report.getCreateUser());
        //User updateUser = UserCache.getUser(report.getUpdateUser());
        //reportVO.setCreateUserName(createUser.getName());
        //reportVO.setUpdateUserName(updateUser.getName());
        return reportVO;
    }
}
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -223,7 +223,7 @@
            // 是否加锁成功
            logger.info("是否加锁成功:" + isLock);
            if (isLock) {
                userDeptService.remove(Wrappers.<UserDept>update().lambda().eq(UserDept::getUserId, user.getId()));
                // userDeptService.remove(Wrappers.<UserDept>update().lambda().eq(UserDept::getUserId, user.getId()));
                result = userDeptService.saveBatch(userDeptList);
            }
            // 释放锁
src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java
@@ -88,7 +88,7 @@
    /**
     * 创建校园安全发送短信定时任务
     * 创建校园安全发送短信定时任务 0 15 0 * * ?
     */
    @XxlJob("ehjbJobHandler")
    public void ehjbJobHandler (){
@@ -105,7 +105,6 @@
        ecOrderParamDTO.setStartTime(yesterdayStart);
        boolean result = ecOrderService.SynchronizeData(ecOrderParamDTO);
        XxlJobHelper.log("任务响应结果..." + result);
        // 创建居住证发送短信定时任务
        XxlJobHelper.log("E呼即办定时任务-结束自动创建任务...");
    }
src/main/java/sql/report.menu.sql
New file
@@ -0,0 +1,10 @@
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1806128994395938817', 1123598815738675201, 'report', '在线excel设计器', 'menu', '/report/report', NULL, 1, 1, 0, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1806128994395938818', '1806128994395938817', 'report_add', '新增', 'add', '/report/report/add', 'plus', 1, 2, 1, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1806128994395938819', '1806128994395938817', 'report_edit', '修改', 'edit', '/report/report/edit', 'form', 2, 2, 2, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1806128994395938820', '1806128994395938817', 'report_delete', '删除', 'delete', '/api/blade-report/report/remove', 'delete', 3, 2, 3, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1806128994395938821', '1806128994395938817', 'report_view', '查看', 'view', '/report/report/view', 'file-text', 4, 2, 2, 1, NULL, 0);
src/main/java/sql/reportdb.menu.sql
New file
@@ -0,0 +1,10 @@
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1805843789026185217', 1123598815738675201, 'reportDb', '数据源', 'menu', '/reportDb/reportDb', NULL, 1, 1, 0, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1805843789026185218', '1805843789026185217', 'reportDb_add', '新增', 'add', '/reportDb/reportDb/add', 'plus', 1, 2, 1, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1805843789026185219', '1805843789026185217', 'reportDb_edit', '修改', 'edit', '/reportDb/reportDb/edit', 'form', 2, 2, 2, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1805843789026185220', '1805843789026185217', 'reportDb_delete', '删除', 'delete', '/api/blade-reportDb/reportDb/remove', 'delete', 3, 2, 3, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1805843789026185221', '1805843789026185217', 'reportDb_view', '查看', 'view', '/reportDb/reportDb/view', 'file-text', 4, 2, 2, 1, NULL, 0);
src/main/resources/application.yml
@@ -253,6 +253,10 @@
      - /blade-smsSend/smsSend/send
      - /blade-system/user/register-user
      - /blade-eCallEventTwo/eCallEventTwo/synchronizeData
      - /jmreport/**
      - /public_discuss/publicDiscuss/publicDiscussTotal
      - /public_discuss/publicDiscuss/managementProtocol
      - /public_discuss/publicDiscuss/candidate
#      - /blade-householdLabel/**
#      - /blade-system/**
#      - /blade-doorplateAddress/doorplateAddress/**