ZQN
2024-06-19 d21773b0d86197d133ef4b16fe366232c345c665
报表添加
5个文件已添加
28个文件已修改
671 ■■■■ 已修改文件
pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/pom.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/report/ReportController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/system/SysUserController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/core/config/SwaggerConfig.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-common/src/main/java/com/project/common/core/domain/BaseEntity.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-common/src/main/java/com/project/common/core/domain/entity/SysDept.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-common/src/main/java/com/project/common/vo/KeyVal.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/mapper/EnforceEvaluateAnswerMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/mapper/EnforceEvaluateQuestionMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/IEnforceEvaluateQuestionService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/IEnforceEvaluateService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceEvaluateQuestionServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceEvaluateServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-framework/src/main/java/com/project/framework/aspectj/LogAspect.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-framework/src/main/java/com/project/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/java/com/project/report/service/IReportService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/domain/bo/editBo/UserPhoneLoginBo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/mapper/SysDeptMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/ISysDeptService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -229,6 +229,13 @@
                <version>${project.version}</version>
            </dependency>
            <!-- 统计报表-->
            <dependency>
                <groupId>com.project</groupId>
                <artifactId>project-report</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
@@ -241,6 +248,7 @@
        <module>project-common</module>
        <module>project-approval</module>
        <module>project-enforce</module>
        <module>project-report</module>
    </modules>
    <packaging>pom</packaging>
project-admin/pom.xml
@@ -67,13 +67,17 @@
            <artifactId>project-approval</artifactId>
        </dependency>
        <!-- 审批流程-->
        <!-- 执法业务-->
        <dependency>
            <groupId>com.project</groupId>
            <artifactId>project-enforce</artifactId>
        </dependency>
        <!-- 统计报表-->
        <dependency>
            <groupId>com.project</groupId>
            <artifactId>project-report</artifactId>
        </dependency>
    </dependencies>
