ZQN
2024-06-20 3467fa64f4be6efc9b742913419e7c3a501c541b
云片短信对接,审批流程优化
13个文件已添加
30个文件已修改
1434 ■■■■ 已修改文件
project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/enforce/EnforcePeerController.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/report/ReportController.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-common/src/main/java/com/project/common/enums/OrderPre.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-common/src/main/java/com/project/common/sms/YPSmsApi.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/EnforcePeer.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforcePeerBo.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforcePeerQueryBo.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/domain/vo/EnforcePeerVo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerServiceImpl.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/IEnforcePeerService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-enforce/src/main/resources/mapper/enforce/EnforcePeerMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/java/com/project/report/domain/bo/query/ReportQueryBo.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/java/com/project/report/mapper/ReportMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/java/com/project/report/service/IReportService.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java 132 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-report/src/main/resources/mapper/report/ReportMapper.xml 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/mapper/SysUserMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/ISysDeptService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/ISysDictDataService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/ISysUserService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-system/src/main/resources/mapper/system/SysUserMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
@@ -33,6 +33,14 @@
    private final IEnforceOrderService iEnforceOrderService;
    @ApiOperation("执法单列表")
    @GetMapping("/list")
    public TableDataInfo list(EnforceOrderQueryBo bo)
    {
        startPage();
        List<EnforceOrderVo> list = iEnforceOrderService.queryList(bo);
        return getDataTable(list);
    }
    @ApiOperation("信息公式列表")
    @GetMapping("/showList")
@@ -40,15 +48,6 @@
    {
        startPage();
        List<EnforceOrderVo> list = iEnforceOrderService.showList();
        return getDataTable(list);
    }
    @ApiOperation("执法单列表")
    @GetMapping("/list")
    public TableDataInfo list(EnforceOrderQueryBo bo)
    {
        startPage();
        List<EnforceOrderVo> list = iEnforceOrderService.queryList(bo);
        return getDataTable(list);
    }
project-admin/src/main/java/com/project/admin/controller/enforce/EnforcePeerController.java
New file
@@ -0,0 +1,100 @@
package com.project.admin.controller.enforce;
import com.project.common.annotation.Log;
import com.project.common.annotation.RepeatSubmit;
import com.project.common.core.controller.BaseController;
import com.project.common.core.domain.AjaxResult;
import com.project.common.core.page.TableDataInfo;
import com.project.common.enums.BusinessType;
import com.project.common.utils.poi.ExcelUtil;
import com.project.enforce.domain.bo.editBo.EnforcePeerBo;
import com.project.enforce.domain.bo.queryBo.EnforcePeerQueryBo;
import com.project.enforce.domain.vo.EnforcePeerVo;
import com.project.enforce.service.IEnforcePeerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
 * 执法单同行人Controller
 *
 * @author manton
 */
