project-admin/src/main/java/com/project/admin/controller/enforce/EnforceComplaintLogController.java
@@ -36,7 +36,7 @@ private final IEnforceComplaintLogService iEnforceComplaintLogService; @ApiOperation("查询投诉记录列表") @ApiOperation("——记录列表") @GetMapping("/list") public TableDataInfo list(EnforceComplaintLogQueryBo bo) { @@ -46,6 +46,26 @@ } @ApiOperation("我的投诉——记录列表") @GetMapping("/complaintList") public TableDataInfo complaintList(EnforceComplaintLogQueryBo bo) { startPage(); List<EnforceComplaintLogVo> list = iEnforceComplaintLogService.complaintList(bo); return getDataTable(list); } @ApiOperation("诉求建议——记录列表") @GetMapping("/pleaseList") public TableDataInfo pleaseList(EnforceComplaintLogQueryBo bo) { startPage(); List<EnforceComplaintLogVo> list = iEnforceComplaintLogService.queryPleaseList(bo); return getDataTable(list); } @ApiOperation("导出投诉记录列表") //@PreAuthorize("@ss.hasPermi('enforce:log:export')") project-admin/src/main/java/com/project/admin/controller/enforce/EnforceOrderController.java
@@ -230,4 +230,15 @@ { return toAjax(iEnforceOrderService.deleteByIds(Arrays.asList(orderIds)) ? 1 : 0); } @ApiOperation("企业确认——执法单") //@PreAuthorize("@ss.hasPermi('enforce:order:remove')") @Log(title = "企业确认执法单" , businessType = BusinessType.UPDATE) @PostMapping("/confirm/{orderId}") @RepeatSubmit public AjaxResult remove(@PathVariable Long orderId) { return toAjax(iEnforceOrderService.confirm(orderId) ? 1 : 0); } } project-admin/src/main/java/com/project/admin/controller/system/SysDeptController.java
@@ -1,18 +1,5 @@ package com.project.admin.controller.system; import java.util.List; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.project.common.annotation.Log; import com.project.common.constant.UserConstants; import com.project.common.core.controller.BaseController; @@ -21,10 +8,17 @@ import com.project.common.enums.BusinessType; import com.project.common.utils.StringUtils; import com.project.system.service.ISysDeptService; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 部门信息 * * * @author project */ @RestController @@ -37,6 +31,16 @@ /** * 获取部门列表 */ @GetMapping("/allList") public AjaxResult allList(@RequestParam("parentId") Long parentId) { List<SysDept> depts = deptService.list(deptService.lq().eq(SysDept::getParentId, parentId)); return success(depts); } /** * 获取部门列表 */ @PreAuthorize("@ss.hasPermi('system:dept:list')") @GetMapping("/list") public AjaxResult list(SysDept dept) project-admin/src/main/resources/application.yml
@@ -143,6 +143,9 @@ - /system/company/add - /system/dict/** - /system/doc/** - /system/company/** - /system/dept/allList - /enforce/company/log/** - /tool/** - /verify/** - /report/** project-enforce/src/main/java/com/project/enforce/domain/EnforceOrder.java
@@ -107,6 +107,9 @@ @ApiModelProperty("扫码入场时间") private Date inTime; @ApiModelProperty("企业确认时间") private Date confirmTime; @ApiModelProperty("执法队员人数") private Integer userNum; @@ -199,6 +202,7 @@ private Integer isEva; @ApiModelProperty("评价总得分") private BigDecimal totalScore; project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceCompanyLogBo.java
@@ -73,7 +73,7 @@ /** 来访时间 */ @ApiModelProperty("来访时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date comeTime; private String comeTime; /** 更新人 */ @ApiModelProperty("更新人") project-enforce/src/main/java/com/project/enforce/domain/bo/editBo/EnforceOrderBo.java
@@ -213,4 +213,8 @@ /** 投诉内容 */ @ApiModelProperty("投诉内容") private String complaintReason; @ApiModelProperty("企业确认时间") private Date confirmTime; } project-enforce/src/main/java/com/project/enforce/domain/bo/queryBo/EnforceOrderQueryBo.java
@@ -187,6 +187,10 @@ @ApiModelProperty("投诉类型") private String complaintType; @ApiModelProperty("企业确认时间") private Date confirmTime; @ApiModelProperty("申请部门ids") private List<Long> applyDeptIds; project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceCompanyLogVo.java
@@ -60,7 +60,7 @@ @ApiModelProperty("执行人单位") private String comeDeptName; @Excel(name = "来访时间" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("来访时间") private Date comeTime; @Excel(name = "备注") project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceDistinctVo.java
New file @@ -0,0 +1,19 @@ package com.project.enforce.domain.vo; import lombok.Data; /** * 功能描述: * * @author ZQN * @version 1.0 */ @Data public class EnforceDistinctVo { private Long companyId; private Long checkDeptId; private String applyTimeStr; private Integer applyNum; } project-enforce/src/main/java/com/project/enforce/domain/vo/EnforceOrderVo.java
@@ -94,6 +94,10 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date inTime; @ApiModelProperty("企业确认时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date confirmTime; @Excel(name = "执法队员人数") @ApiModelProperty("执法队员人数") private Integer userNum; @@ -182,6 +186,7 @@ private String complaintReason; @ApiModelProperty("同行人数组") private List<EnforcePeer> peers; project-enforce/src/main/java/com/project/enforce/mapper/EnforceOrderMapper.java
@@ -4,6 +4,7 @@ import com.project.enforce.domain.EnforceOrder; import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo; import com.project.enforce.domain.bo.queryBo.OrderCheckedQueryBo; import com.project.enforce.domain.vo.EnforceDistinctVo; import com.project.enforce.domain.vo.EnforceOrderVo; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -28,4 +29,5 @@ @Select("SELECT COUNT(DISTINCT company_id) FROM enforce_order where check_status>=2") Integer getDistinctCompanyNum(); List<EnforceDistinctVo> selectDistinctCheckDeptIdAndCompanyId(); } project-enforce/src/main/java/com/project/enforce/service/IEnforceComplaintLogService.java
@@ -23,6 +23,16 @@ */ List<EnforceComplaintLogVo> queryList(EnforceComplaintLogQueryBo bo); /** * 投诉列表 */ List<EnforceComplaintLogVo> complaintList(EnforceComplaintLogQueryBo bo); /** * 建议列表 */ List<EnforceComplaintLogVo> queryPleaseList(EnforceComplaintLogQueryBo bo); /** * 查询单个 * @return EnforceComplaintLogVo @@ -72,4 +82,5 @@ * @return true成功 false失败 */ Boolean doComplaint(ComplaintResultBo bo); } project-enforce/src/main/java/com/project/enforce/service/IEnforceOrderService.java
@@ -149,4 +149,17 @@ */ Integer getDistinctCompanyNum(); /** * 企业确认 * @param orderId 订单id * @return 结果 */ Boolean confirm(Long orderId); /** * 处理异常单子 * @return 结果 */ Integer executeEnforceOrderWarn(); } project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
@@ -64,9 +64,11 @@ if (bo.getCheckStatus()== -1){ company.setCheckStatus(-1); companyBo.setCompanyStatus(1); smsService.sendCompanyCheckMsg(company.getCompanyPhone(), -1); } else { company.setCheckStatus(2); companyBo.setCompanyStatus(0); smsService.sendCompanyCheckMsg(company.getCompanyPhone(), 2); } addCheckLog(company, bo); company.setCheckReason(bo.getCheckReason()); project-enforce/src/main/java/com/project/enforce/service/impl/EnforceCompanyLogServiceImpl.java
@@ -4,6 +4,7 @@ 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.DateUtils; import com.project.common.utils.StringUtils; import com.project.enforce.domain.EnforceCompanyLog; import com.project.enforce.domain.bo.editBo.EnforceCompanyLogBo; @@ -52,6 +53,7 @@ public Boolean insertByBo(EnforceCompanyLogBo bo) { EnforceCompanyLog add = Convert.convert(EnforceCompanyLog.class, bo); add.setComeTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD, bo.getComeTime())); validEntityBeforeSave(add); return this.save(add); } @@ -81,7 +83,7 @@ //保存前校验 private void validEntityBeforeSave(EnforceCompanyLog entity) { if (StringUtils.isEmpty(entity.getComeDeptName()) && entity.getComeDeptId()!=null){ if (StringUtils.isNotEmpty(entity.getComeDeptName()) && entity.getComeDeptId()!=null){ entity.setComeDeptName(deptService.getDeptAllName(entity.getComeDeptId())); } } @@ -103,7 +105,9 @@ qw.eq(StringUtils.isNotEmpty(bo.getComePhone()), "come_phone", bo.getComePhone()); qw.eq(bo.getComeDeptId() != null, "come_dept_id", bo.getComeDeptId()); qw.like(StringUtils.isNotEmpty(bo.getComeDeptName()), "come_dept_name", bo.getComeDeptName()); qw.eq(bo.getComeTime() != null, "come_time", bo.getComeTime()); qw.ge(StringUtils.isNotEmpty(bo.getBeginTime()), "come_time", bo.getBeginTime()); qw.le(StringUtils.isNotEmpty(bo.getEndTime()), "come_time", bo.getEndTime()); if (StringUtils.isNotEmpty(bo.getIsAsc()) && StringUtils.isNotEmpty(bo.getOrderByColumn())){ if ("acs".equals(bo.getIsAsc())) { qw.orderByAsc(bo.getOrderByColumn()); project-enforce/src/main/java/com/project/enforce/service/impl/EnforceComplaintLogServiceImpl.java
@@ -49,6 +49,23 @@ return Convert.toList(EnforceComplaintLogVo.class , list); } @Override//列表查询 public List<EnforceComplaintLogVo> complaintList(EnforceComplaintLogQueryBo bo) { QueryWrapper<EnforceComplaintLog> qw = getQw(bo); qw.ne("complaint_type","-1"); List<EnforceComplaintLog> list = this.list(qw); return Convert.toList(EnforceComplaintLogVo.class , list); } @Override public List<EnforceComplaintLogVo> queryPleaseList(EnforceComplaintLogQueryBo bo) { QueryWrapper<EnforceComplaintLog> qw = getQw(bo); qw.eq("complaint_type","-1"); List<EnforceComplaintLog> list = this.list(qw); return Convert.toList(EnforceComplaintLogVo.class , list); } @Override//id查询 public EnforceComplaintLogVo queryById(Long id) { @@ -91,7 +108,7 @@ List<OrderNodeVo> vos = new ArrayList<>(); EnforceComplaintLog order = this.getById(id); if (order.getComplaintTime()!=null){ vos.add(new OrderNodeVo("发起投诉",order.getCompanyUser(),order.getCompanyName(),order.getComplaintTime(), null)); vos.add(new OrderNodeVo("发起诉求",order.getCompanyUser(),order.getCompanyName(),order.getComplaintTime(), null)); } if (order.getInTime()!=null && StringUtils.isNotEmpty(order.getInUser())){ @@ -156,11 +173,11 @@ ){ throw new BaseException("投诉企业不能为空!"); } if (entity.getExecuteDeptId() == null || StringUtils.isEmpty(entity.getExecuteDeptName()) ){ throw new BaseException("投诉单位不能为空!"); } // if (entity.getExecuteDeptId() == null // || StringUtils.isEmpty(entity.getExecuteDeptName()) // ){ // throw new BaseException("投诉单位不能为空!"); // } if (StringUtils.isEmpty(entity.getComplaintType())){ throw new BaseException("请选择要投诉类型!"); } project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.project.common.annotation.DataScope; import com.project.common.core.domain.entity.SysUser; import com.project.common.core.domain.model.DateRange; import com.project.common.enums.OrderPre; import com.project.common.exception.base.BaseException; import com.project.common.utils.DateUtils; @@ -19,6 +20,7 @@ import com.project.enforce.domain.bo.editBo.OrderResultBo; import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo; import com.project.enforce.domain.bo.queryBo.OrderCheckedQueryBo; import com.project.enforce.domain.vo.EnforceDistinctVo; import com.project.enforce.domain.vo.EnforceEvaluateVo; import com.project.enforce.domain.vo.EnforceOrderVo; import com.project.enforce.domain.vo.OrderNodeVo; @@ -34,6 +36,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; /** @@ -57,7 +60,7 @@ /** * 通用列表-无权限 * @param bo 参数 * @param bo 参数 * @return 列表 */ @Override @@ -74,8 +77,59 @@ } /** * 企业确认执法单 * @param orderId 订单id * @return 结果 */ @Override @Transactional public Boolean confirm(Long orderId) { EnforceOrder order = this.getById(orderId); if (order.getOrderStatus()!=4){ throw new BaseException("请待执法部门上报结果后确认!"); } order.setOrderStatus(5); order.setConfirmTime(DateUtils.getNowDate()); return this.updateById(order); } @Override @Transactional public Integer executeEnforceOrderWarn() { List<EnforceOrder> updList = new LinkedList<>(); //同一天重复执法 List<EnforceDistinctVo> list =baseMapper.selectDistinctCheckDeptIdAndCompanyId(); if (StringUtils.isNotEmpty(list)){ for (EnforceDistinctVo distinctVo : list) { List<EnforceOrder> orderList = this.list(lq() .eq(EnforceOrder::getCompanyId, distinctVo.getCompanyId()) .eq(EnforceOrder::getCheckDeptId, distinctVo.getCheckDeptId()) .like(EnforceOrder::getApplyTime, distinctVo.getApplyTimeStr()) .orderByDesc(EnforceOrder::getApplyTime) ); if (StringUtils.isNotEmpty(orderList)){ List<EnforceOrder> enforceOrders = orderList.subList(0, orderList.size() - 1); enforceOrders.forEach(order->{order.setWarnStatus(1);order.setWarnReason("同一天内对同一企业重复执法");}); updList.addAll(enforceOrders); } } } if (StringUtils.isNotEmpty(updList)){ this.updateBatchById(updList); } return updList.size(); } public static void main(String[] args) { DateRange todayRange = DateUtils.getTodayRange(); System.out.println(todayRange); } /** * 企业执法单列表 * @param bo 参数 * @param bo 参数 * @return 列表 */ @Override @@ -89,7 +143,7 @@ /** * 执法申请单列表 * @param bo 参数 * @param bo 参数 * @return 列表 */ @Override @@ -104,7 +158,7 @@ /** * 执法执行单列表 * @param bo 参数 * @param bo 参数 * @return 列表 */ @Override @@ -118,7 +172,7 @@ /** * 待审核列表 * @param bo 参数 * @param bo 参数 * @return 列表 */ @Override @@ -137,7 +191,7 @@ /** * 审批记录列表 * @param bo 参数 * @param bo 参数 * @return 列表 */ @Override @@ -293,7 +347,9 @@ if (order.getExecuteTime()!=null){ vos.add(new OrderNodeVo("结果上报",order.getExecuteUser(),order.getExecuteDeptName(),order.getExecuteTime(), null)); } if (order.getConfirmTime()!=null){ vos.add(new OrderNodeVo("企业确认",order.getCompanyUser(),order.getCompanyName(),order.getConfirmTime(), null)); } return vos; } project-enforce/src/main/java/com/project/enforce/service/impl/YPSmsService.java
@@ -65,4 +65,21 @@ String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.COMPANY_TMP, applyDeptName, date)); smsApi.sendSms(phone, applyMsg) ; } /** * 通知企业审核结果 * @param phone 手机号 * @param checkStatus 执法部门 */ @Async public void sendCompanyCheckMsg(String phone, Integer checkStatus) { String companyCheckMsg; if (checkStatus==-1){ companyCheckMsg = YPSmsApi.COMPANY_CHECK_FILE_TMP; } else { companyCheckMsg = YPSmsApi.COMPANY_CHECK_SUCCESS_TMP; } smsApi.sendSms(phone, companyCheckMsg) ; } } project-enforce/src/main/resources/mapper/enforce/EnforceOrderMapper.xml
@@ -115,4 +115,17 @@ AND t2.company_code = #{companyCode} order by t2.apply_time asc </select> <select id="selectDistinctCheckDeptIdAndCompanyId" resultType="com.project.enforce.domain.vo.EnforceDistinctVo"> select t.* from ( SELECT company_id, check_dept_id, SUBSTR(apply_time,1,10) as apply_time_str, count( 1 ) AS apply_num FROM enforce_order WHERE warn_status=0 GROUP BY company_id, check_dept_id,apply_time_str ) t WHERE t.apply_num > 1 </select> </mapper> project-quartz/pom.xml
@@ -17,6 +17,12 @@ <dependencies> <dependency> <groupId>com.project</groupId> <artifactId>project-enforce</artifactId> </dependency> <!-- 定时任务 --> <dependency> <groupId>org.quartz-scheduler</groupId> project-quartz/src/main/java/com/project/quartz/task/ProjectTask.java
@@ -1,7 +1,7 @@ package com.project.quartz.task; import com.project.common.utils.DateUtils; import com.project.common.utils.WeChatUtils; import com.project.enforce.service.IEnforceOrderService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -19,35 +19,15 @@ public class ProjectTask { private final IEnforceOrderService orderService; public void refreshWxAccessToken() //每天处理异常警告订单 public void executeEnforceOrderWarn() { WeChatUtils.refreshAccessToken(); log.info(DateUtils.getTime() + "刷新access_token"); log.info(DateUtils.getTime()+"_异常警告处理开始...."); Integer size = orderService.executeEnforceOrderWarn(); log.info(DateUtils.getTime()+"_异常警告处理完成,处理条数:"+size); } // //每天处理灵玉返还 // public void executeIntegralToMoney() // { // log.info(DateUtils.getTime()+"_处理灵玉返还到余额"); // walletService.executeIntegralToMoney(); // } // // // //每天处理投资返还 // public void executeInvestorToMoney() // { // log.info(DateUtils.getTime()+"_处理投资返还到余额"); // walletService.executeInvestorToMoney(); // } // // //每天处理7天自动收货 // public void executeAutoReciver() // { // log.info(DateUtils.getTime()+"_处理自动收货"); // orderDataService.autoReciverSend(); // } } project-system/src/main/java/com/project/system/service/ISysDeptService.java
@@ -145,6 +145,4 @@ * @return 全名 */ String getDeptAllName(Long deptId); } project-system/src/main/java/com/project/system/sms/YPSmsApi.java
@@ -71,6 +71,12 @@ public static final String COMPANY_TMP = SIGN + "{} 单位预计将于 {} 到贵单位进行检查,请提前知晓!"; /** * 企业审核结果通知模板 */ public static final String COMPANY_CHECK_SUCCESS_TMP = SIGN + "您的企业注册信息审核已通过,请用申请时填写的联系人手机号登录小程序。"; public static final String COMPANY_CHECK_FILE_TMP = SIGN + "您的企业注册信息审核未通过,请重新在小程序提交信息进行审核。"; /** * 验证码模板 */ public static final String CODE_TMP = SIGN + "您的验证码是{}";