project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
@@ -34,7 +34,16 @@
    private final IEnforceOrderService iEnforceOrderService;
    @ApiOperation("查询执法单列表")
    @ApiOperation("信息公式列表")
    @GetMapping("/showList")
    public TableDataInfo showList()
    {
        startPage();
        List<EnforceOrderVo> list = iEnforceOrderService.showList();
        return getDataTable(list);
    }
    @ApiOperation("执法单列表")
    @GetMapping("/list")
    public TableDataInfo list(EnforceOrderQueryBo bo)
    {
@@ -44,7 +53,7 @@
    }
    @ApiOperation("查询执法单待审批列表")
    @ApiOperation("审批人列表")
    @GetMapping("/checkList")
    public TableDataInfo checkList(EnforceOrderQueryBo bo)
    {
project-admin/src/main/java/com/project/admin/controller/report/ReportController.java
New file
@@ -0,0 +1,48 @@
package com.project.admin.controller.report;
import com.project.common.core.controller.BaseController;
import com.project.common.core.domain.AjaxResult;
import com.project.report.service.IReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@Api(value = "报表管理", tags = "报表管理")
@RequiredArgsConstructor
@RestController
@RequestMapping("/report/team")
public class ReportController extends BaseController
{
    private final IReportService reportService;
    @ApiOperation("执法汇总数据")
    @GetMapping("/getTotalInfo")
    public AjaxResult getTotalInfo()
    {
        return AjaxResult.success(reportService.getTotalInfo());
    }
    @ApiOperation("执法次数月度分布")
    @GetMapping("/getMonthCount")
    public AjaxResult getMonthCount(Long deptId)
    {
        return AjaxResult.success(reportService.getMonthCount(deptId));
    }
    @ApiOperation("执法次数部门分布")
    @GetMapping("/getDeptCount")
    public AjaxResult getDeptCount(String yearMonth)
    {
        return AjaxResult.success(reportService.getDeptCount(yearMonth));
    }
}
project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java
@@ -59,8 +59,14 @@
    public AjaxResult updateProfile(@RequestBody SysUser user)
    {
        LoginUser loginUser = getLoginUser();
        SysUser sysUser = loginUser.getUser();
        user.setUserName(sysUser.getUserName());
        user.setUserName(user.getUserName());
        SysUser byId = userService.getById(user.getUserId());
        byId.setNickName(user.getNickName());
        byId.setPhonenumber(user.getPhonenumber());
        byId.setEmail(user.getEmail());
        byId.setSex(user.getSex());
        byId.setAvatar(user.getAvatar());
        byId.setDeptId(user.getDeptId());
        if (StringUtils.isNotEmpty(user.getPhonenumber())
                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
        {
@@ -71,15 +77,11 @@
        {
            return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
        }
        user.setUserId(sysUser.getUserId());
        if (userService.updateUser(user) > 0)
        int upd = userService.updateUser(byId);
        if (upd > 0)
        {
            // 更新缓存用户信息
            sysUser.setNickName(user.getNickName());
            sysUser.setPhonenumber(user.getPhonenumber());
            sysUser.setEmail(user.getEmail());
            sysUser.setSex(user.getSex());
            sysUser.setAvatar(user.getAvatar());
            loginUser.setUser(byId);
            tokenService.setLoginUser(loginUser);
            return success();
        }
project-admin/src/main/java/com/project/admin/controller/system/SysUserController.java
@@ -113,10 +113,12 @@
    @PostMapping
    public AjaxResult add(@Validated @RequestBody SysUser user)
    {
        if (user.getDeptId()!=null){
            user.setUserType("01");
            SysDept sysDept = deptService.selectDeptById(user.getDeptId());
            if (sysDept.getAncestors().contains("101") || sysDept.getDeptId().equals(101L)){
                user.setUserType("01");
                user.setUserType("00");
                user.setRecommendPhone(deptService.getCheckDeptIdByLoginDeptId(user.getDeptId()).toString());
            }
        }
project-admin/src/main/java/com/project/core/config/SwaggerConfig.java
@@ -116,7 +116,7 @@
    public Docket enforceApi()
    {
        return new Docket(DocumentationType.OAS_30)
                .groupName("执法流程")
                .groupName("执法中心")
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
@@ -128,6 +128,22 @@
                .pathMapping(pathMapping);
    }
    @Bean
    public Docket reportApi()
    {
        return new Docket(DocumentationType.OAS_30)
                .groupName("报表中心")
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.regex("/report/.*"))
                .build()
                /* 设置安全模式,swagger可以设置访问token */
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts())
                .pathMapping(pathMapping);
    }
    /**
     * 安全模式,这里指定token通过Authorization头请求头传递
project-admin/src/main/resources/application.yml
@@ -140,6 +140,10 @@
            - /**/*.js
            - /websocket/**
            - /chat/**
            - /system/company/add
            - /system/dict/**
            - /system/doc/**
            - /tool/**
            - /verify/**
            - /tool/**   #临时白名单
            - /report/**
            - /enforce/order/showList
project-common/src/main/java/com/project/common/core/domain/BaseEntity.java
@@ -1,16 +1,18 @@
package com.project.common.core.domain;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * Entity基类
 *
 *
 * @author project
 */
public class BaseEntity implements Serializable
@@ -19,6 +21,7 @@
    /** 搜索值 */
    @JsonIgnore
    @TableField(exist = false)
    private String searchValue;
    /** 创建者 */
@@ -36,10 +39,12 @@
    private Date updateTime;
    /** 备注 */
    @TableField(exist = false)
    private String remark;
    /** 请求参数 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params;
    public String getSearchValue()
project-common/src/main/java/com/project/common/core/domain/entity/SysDept.java
@@ -1,14 +1,16 @@
package com.project.common.core.domain.entity;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;
import com.project.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.project.common.core.domain.BaseEntity;
import java.util.ArrayList;
import java.util.List;
/**
 * 部门表 sys_dept
@@ -49,10 +51,19 @@
    /** 删除标志(0代表存在 2代表删除) */
    private String delFlag;
    /** 父部门名称 */
    @TableField(exist = false)
    private String parentName;
    public String getParentName() {
        return parentName;
    }
    public void setParentName(String parentName) {
        this.parentName = parentName;
    }
    /** 子部门 */
    @TableField(exist = false)
    private List<SysDept> children = new ArrayList<SysDept>();
    public Long getDeptId()
@@ -161,15 +172,6 @@
        this.delFlag = delFlag;
    }
    public String getParentName()
    {
        return parentName;
    }
    public void setParentName(String parentName)
    {
        this.parentName = parentName;
    }
    public List<SysDept> getChildren()
    {
project-common/src/main/java/com/project/common/vo/KeyVal.java
New file
@@ -0,0 +1,17 @@
package com.project.common.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * @author Mr.Zhao
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class KeyVal
{
    private String k;
    private Object v;
}
project-enforce/src/main/java/com/project/enforce/mapper/EnforceEvaluateAnswerMapper.java
@@ -2,6 +2,7 @@
import com.project.enforce.domain.EnforceEvaluateAnswer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
/**
 * 执法评价答案Mapper接口
@@ -10,4 +11,6 @@
 */
public interface EnforceEvaluateAnswerMapper extends BaseMapper<EnforceEvaluateAnswer> {
    @Delete("delete from enforce_evaluate_answer")
    void clearAnswer();
}
project-enforce/src/main/java/com/project/enforce/mapper/EnforceEvaluateQuestionMapper.java
@@ -2,6 +2,7 @@
import com.project.enforce.domain.EnforceEvaluateQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
/**
 * 执法评价题目Mapper接口
@@ -10,4 +11,7 @@
 */
public interface EnforceEvaluateQuestionMapper extends BaseMapper<EnforceEvaluateQuestion> {
    @Delete("delete from enforce_evaluate_question")
    void clearQuestion();
}
project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java
@@ -1,7 +1,8 @@
package com.project.enforce.mapper;
import com.project.enforce.domain.EnforceOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.common.vo.KeyVal;
import com.project.enforce.domain.EnforceOrder;
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
import com.project.enforce.domain.vo.EnforceOrderVo;
@@ -17,4 +18,7 @@
    List<EnforceOrderVo> selectCheckList(EnforceOrderQueryBo bo);
    List<KeyVal> getMonthCount(Long deptId);
    List<KeyVal> getDeptCount(String yearMonth);
}
project-enforce/src/main/java/com/project/enforce/service/IEnforceEvaluateQuestionService.java
@@ -11,4 +11,9 @@
public interface IEnforceEvaluateQuestionService extends IBaseService<EnforceEvaluateQuestion> {
    /**
     * 清空评价项及答案
     */
    void clearQuestionAndAnswer();
}
project-enforce/src/main/java/com/project/enforce/service/IEnforceEvaluateService.java
@@ -20,6 +20,10 @@
     */
    Boolean save(EnforceEvaluateBo bo);
    /**
     * 评价模板详情
     * @return  评价信息
     */
    EnforceEvaluateVo getInfo();
project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
@@ -1,10 +1,11 @@
package com.project.enforce.service;
import com.project.common.mybatis.IBaseService;
import com.project.common.vo.KeyVal;
import com.project.enforce.domain.EnforceOrder;
import com.project.enforce.domain.vo.EnforceOrderVo;
import com.project.enforce.domain.bo.editBo.EnforceOrderBo;
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
import com.project.common.mybatis.IBaseService;
import com.project.enforce.domain.vo.EnforceOrderVo;
import java.util.Collection;
import java.util.List;
@@ -25,6 +26,12 @@
     * 查询待审核列表
     */
    List<EnforceOrderVo> queryCheckList(EnforceOrderQueryBo bo);
    /**
     * 信息公式列表
     * @return    数据
     */
    List<EnforceOrderVo> showList();
    /**
     * 查询单个
@@ -53,4 +60,20 @@
     * @return  true成功 false失败
     */
    Boolean deleteByIds(Collection<Long> ids);
    /**
     * 执法次数月度分布
     * @param deptId    机构id
     * @return    月度分布
     */
    List<KeyVal> getMonthCount(Long deptId);
    /**
     * 执法次数部门分布
     * @param yearMonth    年月
     * @return    部门分布
     */
    List<KeyVal> getDeptCount(String yearMonth);
}
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceEvaluateQuestionServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.enforce.domain.EnforceEvaluateQuestion;
import com.project.enforce.mapper.EnforceEvaluateAnswerMapper;
import com.project.enforce.mapper.EnforceEvaluateQuestionMapper;
import com.project.enforce.service.IEnforceEvaluateQuestionService;
import lombok.RequiredArgsConstructor;
@@ -17,7 +18,13 @@
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class EnforceEvaluateQuestionServiceImpl extends ServiceImpl<EnforceEvaluateQuestionMapper, EnforceEvaluateQuestion> implements IEnforceEvaluateQuestionService {
    private final EnforceEvaluateQuestionMapper questionMapper;
    private final EnforceEvaluateAnswerMapper answerMapper;
    @Override//清空评价项及答案
    public void clearQuestionAndAnswer()
    {
        questionMapper.clearQuestion();
        answerMapper.clearAnswer();
    }
}
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceEvaluateServiceImpl.java
@@ -36,6 +36,7 @@
    @Transactional
    public Boolean save(EnforceEvaluateBo bo)
    {
        questionService.clearQuestionAndAnswer();
        List<EnforceEvaluateQuestion> questionList = bo.getQuestionList();
        if (StringUtils.isEmpty(questionList)){
            throw new BaseException("评价项不可为空!");
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -11,6 +11,7 @@
import com.project.common.exception.base.BaseException;
import com.project.common.utils.SecurityUtils;
import com.project.common.utils.StringUtils;
import com.project.common.vo.KeyVal;
import com.project.enforce.domain.EnforceOrder;
import com.project.enforce.domain.bo.editBo.EnforceOrderBo;
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
@@ -37,6 +38,7 @@
public class EnforceOrderServiceImpl extends ServiceImpl<EnforceOrderMapper, EnforceOrder> implements IEnforceOrderService {
    private final ISysDeptService deptService;
    private final EnforceOrderMapper orderMapper;
    @Override//列表查询
@@ -70,6 +72,13 @@
        bo.setApplyDeptIds(deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()));
        return this.baseMapper.selectCheckList(bo);
    }
    @Override//信息公式列表
    public List<EnforceOrderVo> showList()
    {
        List<EnforceOrder> list = this.list(lq().eq(EnforceOrder::getIsShow, 1));
        return Convert.toList(EnforceOrderVo.class, list);
    }
    @Override//id查询
@@ -108,6 +117,17 @@
        return this.removeByIds(ids);
    }
    @Override//月度分布
    public List<KeyVal> getMonthCount(Long deptId) {
        return orderMapper.getMonthCount(deptId);
    }
    @Override//部门分布
    public List<KeyVal> getDeptCount(String yearMonth)
    {
        return orderMapper.getDeptCount(yearMonth);
    }
//-------------------------------------------------------------------------------------
project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
@@ -60,7 +60,9 @@
        from sys_job_log
    </sql>
    <select id="selectCheckList" parameterType="EnforceOrderQueryBo" resultMap="EnforceOrderResult">
    <select id="selectCheckList"
            parameterType="EnforceOrderQueryBo"
            resultMap="EnforceOrderResult">
        <include refid="selectEnforceOrderVo"/>
        <where>
            <if test="orderNo != null and orderNo != ''">
@@ -88,10 +90,35 @@
                    #{applyDeptId}
                </foreach>
            </if>
        </where>
    </select>
    <select id="getMonthCount"
            parameterType="Long"
            resultType="com.project.common.vo.KeyVal">
        select
            MONTH(apply_time) AS k,
            IFNULL(count(order_id),0) as v
        from enforce_order
        where 1=1
        <if test="deptId != null ">
            AND apply_dept_id = #{deptId}
        </if>
        GROUP BY k
    </select>
    <select id="getDeptCount"
            parameterType="String"
            resultType="com.project.common.vo.KeyVal">
        select
        MONTH(check_dept_id) AS k,
        IFNULL(count(order_id),0) as v
        from enforce_order
        where 1=1
        <if test="yearMonth!=null and yearMonth!=''">
            AND apply_time like concat('%', #{yearMonth}, '%')
        </if>
        GROUP BY k
    </select>
</mapper>
project-framework/src/main/java/com/project/framework/aspectj/LogAspect.java
@@ -1,22 +1,5 @@
package com.project.framework.aspectj;
import java.util.Collection;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.project.system.domain.SysOperLog;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.NamedThreadLocal;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson2.JSON;
import com.project.common.annotation.Log;
import com.project.common.core.domain.model.LoginUser;
@@ -29,10 +12,27 @@
import com.project.common.utils.ip.IpUtils;
import com.project.framework.manager.AsyncManager;
import com.project.framework.manager.factory.AsyncFactory;
import com.project.system.domain.SysOperLog;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.NamedThreadLocal;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
import java.util.Map;
/**
 * 操作日志记录处理
 *
 *
 * @author project
 */
@Aspect
@@ -69,7 +69,7 @@
    /**
     * 拦截异常操作
     *
     *
     * @param joinPoint 切点
     * @param e 异常
     */
@@ -84,7 +84,12 @@
        try
        {
            // 获取当前的用户
            LoginUser loginUser = SecurityUtils.getLoginUser();
            LoginUser loginUser;
            try {
                loginUser = SecurityUtils.getLoginUser();
            } catch (Exception be){
                loginUser = null;
            }
            // *========数据库日志=========*//
            SysOperLog operLog = new SysOperLog();
@@ -130,7 +135,7 @@
    /**
     * 获取注解中对方法的描述信息 用于Controller层注解
     *
     *
     * @param log 日志
     * @param operLog 操作日志
     * @throws Exception
@@ -158,7 +163,7 @@
    /**
     * 获取请求的参数,放到log中
     *
     *
     * @param operLog 操作日志
     * @throws Exception 异常
     */
@@ -213,7 +218,7 @@
    /**
     * 判断是否需要过滤的对象。
     *
     *
     * @param o 对象信息。
     * @return 如果是需要过滤的对象,则返回true;否则返回false。
     */
project-framework/src/main/java/com/project/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
@@ -1,6 +1,7 @@
package com.project.framework.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.project.common.core.domain.model.LoginUser;
import com.project.common.utils.SecurityUtils;
import com.project.common.utils.StringUtils;
import org.apache.ibatis.reflection.MetaObject;
@@ -18,45 +19,67 @@
        String createBy = (String) this.getFieldValByName("createBy", metaObject);
        Object createTime = this.getFieldValByName("createTime", metaObject);
        if (StringUtils.isEmpty(createBy)) {
            createBy = SecurityUtils.getLoginUser().getUser().getNickName();
            LoginUser loginUser;
            try {
                loginUser = SecurityUtils.getLoginUser();
            } catch (Exception e){
                loginUser = null;
            }
            if (loginUser == null) {
                createBy = "系统操作";
            } else {
                createBy = loginUser.getUser().getNickName();
            }
            this.setFieldValByName("createBy", createBy, metaObject);
        }
        if (createTime == null) {
            createTime = new Date();
            this.setFieldValByName("createTime", createTime, metaObject);
            if (createTime == null) {
                createTime = new Date();
                this.setFieldValByName("createTime", createTime, metaObject);
            }
            //endregion
            //region 处理修改人信息
            Object updateBy = this.getFieldValByName("updateBy", metaObject);
            Object updateTime = this.getFieldValByName("updateTime", metaObject);
            if (updateBy == null) {
                updateBy = createBy;
                this.setFieldValByName("updateBy", updateBy, metaObject);
            }
            if (updateTime == null) {
                updateTime = createTime;
                this.setFieldValByName("updateTime", updateTime, metaObject);
            }
            //endregion
        }
        //endregion
        //region 处理修改人信息
        Object updateBy = this.getFieldValByName("updateBy", metaObject);
        Object updateTime = this.getFieldValByName("updateTime", metaObject);
        if (updateBy == null) {
            updateBy = createBy;
        @Override
        public void updateFill(MetaObject metaObject) {
            //region 处理修改人信息
            String updateBy;
            LoginUser loginUser;
            try {
                loginUser = SecurityUtils.getLoginUser();
            } catch (Exception e){
                loginUser = null;
            }
            if (loginUser==null){
                updateBy = "系统操作";
            } else {
                updateBy = loginUser.getUser().getNickName();
            }
            this.setFieldValByName("updateBy", updateBy, metaObject);
        }
        if (updateTime == null) {
            updateTime = createTime;
            Date updateTime = new Date();
            this.setFieldValByName("updateTime", updateTime, metaObject);
            //endregion
        }
        //endregion
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        //region 处理修改人信息
        String updateBy = SecurityUtils.getLoginUser().getUser().getNickName();
        this.setFieldValByName("updateBy", updateBy, metaObject);
        Date updateTime = new Date();
        this.setFieldValByName("updateTime", updateTime, metaObject);
        //endregion
    }
        @Override
        public boolean openInsertFill() {
            return true;
        }
    @Override
    public boolean openInsertFill() {
        return true;
    }
    @Override
    public boolean openUpdateFill() {
        return true;
    }
        @Override
        public boolean openUpdateFill() {
            return true;
        }
}
project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
@@ -132,11 +132,11 @@
        int randomNum = ran.nextInt(10000);
        code = String.format("%04d", randomNum);
        log.info("手机号:"+phone+"->验证码:"+code);
        boolean send = sendAl(phone, code);
        if (send){
            redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
            return true;
        }
//        boolean send = sendAl(phone, code);
//        if (send){
//            redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
//            return true;
//        }
        redisCache.setCacheObject(getCacheKey(phone), code, Constants.PHONE_EXPIRATION, TimeUnit.MINUTES);
        return false;
    }
@@ -187,9 +187,22 @@
        if (!verified){
            throw new BaseException("手机号验证码校验失败!");
        }
        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber,bo.getPhone()));
        SysUser user = null;
        if ("01".equals(bo.getUserType())){
            user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
                    .eq(SysUser::getPhonenumber,bo.getPhone())
                    .and(wrapper->wrapper.eq(SysUser::getUserType,"00").or().eq(SysUser::getUserType, "01")));
        } else {
            user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
                    .eq(SysUser::getPhonenumber,bo.getPhone())
                    .eq(SysUser::getUserType,bo.getUserType())
                    );
        }
        if (user==null){
            throw new BaseException("您手机号尚未注册!");
            throw new BaseException("您手机号尚未注册或您选择登录类型有误!");
        }
        if (!"0".equals(user.getStatus())){
            throw new BaseException("您账号已停用或待审批,请联系营商办管理人员!");
        }
        return this.login(user.getUserName(), user.getRecommendUser(), null, null);
    }