@Api(value = "执法队员控制器", tags = {"执法单队员管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/enforce/peer")
public class EnforcePeerController extends BaseController {
    private final IEnforcePeerService iEnforcePeerService;
    @ApiOperation("查询执法单队员列表")
    @GetMapping("/list")
    public TableDataInfo list(EnforcePeerQueryBo bo)
    {
        startPage();
        List<EnforcePeerVo> list = iEnforcePeerService.queryList(bo);
        return getDataTable(list);
    }
    @ApiOperation("导出执法单队员列表")
    //@PreAuthorize("@ss.hasPermi('enforce:peer:export')")
    @Log(title = "执法单同行人", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    @RepeatSubmit
    public AjaxResult export(EnforcePeerQueryBo bo)
    {
        List<EnforcePeerVo> list = iEnforcePeerService.queryList(bo);
        ExcelUtil<EnforcePeerVo> util = new ExcelUtil<EnforcePeerVo>(EnforcePeerVo.class);
        return util.exportExcel(list, "执法单同行人");
    }
    @ApiOperation("获取执法单队员详细信息")
    @GetMapping("/{id}")
    public AjaxResult getInfo(@PathVariable("id" ) Long id)
    {
        return AjaxResult.success(iEnforcePeerService.queryById(id));
    }
    @ApiOperation("新增执法单队员")
    //@PreAuthorize("@ss.hasPermi('enforce:peer:add')")
    @Log(title = "执法单队员", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @RepeatSubmit
    public AjaxResult add(@RequestBody EnforcePeerBo bo)
    {
        return toAjax(iEnforcePeerService.insertByBo(bo) ? 1 : 0);
    }
    @ApiOperation("修改执法单队员")
    //@PreAuthorize("@ss.hasPermi('enforce:peer:edit')")
    @Log(title = "执法单队员", businessType = BusinessType.UPDATE)
    @PostMapping("/upd")
    @RepeatSubmit
    public AjaxResult upd(@RequestBody EnforcePeerBo bo)
    {
        return toAjax(iEnforcePeerService.updateByBo(bo) ? 1 : 0);
    }
    @ApiOperation("删除执法单队员")
    //@PreAuthorize("@ss.hasPermi('enforce:peer:remove')")
    @Log(title = "执法单队员" , businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    @RepeatSubmit
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(iEnforcePeerService.deleteByIds(Arrays.asList(ids)) ? 1 : 0);
    }
}
project-admin/src/main/java/com/project/admin/controller/report/ReportController.java
@@ -2,6 +2,7 @@
import com.project.common.core.controller.BaseController;
import com.project.common.core.domain.AjaxResult;
import com.project.report.domain.bo.query.ReportQueryBo;
import com.project.report.service.IReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -32,17 +33,45 @@
    @ApiOperation("执法次数月度分布")
    @GetMapping("/getMonthCount")
    public AjaxResult getMonthCount(Long deptId)
    public AjaxResult getMonthCount(ReportQueryBo bo)
    {
        return AjaxResult.success(reportService.getMonthCount(deptId));
        return AjaxResult.success(reportService.getMonthCount(bo));
    }
    @ApiOperation("执法次数部门分布")
    @GetMapping("/getDeptCount")
    public AjaxResult getDeptCount(String yearMonth)
    public AjaxResult getDeptCount(ReportQueryBo bo)
    {
        return AjaxResult.success(reportService.getDeptCount(yearMonth));
        return AjaxResult.success(reportService.getDeptCount(bo));
    }
    @ApiOperation("企业被执法次数分布")
    @GetMapping("/getCompanyCount")
    public AjaxResult getCompanyCount(ReportQueryBo bo)
    {
        return AjaxResult.success(reportService.getCompanyCount(bo));
    }
    @ApiOperation("执法类型占比")
    @GetMapping("/getEnforceTypeCount")
    public AjaxResult getEnforceTypeCount(ReportQueryBo bo)
    {
        return AjaxResult.success(reportService.getEnforceTypeCount(bo));
    }
    @ApiOperation("投诉状态占比")
    @GetMapping("/getComplaintStatusCount")
    public AjaxResult getComplaintStatusCount(ReportQueryBo bo)
    {
        return AjaxResult.success(reportService.getComplaintStatusCount(bo));
    }
    @ApiOperation("投诉类型占比")
    @GetMapping("/getComplaintTypeCount")
    public AjaxResult getComplaintTypeCount(ReportQueryBo bo)
    {
        return AjaxResult.success(reportService.getComplaintTypeCount(bo));
    }
}
project-admin/src/main/java/com/project/admin/controller/system/SysProfileController.java
@@ -1,6 +1,8 @@
package com.project.admin.controller.system;
import com.project.common.config.ProjectConfig;
import com.project.common.core.domain.entity.SysDept;
import com.project.system.service.ISysDeptService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -35,6 +37,7 @@
public class SysProfileController extends BaseController
{
    private final ISysUserService userService;
    private final ISysDeptService deptService;
    private final TokenService tokenService;
@@ -45,6 +48,8 @@
    public AjaxResult profile()
    {
        SysUser user = userService.getById(getUserId());
        SysDept sysDept = deptService.selectDeptById(user.getDeptId());
        user.setDept(sysDept);
        AjaxResult ajax = AjaxResult.success(user);
        ajax.put("roleGroup", userService.selectUserRoleGroup(user.getUserName()));
        ajax.put("postGroup", userService.selectUserPostGroup(user.getUserName()));
project-common/src/main/java/com/project/common/enums/OrderPre.java
@@ -10,11 +10,7 @@
 */
public enum OrderPre {
    CZDD("充值单", 1),
    XSDD("销售单", 2),
    ID("ID", 3),
    TKDD("退款单", 4),
    TXDD("提现单", 5)
    ZFD("执法单", 1)
    ;
project-common/src/main/java/com/project/common/sms/YPSmsApi.java
@@ -25,9 +25,14 @@
public class YPSmsApi {
    /**
     * 请求地址
     * 智能匹配模板发送地址
     */
    private static final String YP_SMS_URI = "http://yunpian.com/v1/sms/send.json";
    private static final String YP_SMS_URI = "https://sms.yunpian.com/v2/sms/single_send.json";
    /**
     * 模板发送地址
     */
    private static final String YP_SMS_TMP_URI = "https://sms.yunpian.com/v2/sms/tpl_single_send.json";
    /**
     * KEY
@@ -40,25 +45,31 @@
    private static final String SIGN = "【金明源】";
    /**
     * 执法单申请模板
     */
    public static final String APPLY_TMP = "{} 提交了新的申请单,请您及时审批!";
    /**
     * 执法单审核后模板
     */
    public static final String CHECK_TMP = "您提交的申请单已被审批人 {}, 请您及时查看!";
    /**
     * 企业通知模板
     */
    public static final String COMPANY_TMP = "{} 单位预计将于 {} 到贵单位进行检查,请提前知晓!";
    /**
     * 验证码模板
     */
    public static final String VERIFY_CODE_TEMPLATE = "您的验证码是{}";
    public static final String CODE_TMP = "您的验证码是{}";
    /**
     * 审批通知模板
     */
    public static final String CHECK_NOTICE_TEMPLATE = SIGN + "{}提交了执法申请单,请您及时审批!";
    /**
     * 审批通过模板
     */
    public static final String CHECK_PASS_TEMPLATE = SIGN + "您提交的执法申请单已审批通过,请您及时查看!";
    /**
     * 发送短信
     * 简单发送短信
     * @param mobile  接受的手机号
     * @param msg    短信内容
     */
project-enforce/src/main/java/com/project/enforce/domain/EnforceComplaintLog.java
@@ -9,6 +9,9 @@
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * 投诉记录对象 enforce_complaint_log
 *
@@ -73,6 +76,15 @@
    @ApiModelProperty("投诉类型")
    private String complaintType;
    @ApiModelProperty("投诉时间")
    private Date complaintTime;
    @ApiModelProperty("响应时间")
    private Date inTime;
    @ApiModelProperty("处理结果时间")
    private Date resultTime;
    @ApiModelProperty("投诉内容")
    private String complaintReason;
project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java
@@ -100,6 +100,9 @@
    @ApiModelProperty("计划执法时间")
    private Date planTime;
    @ApiModelProperty("扫码入场时间")
    private Date inTime;
    @ApiModelProperty("执法队员人数")
    private Integer userNum;
@@ -113,7 +116,7 @@
    private String warnReason;
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价")
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2已审批待执行,3已执行待上报,4已上报")
    private Integer orderStatus;
@@ -136,6 +139,9 @@
    @ApiModelProperty("当前审批层级:")
    private Integer checkLevel;
    @ApiModelProperty("当前审批人ids")
    private String checkIds;
    @ApiModelProperty("执行人id")
    private Long executeId;
project-enforce/src/main/java/com/project/enforce/domain/EnforcePeer.java
New file
@@ -0,0 +1,68 @@
package com.project.enforce.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
 * 执法单同行人对象 enforce_peer
 *
 * @author manton
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("enforce_peer")
@ApiModel("执法单同行人实体对象")
public class EnforcePeer implements Serializable {
    private static final long serialVersionUID=1L;
    @TableId(value = "id")
    @ApiModelProperty("ID")
    private Long id;
    @ApiModelProperty("执法单id")
    private Long orderId;
    @ApiModelProperty("同行人类型:1申请者,2同行人")
    private Integer peerType;
    @ApiModelProperty("同行人id")
    private Long peerId;
    @ApiModelProperty("同行人")
    private String peerUser;
    @ApiModelProperty("同行人电话")
    private String peerPhone;
    @ApiModelProperty("同行人单位")
    private Long peerDeptId;
    @ApiModelProperty("同行人单位")
    private String peerDeptName;
    /**
     * 逻辑删除状态
     */
    @TableLogic(value = "0",delval = "1")
    private Integer delFlag;
}
project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceComplaintLogBo.java
@@ -67,6 +67,15 @@
    @ApiModelProperty("投诉类型")
    private String complaintType;
    @ApiModelProperty("投诉时间")
    private Date complaintTime;
    @ApiModelProperty("响应时间")
    private Date inTime;
    @ApiModelProperty("处理结果时间")
    private Date resultTime;
    /** 投诉内容 */
    @ApiModelProperty("投诉内容")
    private String complaintReason;
project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java
@@ -1,12 +1,14 @@
package com.project.enforce.domain.bo.editBo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.project.enforce.domain.EnforcePeer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * 执法单编辑对象 enforce_order
@@ -95,9 +97,15 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planTime;
    @ApiModelProperty("扫码入场时间")
    private Date inTime;
    /** 执法队员人数 */
    @ApiModelProperty("执法队员人数")
    private Integer userNum;
    @ApiModelProperty("同行人数组")
    private List<EnforcePeer>  peers;
    /** 预警状态:0正常,1预警 */
    @ApiModelProperty("预警状态:0正常,1预警")
@@ -108,7 +116,7 @@
    private String warnReason;
    /** 订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价 */
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价")
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2已审批待执行,3已执行待上报,4已上报")
    private Integer orderStatus;
    /** 审批人单位 */
@@ -131,6 +139,9 @@
    @ApiModelProperty("当前审批层级:")
    private Integer checkLevel;
    @ApiModelProperty("当前审批人ids")
    private String checkIds;
    /** 执行人id */
    @ApiModelProperty("执行人id")
    private Long executeId;
project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforcePeerBo.java
New file
@@ -0,0 +1,50 @@
package com.project.enforce.domain.bo.editBo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 执法单同行人编辑对象 enforce_peer
 *
 * @author manton
 */
@Data
@ApiModel("执法单同行人操作对象")
public class EnforcePeerBo {
    /** ID */
    @ApiModelProperty("ID")
    private Long id;
    /** 执法单id */
    @ApiModelProperty("执法单id")
    private Long orderId;
    /** 同行人类型:1申请者,2同行人 */
    @ApiModelProperty("同行人类型:1申请者,2同行人")
    private Integer peerType;
    /** 同行人id */
    @ApiModelProperty("同行人id")
    private Long peerId;
    /** 同行人 */
    @ApiModelProperty("同行人")
    private String peerUser;
    /** 同行人电话 */
    @ApiModelProperty("同行人电话")
    private String peerPhone;
    /** 同行人单位 */
    @ApiModelProperty("同行人单位")
    private Long peerDeptId;
    /** 同行人单位 */
    @ApiModelProperty("同行人单位")
    private String peerDeptName;
}
project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceComplaintLogQueryBo.java
@@ -6,6 +6,8 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
 * 投诉记录分页查询对象 enforce_complaint_log
@@ -64,6 +66,17 @@
    /** 投诉类型 */
    @ApiModelProperty("投诉类型")
    private String complaintType;
    @ApiModelProperty("投诉时间")
    private Date complaintTime;
    @ApiModelProperty("响应时间")
    private Date inTime;
    @ApiModelProperty("处理结果时间")
    private Date resultTime;
    /** 投诉内容 */
    @ApiModelProperty("投诉内容")
    private String complaintReason;
project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java
@@ -93,6 +93,9 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planTime;
    @ApiModelProperty("扫码入场时间")
    private Date inTime;
    /** 执法队员人数 */
    @ApiModelProperty("执法队员人数")
    private Integer userNum;
@@ -103,7 +106,7 @@
    @ApiModelProperty("预警原因")
    private String warnReason;
    /** 订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价 */
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价")
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2已审批待执行,3已执行待上报,4已上报")
    private Integer orderStatus;
    /** 审批人单位 */
    @ApiModelProperty("审批人单位")
@@ -120,6 +123,10 @@
    /** 当前审批层级: */
    @ApiModelProperty("当前审批层级:")
    private Integer checkLevel;
    @ApiModelProperty("当前审批人ids")
    private String checkIds;
    /** 执行人id */
    @ApiModelProperty("执行人id")
    private Long executeId;
project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforcePeerQueryBo.java
New file
@@ -0,0 +1,56 @@
package com.project.enforce.domain.bo.queryBo;
import com.project.common.core.domain.BaseQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 执法单同行人分页查询对象 enforce_peer
 *
 * @author manton
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel("执法单同行人分页查询对象")
public class EnforcePeerQueryBo extends BaseQuery{
    /** 分页大小 */
    @ApiModelProperty("分页大小")
    private Integer pageSize;
    /** 当前页数 */
    @ApiModelProperty("当前页数")
    private Integer pageNum;
    /** 排序列 */
    @ApiModelProperty("排序列")
    private String orderByColumn;
    /** 排序的方向desc或者asc */
    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
    private String isAsc;
    /** 执法单id */
    @ApiModelProperty("执法单id")
    private Long orderId;
    /** 同行人类型:1申请者,2同行人 */
    @ApiModelProperty("同行人类型:1申请者,2同行人")
    private Integer peerType;
    /** 同行人id */
    @ApiModelProperty("同行人id")
    private Long peerId;
    /** 同行人 */
    @ApiModelProperty("同行人")
    private String peerUser;
    /** 同行人电话 */
    @ApiModelProperty("同行人电话")
    private String peerPhone;
    /** 同行人单位 */
    @ApiModelProperty("同行人单位")
    private Long peerDeptId;
    /** 同行人单位 */
    @ApiModelProperty("同行人单位")
    private String peerDeptName;
}
project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceComplaintLogVo.java
@@ -1,9 +1,12 @@
package com.project.enforce.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.project.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
@@ -53,6 +56,19 @@
    @Excel(name = "投诉类型")
    @ApiModelProperty("投诉类型")
    private String complaintType;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("投诉时间")
    private Date complaintTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("响应时间")
    private Date inTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("处理结果时间")
    private Date resultTime;
    @Excel(name = "投诉内容")
    @ApiModelProperty("投诉内容")
    private String complaintReason;
project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java
@@ -84,6 +84,9 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planTime;
    @ApiModelProperty("扫码入场时间")
    private Date inTime;
    @Excel(name = "执法队员人数")
    @ApiModelProperty("执法队员人数")
    private Integer userNum;
@@ -93,8 +96,8 @@
    @Excel(name = "预警原因")
    @ApiModelProperty("预警原因")
    private String warnReason;
    @Excel(name = "订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价")
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2待执行,3已执行,4已评价")
    @Excel(name = "订单状态:-1撤回,0待提交,1已提交,2已审批待执行,3已执行待上报,4已上报")
    @ApiModelProperty("订单状态:-1撤回,0待提交,1已提交,2已审批待执行,3已执行待上报,4已上报")
    private Integer orderStatus;
    @Excel(name = "审批人单位")
    @ApiModelProperty("审批人单位")
@@ -111,6 +114,10 @@
    @Excel(name = "当前审批层级:")
    @ApiModelProperty("当前审批层级:")
    private Integer checkLevel;
    @ApiModelProperty("当前审批人ids")
    private String checkIds;
    @Excel(name = "执行人id")
    @ApiModelProperty("执行人id")
    private Long executeId;
project-enforce/src/main/java/com/project/enforce/domain/vo/EnforcePeerVo.java
New file
@@ -0,0 +1,45 @@
package com.project.enforce.domain.vo;
import com.project.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 执法单同行人视图对象 mall_package
 *
 * @author manton
 */
@Data
@ApiModel("执法单同行人视图对象")
public class EnforcePeerVo {
    private static final long serialVersionUID = 1L;
    /** ID */
    @ApiModelProperty("ID")
    private Long id;
    @Excel(name = "执法单id")
    @ApiModelProperty("执法单id")
    private Long orderId;
    @Excel(name = "同行人类型:1申请者,2同行人")
    @ApiModelProperty("同行人类型:1申请者,2同行人")
    private Integer peerType;
    @Excel(name = "同行人id")
    @ApiModelProperty("同行人id")
    private Long peerId;
    @Excel(name = "同行人")
    @ApiModelProperty("同行人")
    private String peerUser;
    @Excel(name = "同行人电话")
    @ApiModelProperty("同行人电话")
    private String peerPhone;
    @Excel(name = "同行人单位")
    @ApiModelProperty("同行人单位")
    private Long peerDeptId;
    @Excel(name = "同行人单位")
    @ApiModelProperty("同行人单位")
    private String peerDeptName;
}
project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java
@@ -1,7 +1,6 @@
package com.project.enforce.mapper;
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;
@@ -18,7 +17,5 @@
    List<EnforceOrderVo> selectCheckList(EnforceOrderQueryBo bo);
    List<KeyVal> getMonthCount(Long deptId);
    List<KeyVal> getDeptCount(String yearMonth);
}
project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerMapper.java
New file
@@ -0,0 +1,13 @@
package com.project.enforce.mapper;
import com.project.enforce.domain.EnforcePeer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * 执法单同行人Mapper接口
 *
 * @author manton
 */
public interface EnforcePeerMapper extends BaseMapper<EnforcePeer> {
}
project-enforce/src/main/java/com/project/enforce/mapper/EnforcePeerServiceImpl.java
New file
@@ -0,0 +1,106 @@
package com.project.enforce.mapper;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.utils.StringUtils;
import com.project.enforce.domain.EnforcePeer;
import com.project.enforce.domain.bo.editBo.EnforcePeerBo;
import com.project.enforce.domain.bo.queryBo.EnforcePeerQueryBo;
import com.project.enforce.domain.vo.EnforcePeerVo;
import com.project.enforce.service.IEnforcePeerService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
/**
 * 执法单同行人Service业务层处理
 *
 * @author manton
 */
@Service
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class EnforcePeerServiceImpl extends ServiceImpl<EnforcePeerMapper, EnforcePeer> implements IEnforcePeerService {
    @Override//列表查询
    public List<EnforcePeerVo> queryList(EnforcePeerQueryBo bo)
    {
        QueryWrapper<EnforcePeer> qw = getQw(bo);
        List<EnforcePeer> list = this.list(qw);
        return Convert.toList(EnforcePeerVo.class , list);
    }
    @Override//id查询
    public EnforcePeerVo queryById(Long id)
    {
        EnforcePeer db = this.baseMapper.selectById(id);
        return Convert.convert(EnforcePeerVo.class , db);
    }
    @Override//添加
    @Transactional
    public Boolean insertByBo(EnforcePeerBo bo)
    {
        EnforcePeer add = Convert.convert(EnforcePeer.class, bo);
        validEntityBeforeSave(add);
        return this.save(add);
    }
    @Override//修改
    @Transactional
    public Boolean updateByBo(EnforcePeerBo bo)
    {
        EnforcePeer update = Convert.convert(EnforcePeer.class, bo);
        validEntityBeforeSave(update);
        return this.updateById(update);
    }
    @Override//删除
    @Transactional
    public Boolean deleteByIds(Collection<Long> ids)
    {
        //做一些业务上的校验,判断是否需要校验
        return this.removeByIds(ids);
    }
//-------------------------------------------------------------------------------------
    //保存前校验
    private void validEntityBeforeSave(EnforcePeer entity)
    {
        //做一些数据校验,如唯一约束
    }
    //获取查询参数
    private QueryWrapper<EnforcePeer> getQw(EnforcePeerQueryBo bo)
    {
        QueryWrapper<EnforcePeer> qw = Wrappers.query();
            qw.eq(bo.getOrderId()!=null, "order_id", bo.getOrderId());
            qw.eq(bo.getPeerType() != null, "peer_type", bo.getPeerType());
            qw.eq(bo.getPeerId() != null, "peer_id", bo.getPeerId());
            qw.eq(StringUtils.isNotEmpty(bo.getPeerUser()), "peer_user", bo.getPeerUser());
            qw.eq(StringUtils.isNotEmpty(bo.getPeerPhone()), "peer_phone", bo.getPeerPhone());
            qw.eq(bo.getPeerDeptId() != null, "peer_dept_id", bo.getPeerDeptId());
            qw.like(StringUtils.isNotEmpty(bo.getPeerDeptName()), "peer_dept_name", bo.getPeerDeptName());
        if (StringUtils.isNotEmpty(bo.getIsAsc()) && StringUtils.isNotEmpty(bo.getOrderByColumn())){
            if ("acs".equals(bo.getIsAsc())) {
                qw.orderByAsc(bo.getOrderByColumn());
            } else if ("desc".equals(bo.getIsAsc())) {
                qw.orderByDesc(bo.getOrderByColumn());
            }
        }
        return qw;
    }
}
project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
@@ -1,7 +1,6 @@
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.bo.editBo.EnforceOrderBo;
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
@@ -63,17 +62,12 @@
    /**
     * 执法次数月度分布
     * @param deptId    机构id
     * @return    月度分布
     * 获取下一级审批人电话
     * @param checkLevel 当前审批级别
     * @param applyDeptId 申请部门id
     * @return    审批人ids
     */
    List<KeyVal> getMonthCount(Long deptId);
    List<String> getCheckPhones(Integer checkLevel, Long applyDeptId);
    /**
     * 执法次数部门分布
     * @param yearMonth    年月
     * @return    部门分布
     */
    List<KeyVal> getDeptCount(String yearMonth);
}
project-enforce/src/main/java/com/project/enforce/service/IEnforcePeerService.java
New file
@@ -0,0 +1,53 @@
package com.project.enforce.service;
import com.project.enforce.domain.EnforcePeer;
import com.project.enforce.domain.vo.EnforcePeerVo;
import com.project.enforce.domain.bo.editBo.EnforcePeerBo;
import com.project.enforce.domain.bo.queryBo.EnforcePeerQueryBo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.project.common.mybatis.IBaseService;
import cn.hutool.core.convert.Convert;
import java.util.Collection;
import java.util.List;
/**
 * 执法单同行人Service接口
 *
 * @author manton
 */
public interface IEnforcePeerService extends IBaseService<EnforcePeer> {
    /**
     * 查询列表
     */
    List<EnforcePeerVo> queryList(EnforcePeerQueryBo bo);
    /**
     * 查询单个
     * @return  EnforcePeerVo
     */
    EnforcePeerVo queryById(Long id);
    /**
     * 根据新增业务对象插入执法单同行人
     * @param bo 执法单同行人新增业务对象
     * @return  true成功 false失败
     */
    Boolean insertByBo(EnforcePeerBo bo);
    /**
     * 根据编辑业务对象修改执法单同行人
     * @param bo 执法单同行人编辑业务对象
     * @return  true成功 false失败
     */
    Boolean updateByBo(EnforcePeerBo bo);
    /**
     * 校验并删除数据
     * @param ids 主键集合
     * @return  true成功 false失败
     */
    Boolean deleteByIds(Collection<Long> ids);
}
project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
@@ -14,7 +14,6 @@
import com.project.system.domain.bo.editBo.CheckBo;
import com.project.system.domain.bo.editBo.SysCompanyBo;
import com.project.system.service.ISysCompanyService;
import com.project.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -37,7 +36,7 @@
    private final ISysCompanyService companyService;
    private final IEnforceOrderService orderService;
    private final IEnforceCheckLogService checkLogService;
    private final ISysUserService userService;
    private final YPSmsService smsService;
    @Override
    @Transactional
@@ -71,16 +70,24 @@
                addCheckLog(order, bo);
                if (bo.getCheckStatus()==-1){
                    order.setCheckStatus(-1);
                    //审批拒绝,给申请人发送短信,如果通知企业也给企业发送短信
                    smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
                } else {
                    String roleKey = "check_enforce_" + (order.getCheckLevel() + 1);
                    List<Long> ids = userService.getNumByRoleKey(roleKey, order.getCheckDeptId());
                    if (StringUtils.isNotEmpty(ids)){
                    List<String> phones = orderService.getCheckPhones(order.getCheckLevel(), order.getApplyDeptId());
                    if (StringUtils.isNotEmpty(phones)){
                        order.setCheckStatus(1);
                        //给下一级审批人发送短信
                        smsService.sendApplyMsg(phones, order.getApplyUser());
                    } else {
                        order.setCheckStatus(2);
                        order.setOrderStatus(2);
                        //审批通过,给申请人发送短信,如果通知企业也给企业发送短信
                        smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
                        if (order.getIsNoticeCompany()==1){
                            smsService.sendCompanyMsg(order.getCompanyPhone(), order.getApplyDeptName(), order.getPlanTime());
                        }
                    }
                    //审批登记加1
                    //审批等级加1
                    order.setCheckLevel(order.getCheckLevel()+1);
                }
                order.setCheckReason(bo.getCheckReason());
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -5,28 +5,30 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.annotation.DataScope;
import com.project.common.constant.CheckLevelCodeConstants;
import com.project.common.core.domain.entity.SysRole;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.exception.base.BaseException;
import com.project.common.enums.OrderPre;
import com.project.common.sms.YPSmsApi;
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.EnforcePeer;
import com.project.enforce.domain.bo.editBo.EnforceOrderBo;
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
import com.project.enforce.domain.vo.EnforceOrderVo;
import com.project.enforce.mapper.EnforceOrderMapper;
import com.project.enforce.service.IEnforceOrderService;
import com.project.enforce.service.IEnforcePeerService;
import com.project.system.service.ISysDeptService;
import com.project.system.service.ISysOrderNoService;
import com.project.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 执法单Service业务层处理
@@ -37,9 +39,10 @@
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class EnforceOrderServiceImpl extends ServiceImpl<EnforceOrderMapper, EnforceOrder> implements IEnforceOrderService {
    private final ISysUserService userService;
    private final ISysDeptService deptService;
    private final EnforceOrderMapper orderMapper;
    private final ISysOrderNoService orderNoService;
    private final IEnforcePeerService peerService;
    @Override//列表查询
    @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_user_id")
@@ -55,22 +58,8 @@
    public List<EnforceOrderVo> queryCheckList(EnforceOrderQueryBo bo)
    {
        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
        if (bo.getIsCheckQuery()!=null && bo.getIsCheckQuery()==1){
            List<String> roleKeys = loginUser.getRoles().stream().map(SysRole::getRoleKey).collect(Collectors.toList());
            if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_ONE) && roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_TWO)){
                bo.setCheckLevel(null);
            } else if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_ONE)){
                bo.setCheckLevel(0);
            } else if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_TWO)) {
                bo.setCheckLevel(1);
            } else {
                throw new BaseException("您没有审批权限,请重试!");
            }
        }
        bo.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(loginUser.getDeptId()));
        bo.setCheckIds(loginUser.getPhonenumber());
        bo.setApplyDeptIds(deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()));
        return this.baseMapper.selectCheckList(bo);
    }
