project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
@@ -4,13 +4,20 @@ 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.domain.entity.SysDept; import com.project.common.core.domain.entity.SysUser; import com.project.common.core.page.TableDataInfo; import com.project.common.enums.BusinessType; import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; import com.project.common.utils.poi.ExcelUtil; 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.domain.vo.OrderNodeVo; import com.project.enforce.service.IEnforceOrderService; import com.project.system.service.ISysDeptService; import com.project.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -32,6 +39,27 @@ public class EnforceOrderController extends BaseController { private final IEnforceOrderService iEnforceOrderService; private final ISysUserService userService; private final ISysDeptService deptService; @ApiOperation("获取同行人") @GetMapping("/peerList") public AjaxResult peerList(String nickName, String deptId) { List<SysUser> list = userService.list(userService.lq() .ne(SysUser::getUserType,"02") .ne(SysUser::getUserName,"admin") .ne(SysUser::getUserId, SecurityUtils.getUserId()) .eq(StringUtils.isNotEmpty(nickName), SysUser::getNickName,nickName) .eq(deptId!=null, SysUser::getDeptId,deptId) ); list.forEach(user->{ SysDept sysDept = deptService.selectDeptById(user.getDeptId()); sysDept.setDeptName(deptService.getDeptAllName(sysDept.getDeptId())); user.setDept(sysDept); }); return AjaxResult.success(list); } @ApiOperation("执法单列表") @GetMapping("/list") @@ -61,6 +89,14 @@ return getDataTable(list); } @ApiOperation("执法单节点") @GetMapping("/orderNodeList") public AjaxResult orderNodeList(@RequestParam("orderId") Long orderId) { List<OrderNodeVo> list = iEnforceOrderService.orderNodeList(orderId); return AjaxResult.success(list); } @ApiOperation("导出执法单列表") //@PreAuthorize("@ss.hasPermi('enforce:order:export')") @@ -83,6 +119,7 @@ } @ApiOperation("新增执法单") //@PreAuthorize("@ss.hasPermi('enforce:order:add')") @Log(title = "执法单", businessType = BusinessType.INSERT) project-admin/src/main/java/com/project/admin/controller/tool/TestController.java
New file @@ -0,0 +1,37 @@ package com.project.admin.controller.tool; import com.project.common.core.domain.AjaxResult; import com.project.enforce.service.IEnforceOrderService; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 功能描述: * * @author ZQN * @version 1.0 * @date 2024年06月21日 */ @Slf4j @RestController @RequestMapping("/tool/test") @RequiredArgsConstructor public class TestController { private final IEnforceOrderService orderService; @ApiOperation("获取审批人") @PostMapping(value = "/getCheckPhones") public AjaxResult getCheckPhones(Integer checkLevel, Long applyDeptId) { return AjaxResult.success(orderService.getCheckPhones(checkLevel, applyDeptId)); } } project-admin/src/main/resources/application.yml
@@ -147,3 +147,4 @@ - /verify/** - /report/** - /enforce/order/showList - /enforce/order/** project-common/src/main/java/com/project/common/core/domain/BaseQuery.java
@@ -8,6 +8,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** @@ -32,7 +33,19 @@ private String endTime; public Map<String, Object> getParams() { if (params == null) { params = new HashMap<>(); } return params; } public void setParams(Map<String, Object> params) { this.params = params; } public void setBeginTime(String beginTime) { this.beginTime = StringUtils.isEmpty(beginTime) ? null : beginTime + " 00:00:00"; project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java
@@ -1,8 +1,8 @@ package com.project.enforce.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.project.common.core.domain.BaseDomain; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -21,7 +21,7 @@ @Accessors(chain = true) @TableName("enforce_order") @ApiModel("执法单实体对象") public class EnforceOrder extends BaseDomain { public class EnforceOrder { private static final long serialVersionUID=1L; @@ -210,4 +210,10 @@ @ApiModelProperty("投诉内容") private String complaintReason; /** * 逻辑删除状态 */ @TableLogic(value = "0",delval = "1") private Integer delFlag; } project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java
@@ -106,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("审批人单位") project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java
@@ -2,12 +2,14 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.project.common.annotation.Excel; 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; /** @@ -81,7 +83,7 @@ @Excel(name = "计划执法时间" , width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("计划执法时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date planTime; @ApiModelProperty("扫码入场时间") @@ -174,4 +176,7 @@ @ApiModelProperty("投诉内容") private String complaintReason; @ApiModelProperty("同行人数组") private List<EnforcePeer> peers; } project-enforce/src/main/java/com/project/enforce/domain/vo/OrderNodeVo.java
New file @@ -0,0 +1,37 @@ package com.project.enforce.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; /** * 功能描述: * * @author ZQN * @version 1.0 */ @Data @NoArgsConstructor @AllArgsConstructor public class OrderNodeVo { @ApiModelProperty("节点名") private String nodeName; @ApiModelProperty("节点用户") private String nodeUser; @ApiModelProperty("节点时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date nodeTime; @ApiModelProperty("节点说明") private String nodeReason; } project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
@@ -5,6 +5,7 @@ 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.domain.vo.OrderNodeVo; import java.util.Collection; import java.util.List; @@ -70,4 +71,10 @@ List<String> getCheckPhones(Integer checkLevel, Long applyDeptId); /** * 执法节点列表 * @param orderId 执法单id * @return 节点 */ List<OrderNodeVo> orderNodeList(Long orderId); } project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
@@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import com.project.common.core.domain.entity.SysUser; import com.project.common.exception.base.BaseException; import com.project.common.utils.DateUtils; import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; import com.project.enforce.domain.EnforceCheckLog; @@ -73,11 +74,13 @@ //审批拒绝,给申请人发送短信,如果通知企业也给企业发送短信 smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus()); } else { List<String> phones = orderService.getCheckPhones(order.getCheckLevel(), order.getApplyDeptId()); List<String> phones = orderService.getCheckPhones(order.getCheckLevel()+1, order.getApplyDeptId()); if (StringUtils.isNotEmpty(phones)){ order.setCheckStatus(1); //给下一级审批人发送短信 smsService.sendApplyMsg(phones, order.getApplyUser()); String checkPhones = StringUtils.join(phones, ","); orderService.update(orderService.lu().set(EnforceOrder::getCheckIds, checkPhones).eq(EnforceOrder::getOrderId, order.getOrderId())); } else { order.setCheckStatus(2); order.setOrderStatus(2); @@ -111,6 +114,7 @@ checkLog.setCheckUser(loginUser.getUserName()); checkLog.setCheckPhone(loginUser.getPhonenumber()); checkLog.setCheckStatus(bo.getCheckStatus()); checkLog.setCheckTime(DateUtils.getNowDate()); checkLog.setCheckReason(bo.getCheckReason()); boolean save = checkLogService.save(checkLog); if (!save) { project-enforce/src/main/java/com/project/enforce/service/impl/EnforceCompanyLogServiceImpl.java
@@ -81,7 +81,7 @@ //保存前校验 private void validEntityBeforeSave(EnforceCompanyLog entity) { if (StringUtils.isEmpty(entity.getComeDeptName())){ if (StringUtils.isEmpty(entity.getComeDeptName()) && entity.getComeDeptId()!=null){ entity.setComeDeptName(deptService.getDeptAllName(entity.getComeDeptId())); } } project-enforce/src/main/java/com/project/enforce/service/impl/EnforceComplaintLogServiceImpl.java
@@ -82,7 +82,7 @@ //保存前校验 private void validEntityBeforeSave(EnforceComplaintLog entity) { if (StringUtils.isEmpty(entity.getExecuteDeptName())){ if (StringUtils.isEmpty(entity.getExecuteDeptName()) && entity.getExecuteDeptName()!=null){ entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId())); } } project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -8,14 +8,18 @@ import com.project.common.core.domain.entity.SysUser; import com.project.common.enums.OrderPre; import com.project.common.sms.YPSmsApi; import com.project.common.utils.DateUtils; import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; import com.project.enforce.domain.EnforceCheckLog; 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.domain.vo.OrderNodeVo; import com.project.enforce.mapper.EnforceOrderMapper; import com.project.enforce.service.IEnforceCheckLogService; import com.project.enforce.service.IEnforceOrderService; import com.project.enforce.service.IEnforcePeerService; import com.project.system.service.ISysDeptService; @@ -27,6 +31,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -43,13 +48,16 @@ private final ISysDeptService deptService; private final ISysOrderNoService orderNoService; private final IEnforcePeerService peerService; private final IEnforceCheckLogService checkLogService; @Override//列表查询 @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_user_id") @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_id") public List<EnforceOrderVo> queryList(EnforceOrderQueryBo bo) { QueryWrapper<EnforceOrder> qw = getQw(bo); qw.apply(bo.getParams().get("dataScope") != null, bo.getParams().get("dataScope").toString());//数据权限控制 if (StringUtils.isNotEmpty(bo.getParams())) { qw.apply(bo.getParams().get("dataScope") != null, bo.getParams().get("dataScope").toString());//数据权限控制 } List<EnforceOrder> list = this.list(qw); return Convert.toList(EnforceOrderVo.class , list); } @@ -59,7 +67,12 @@ { SysUser loginUser = SecurityUtils.getLoginUser().getUser(); bo.setCheckIds(loginUser.getPhonenumber()); bo.setApplyDeptIds(deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId())); List<Long> deptIds = deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()); if (StringUtils.isNotEmpty(deptIds)){ bo.setApplyDeptIds(deptIds); } else { bo.setApplyDeptIds(null); } return this.baseMapper.selectCheckList(bo); } @@ -74,7 +87,10 @@ public EnforceOrderVo queryById(Long orderId) { EnforceOrder db = this.baseMapper.selectById(orderId); return Convert.convert(EnforceOrderVo.class , db); EnforceOrderVo vo = Convert.convert(EnforceOrderVo.class, db); List<EnforcePeer> peers = peerService.list(peerService.lq().eq(EnforcePeer::getOrderId, orderId).eq(EnforcePeer::getPeerType,2)); vo.setPeers(peers); return vo; } @@ -91,7 +107,7 @@ add.setCheckIds(checkPhones); } this.save(add); bo.getPeers().add(new EnforcePeer() bo.getPeers().add(0,new EnforcePeer() .setPeerType(1) .setPeerId(add.getApplyId()) .setPeerUser(add.getApplyUser()) @@ -137,6 +153,37 @@ return getCheckPhones(checkLevel, applyDeptId, 0); } @Override public List<OrderNodeVo> orderNodeList(Long orderId) { List<OrderNodeVo> vos = new ArrayList<>(); EnforceOrder order = this.getById(orderId); List<EnforceCheckLog> checkLogs = checkLogService.list(checkLogService.lq() .eq(EnforceCheckLog::getOrderId, orderId).orderByAsc(EnforceCheckLog::getCheckTime) ); if (order.getApplyTime()!=null){ vos.add(new OrderNodeVo("提交申请",order.getApplyUser(),order.getApplyTime(), null)); } if (StringUtils.isNotEmpty(checkLogs)){ for (EnforceCheckLog checkLog : checkLogs) { if (checkLog.getCheckStatus()>0){ vos.add(new OrderNodeVo("审批通过",checkLog.getCheckUser(),checkLog.getCheckTime(), null)); } else { vos.add(new OrderNodeVo("审批拒绝",checkLog.getCheckUser(),checkLog.getCheckTime(), checkLog.getCheckReason())); } } } else { if (order.getInTime()!=null){ vos.add(new OrderNodeVo("扫码入企",order.getExecuteUser(),order.getInTime(), null)); } if (order.getExecuteTime()!=null){ vos.add(new OrderNodeVo("结果上报",order.getExecuteUser(),order.getExecuteTime(), null)); } } return vos; } //------------------------------------------------------------------------------------- @@ -150,9 +197,7 @@ 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) ; }); phones.forEach(phone-> YPSmsApi.sendSms(phone, applyMsg)); } //保存前校验 @@ -162,14 +207,15 @@ String orderNo = orderNoService.getOrderNo(OrderPre.ZFD.getIndex()); entity.setOrderNo(orderNo); entity.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(entity.getApplyDeptId())); entity.setApplyTime(DateUtils.getNowDate()); } if (StringUtils.isEmpty(entity.getApplyDeptName())){ if (StringUtils.isEmpty(entity.getApplyDeptName()) && entity.getApplyDeptId()!=null){ entity.setApplyDeptName(deptService.getDeptAllName(entity.getApplyDeptId())); } if (StringUtils.isEmpty(entity.getExecuteDeptName())){ if (StringUtils.isEmpty(entity.getExecuteDeptName()) && entity.getExecuteDeptId()!=null){ entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId())); } if (StringUtils.isEmpty(entity.getCheckDeptName())){ if (StringUtils.isEmpty(entity.getCheckDeptName()) && entity.getCheckDeptId()!=null){ entity.setCheckDeptName(deptService.getDeptAllName(entity.getCheckDeptId())); } @@ -245,7 +291,7 @@ return null; } checkLevel = 0; deptId = deptService.getById(deptId).getParentId(); deptId = deptService.selectDeptById(deptId).getParentId(); current++; getCheckPhones(checkLevel, deptId, current); } project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
@@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.project.enforce.mapper.EnforceOrderMapper"> <resultMap type="EnforceOrder" id="EnforceOrderResult"> <resultMap type="EnforceOrderVo" id="EnforceOrderResult"> <result property="orderId" column="order_id" /> <result property="orderNo" column="order_no" /> <result property="companyId" column="company_id" /> @@ -48,18 +48,11 @@ <result property="isShow" column="is_show" /> <result property="isEva" column="is_eva" /> <result property="totalScore" column="total_score" /> <result property="delFlag" column="del_flag" /> </resultMap> <sql id="selectEnforceOrderVo"> select order_id, order_no, company_id, company_name, company_code, company_user, company_phone, company_address, region_code,region_name,enforce_reason,user_num, apply_id,apply_user,apply_phone,apply_dept_id,apply_dept_name,apply_time, warn_status,warn_reason,order_status, check_dept_id,check_dept_name,check_status,check_reason,check_level, execute_id,execute_user,execute_phone,execute_dept_id,execute_dept_name,execute_time, region_status,region_reason,region_imgs,region_videos,is_notice_company,is_show,is_eva,total_score from sys_job_log select * from enforce_order </sql> <select id="selectCheckList" @@ -79,7 +72,7 @@ <if test="checkIds != null and checkIds != '' "> AND check_ids like concat('%', #{checkIds}, '%') </if> <if test="applyDeptIds != null "> <if test="applyDeptIds != null and applyDeptIds !='' "> AND apply_dept_id in <foreach collection="applyDeptIds" item="applyDeptId" open="(" separator="," close=")"> #{applyDeptId} project-framework/src/main/java/com/project/framework/aspectj/DataScopeAspect.java
@@ -2,6 +2,7 @@ import com.project.common.annotation.DataScope; import com.project.common.core.domain.BaseEntity; import com.project.common.core.domain.BaseQuery; import com.project.common.core.domain.entity.SysRole; import com.project.common.core.domain.entity.SysUser; import com.project.common.core.domain.model.LoginUser; @@ -124,19 +125,13 @@ } else if (DATA_SCOPE_DEPT.equals(dataScope)) { sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); sqlString.append(StringUtils.format(" OR {} = {} ", deptAlias, user.getDeptId())); } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { sqlString.append(StringUtils.format( " OR {} IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId())); } else if (DATA_SCOPE_ORG.equals(dataScope)) { sqlString.append(StringUtils.format( " OR {} IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getRecommendUser(), user.getRecommendUser())); } else if (DATA_SCOPE_SELF.equals(dataScope)) { @@ -159,7 +154,10 @@ if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { BaseEntity baseEntity = (BaseEntity) params; baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); baseEntity.getParams().put(DATA_SCOPE, " (" + sqlString.substring(4) + ")"); } else if (StringUtils.isNotNull(params) && params instanceof BaseQuery) { BaseQuery baseQuery = (BaseQuery) params; baseQuery.getParams().put(DATA_SCOPE, " (" + sqlString.substring(4) + ")"); } } } project-system/src/main/java/com/project/system/service/ISysDeptService.java
@@ -146,4 +146,5 @@ */ String getDeptAllName(Long deptId); } project-system/src/main/java/com/project/system/service/impl/SysDeptServiceImpl.java
@@ -387,9 +387,13 @@ * @return names列表 */ public List<String> getAncestorsNames(long deptId, List<String> names) { SysDept dept = this.getById(deptId); SysDept dept = deptMapper.selectDeptById(deptId); if (dept == null) { return new ArrayList<>(); return names; } if (deptId == 100) { names.add(dept.getDeptName()); return names; } if (dept.getParentId() != null && dept.getParentId() == 100) { names.add(dept.getDeptName()); project-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -43,7 +43,9 @@ AND status = #{status} </if> <!-- 数据范围过滤 --> ${params.dataScope} <if test="params != null and params.dataScope != null"> AND ${params.dataScope} </if> order by d.parent_id, d.order_num </select> project-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -52,7 +52,9 @@ and date_format(r.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') </if> <!-- 数据范围过滤 --> ${params.dataScope} <if test="params != null and params.dataScope != null"> AND ${params.dataScope} </if> order by r.role_sort </select> project-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -92,7 +92,9 @@ AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) )) </if> <!-- 数据范围过滤 --> ${params.dataScope} <if test="params != null and params.dataScope != null"> AND ${params.dataScope} </if> </select> <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult"> @@ -109,7 +111,9 @@ AND u.phonenumber like concat('%', #{phonenumber}, '%') </if> <!-- 数据范围过滤 --> ${params.dataScope} <if test="params != null and params.dataScope != null"> AND ${params.dataScope} </if> </select> <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult"> @@ -127,7 +131,9 @@ AND u.phonenumber like concat('%', #{phonenumber}, '%') </if> <!-- 数据范围过滤 --> ${params.dataScope} <if test="params != null and params.dataScope != null"> AND ${params.dataScope} </if> </select> <select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult"> @@ -241,9 +247,9 @@ join sys_user_role ur on u.user_id = ur.user_id join sys_role r on r.role_id=ur.role_id where u.user_type = '01' u.user_type != '02' and r.role_key = #{roleKey} and (u.dept_id = #{deptId} or u.dept_id in (SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors))) and u.dept_id = #{deptId} </select> </mapper>