project-report/pom.xml
New file
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.project</groupId>
        <artifactId>sqys_admin</artifactId>
        <version>3.8.5</version>
    </parent>
    <artifactId>project-report</artifactId>
    <description>
        report统计报表
    </description>
    <dependencies>
        <!-- 系统 -->
        <dependency>
            <groupId>com.project</groupId>
            <artifactId>project-enforce</artifactId>
        </dependency>
    </dependencies>
</project>
project-report/src/main/java/com/project/report/service/IReportService.java
New file
@@ -0,0 +1,36 @@
package com.project.report.service;
import com.project.common.vo.KeyVal;
import java.util.List;
import java.util.Map;
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 */
public interface IReportService
{
    /**
     * 汇总数据
     * @return  汇总数据
     */
    Map<String, Object> getTotalInfo();
    /**
     * 执法次数月度分布
     * @param deptId    部门id
     * @return  执法次数
     */
    List<KeyVal> getMonthCount(Long deptId);
    /**
     * 执法次数部门分布
     * @param yearMonth    年月
     * @return  执法次数
     */
    List<KeyVal> getDeptCount(String yearMonth);
}
project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java
New file
@@ -0,0 +1,100 @@
package com.project.report.service.impl;
import com.project.common.core.domain.entity.SysDept;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.vo.KeyVal;
import com.project.enforce.domain.EnforceOrder;
import com.project.enforce.service.IEnforceComplaintLogService;
import com.project.enforce.service.IEnforceOrderService;
import com.project.report.service.IReportService;
import com.project.system.domain.SysCompany;
import com.project.system.domain.SysDoc;
import com.project.system.service.ISysCompanyService;
import com.project.system.service.ISysDeptService;
import com.project.system.service.ISysDocService;
import com.project.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 */
@Service
@RequiredArgsConstructor
public class ReportServiceImpl implements IReportService
{
    private final ISysCompanyService companyService;
    private final ISysDeptService deptService;
    private final ISysUserService userService;
    private final ISysDocService docService;
    private final IEnforceOrderService orderService;
    private final IEnforceComplaintLogService complaintLogService;
    private final String[] months = {"1","2","3","4","5","6","7","8","9","10","11","12"};
    @Override//汇总
    public Map<String, Object> getTotalInfo()
    {
        int companyNum = companyService.count(companyService.lq().eq(SysCompany::getCompanyStatus, 0));
        int enforceCompanyNum = orderService.count(orderService.lq().groupBy(EnforceOrder::getCompanyId));
        int enforceDeptNum = deptService.count(deptService.lq().eq(SysDept::getParentId,100));
        int enforceUserNum = userService.count(userService.lq().ne(SysUser::getUserType,"02"));
        int enforceOrderNum = orderService.count();
        int complaintNum = complaintLogService.count();
        int docNum = docService.count(docService.lq().eq(SysDoc::getDocStatus,0));
        Map<String, Object> result = new HashMap<>(7);
        result.put("companyNum", companyNum);
        result.put("enforceCompanyNum", enforceCompanyNum);
        result.put("enforceDeptNum", enforceDeptNum);
        result.put("enforceUserNum", enforceUserNum);
        result.put("enforceOrderNum", enforceOrderNum);
        result.put("complaintNum", complaintNum);
        result.put("docNum", docNum);
        return result;
    }
    @Override//执法单位执法次数月度分布
    public List<KeyVal> getMonthCount(Long deptId)
    {
        List<KeyVal> list = orderService.getMonthCount(deptId);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
        return Arrays.stream(months).map(e -> {
            KeyVal keyVal;
            if (resultMap.get(e) == null) {
                keyVal = new KeyVal(e, 0);
            } else {
                keyVal = new KeyVal(e, resultMap.get(e));
            }
            return keyVal;
        }).collect(Collectors.toList());
    }
    @Override//执法单位执法次数部门分布
    public List<KeyVal> getDeptCount(String yearMonth)
    {
        List<KeyVal> list = orderService.getDeptCount(yearMonth);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
        List<SysDept> depts = deptService.list(deptService.lq().eq(SysDept::getParentId, 100));
        return depts.stream().map(e -> {
            KeyVal keyVal;
            if (resultMap.get(e.getDeptId().toString()) == null) {
                keyVal = new KeyVal(e.getDeptName(), 0);
            } else {
                keyVal = new KeyVal(e.getDeptName(), resultMap.get(e.getDeptId().toString()));
            }
            return keyVal;
        }).collect(Collectors.toList());
    }
}
project-system/src/main/java/com/project/system/domain/bo/editBo/UserPhoneLoginBo.java
@@ -21,4 +21,7 @@
    @ApiModelProperty(value = "验证码")
    private String code;
    @ApiModelProperty(value = "登录用户类型:00营商办,01执法,02企业")
    private String userType;
}
project-system/src/main/java/com/project/system/mapper/SysDeptMapper.java
@@ -1,5 +1,6 @@
package com.project.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.common.core.domain.entity.SysDept;
import org.apache.ibatis.annotations.Param;
@@ -10,7 +11,7 @@
 *
 * @author project
 */