@@ -94,8 +83,33 @@
    public Boolean insertByBo(EnforceOrderBo bo)
    {
        EnforceOrder add = Convert.convert(EnforceOrder.class, bo);
        add.setCheckLevel(0);
        validEntityBeforeSave(add);
        return this.save(add);
        List<String> phones = getCheckPhones(add.getCheckLevel(), add.getApplyDeptId());
        if (StringUtils.isNotEmpty(phones)){
            String checkPhones = StringUtils.join(phones, ",");
            add.setCheckIds(checkPhones);
        }
        this.save(add);
        bo.getPeers().add(new EnforcePeer()
                .setPeerType(1)
                .setPeerId(add.getApplyId())
                .setPeerUser(add.getApplyUser())
                .setPeerPhone(add.getApplyPhone())
                .setPeerDeptId(add.getApplyDeptId())
                .setPeerDeptName(add.getApplyDeptName())
        );
        //处理执法人员信息
        for (EnforcePeer peer : bo.getPeers())
        {
            peer.setOrderId(add.getOrderId());
            peer.setPeerDeptName(deptService.getDeptAllName(peer.getPeerDeptId()));
        }
        boolean savePeers = peerService.saveOrUpdateBatch(bo.getPeers());
        if (savePeers && StringUtils.isNotEmpty(phones)) {
            sendApplyMsg(phones, add.getApplyUser());
        }
        return savePeers;
    }
    @Override//修改
