package com.project.enforce.service.impl;
|
|
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;
|
import com.project.enforce.domain.EnforceOrder;
|
import com.project.enforce.service.ICheckService;
|
import com.project.enforce.service.IEnforceCheckLogService;
|
import com.project.enforce.service.IEnforceOrderService;
|
import com.project.system.domain.SysCompany;
|
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;
|
|
import java.util.List;
|
|
/**
|
* 功能描述:
|
*
|
* @author ZQN
|
* @version 1.0
|
* @date 2024年06月17日
|
*/
|
|
@Service
|
@RequiredArgsConstructor
|
public class CheckServiceImpl implements ICheckService
|
{
|
|
private final ISysUserService userService;
|
private final ISysCompanyService companyService;
|
private final IEnforceOrderService orderService;
|
private final IEnforceCheckLogService checkLogService;
|
private final YPSmsService smsService;
|
|
@Override
|
@Transactional
|
public Boolean checkOrder(CheckBo bo)
|
{
|
if (StringUtils.isEmpty(bo.getIds())){
|
throw new BaseException("请选择要审批的单据!");
|
}
|
switch (bo.getCheckType())
|
{
|
case 1:
|
for (Long id : bo.getIds()) {
|
SysCompany company = companyService.getById(id);
|
if (company==null) {
|
throw new BaseException("没有找到对应数据,请检查审核类型!");
|
}
|
SysCompanyBo companyBo = new SysCompanyBo();
|
companyBo.setCompanyId(company.getCompanyId());
|
if (company.getCheckStatus()!=0){
|
throw new BaseException("该企业已审批!");
|
}
|
if (bo.getCheckStatus()== -1){
|
company.setCheckStatus(-1);
|
company.setCompanyStatus(1);
|
companyBo.setCompanyStatus(1);
|
smsService.sendCompanyCheckMsg(company.getCompanyPhone(), -1);
|
} else {
|
company.setCheckStatus(2);
|
company.setCompanyStatus(0);
|
companyBo.setCompanyStatus(0);
|
smsService.sendCompanyCheckMsg(company.getCompanyPhone(), 2);
|
}
|
addCheckLog(company, bo);
|
company.setCheckReason(bo.getCheckReason());
|
companyService.updateById(company);
|
companyService.updStatus(companyBo);
|
}
|
return true;
|
case 2:
|
for (Long id : bo.getIds()) {
|
EnforceOrder order = orderService.getById(id);
|
if (order==null) {
|
throw new BaseException("没有找到对应数据,请检查审核类型!");
|
}
|
if (order.getOrderStatus()!=1){
|
throw new BaseException("该执法单已审批");
|
}
|
addCheckLog(order, bo);
|
if (bo.getCheckStatus()==-1){
|
order.setOrderStatus(-1);
|
order.setCheckStatus(-1);
|
//审批拒绝,给申请人发送短信,如果通知企业也给企业发送短信
|
smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
|
orderService.updateById(order);
|
} else {
|
List<String> phones = orderService.getCheckPhones(order.getCheckLevel()+1, order.getApplyDeptId());
|
if (StringUtils.isNotEmpty(phones)){
|
int checkLevel = Integer.parseInt(phones.get(0));
|
order.setCheckLevel(checkLevel);
|
phones.remove(0);
|
order.setCheckStatus(1);
|
//给下一级审批人发送短信
|
smsService.sendApplyMsg(phones, order.getApplyUser());
|
String checkPhones = StringUtils.join(phones, ",");
|
order.setCheckIds(checkPhones);
|
order.setCheckReason(bo.getCheckReason());
|
|
return orderService.updateById(order);
|
} else {
|
order.setCheckStatus(2);
|
order.setOrderStatus(2);
|
//审批通过,给申请人发送短信,如果通知企业也给企业发送短信
|
smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
|
|
if (StringUtils.isEmpty(order.getCompanyCode())){
|
order.setOrderStatus(3);
|
order.setInTime(DateUtils.getNowDate());
|
order.setExecuteDeptId(order.getApplyDeptId());
|
order.setExecuteDeptName(order.getApplyDeptName());
|
order.setExecuteUser(order.getApplyUser());
|
order.setExecutePhone(order.getApplyPhone());
|
order.setExecuteId(order.getApplyId());
|
}
|
if (order.getIsNoticeCompany()==1 && StringUtils.isNotEmpty(order.getCompanyPhone())){
|
smsService.sendCompanyMsg(order.getCompanyPhone(), order.getApplyDeptName(), order.getPlanTime());
|
}
|
|
//审批等级加1
|
order.setCheckLevel(order.getCheckLevel()+1);
|
order.setCheckReason(bo.getCheckReason());
|
return orderService.updateById(order);
|
}
|
}
|
|
}
|
return true;
|
}
|
return false;
|
}
|
|
|
/**
|
* 添加审批记录
|
* @param obj 业务对象
|
* @param bo 审批参数
|
*/
|
private void addCheckLog(Object obj, CheckBo bo)
|
{
|
EnforceCheckLog checkLog = Convert.convert(EnforceCheckLog.class, obj);
|
checkLog.setCheckType(bo.getCheckType());
|
SysUser loginUser = userService.selectUserById(SecurityUtils.getUserId());
|
checkLog.setCheckId(loginUser.getUserId());
|
checkLog.setCheckUser(loginUser.getNickName());
|
checkLog.setCheckPhone(loginUser.getPhonenumber());
|
checkLog.setCheckStatus(bo.getCheckStatus()>0?1:-1);
|
checkLog.setCheckTime(DateUtils.getNowDate());
|
checkLog.setCheckReason(bo.getCheckReason());
|
boolean save = checkLogService.save(checkLog);
|
if (!save) {
|
throw new BaseException("审批记录添加失败,请重试!");
|
}
|
}
|
|
|
}
|