123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- package cn.cslg.permission.service.qiaobi;
- import cn.cslg.permission.common.core.business.SmsService;
- import cn.cslg.permission.common.model.Records;
- import cn.cslg.permission.common.model.qiaobi.QiaoBiPersonSignUpDTO;
- import cn.cslg.permission.common.model.qiaobi.businessTask.AuditTaskDTO;
- import cn.cslg.permission.common.model.qiaobi.businessTask.QueryAuditTaskDTO;
- import cn.cslg.permission.common.model.qiaobi.businessTask.QueryAuditTaskVO;
- import cn.cslg.permission.common.model.qiaobi.version.BusinessTaskVersionVO;
- import cn.cslg.permission.common.model.qiaobi.version.VersionStatusDTO;
- import cn.cslg.permission.common.model.vo.PersonnelVO;
- import cn.cslg.permission.common.model.vo.associate.AssoDepartPosVO;
- import cn.cslg.permission.common.utils.CacheUtils;
- import cn.cslg.permission.common.utils.LoginUtils;
- import cn.cslg.permission.domain.Department;
- import cn.cslg.permission.domain.Personnel;
- import cn.cslg.permission.domain.Position;
- import cn.cslg.permission.domain.Version;
- import cn.cslg.permission.domain.qiaobi.BusinessTask;
- import cn.cslg.permission.domain.qiaobi.RegistInformation;
- import cn.cslg.permission.exception.ExceptionEnum;
- import cn.cslg.permission.exception.XiaoShiException;
- import cn.cslg.permission.mapper.qiaobi.BusinessTaskMapper;
- import cn.cslg.permission.service.*;
- import cn.cslg.permission.service.associate.PerDpService;
- import cn.cslg.permission.service.email.MailSendService;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import io.swagger.v3.oas.models.security.SecurityScheme;
- import jdk.internal.org.jline.utils.ShutdownHooks;
- import lombok.RequiredArgsConstructor;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * @author admin
- * @description 针对表【BUSINESS_TASK(业务任务表)】的数据库操作Service实现
- * @createDate 2024-12-15 11:54:13
- */
- @Service
- @RequiredArgsConstructor
- public class BusinessTaskService extends ServiceImpl<BusinessTaskMapper, BusinessTask> {
- private final PersonnelService personnelService;
- private final DepartmentService departmentService;
- private final PositionService positionService;
- private final RoleService roleService;
- private final RegistInformationService registInformationService;
- private final AssoPersonVipTypeService assoPersonVipTypeService;
- private final LoginUtils loginUtils;
- private final CacheUtils cacheUtils;
- private final AssoBusinessTaskVersionService assoBusinessTaskVersionService;
- private final VersionService versionService;
- private final PerDpService perDpService;
- private final SmsService smsService;
- private final MailSendService mailSendService;
- private final AssoTenantVipTypeService assoTenantVipTypeService;
- @Value("${ApplicationCode}")
- private String ApplicationCode;
- public Records queryAuditTask(QueryAuditTaskDTO queryAuditTaskDTO) {
- Long current = queryAuditTaskDTO.getCurrent();
- Long size = queryAuditTaskDTO.getSize();
- Records records = new Records();
- records.setCurrent(current);
- if (current != null && size != null) {
- queryAuditTaskDTO.setCurrent(((current - 1) * size));
- }
- Integer personId = loginUtils.getId();
- PersonnelVO personnelVO = cacheUtils.getLoginUser(personId);
- Integer tenantId = personnelVO.getTenantId();
- Boolean biSysRole = roleService.checkIfQiaoBiSysRole();
- queryAuditTaskDTO.setTenantId(tenantId);
- queryAuditTaskDTO.setIfSys(biSysRole);
- List<QueryAuditTaskVO> queryAuditTaskVOS = this.getBaseMapper().queryAuditTask(queryAuditTaskDTO);
- this.loadQueryAuditTaskDTO(queryAuditTaskVOS);
- Long total = this.getBaseMapper().queryAuditTaskTotal(queryAuditTaskDTO);
- records.setRecords(queryAuditTaskVOS);
- records.setTotal(total);
- records.setSize(size);
- return records;
- }
- private List<QueryAuditTaskVO> loadQueryAuditTaskDTO(List<QueryAuditTaskVO> queryAuditTaskVOS) {
- if (queryAuditTaskVOS == null || queryAuditTaskVOS.size() == 0) {
- return queryAuditTaskVOS;
- }
- List<Integer> versionTaskIds = new ArrayList<>();
- List<Integer> personIds = new ArrayList<>();
- List<Personnel> personnelList = new ArrayList<>();
- List<Integer> departMentIds = new ArrayList<>();
- List<Department> departmentList = new ArrayList<>();
- List<Integer> positionIds = new ArrayList<>();
- List<Position> positionList = new ArrayList<>();
- queryAuditTaskVOS.forEach(item -> {
- if (item.getCreateId() != null) {
- personIds.add(item.getCreateId());
- }
- if (item.getDepartmentId() != null) {
- departMentIds.add(item.getDepartmentId());
- }
- if (item.getHandleId() != null) {
- personIds.add(item.getHandleId());
- }
- if (item.getPositionId() != null) {
- positionIds.add(item.getPositionId());
- }
- if (item.getType() != null && item.getType().equals(2)) {
- versionTaskIds.add(item.getId());
- }
- });
- if (personIds != null && personIds.size() > 0) {
- personnelList = personnelService.getPersonByIds(personIds);
- }
- if (departMentIds != null || departMentIds.size() > 0) {
- departmentList = departmentService.getDepartmentsByIds(departMentIds);
- }
- if (positionIds != null || positionIds.size() > 0) {
- positionList = positionService.getPositionByIds(positionIds);
- }
- List<BusinessTaskVersionVO> businessTaskVersionVOS = new ArrayList<>();
- if (versionTaskIds != null && versionTaskIds.size() > 0) {
- businessTaskVersionVOS = assoBusinessTaskVersionService.getBaseMapper().queryVersionByTaskIds(versionTaskIds);
- }
- for (QueryAuditTaskVO queryAuditTaskVO : queryAuditTaskVOS) {
- Personnel createUser = personnelList.stream().filter(item -> item.getId().equals(queryAuditTaskVO.getCreateId())).findFirst().orElse(null);
- if (createUser != null) {
- queryAuditTaskVO.setCreateName(createUser.getPersonnelName());
- }
- Personnel handlerUser = personnelList.stream().filter(item -> item.getId().equals(queryAuditTaskVO.getHandleId())).findFirst().orElse(null);
- if (handlerUser != null) {
- queryAuditTaskVO.setHandleName(handlerUser.getPersonnelName());
- }
- Department department = departmentList.stream().filter(item -> item.getId().equals(queryAuditTaskVO.getDepartmentId())).findFirst().orElse(null);
- if (department != null) {
- queryAuditTaskVO.setDepartmentName(department.getDepartmentName());
- }
- Position position = positionList.stream().filter(item -> item.getId().equals(queryAuditTaskVO.getPositionId())).findFirst().orElse(null);
- if (position != null) {
- queryAuditTaskVO.setPositionName(position.getPositionName());
- }
- if (queryAuditTaskVO.getType() != null && queryAuditTaskVO.getType().equals(2)) {
- BusinessTaskVersionVO businessTaskVersionVO = businessTaskVersionVOS.stream().filter(item -> item.getBusinessTaskId().equals(queryAuditTaskVO.getId())).findFirst().orElse(null);
- if (businessTaskVersionVO != null) {
- queryAuditTaskVO.setVersionNum(businessTaskVersionVO.getVersionNum());
- queryAuditTaskVO.setVersionName(businessTaskVersionVO.getVersionName());
- queryAuditTaskVO.setVersionId(businessTaskVersionVO.getVersionId());
- }
- }
- }
- return queryAuditTaskVOS;
- }
- public List<BusinessTask> queryBusinessTaskByIds(List<Integer> taskIds) {
- LambdaQueryWrapper<BusinessTask> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(BusinessTask::getId, taskIds);
- List<BusinessTask> businessTasks = this.list(queryWrapper);
- return businessTasks;
- }
- @Transactional(rollbackFor = Exception.class)
- public void auditTasks(AuditTaskDTO auditTaskDTO) {
- List<Integer> taskIds = auditTaskDTO.getIds();
- if (taskIds == null || taskIds.size() == 0) {
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "请选择至少一个任务");
- }
- Integer result = auditTaskDTO.getResult();
- //根据taskId 查询任务
- Integer tenantId = roleService.checkLoginPersonRole();
- List<BusinessTask> businessTasks = this.queryBusinessTaskByIds(taskIds);
- businessTasks = businessTasks.stream().filter(item -> item.getTenantId().equals(tenantId)).collect(Collectors.toList());
- businessTasks.forEach(item -> {
- this.auditTask(item, result);
- });
- }
- public void auditTask(BusinessTask businessTask, Integer result) {
- Integer type = businessTask.getTaskType();
- if (!businessTask.getStatus().equals(0)) {
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "任务已完成,不允许操作");
- }
- switch (type) {
- case 1:
- this.auditSignUpTask(businessTask, result);
- break;
- case 2:
- this.auditVersionTask(businessTask, result);
- break;
- default:
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "任务类型不存在");
- }
- }
- public void auditSignUpTask(BusinessTask businessTask, Integer result) {
- if (result == 1) {
- this.auditSignUpTaskPass(businessTask);
- } else {
- this.auditSignUpTaskNotPass(businessTask);
- }
- }
- public void updateAuditTaskResult(BusinessTask businessTask, Integer result) {
- businessTask.setStatus(1);
- businessTask.setResult(result);
- businessTask.setHandleId(loginUtils.getId());
- businessTask.setHandleTime(new Date());
- businessTask.updateById();
- }
- @Transactional(rollbackFor = Exception.class)
- public void auditSignUpTaskPass(BusinessTask businessTask) {
- //查询人员注册信息
- Integer taskId = businessTask.getId();
- RegistInformation registInformation = registInformationService.getRegistInformationByTaskId(taskId);
- if (registInformation == null) {
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "任务无注册信息");
- }
- Integer tenantId = registInformation.getTenantId();
- Integer vipTypeId = registInformation.getVipTypeId();
- assoTenantVipTypeService.removeOneVip(tenantId, vipTypeId);
- QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO = this.transFormToQiaoBiPersonSignUpDTO(registInformation);
- qiaoBiPersonSignUpDTO = personnelService.addPhoneSignUpPerson(qiaoBiPersonSignUpDTO);
- if (registInformation.getDepartMentId() != null || registInformation.getPositionId() != null) {
- List<AssoDepartPosVO> assoDepartPoseVos = new ArrayList<>();
- AssoDepartPosVO assoDepartPosVO = new AssoDepartPosVO();
- assoDepartPosVO.setDepartment(registInformation.getDepartMentId());
- if (registInformation.getDepartMentId() != null) {
- Department department = departmentService.getById(registInformation.getDepartMentId());
- if (department != null) {
- assoDepartPosVO.setDepartmentName(department.getDepartmentName());
- }
- }
- assoDepartPosVO.setPosition(registInformation.getPositionId());
- if (registInformation.getPositionId() != null) {
- Position position = positionService.getById(registInformation.getDepartMentId());
- if (position != null) {
- assoDepartPosVO.setPositionName(position.getPositionName());
- }
- }
- assoDepartPoseVos.add(assoDepartPosVO);
- perDpService.addAssociatePerDp(assoDepartPoseVos, qiaoBiPersonSignUpDTO.getId());
- }
- //绑定版本
- assoPersonVipTypeService.addVip(qiaoBiPersonSignUpDTO.getId(), vipTypeId, null);
- this.updateAuditTaskResult(businessTask, 1);
- smsService.sendQiaoBiAccountPass(qiaoBiPersonSignUpDTO.getPhoneNum(), qiaoBiPersonSignUpDTO.getPassword());
- }
- public void auditSignUpTaskNotPass(BusinessTask businessTask) {
- Integer taskId = businessTask.getId();
- RegistInformation registInformation = registInformationService.getRegistInformationByTaskId(taskId);
- this.updateAuditTaskResult(businessTask, 0);
- smsService.sendQiaoBiAccountNotPass(registInformation.getPersonnelPhone());
- }
- public void auditVersionTask(BusinessTask businessTask, Integer result) {
- if (result == 1) {
- this.auditVersionTaskPass(businessTask);
- } else {
- this.auditVersionTaskNotPass(businessTask);
- }
- }
- public void auditVersionTaskPass(BusinessTask businessTask) {
- roleService.checkApplicationRootRole("4e95e3d926a2a4befa5d913acc0bb8t6");
- this.updateAuditTaskResult(businessTask, 1);
- VersionStatusDTO versionStatusDTO = new VersionStatusDTO();
- versionStatusDTO.setStatus(3);
- Integer versionId = assoBusinessTaskVersionService.getVersionId(businessTask.getId());
- versionStatusDTO.setId(versionId);
- versionService.updateVersionStatusSys(versionStatusDTO);
- if (businessTask.getCreateId() != null) {
- this.sendVersionTaskDone(businessTask.getCreateId());
- }
- }
- public void auditVersionTaskNotPass(BusinessTask businessTask) {
- this.updateAuditTaskResult(businessTask, 0);
- VersionStatusDTO versionStatusDTO = new VersionStatusDTO();
- versionStatusDTO.setStatus(4);
- Integer versionId = assoBusinessTaskVersionService.getVersionId(businessTask.getId());
- versionStatusDTO.setId(versionId);
- versionService.updateVersionStatus(versionStatusDTO);
- if (businessTask.getCreateId() != null) {
- this.sendVersionTaskDone(businessTask.getCreateId());
- }
- }
- public QiaoBiPersonSignUpDTO transFormToQiaoBiPersonSignUpDTO(RegistInformation registInformation) {
- QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO = new QiaoBiPersonSignUpDTO();
- qiaoBiPersonSignUpDTO.setEmail(registInformation.getPersonnelEmail());
- qiaoBiPersonSignUpDTO.setUsername(registInformation.getPersonnelUsername());
- qiaoBiPersonSignUpDTO.setPhoneNum(registInformation.getPersonnelPhone());
- qiaoBiPersonSignUpDTO.setPassword(registInformation.getPersonnelPassword());
- qiaoBiPersonSignUpDTO.setName(registInformation.getPersonnelName());
- qiaoBiPersonSignUpDTO.setTenantId(registInformation.getTenantId());
- return qiaoBiPersonSignUpDTO;
- }
- public void AddVersionBusinessTask(Integer versionId) {
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- BusinessTask businessTask = new BusinessTask();
- businessTask.setTaskType(2);
- businessTask.setStatus(0);
- businessTask.setTenantId(personnelVO.getTenantId());
- businessTask.setCreateId(loginUtils.getId());
- businessTask.insert();
- assoBusinessTaskVersionService.addAssoBusinessTaskVersion(businessTask.getId(), versionId);
- // 通知企业管理员
- this.sendVersionTask();
- }
- public void sendVersionTaskDone(Integer createId) {
- Personnel personnel = personnelService.getById(createId);
- if (personnel.getPersonnelEmail() != null) {
- mailSendService.sendAuditVersionDone(personnel.getPersonnelEmail());
- }
- }
- public void sendVersionTask() {
- List<Integer> personIds = roleService.getApplicationRootPersonId();
- if (personIds != null && personIds.size() > 0) {
- List<Personnel> personnelList = personnelService.getPersonByIds(personIds);
- if (personnelList != null && personnelList.size() > 0) {
- personnelList.forEach(item -> {
- if (item.getPersonnelEmail() != null) {
- mailSendService.sendAuditVersion(item.getPersonnelEmail());
- }
- });
- }
- }
- }
- }
|