@@ -117,26 +131,48 @@
        return this.removeByIds(ids);
    }
    @Override//月度分布
    public List<KeyVal> getMonthCount(Long deptId) {
        return orderMapper.getMonthCount(deptId);
    }
    @Override//部门分布
    public List<KeyVal> getDeptCount(String yearMonth)
    @Override
    public List<String> getCheckPhones(Integer checkLevel, Long applyDeptId)
    {
        return orderMapper.getDeptCount(yearMonth);
        return getCheckPhones(checkLevel, applyDeptId, 0);
    }
//-------------------------------------------------------------------------------------
    /**
     * 发送审批短信
     * @param phones    手机号
     * @param applyUser 申请人
     */
    @Async
    public void sendApplyMsg(List<String> phones, String applyUser)
    {
        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.APPLY_TMP, applyUser));
        phones.forEach(phone->{
            YPSmsApi.sendSms(phone, applyMsg) ;
        });
    }
    //保存前校验
    private void validEntityBeforeSave(EnforceOrder entity)
    {
        if (entity.getOrderId()==null){
            String orderNo = orderNoService.getOrderNo(OrderPre.ZFD.getIndex());
            entity.setOrderNo(orderNo);
            entity.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(entity.getApplyDeptId()));
        }
        if (StringUtils.isEmpty(entity.getApplyDeptName())){
            entity.setApplyDeptName(deptService.getDeptAllName(entity.getApplyDeptId()));
        }
        if (StringUtils.isEmpty(entity.getExecuteDeptName())){
            entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId()));
        }
        if (StringUtils.isEmpty(entity.getCheckDeptName())){
            entity.setCheckDeptName(deptService.getDeptAllName(entity.getCheckDeptId()));
        }
    }
    //获取查询参数