public interface SysDeptMapper
public interface SysDeptMapper extends BaseMapper<SysDept>
{
    /**
     * 查询部门管理数据
project-system/src/main/java/com/project/system/service/ISysDeptService.java
@@ -2,6 +2,7 @@
import com.project.common.core.domain.TreeSelect;
import com.project.common.core.domain.entity.SysDept;
import com.project.common.mybatis.IBaseService;
import java.util.List;
@@ -10,7 +11,7 @@
 *
 * @author project
 */
public interface ISysDeptService
public interface ISysDeptService extends IBaseService<SysDept>
{
    /**
     * 查询部门管理数据
project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java
@@ -62,6 +62,7 @@
        SysCompany add = Convert.convert(SysCompany.class, bo);
        add.setCompanyStatus(1);
        validEntityBeforeSave(add);
        add.setCompanyStatus(0);
        boolean save = this.save(add);
        addCompanyUser(add, 0);
        return save;
@@ -198,6 +199,11 @@
            if (phoneCount>0){
                throw new BaseException(String.format("%1$s,企业联系电话已存在!", entity.getCompanyName()));
            }
            SysUser user = new SysUser();
            user.setPhonenumber(entity.getCompanyPhone());
            if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
                throw new BaseException(String.format("%1$s,企业联系电话已存在,请更换手机号!", entity.getCompanyName()));
            }
        } else {
            int codeCount = this.count(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
            if (codeCount>0){
@@ -242,6 +248,11 @@
            errorList.add(new ImportError(0, "企业名已存在!"));
        }
        int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()));
        SysUser user = new SysUser();
        user.setPhonenumber(entity.getCompanyPhone());
        if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
            errorList.add(new ImportError(3, "企业联系电话系统中已存在,请更换电话!"));
        }
        if (phoneCount>0){
            errorList.add(new ImportError(3, "企业联系电话已存在!"));
        }
@@ -285,7 +296,6 @@
        {
            return;
        }
        user.setCreateBy(SecurityUtils.getUsername());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        userService.insertUser(user);
    }
project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java
@@ -1,5 +1,6 @@
package com.project.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.annotation.DataScope;
import com.project.common.constant.UserConstants;
import com.project.common.core.domain.TreeSelect;
@@ -14,7 +15,7 @@
import com.project.system.mapper.SysDeptMapper;
import com.project.system.mapper.SysRoleMapper;
import com.project.system.service.ISysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -28,13 +29,11 @@
 * @author project
 */
@Service
public class SysDeptServiceImpl implements ISysDeptService
@RequiredArgsConstructor
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements ISysDeptService
{
    @Autowired
    private SysDeptMapper deptMapper;
    @Autowired
    private SysRoleMapper roleMapper;
    private final SysDeptMapper deptMapper;
    private final SysRoleMapper roleMapper;
    /**
     * 查询部门管理数据
project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
@@ -284,6 +284,7 @@
        userPostMapper.deleteUserPostByUserId(userId);
        // 新增用户与岗位管理
        insertUserPost(user);
        return userMapper.updateUser(user);
    }