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.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 ISysCompanyService companyService; private final IEnforceOrderService orderService; private final IEnforceCheckLogService checkLogService; private final ISysUserService userService; @Override @Transactional public Boolean checkOrder(CheckBo bo) { switch (bo.getCheckType()) { case 1: SysCompany company = companyService.getById(bo.getId()); if (company==null) { throw new BaseException("没有找到对应数据,请检查审核类型!"); } SysCompanyBo companyBo = new SysCompanyBo(); companyBo.setCompanyId(company.getCompanyId()); if (bo.getCheckStatus()== -1){ company.setCheckStatus(-1); companyBo.setCompanyStatus(1); } else { company.setCheckStatus(2); companyBo.setCompanyStatus(0); } addCheckLog(company, bo); company.setCheckReason(bo.getCheckReason()); companyService.updStatus(companyBo); return companyService.updateById(company); case 2: EnforceOrder order = orderService.getById(bo.getId()); if (order==null) { throw new BaseException("没有找到对应数据,请检查审核类型!"); } addCheckLog(order, bo); if (bo.getCheckStatus()==-1){ order.setCheckStatus(-1); } else { String roleKey = "check_enforce_" + (order.getCheckLevel() + 1); List ids = userService.getNumByRoleKey(roleKey, order.getCheckDeptId()); if (StringUtils.isNotEmpty(ids)){ order.setCheckStatus(1); } else { order.setCheckStatus(2); order.setOrderStatus(2); } //审批登记加1 order.setCheckLevel(order.getCheckLevel()+1); } order.setCheckReason(bo.getCheckReason()); return orderService.updateById(order); } 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 = SecurityUtils.getLoginUser().getUser(); checkLog.setCheckId(loginUser.getUserId()); checkLog.setCheckUser(loginUser.getUserName()); checkLog.setCheckPhone(loginUser.getPhonenumber()); checkLog.setCheckStatus(bo.getCheckStatus()); checkLog.setCheckReason(bo.getCheckReason()); boolean save = checkLogService.save(checkLog); if (!save) { throw new BaseException("审批记录添加失败,请重试!"); } } }