@@ -162,6 +198,7 @@
        qw.like(StringUtils.isNotEmpty(bo.getApplyDeptName()), "apply_dept_name", bo.getApplyDeptName());
        qw.eq(bo.getApplyTime() != null, "apply_time", bo.getApplyTime());
        qw.eq(bo.getPlanTime() != null, "plan_time", bo.getPlanTime());
        qw.eq(bo.getInTime() != null, "in_time", bo.getInTime());
        qw.eq(bo.getUserNum() != null, "user_num", bo.getUserNum());
        qw.eq(bo.getWarnStatus() != null, "warn_status", bo.getWarnStatus());
        qw.eq(StringUtils.isNotEmpty(bo.getWarnReason()), "warn_reason", bo.getWarnReason());
@@ -194,4 +231,32 @@
        }
        return qw;
    }
    /**
     * 获取审批人id
     * @param checkLevel  审批级别:默认0
     * @param deptId  申请部门id
     */
    private List<String> getCheckPhones(Integer checkLevel, Long deptId, int current)
    {
        if (checkLevel==3){
            if (current==1){
                return null;
            }
            checkLevel = 0;
            deptId = deptService.getById(deptId).getParentId();
            current++;
            getCheckPhones(checkLevel, deptId, current);
        }
        checkLevel++;
        String checkKey = "check_enforce_";
        List<String> phones = userService.getPhonesByRoleKey(checkKey + checkLevel, deptId);
        if (StringUtils.isNotEmpty(phones)){
            return phones;
        }
        return getCheckPhones(checkLevel, deptId, current);
    }
}
project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java
New file
@@ -0,0 +1,65 @@
package com.project.enforce.service.impl;
import com.project.common.sms.YPSmsApi;
import com.project.common.utils.DateUtils;
import com.project.common.utils.StringUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 */
@Service
public class YPSmsService
{
    /**
     * 申请发送审批短信
     * @param phones    手机号
     * @param applyUser 申请人
     */
    @Async
    public void sendApplyMsg(List<String> phones, String applyUser)
    {
        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.APPLY_TMP, applyUser));
        phones.forEach(phone->{
            YPSmsApi.sendSms(phone, applyMsg) ;
        });
    }
    /**
     * 审批后发送结果短信
     * @param phone    手机号
     * @param checkStatus    状态:-1拒绝,2通过
     */
    @Async
    public void sendCheckMsg(String phone, Integer checkStatus)
    {
        String result = "拒绝";
        if (checkStatus>0){
            result = "审批通过";
        }
        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.CHECK_TMP, result));
        YPSmsApi.sendSms(phone, applyMsg) ;
    }
    /**
     * 通知企业开启发送企业短信
     * @param phone    手机号
     * @param applyDeptName   执法部门
     * @param planTime    时间
     */
    @Async
    public void sendCompanyMsg(String phone, String applyDeptName, Date planTime)
    {
        String date = DateUtils.getFormatDatedd(planTime);
        String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.COMPANY_TMP, applyDeptName, date));
        YPSmsApi.sendSms(phone, applyMsg) ;
    }
}
project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
@@ -24,6 +24,7 @@
        <result property="applyDeptName"    column="apply_dept_name"    />
        <result property="applyTime"    column="apply_time"    />
        <result property="planTime"    column="plan_time"    />
        <result property="inTime"    column="in_time"    />
        <result property="userNum"    column="user_num"    />
        <result property="warnStatus"    column="warn_status"    />
        <result property="warnReason"    column="warn_reason"    />
