package com.project.enforce.service.impl;
|
|
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.annotation.DataScope;
|
import com.project.common.core.domain.entity.SysUser;
|
import com.project.common.enums.OrderPre;
|
import com.project.common.exception.base.BaseException;
|
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.editBo.OrderResultBo;
|
import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo;
|
import com.project.enforce.domain.bo.queryBo.OrderCheckedQueryBo;
|
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;
|
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.ArrayList;
|
import java.util.Collection;
|
import java.util.List;
|
|
/**
|
* 执法单Service业务层处理
|
*
|
* @author manton
|
*/
|
@Service
|
@RequiredArgsConstructor(onConstructor_ = @Autowired)
|
public class EnforceOrderServiceImpl extends ServiceImpl<EnforceOrderMapper, EnforceOrder> implements IEnforceOrderService {
|
|
private final ISysUserService userService;
|
private final ISysDeptService deptService;
|
private final ISysOrderNoService orderNoService;
|
private final IEnforcePeerService peerService;
|
private final IEnforceCheckLogService checkLogService;
|
|
@Override//列表查询
|
@DataScope(deptAlias = "apply_dept_id", userAlias = "apply_id")
|
public List<EnforceOrderVo> queryList(EnforceOrderQueryBo bo)
|
{
|
QueryWrapper<EnforceOrder> qw = getQw(bo);
|
qw.apply(StringUtils.isNotEmpty(bo.getParams().get("dataScope").toString()), bo.getParams().get("dataScope").toString());//数据权限控制
|
List<EnforceOrder> list = this.list(qw);
|
return Convert.toList(EnforceOrderVo.class , list);
|
}
|
|
@Override//执法上报列表
|
@DataScope(deptAlias = "execute_dept_id", userAlias = "execute_id")
|
public List<EnforceOrderVo> getExecuteList(EnforceOrderQueryBo bo) {
|
QueryWrapper<EnforceOrder> qw = getQw(bo);
|
qw.apply(StringUtils.isNotEmpty(bo.getParams().get("dataScope").toString()), bo.getParams().get("dataScope").toString());//数据权限控制
|
List<EnforceOrder> list = this.list(qw);
|
return Convert.toList(EnforceOrderVo.class , list);
|
}
|
|
@Override//待审核列表
|
public List<EnforceOrderVo> queryCheckList(EnforceOrderQueryBo bo)
|
{
|
SysUser loginUser = SecurityUtils.getLoginUser().getUser();
|
bo.setCheckIds(loginUser.getPhonenumber());
|
List<Long> deptIds = deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId());
|
if (StringUtils.isNotEmpty(deptIds)){
|
bo.setApplyDeptIds(deptIds);
|
} else {
|
bo.setApplyDeptIds(null);
|
}
|
return this.baseMapper.selectCheckList(bo);
|
}
|
|
@Override
|
public List<EnforceOrderVo> queryCheckedList(OrderCheckedQueryBo bo)
|
{
|
bo.setUserId(SecurityUtils.getUserId());
|
return this.baseMapper.selectCheckedList(bo);
|
}
|
|
@Override//信息公式列表
|
public List<EnforceOrderVo> showList()
|
{
|
List<EnforceOrder> list = this.list(lq().eq(EnforceOrder::getIsShow, 1));
|
return Convert.toList(EnforceOrderVo.class, list);
|
}
|
|
@Override//id查询
|
public EnforceOrderVo queryById(Long orderId)
|
{
|
EnforceOrder db = this.baseMapper.selectById(orderId);
|
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;
|
}
|
|
|
@Override//添加
|
@Transactional
|
public Boolean insertByBo(EnforceOrderBo bo)
|
{
|
EnforceOrder add = Convert.convert(EnforceOrder.class, bo);
|
add.setCheckLevel(0);
|
validEntityBeforeSave(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(0,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//修改
|
@Transactional
|
public Boolean updateByBo(EnforceOrderBo bo)
|
{
|
EnforceOrder update = Convert.convert(EnforceOrder.class, bo);
|
validEntityBeforeSave(update);
|
return this.updateById(update);
|
}
|
|
@Override//删除
|
@Transactional
|
public Boolean deleteByIds(Collection<Long> ids)
|
{
|
|
//做一些业务上的校验,判断是否需要校验
|
|
return this.removeByIds(ids);
|
}
|
|
@Override
|
public List<String> getCheckPhones(Integer checkLevel, Long applyDeptId)
|
{
|
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()));
|
}
|
}
|
}
|
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;
|
}
|
|
@Override//扫码结果
|
public List<EnforceOrderVo> getScanList(String companyCode)
|
{
|
Long userId = SecurityUtils.getUserId();
|
return this.baseMapper.selectScanList(companyCode, userId);
|
}
|
|
@Override//确认扫码执法
|
@Transactional
|
public Boolean doScanOrder(Long orderId)
|
{
|
EnforceOrder order = this.getById(orderId);
|
order.setOrderStatus(3);
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
order.setExecuteId(user.getUserId());
|
order.setExecuteUser(user.getNickName());
|
order.setExecutePhone(user.getRecommendPhone());
|
order.setExecuteDeptId(user.getDeptId());
|
order.setExecuteDeptName(deptService.getDeptAllName(user.getDeptId()));
|
order.setInTime(DateUtils.getNowDate());
|
return this.updateById(order);
|
}
|
|
@Override
|
public Boolean doResultOrder(OrderResultBo resultBo)
|
{
|
if (resultBo.getRegionStatus()==null){
|
throw new BaseException("请填写执法结果");
|
}
|
if (StringUtils.isEmpty(resultBo.getRegionReason())){
|
throw new BaseException("请填写执法结果说明");
|
}
|
|
return this.update(lu()
|
.set(resultBo.getRegionStatus()!=null, EnforceOrder::getRegionStatus, resultBo.getRegionStatus())
|
.set(StringUtils.isNotEmpty(resultBo.getRegionReason()), EnforceOrder::getRegionReason, resultBo.getRegionReason())
|
.set(StringUtils.isNotEmpty(resultBo.getRegionImgs()), EnforceOrder::getRegionImgs, resultBo.getRegionImgs())
|
.set(StringUtils.isNotEmpty(resultBo.getRegionVideos()), EnforceOrder::getRegionVideos, resultBo.getRegionVideos())
|
.set( EnforceOrder::getExecuteTime, DateUtils.getNowDate())
|
);
|
}
|
|
|
//-------------------------------------------------------------------------------------
|
|
|
/**
|
* 发送审批短信
|
* @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()));
|
entity.setApplyTime(DateUtils.getNowDate());
|
}
|
if (StringUtils.isEmpty(entity.getApplyDeptName()) && entity.getApplyDeptId()!=null){
|
entity.setApplyDeptName(deptService.getDeptAllName(entity.getApplyDeptId()));
|
}
|
if (StringUtils.isEmpty(entity.getExecuteDeptName()) && entity.getExecuteDeptId()!=null){
|
entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId()));
|
}
|
if (StringUtils.isEmpty(entity.getCheckDeptName()) && entity.getCheckDeptId()!=null){
|
entity.setCheckDeptName(deptService.getDeptAllName(entity.getCheckDeptId()));
|
}
|
|
}
|
|
//获取查询参数
|
private QueryWrapper<EnforceOrder> getQw(EnforceOrderQueryBo bo)
|
{
|
QueryWrapper<EnforceOrder> qw = Wrappers.query();
|
|
qw.eq(StringUtils.isNotEmpty(bo.getOrderNo()), "order_no", bo.getOrderNo());
|
qw.eq(bo.getCompanyId() != null, "company_id", bo.getCompanyId());
|
qw.like(StringUtils.isNotEmpty(bo.getCompanyName()), "company_name", bo.getCompanyName());
|
qw.eq(StringUtils.isNotEmpty(bo.getCompanyCode()), "company_code", bo.getCompanyCode());
|
qw.eq(StringUtils.isNotEmpty(bo.getCompanyUser()), "company_user", bo.getCompanyUser());
|
qw.eq(StringUtils.isNotEmpty(bo.getCompanyPhone()), "company_phone", bo.getCompanyPhone());
|
qw.eq(StringUtils.isNotEmpty(bo.getCompanyAddress()), "company_address", bo.getCompanyAddress());
|
qw.eq(StringUtils.isNotEmpty(bo.getRegionCode()), "region_code", bo.getRegionCode());
|
qw.like(StringUtils.isNotEmpty(bo.getRegionName()), "region_name", bo.getRegionName());
|
qw.like(StringUtils.isNotEmpty(bo.getEnforceReason()), "enforce_reason", bo.getEnforceReason());
|
qw.like(StringUtils.isNotEmpty(bo.getEnforceContent()), "enforce_content", bo.getEnforceContent());
|
qw.eq(StringUtils.isNotEmpty(bo.getEnforceType()), "enforce_type", bo.getEnforceType());
|
qw.eq(bo.getApplyId() != null, "apply_id", bo.getApplyId());
|
qw.eq(StringUtils.isNotEmpty(bo.getApplyUser()), "apply_user", bo.getApplyUser());
|
qw.eq(StringUtils.isNotEmpty(bo.getApplyPhone()), "apply_phone", bo.getApplyPhone());
|
qw.eq(bo.getApplyDeptId() != null, "apply_dept_id", bo.getApplyDeptId());
|
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());
|
qw.eq(bo.getOrderStatus() != null, "order_status", bo.getOrderStatus());
|
qw.eq(bo.getCheckDeptId() != null, "check_dept_id", bo.getCheckDeptId());
|
qw.like(StringUtils.isNotEmpty(bo.getCheckDeptName()), "check_dept_name", bo.getCheckDeptName());
|
qw.eq(bo.getCheckStatus() != null, "check_status", bo.getCheckStatus());
|
qw.eq(StringUtils.isNotEmpty(bo.getCheckReason()), "check_reason", bo.getCheckReason());
|
qw.eq(bo.getCheckLevel() != null, "check_level", bo.getCheckLevel());
|
qw.eq(bo.getExecuteId() != null, "execute_id", bo.getExecuteId());
|
qw.eq(StringUtils.isNotEmpty(bo.getExecuteUser()), "execute_user", bo.getExecuteUser());
|
qw.eq(StringUtils.isNotEmpty(bo.getExecutePhone()), "execute_phone", bo.getExecutePhone());
|
qw.eq(bo.getExecuteDeptId() != null, "execute_dept_id", bo.getExecuteDeptId());
|
qw.like(StringUtils.isNotEmpty(bo.getExecuteDeptName()), "execute_dept_name", bo.getExecuteDeptName());
|
qw.eq(bo.getExecuteTime() != null, "execute_time", bo.getExecuteTime());
|
qw.eq(bo.getRegionStatus() != null, "region_status", bo.getRegionStatus());
|
qw.eq(StringUtils.isNotEmpty(bo.getRegionReason()), "region_reason", bo.getRegionReason());
|
qw.eq(StringUtils.isNotEmpty(bo.getRegionImgs()), "region_imgs", bo.getRegionImgs());
|
qw.eq(StringUtils.isNotEmpty(bo.getRegionVideos()), "region_videos", bo.getRegionVideos());
|
qw.eq(bo.getIsNoticeCompany() != null, "is_notice_company", bo.getIsNoticeCompany());
|
qw.eq(bo.getIsShow() != null, "is_show", bo.getIsShow());
|
qw.eq(bo.getIsEva() != null, "is_eva", bo.getIsEva());
|
qw.eq(bo.getTotalScore() != null, "total_score", bo.getTotalScore());
|
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;
|
}
|
|
|
/**
|
* 获取审批人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.selectDeptById(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);
|
}
|
|
|
}
|