|
@@ -0,0 +1,220 @@
|
|
|
+package cn.cslg.permission.service.qiaobi;
|
|
|
+
|
|
|
+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.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.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.DepartmentService;
|
|
|
+import cn.cslg.permission.service.PersonnelService;
|
|
|
+import cn.cslg.permission.service.PositionService;
|
|
|
+import cn.cslg.permission.service.RoleService;
|
|
|
+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.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+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;
|
|
|
+
|
|
|
+ public List<QueryAuditTaskVO> queryAuditTask(QueryAuditTaskDTO queryAuditTaskDTO) {
|
|
|
+ Integer tenantId = roleService.checkLoginPersonRole();
|
|
|
+ queryAuditTaskDTO.setTenantId(tenantId);
|
|
|
+ List<QueryAuditTaskVO> queryAuditTaskVOS = this.getBaseMapper().queryAuditTask(queryAuditTaskDTO);
|
|
|
+ this.loadQueryAuditTaskDTO(queryAuditTaskVOS);
|
|
|
+ return queryAuditTaskVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<QueryAuditTaskVO> loadQueryAuditTaskDTO(List<QueryAuditTaskVO> queryAuditTaskVOS) {
|
|
|
+ if (queryAuditTaskVOS == null || queryAuditTaskVOS.size() == 0) {
|
|
|
+ return queryAuditTaskVOS;
|
|
|
+ }
|
|
|
+ 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 (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);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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.getTaskIds();
|
|
|
+ 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();
|
|
|
+ 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.updateById();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void auditSignUpTaskPass(BusinessTask businessTask) {
|
|
|
+ //查询人员注册信息
|
|
|
+ Integer taskId = businessTask.getTaskType();
|
|
|
+ RegistInformation registInformation = registInformationService.getRegistInformationByTaskId(taskId);
|
|
|
+ if (registInformation == null) {
|
|
|
+ throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "任务无注册信息");
|
|
|
+ }
|
|
|
+ Integer vipTypeId = registInformation.getVipTypeId();
|
|
|
+ QiaoBiPersonSignUpDTO qiaoBiPersonSignUpDTO = this.transFormToQiaoBiPersonSignUpDTO(registInformation);
|
|
|
+ qiaoBiPersonSignUpDTO = personnelService.addPhoneSignUpPerson(qiaoBiPersonSignUpDTO);
|
|
|
+ //绑定版本
|
|
|
+ assoPersonVipTypeService.addVip(qiaoBiPersonSignUpDTO.getId(), vipTypeId, null);
|
|
|
+ this.updateAuditTaskResult(businessTask, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void auditSignUpTaskNotPass(BusinessTask businessTask) {
|
|
|
+
|
|
|
+ this.updateAuditTaskResult(businessTask, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void auditVersionTaskNotPass(BusinessTask businessTask) {
|
|
|
+
|
|
|
+ this.updateAuditTaskResult(businessTask, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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());
|
|
|
+ return qiaoBiPersonSignUpDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|