@@ -72,19 +73,12 @@
            <if test="companyName != null and companyName != ''">
                AND company_name like concat('%', #{companyName}, '%')
            </if>
            <if test="orderStatus != null and orderStatus != ''">
                AND order_status = #{orderStatus}
            </if>
            <if test="checkDeptId != null ">
                AND check_dept_id = #{checkDeptId}
            <if test="checkIds != null and checkIds != '' ">
                AND check_ids like concat('%', #{checkIds}, '%')
            </if>
            <if test="checkLevel != null ">
                AND check_level = #{checkLevel}
            </if>
            <if test="applyDeptIds != null ">
                AND apply_dept_id in
                <foreach collection="applyDeptIds" item="applyDeptId" open="(" separator="," close=")">
@@ -94,32 +88,5 @@
        </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-enforce/src/main/resources/mapper/enforce/EnforcePeerMapper.xml
New file
@@ -0,0 +1,21 @@
<?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="com.project.enforce.mapper.EnforcePeerMapper">
    <resultMap type="EnforcePeer" id="EnforcePeerResult">
        <result property="id"    column="id"    />
        <result property="orderId"    column="order_id"    />
        <result property="peerType"    column="peer_type"    />
        <result property="peerId"    column="peer_id"    />
        <result property="peerUser"    column="peer_user"    />
        <result property="peerPhone"    column="peer_phone"    />
        <result property="peerDeptId"    column="peer_dept_id"    />
        <result property="peerDeptName"    column="peer_dept_name"    />
        <result property="delFlag"    column="del_flag"    />
    </resultMap>
</mapper>
project-framework/src/main/java/com/project/framework/web/service/SysLoginService.java
@@ -142,7 +142,7 @@
    }
    private boolean sendYp(String phone, String code ){
        String result = YPSmsApi.sendSms(phone, StringUtils.format(YPSmsApi.VERIFY_CODE_TEMPLATE, code, Constants.PHONE_EXPIRATION));
        String result = YPSmsApi.sendSms(phone, StringUtils.format(YPSmsApi.CODE_TMP, code, Constants.PHONE_EXPIRATION));
        if (result.contains("\"code\":0,\"msg\":\"OK\"")){
            log.info("发送成功 ->验证码:"+code);
            return true;
project-report/src/main/java/com/project/report/domain/bo/query/ReportQueryBo.java
New file
@@ -0,0 +1,29 @@
package com.project.report.domain.bo.query;
import com.project.common.core.domain.BaseQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ReportQueryBo extends BaseQuery
{
    @ApiModelProperty("部门id")
    private Long deptId;
    @ApiModelProperty("投诉处理状态:0未处理,1已处理")
    private Integer doComplaint;
}
project-report/src/main/java/com/project/report/mapper/ReportMapper.java
New file
@@ -0,0 +1,30 @@
package com.project.report.mapper;
import com.project.common.vo.KeyVal;
import com.project.report.domain.bo.query.ReportQueryBo;
import java.util.List;
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 */
public interface ReportMapper
{
    List<KeyVal> getMonthCount(ReportQueryBo bo);
    List<KeyVal> getDeptCount(ReportQueryBo bo);
    List<KeyVal> getCompanyCount(ReportQueryBo bo);
    List<KeyVal> getEnforceTypeCount(ReportQueryBo bo);
    List<KeyVal> getComplaintStatusCount(ReportQueryBo bo);
    List<KeyVal> getComplaintTypeCount(ReportQueryBo bo);
}
project-report/src/main/java/com/project/report/service/IReportService.java
@@ -1,6 +1,7 @@
package com.project.report.service;
import com.project.common.vo.KeyVal;
import com.project.report.domain.bo.query.ReportQueryBo;
import java.util.List;
import java.util.Map;
@@ -22,15 +23,45 @@
    /**
     * 执法次数月度分布
     * @param deptId    部门id
     * @param bo    部门id
     * @return  执法次数
     */
    List<KeyVal> getMonthCount(Long deptId);
    List<KeyVal> getMonthCount(ReportQueryBo bo);
    /**
     * 执法次数部门分布
     * @param yearMonth    年月
     * @param bo    年月
     * @return  执法次数
     */
    List<KeyVal> getDeptCount(String yearMonth);
    List<KeyVal> getDeptCount(ReportQueryBo bo);
    /**
     * 企业被执法次数分布
     * @param bo    年月
     * @return  企业被执法次数
     */
    List<KeyVal> getCompanyCount(ReportQueryBo bo);
    /**
     * 执法类型占比
     * @param bo    年月
     * @return  执法类型
     */
    List<KeyVal>  getEnforceTypeCount(ReportQueryBo bo);
    /**
     * 投诉状态占比
     * @param bo    年月
     * @return  投诉状态
     */
    List<KeyVal>  getComplaintStatusCount(ReportQueryBo bo);
    /**
     * 执法类型占比
     * @param bo    年月
     * @return  执法类型占比
     */
    List<KeyVal>  getComplaintTypeCount(ReportQueryBo bo);
}
project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java
@@ -1,22 +1,26 @@
package com.project.report.service.impl;
import com.project.common.core.domain.entity.SysDept;
import com.project.common.core.domain.entity.SysDictData;
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.domain.bo.query.ReportQueryBo;
import com.project.report.mapper.ReportMapper;
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 com.project.system.service.*;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -34,41 +38,124 @@
    private final ISysDeptService deptService;
    private final ISysUserService userService;
    private final ISysDocService docService;
    private final ISysDictDataService dictDataService;
    private final IEnforceOrderService orderService;
    private final IEnforceComplaintLogService complaintLogService;
    private final ReportMapper reportMapper;
    private final String[] months = {"1","2","3","4","5","6","7","8","9","10","11","12"};
    private final String[] complaintStatus = {"-1","0","1","2"};
    @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 enforceOrderCheckedNum = orderService.count(orderService.lq().eq(EnforceOrder::getOrderStatus,2));
        int enforceOrderCompleteNum = orderService.count(orderService.lq().eq(EnforceOrder::getOrderStatus,4));
        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("enforceOrderCheckedNum", enforceOrderCheckedNum);
        result.put("enforceOrderCompleteNum", enforceOrderCompleteNum);
        result.put("complaintNum", complaintNum);
        result.put("docNum", docNum);
        return result;
    }
    @Override//执法单位执法次数月度分布
    public List<KeyVal> getMonthCount(Long deptId)
    public List<KeyVal> getMonthCount(ReportQueryBo bo)
    {
        List<KeyVal> list = orderService.getMonthCount(deptId);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
        List<KeyVal> list = reportMapper.getMonthCount(bo);
        return getKeyVal(list, months);
    }
        return Arrays.stream(months).map(e -> {
    @Override//执法单位执法次数部门分布
    public List<KeyVal> getDeptCount(ReportQueryBo bo)
    {
        List<KeyVal> list = reportMapper.getDeptCount(bo);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
        List<SysDept> deptList = deptService.list(deptService.lq().eq(SysDept::getParentId, 100));
        return deptList.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());
    }
    @Override//企业被执法次数分布
    public List<KeyVal> getCompanyCount(ReportQueryBo bo)
    {
        List<KeyVal> list = reportMapper.getCompanyCount(bo);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK, KeyVal::getV));
        List<SysCompany> companies = companyService.list(companyService.lq().eq(SysCompany::getCompanyStatus, 0));
        return companies.stream().map(e -> {
            KeyVal keyVal;
            if (resultMap.get(e.getCompanyId().toString()) == null) {
                keyVal = new KeyVal(e.getCompanyName(), 0);
            } else {
                keyVal = new KeyVal(e.getCompanyName(), resultMap.get(e.getCompanyId().toString()));
            }
            return keyVal;
        }).collect(Collectors.toList());
    }
    @Override//执法类型
    public List<KeyVal> getEnforceTypeCount(ReportQueryBo bo)
    {
        List<KeyVal> list = reportMapper.getEnforceTypeCount(bo);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK, KeyVal::getV));
        List<SysDictData> dictDataList = dictDataService.list(dictDataService.lq().eq(SysDictData::getDictType,"enforce_type"));
        return getKeyVal(resultMap, dictDataList);
    }
    @Override//投诉处理状态
    public List<KeyVal> getComplaintStatusCount(ReportQueryBo bo)
    {
        List<KeyVal> list = reportMapper.getComplaintStatusCount(bo);
        return getKeyVal(list, complaintStatus);
    }
    @Override//投诉类型
    public List<KeyVal> getComplaintTypeCount(ReportQueryBo bo)
    {
        List<KeyVal> list = reportMapper.getComplaintTypeCount(bo);
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK, KeyVal::getV));
        List<SysDictData> dictDataList = dictDataService.list(dictDataService.lq().eq(SysDictData::getDictType,"complaint_type"));
        return getKeyVal(resultMap, dictDataList);
    }
//-----------------------------------------------------------------------------
    /**
     * 通过数组获取返回数据
     * @param list  结果
     * @param array   数组
     * @return  结果
     */
    @NotNull
    private List<KeyVal> getKeyVal(List<KeyVal> list, String[] array)
    {
        Map<String, Object> resultMap = list.stream().collect(Collectors.toMap(KeyVal::getK,KeyVal::getV));
        return Arrays.stream(array).map(e -> {
            KeyVal keyVal;
            if (resultMap.get(e) == null) {
                keyVal = new KeyVal(e, 0);
@@ -79,20 +166,21 @@
        }).collect(Collectors.toList());
    }
    @Override//执法单位执法次数部门分布
    public List<KeyVal> getDeptCount(String yearMonth)
    /**
     * 通过字典获取返回数据
     * @param resultMap  结果
     * @param dictDataList   字典
     * @return  结果
     */
    @NotNull
    private List<KeyVal> getKeyVal(Map<String, Object> resultMap, List<SysDictData> dictDataList)
    {
        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 -> {
        return dictDataList.stream().map(e -> {
            KeyVal keyVal;
            if (resultMap.get(e.getDeptId().toString()) == null) {
                keyVal = new KeyVal(e.getDeptName(), 0);
            if (resultMap.get(e.getDictValue()) == null) {
                keyVal = new KeyVal(e.getDictLabel(), 0);
            } else {
                keyVal = new KeyVal(e.getDeptName(), resultMap.get(e.getDeptId().toString()));
                keyVal = new KeyVal(e.getDictLabel(), resultMap.get(e.getDictValue()));
            }
            return keyVal;
        }).collect(Collectors.toList());
project-report/src/main/resources/mapper/report/ReportMapper.xml
New file
@@ -0,0 +1,126 @@
<?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="com.project.report.mapper.ReportMapper">
    <!--    执法次数月度分布-->
    <select id="getMonthCount"
            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
            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>
        <if test="beginTime!=null and beginTime!=''">
            AND apply_time &gt;= #{beginTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND apply_time &lt;= #{endTime}
        </if>
        GROUP BY k
    </select>
    <!--    执法次数部门分布-->
    <select id="getDeptCount"
            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
            resultType="com.project.common.vo.KeyVal">
        select
        check_dept_id AS k,
        IFNULL(count(order_id),0) as v
        from enforce_order
        where 1=1
        <if test="beginTime!=null and beginTime!=''">
            AND apply_time &gt;= #{beginTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND apply_time &lt;= #{endTime}
        </if>
        GROUP BY k
    </select>
    <!--    被执法次数企业分布-->
    <select id="getCompanyCount"
            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
            resultType="com.project.common.vo.KeyVal">
        select
        company_id AS k,
        IFNULL(count(order_id),0) as v
        from enforce_order
        where 1=1
        <if test="beginTime!=null and beginTime!=''">
            AND apply_time &gt;= #{beginTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND apply_time &lt;= #{endTime}
        </if>
        GROUP BY k order by v desc
    </select>
    <!--    执法类型分布-->
    <select id="getEnforceTypeCount"
            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
            resultType="com.project.common.vo.KeyVal">
        select
        enforce_type AS k,
        IFNULL(count(order_id),0) as v
        from enforce_order
        where 1=1
        <if test="beginTime!=null and beginTime!=''">
            AND apply_time &gt;= #{beginTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND apply_time &lt;= #{endTime}
        </if>
        GROUP BY k
    </select>
    <!--    投诉处理状态-->
    <select id="getComplaintStatusCount"
            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
            resultType="com.project.common.vo.KeyVal">
        select
        complaint_status AS k,
        IFNULL(count(id),0) as v
        from enforce_complaint_log
        where 1=1
        <if test="beginTime!=null and beginTime!=''">
            AND apply_time &gt;= #{beginTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND apply_time &lt;= #{endTime}
        </if>
        GROUP BY k
    </select>
    <!--    执法类型分布-->
    <select id="getComplaintTypeCount"
            parameterType="com.project.report.domain.bo.query.ReportQueryBo"
            resultType="com.project.common.vo.KeyVal">
        select
        complaint_type AS k,
        IFNULL(count(id),0) as v
        from enforce_complaint_log
        where 1=1
        <if test="beginTime!=null and beginTime!=''">
            AND apply_time &gt;= #{beginTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND apply_time &lt;= #{endTime}
        </if>
        <if test="doComplaint!=null ">
            <if test="doComplaint == 0 ">
                AND complaint_status = 0
            </if>
            <if test="doComplaint == 1 ">
                AND complaint_status != 0
            </if>
        </if>
        GROUP BY k
    </select>
</mapper>
project-system/src/main/java/com/project/system/mapper/SysDictDataMapper.java
@@ -1,5 +1,6 @@
package com.project.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.common.core.domain.entity.SysDictData;
import org.apache.ibatis.annotations.Param;
@@ -10,7 +11,7 @@
 *
 * @author project
 */
public interface SysDictDataMapper
public interface SysDictDataMapper extends BaseMapper<SysDictData>
{
    /**
     * 根据条件分页查询字典数据
project-system/src/main/java/com/project/system/mapper/SysUserMapper.java
@@ -1,10 +1,10 @@
package com.project.system.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import com.project.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 用户表 数据层
@@ -136,10 +136,10 @@
    /**
     * 查询角色标识对应人数
     * 获取角色标识人手机号
     * @param roleKey   标识
     * @param deptId   部门id
     * @return  人数
     * @return  phoneList
     */
    List<Long> getNumByRoleKey(@Param("roleKey") String roleKey,@Param("deptId") Long deptId);
    List<String> getPhonesByRoleKey(@Param("roleKey") String roleKey,@Param("deptId") Long deptId);
}
project-system/src/main/java/com/project/system/service/ISysDeptService.java
@@ -138,4 +138,12 @@
     * @return  管辖机构ids
     */
    List<Long> getApplyDeptIdsByLoginUserId(Long userId);
    /**
     * 获取单位全名
     * @param deptId    部门id
     * @return  全名
     */
    String getDeptAllName(Long deptId);
}
project-system/src/main/java/com/project/system/service/ISysDictDataService.java
@@ -1,18 +1,20 @@
package com.project.system.service;
import java.util.List;
import com.project.common.core.domain.entity.SysDictData;
import com.project.common.mybatis.IBaseService;
import java.util.List;
/**
 * 字典 业务层
 *
 *
 * @author project
 */
public interface ISysDictDataService
public interface ISysDictDataService extends IBaseService<SysDictData>
{
    /**
     * 根据条件分页查询字典数据
     *
     *
     * @param dictData 字典数据信息
     * @return 字典数据集合信息
     */
@@ -20,7 +22,7 @@
    /**
     * 根据字典类型和字典键值查询字典数据信息
     *
     *
     * @param dictType 字典类型
     * @param dictValue 字典键值
     * @return 字典标签
@@ -38,7 +40,7 @@
    /**
     * 根据字典数据ID查询信息
     *
     *
     * @param dictCode 字典数据ID
     * @return 字典数据
     */
@@ -46,14 +48,14 @@
    /**
     * 批量删除字典数据信息
     *
     *
     * @param dictCodes 需要删除的字典数据ID
     */
    public void deleteDictDataByIds(Long[] dictCodes);
    /**
     * 新增保存字典数据信息
     *
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
@@ -61,7 +63,7 @@
    /**
     * 修改保存字典数据信息
     *
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
project-system/src/main/java/com/project/system/service/ISysUserService.java
@@ -1,8 +1,9 @@
package com.project.system.service;
import java.util.List;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.mybatis.IBaseService;
import java.util.List;
/**
 * 用户 业务层
@@ -214,9 +215,9 @@
    public int deleteUserByDeptId(Long deptId);
    /**
     * 获取角色标识人数
     * 获取角色标识人手机号
     * @param roleKey   角色标识
     * @return 人数
     * @return idList
     */
    List<Long> getNumByRoleKey(String roleKey, Long deptId);
    List<String> getPhonesByRoleKey(String roleKey, Long deptId);
}
project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java
@@ -1,5 +1,7 @@
package com.project.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.annotation.DataScope;
import com.project.common.constant.UserConstants;
@@ -19,6 +21,7 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
@@ -320,6 +323,18 @@
        return deptMapper.getApplyDeptIdsByLoginUserId(userId);
    }
    @Override
    public String getDeptAllName(Long deptId)
    {
        List<String> names = new ArrayList<>();
        names = getAncestorsNames(deptId, names);
        if (CollectionUtil.isEmpty(names)){
            return "";
        }
        Collections.reverse(names);
        return StrUtil.join("-", names);
    }
    /**
     * 递归列表
     */
@@ -362,4 +377,26 @@
    {
        return getChildList(list, t).size() > 0;
    }
    /**
     * 获取祖籍names列表
     *
     * @param deptId 当前部门id
     * @param names  祖籍id列表
     * @return  names列表
     */
    public List<String> getAncestorsNames(long deptId, List<String> names) {
        SysDept dept = this.getById(deptId);
        if (dept == null) {
            return new ArrayList<>();
        }
        if (dept.getParentId() != null && dept.getParentId() == 100) {
            names.add(dept.getDeptName());
            return names;
        } else {
            names.add(dept.getDeptName());
            return getAncestorsNames(dept.getParentId(), names);
        }
    }
}
project-system/src/main/java/com/project/system/service/impl/SysDictDataServiceImpl.java
@@ -1,8 +1,11 @@
package com.project.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.core.domain.entity.SysDept;
import com.project.common.core.domain.entity.SysDictData;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.DictUtils;
import com.project.system.mapper.SysDeptMapper;
import com.project.system.mapper.SysDictDataMapper;
import com.project.system.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +19,7 @@
 * @author project
 */
@Service
public class SysDictDataServiceImpl implements ISysDictDataService
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService
{
    @Autowired
    private SysDictDataMapper dictDataMapper;
project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
@@ -547,8 +547,8 @@
    }
    @Override
    public List<Long> getNumByRoleKey(String roleKey, Long deptId)
    public List<String> getPhonesByRoleKey(String roleKey, Long deptId)
    {
        return userMapper.getNumByRoleKey(roleKey, deptId);
        return userMapper.getPhonesByRoleKey(roleKey, deptId);
    }
}
project-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -235,8 +235,8 @@
     </delete>
    <select id="getNumByRoleKey"  resultType="Long">
        select u.user_id
    <select id="getPhonesByRoleKey"  resultType="String">
        select u.phonenumber
            from sys_user u
            join sys_user_role ur on u.user_id = ur.user_id
            join sys_role r on r.role_id=ur.role_id