1、培训申请

dev
shenzhidan 2026-01-22 08:25:32 +08:00
parent 3739eb9d40
commit a0ddf27ccd
90 changed files with 4331 additions and 0 deletions

View File

@ -0,0 +1,87 @@
package com.zcloud.edu.web.training;
import com.zcloud.edu.api.training.TrainingApplyProcessServiceI;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessNodeCO;
import com.zcloud.edu.dto.training.TrainingApplyProcessAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyProcessPageQry;
import com.zcloud.edu.dto.training.TrainingApplyProcessUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
* @Author makejava
* @Date 2026-01-12 15:30:01
*/
@Api(tags = "培训申请审批流程表")
@RequestMapping("/${application.gateway}/trainingApplyProcess")
@RestController
@AllArgsConstructor
public class TrainingApplyProcessController {
private final TrainingApplyProcessServiceI trainingApplyProcessService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<TrainingApplyProcessCO> add(@Validated @RequestBody TrainingApplyProcessAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return trainingApplyProcessService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<TrainingApplyProcessCO> page(@RequestBody TrainingApplyProcessPageQry qry) {
return trainingApplyProcessService.listPage(qry);
}
@ApiOperation("审批流程图")
@PostMapping("/processDiagram")
public MultiResponse<TrainingApplyProcessNodeCO> getProcessDiagramByRecordId(@RequestBody TrainingApplyProcessPageQry qry) {
return MultiResponse.of(trainingApplyProcessService.getProcessDiagramByRecordId(qry));
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<TrainingApplyProcessCO> listAll() {
return MultiResponse.of(new ArrayList<TrainingApplyProcessCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<TrainingApplyProcessCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(new TrainingApplyProcessCO());
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
trainingApplyProcessService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
trainingApplyProcessService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TrainingApplyProcessUpdateCmd trainingApplyProcessUpdateCmd) {
trainingApplyProcessService.edit(trainingApplyProcessUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,87 @@
package com.zcloud.edu.web.training;
import com.zcloud.edu.api.training.TrainingApplyRecordServiceI;
import com.zcloud.edu.dto.training.TrainingApplyRecordAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyRecordPageQry;
import com.zcloud.edu.dto.training.TrainingApplyRecordUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
* @Author makejava
* @Date 2026-01-12 15:21:47
*/
@Api(tags = "培训申请记录")
@RequestMapping("/${application.gateway}/trainingApplyRecord")
@RestController
@AllArgsConstructor
public class TrainingApplyRecordController {
private final TrainingApplyRecordServiceI trainingApplyRecordService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<TrainingApplyRecordCO> add(@Validated @RequestBody TrainingApplyRecordAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return trainingApplyRecordService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<TrainingApplyRecordCO> page(@RequestBody TrainingApplyRecordPageQry qry) {
return trainingApplyRecordService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<TrainingApplyRecordCO> listAll() {
return MultiResponse.of(new ArrayList<TrainingApplyRecordCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<TrainingApplyRecordCO> getInfoById(@PathVariable("id") Long id) {
return trainingApplyRecordService.getInfoById(id);
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
trainingApplyRecordService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
trainingApplyRecordService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TrainingApplyRecordUpdateCmd trainingApplyRecordUpdateCmd) {
trainingApplyRecordService.edit(trainingApplyRecordUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("审批培训申请")
@PostMapping("/approve")
public SingleResponse approve(@Validated @RequestBody TrainingApplyRecordUpdateCmd cmd) {
trainingApplyRecordService.approve(cmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,80 @@
package com.zcloud.edu.web.training;
import com.zcloud.edu.api.training.TrainingApplyUserServiceI;
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
* @Author makejava
* @Date 2026-01-12 15:36:33
*/
@Api(tags = "培训申请人员")
@RequestMapping("/${application.gateway}/trainingApplyUser")
@RestController
@AllArgsConstructor
public class TrainingApplyUserController {
private final TrainingApplyUserServiceI trainingApplyUserService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<TrainingApplyUserCO> add(@Validated @RequestBody TrainingApplyUserAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return trainingApplyUserService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<TrainingApplyUserCO> page(@RequestBody TrainingApplyUserPageQry qry) {
return trainingApplyUserService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<TrainingApplyUserCO> listAll() {
return MultiResponse.of(new ArrayList<TrainingApplyUserCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<TrainingApplyUserCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(new TrainingApplyUserCO());
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
trainingApplyUserService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
trainingApplyUserService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TrainingApplyUserUpdateCmd trainingApplyUserUpdateCmd) {
trainingApplyUserService.edit(trainingApplyUserUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,80 @@
package com.zcloud.edu.web.training;
import com.zcloud.edu.api.training.TrainingUserServiceI;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
* @Author makejava
* @Date 2026-01-12 15:41:01
*/
@Api(tags = "培训人员")
@RequestMapping("/${application.gateway}/trainingUser")
@RestController
@AllArgsConstructor
public class TrainingUserController {
private final TrainingUserServiceI trainingUserService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<TrainingUserCO> add(@Validated @RequestBody TrainingUserAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return trainingUserService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<TrainingUserCO> page(@RequestBody TrainingUserPageQry qry) {
return trainingUserService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<TrainingUserCO> listAll() {
return MultiResponse.of(new ArrayList<TrainingUserCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<TrainingUserCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(new TrainingUserCO());
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
trainingUserService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
trainingUserService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TrainingUserUpdateCmd trainingUserUpdateCmd) {
trainingUserService.edit(trainingUserUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,28 @@
package com.zcloud.edu.command.convertor.training;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessNodeCO;
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:30:01
*/
@Mapper(componentModel = "spring")
public interface TrainingApplyProcessCoConvertor {
/**
* @param trainingApplyProcessDOs
* @return
*/
List<TrainingApplyProcessCO> converDOsToCOs(List<TrainingApplyProcessDO> trainingApplyProcessDOs);
List<TrainingApplyProcessNodeCO> converEsToCOs(List<TrainingApplyProcessNodeE> trainingApplyProcessNodeES);
}

View File

@ -0,0 +1,33 @@
package com.zcloud.edu.command.convertor.training;
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
import com.zcloud.edu.dto.clientobject.training.ApproveDetailCO;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:21:47
*/
@Mapper(componentModel = "spring", uses = {TrainingApplyUserCoConvertor.class})
public interface TrainingApplyRecordCoConvertor {
/**
* @param trainingApplyRecordDOs
* @return
*/
List<TrainingApplyRecordCO> converDOsToCOs(List<TrainingApplyRecordDO> trainingApplyRecordDOs);
TrainingApplyRecordCO converDOToCO(TrainingApplyRecordDO trainingApplyRecordDO);
TrainingApplyRecordCO converEToCO(TrainingApplyRecordE trainingApplyRecordE);
TrainingApplyRecordE converDetailDOToE(com.zcloud.edu.domain.model.training.TrainingApplyRecordDetailE trainingApplyRecordDO);
}

View File

@ -0,0 +1,29 @@
package com.zcloud.edu.command.convertor.training;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:36:34
*/
@Mapper(componentModel = "spring")
public interface TrainingApplyUserCoConvertor {
/**
* @param trainingApplyUserDOs
* @return
*/
List<TrainingApplyUserCO> converDOsToCOs(List<TrainingApplyUserDO> trainingApplyUserDOs);
List<TrainingApplyUserE> converDOsToEs(List<TrainingApplyUserDO> trainingApplyUserDOs);
List<TrainingApplyUserCO> converEsToCOs(List<TrainingApplyUserE> trainingApplyUserEs);
}

View File

@ -0,0 +1,24 @@
package com.zcloud.edu.command.convertor.training;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:41:02
*/
@Mapper(componentModel = "spring")
public interface TrainingUserCoConvertor {
/**
* @param trainingUserDOs
* @return
*/
List<TrainingUserCO> converDOsToCOs(List<TrainingUserDO> trainingUserDOs);
}

View File

@ -0,0 +1,50 @@
package com.zcloud.edu.command.query.training;
import com.zcloud.edu.command.convertor.training.TrainingApplyProcessCoConvertor;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessNodeCO;
import com.zcloud.edu.dto.training.TrainingApplyProcessPageQry;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:30:03
*/
@Component
@AllArgsConstructor
public class TrainingApplyProcessQueryExe {
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
private final TrainingApplyProcessCoConvertor trainingApplyProcessCoConvertor;
/**
*
*
* @param trainingApplyProcessPageQry
* @return
*/
public PageResponse<TrainingApplyProcessCO> execute(TrainingApplyProcessPageQry trainingApplyProcessPageQry) {
Map<String,Object> params = PageQueryHelper.toHashMap(trainingApplyProcessPageQry);
PageResponse<TrainingApplyProcessDO> pageResponse = trainingApplyProcessRepository.listPage(params);
List<TrainingApplyProcessCO> examCenterCOS = trainingApplyProcessCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public List<TrainingApplyProcessNodeCO> getProcessDiagramByRecordId(TrainingApplyProcessPageQry qry) {
List<TrainingApplyProcessNodeE> processList = trainingApplyProcessRepository.getProcessNodeByRecordId(qry.getEqTrainingApplyRecordId());
return trainingApplyProcessCoConvertor.converEsToCOs(processList);
}
}

View File

@ -0,0 +1,14 @@
package com.zcloud.edu.command.query.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyRecordGateway;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@AllArgsConstructor
public class TrainingApplyRecordDetailQryExe {
private final TrainingApplyRecordGateway trainingApplyRecordGateway;
private final TrainingApplyUserGateway trainingApplyUserGateway;
}

View File

@ -0,0 +1,91 @@
package com.zcloud.edu.command.query.training;
import com.zcloud.edu.command.convertor.training.TrainingApplyRecordCoConvertor;
import com.zcloud.edu.command.convertor.training.TrainingApplyUserCoConvertor;
import com.zcloud.edu.domain.model.training.ApproveDetailE;
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import com.zcloud.edu.dto.training.TrainingApplyRecordPageQry;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
import com.zcloud.edu.persistence.repository.training.TrainingApplyRecordRepository;
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:21:50
*/
@Component
@AllArgsConstructor
public class TrainingApplyRecordQueryExe {
private final TrainingApplyRecordRepository trainingApplyRecordRepository;
private final TrainingApplyRecordCoConvertor trainingApplyRecordCoConvertor;
private final TrainingApplyUserRepository trainingApplyUserRepository;
private final TrainingApplyUserCoConvertor trainingApplyUserCoConvertor;
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
/**
*
*
* @param trainingApplyRecordPageQry
* @return
*/
public PageResponse<TrainingApplyRecordCO> execute(TrainingApplyRecordPageQry trainingApplyRecordPageQry) {
Map<String,Object> params = PageQueryHelper.toHashMap(trainingApplyRecordPageQry);
PageResponse<TrainingApplyRecordDO> pageResponse = trainingApplyRecordRepository.listPage(params);
List<TrainingApplyRecordCO> examCenterCOS = trainingApplyRecordCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
/**
* sql
*/
public PageResponse<TrainingApplyRecordCO> executeBySql(TrainingApplyRecordPageQry trainingApplyRecordPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(trainingApplyRecordPageQry);
PageResponse<TrainingApplyRecordDO> pageResponse = trainingApplyRecordRepository.listPageSql(params);
List<TrainingApplyRecordCO> examCenterCOS = trainingApplyRecordCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
/**
*
*/
public TrainingApplyRecordCO getInfoById(Long id) {
com.zcloud.edu.domain.model.training.TrainingApplyRecordDetailE trainingApplyRecordDO = trainingApplyRecordRepository.getDetailById(id);
if (trainingApplyRecordDO == null) return null;
TrainingApplyRecordE trainingApplyRecordE = trainingApplyRecordCoConvertor.converDetailDOToE(trainingApplyRecordDO);
// 获取申请用户信息
List<TrainingApplyUserE> applyUser = trainingApplyUserCoConvertor.converDOsToEs(trainingApplyUserRepository.getByRecordId(trainingApplyRecordE.getTrainingApplyRecordId()));
trainingApplyRecordE.addApplyUsers(applyUser);
// 获取审批委托信息
List<ApproveDetailE> approveDetails = trainingApplyProcessRepository.getApproveDetailList(trainingApplyRecordE.getTrainingApplyRecordId());
trainingApplyRecordE.buildApproveDetails(approveDetails);
return trainingApplyRecordCoConvertor.converEToCO(trainingApplyRecordE);
}
/**
*
*/
public TrainingApplyRecordCO getSimpleInfoById(String trainingApplyRecordId) {
TrainingApplyRecordDO trainingApplyRecordDO = trainingApplyRecordRepository.getByTrainingRecordId(trainingApplyRecordId);
if (trainingApplyRecordDO == null) return null;
return trainingApplyRecordCoConvertor.converDOToCO(trainingApplyRecordDO);
}
}

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.command.query.training;
import com.zcloud.edu.command.convertor.training.TrainingApplyUserCoConvertor;
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:36:36
*/
@Component
@AllArgsConstructor
public class TrainingApplyUserQueryExe {
private final TrainingApplyUserRepository trainingApplyUserRepository;
private final TrainingApplyUserCoConvertor trainingApplyUserCoConvertor;
/**
*
*
* @param trainingApplyUserPageQry
* @return
*/
public PageResponse<TrainingApplyUserCO> execute(TrainingApplyUserPageQry trainingApplyUserPageQry) {
Map<String,Object> params = PageQueryHelper.toHashMap(trainingApplyUserPageQry);
PageResponse<TrainingApplyUserDO> pageResponse = trainingApplyUserRepository.listPage(params);
List<TrainingApplyUserCO> examCenterCOS = trainingApplyUserCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.command.query.training;
import com.zcloud.edu.command.convertor.training.TrainingUserCoConvertor;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.zcloud.edu.persistence.repository.training.TrainingUserRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:41:04
*/
@Component
@AllArgsConstructor
public class TrainingUserQueryExe {
private final TrainingUserRepository trainingUserRepository;
private final TrainingUserCoConvertor trainingUserCoConvertor;
/**
*
*
* @param trainingUserPageQry
* @return
*/
public PageResponse<TrainingUserCO> execute(TrainingUserPageQry trainingUserPageQry) {
Map<String,Object> params = PageQueryHelper.toHashMap(trainingUserPageQry);
PageResponse<TrainingUserDO> pageResponse = trainingUserRepository.listPage(params);
List<TrainingUserCO> examCenterCOS = trainingUserCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -0,0 +1,41 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import com.zcloud.edu.dto.training.TrainingApplyProcessAddCmd;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:29:59
*/
@Component
@AllArgsConstructor
public class TrainingApplyProcessAddExe {
private final TrainingApplyProcessGateway trainingApplyProcessGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(TrainingApplyProcessAddCmd cmd) {
TrainingApplyProcessE trainingApplyProcessE = new TrainingApplyProcessE();
BeanUtils.copyProperties(cmd, trainingApplyProcessE);
boolean res = false;
try {
res = trainingApplyProcessGateway.add(trainingApplyProcessE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:30:03
*/
@Component
@AllArgsConstructor
public class TrainingApplyProcessRemoveExe {
private final TrainingApplyProcessGateway trainingApplyProcessGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = trainingApplyProcessGateway.deletedTrainingApplyProcessById(id);
if(!res){
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = trainingApplyProcessGateway.deletedTrainingApplyProcessByIds(ids);
if(!res){
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,36 @@
package com.zcloud.edu.command.training;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.command.convertor.training.TrainingApplyRecordCoConvertor;
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import com.zcloud.edu.dto.training.TrainingApplyProcessUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:30:05
*/
@Component
@AllArgsConstructor
public class TrainingApplyProcessUpdateExe {
private final TrainingApplyProcessGateway trainingApplyProcessGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(TrainingApplyProcessUpdateCmd trainingApplyProcessUpdateCmd) {
TrainingApplyProcessE trainingApplyProcessE = new TrainingApplyProcessE();
BeanUtils.copyProperties(trainingApplyProcessUpdateCmd, trainingApplyProcessE);
boolean res = trainingApplyProcessGateway.update(trainingApplyProcessE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,92 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
import com.zcloud.edu.domain.gateway.training.TrainingApplyRecordGateway;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import com.zcloud.edu.dto.training.TrainingApplyRecordAddCmd;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:21:45
*/
@Component
@AllArgsConstructor
public class TrainingApplyRecordAddExe {
private final TrainingApplyRecordGateway trainingApplyRecordGateway;
private final TrainingApplyUserGateway trainingApplyUserGateway;
private final TrainingApplyProcessGateway trainingApplyProcessGateway;
@Transactional(rollbackFor = Exception.class)
public String execute(TrainingApplyRecordAddCmd cmd) {
TrainingApplyRecordE record = assembleRecord(cmd);
// 保存主记录
record.initiate();
boolean recordResult = trainingApplyRecordGateway.add(record);
if (!recordResult) {
throw new BizException("培训申请主记录保存失败");
}
// 保存申请人员
if (!CollectionUtils.isEmpty(record.getApplyUsers())) {
boolean userResult = trainingApplyUserGateway.addBatch(record.getApplyUsers());
if (!userResult) {
throw new BizException("培训申请人员保存失败");
}
}
// 保存流程记录
if (!CollectionUtils.isEmpty(record.getProcesses())) {
boolean processResult = trainingApplyProcessGateway.addBatch(record.getProcesses());
if (!processResult) {
throw new BizException("培训申请流程记录保存失败");
}
}
return record.getTrainingApplyRecordId();
}
/**
*
*/
private TrainingApplyRecordE assembleRecord(TrainingApplyRecordAddCmd cmd) {
TrainingApplyRecordE record = new TrainingApplyRecordE();
BeanUtils.copyProperties(cmd, record);
// 组装申请人员
if (!CollectionUtils.isEmpty(cmd.getApplyUsers())) {
List<TrainingApplyUserE> users = cmd.getApplyUsers().stream()
.map(this::toUserEntity)
.collect(Collectors.toList());
record.addApplyUsers(users);
}
return record;
}
/**
* DTO
*/
private TrainingApplyUserE toUserEntity(TrainingApplyUserAddCmd cmd) {
TrainingApplyUserE user = new TrainingApplyUserE();
BeanUtils.copyProperties(cmd, user);
return user;
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyRecordGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:21:50
*/
@Component
@AllArgsConstructor
public class TrainingApplyRecordRemoveExe {
private final TrainingApplyRecordGateway trainingApplyRecordGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = trainingApplyRecordGateway.deletedTrainingApplyRecordById(id);
if(!res){
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = trainingApplyRecordGateway.deletedTrainingApplyRecordByIds(ids);
if(!res){
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,69 @@
package com.zcloud.edu.command.training;
import com.alibaba.cola.exception.BizException;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
import com.zcloud.edu.domain.gateway.training.TrainingApplyRecordGateway;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
import com.zcloud.edu.dto.training.TrainingApplyRecordUpdateCmd;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import com.zcloud.edu.persistence.repository.training.TrainingUserRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:21:53
*/
@Component
@AllArgsConstructor
public class TrainingApplyRecordUpdateExe {
private final TrainingApplyRecordGateway trainingApplyRecordGateway;
private final TrainingApplyUserGateway trainingApplyUserGateway;
private final TrainingUserGateway trainingUserGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(TrainingApplyRecordUpdateCmd trainingApplyRecordUpdateCmd) {
TrainingApplyRecordE trainingApplyRecordE = new TrainingApplyRecordE();
BeanUtils.copyProperties(trainingApplyRecordUpdateCmd, trainingApplyRecordE);
boolean res = trainingApplyRecordGateway.update(trainingApplyRecordE);
if (!res) {
throw new BizException("修改失败");
}
}
/**
*
*/
@Transactional(rollbackFor = Exception.class)
public void executeApprove(TrainingApplyRecordUpdateCmd trainingApplyRecordUpdateCmd) {
TrainingApplyRecordE oldTrainingRecord = trainingApplyRecordGateway.getById(trainingApplyRecordUpdateCmd.getId());
TrainingApplyRecordE trainingApplyRecordE = new TrainingApplyRecordE();
BeanUtils.copyProperties(trainingApplyRecordUpdateCmd, trainingApplyRecordE);
trainingApplyRecordE.approve(oldTrainingRecord.getApprovalStatus());
trainingApplyRecordE.addTrainingUser();
boolean updateUserStatus = trainingApplyUserGateway.updateStatusByApprove(trainingApplyRecordE.getApplyUsers());
if (!updateUserStatus) {
throw new BizException("修改申请人员状态失败");
}
boolean addTrainingUser = trainingUserGateway.addBatch(trainingApplyRecordE.getTrainingUsers());
if (!addTrainingUser) {
throw new BizException("新增培训人员失败");
}
boolean res = trainingApplyRecordGateway.update(trainingApplyRecordE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,41 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:36:32
*/
@Component
@AllArgsConstructor
public class TrainingApplyUserAddExe {
private final TrainingApplyUserGateway trainingApplyUserGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(TrainingApplyUserAddCmd cmd) {
TrainingApplyUserE trainingApplyUserE = new TrainingApplyUserE();
BeanUtils.copyProperties(cmd, trainingApplyUserE);
boolean res = false;
try {
res = trainingApplyUserGateway.add(trainingApplyUserE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:36:37
*/
@Component
@AllArgsConstructor
public class TrainingApplyUserRemoveExe {
private final TrainingApplyUserGateway trainingApplyUserGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = trainingApplyUserGateway.deletedTrainingApplyUserById(id);
if(!res){
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = trainingApplyUserGateway.deletedTrainingApplyUserByIds(ids);
if(!res){
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,35 @@
package com.zcloud.edu.command.training;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:36:39
*/
@Component
@AllArgsConstructor
public class TrainingApplyUserUpdateExe {
private final TrainingApplyUserGateway trainingApplyUserGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(TrainingApplyUserUpdateCmd trainingApplyUserUpdateCmd) {
TrainingApplyUserE trainingApplyUserE = new TrainingApplyUserE();
BeanUtils.copyProperties(trainingApplyUserUpdateCmd, trainingApplyUserE);
boolean res = trainingApplyUserGateway.update(trainingApplyUserE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,41 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
import com.zcloud.edu.domain.model.training.TrainingUserE;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:41:00
*/
@Component
@AllArgsConstructor
public class TrainingUserAddExe {
private final TrainingUserGateway trainingUserGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(TrainingUserAddCmd cmd) {
TrainingUserE trainingUserE = new TrainingUserE();
BeanUtils.copyProperties(cmd, trainingUserE);
boolean res = false;
try {
res = trainingUserGateway.add(trainingUserE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.command.training;
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:41:05
*/
@Component
@AllArgsConstructor
public class TrainingUserRemoveExe {
private final TrainingUserGateway trainingUserGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = trainingUserGateway.deletedTrainingUserById(id);
if(!res){
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = trainingUserGateway.deletedTrainingUserByIds(ids);
if(!res){
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,35 @@
package com.zcloud.edu.command.training;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
import com.zcloud.edu.domain.model.training.TrainingUserE;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:41:08
*/
@Component
@AllArgsConstructor
public class TrainingUserUpdateExe {
private final TrainingUserGateway trainingUserGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(TrainingUserUpdateCmd trainingUserUpdateCmd) {
TrainingUserE trainingUserE = new TrainingUserE();
BeanUtils.copyProperties(trainingUserUpdateCmd, trainingUserE);
boolean res = trainingUserGateway.update(trainingUserE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,73 @@
package com.zcloud.edu.service;
import com.zcloud.edu.api.training.TrainingApplyProcessServiceI;
import com.zcloud.edu.command.query.training.TrainingApplyRecordQueryExe;
import com.zcloud.edu.command.training.TrainingApplyProcessAddExe;
import com.zcloud.edu.command.training.TrainingApplyProcessRemoveExe;
import com.zcloud.edu.command.training.TrainingApplyProcessUpdateExe;
import com.zcloud.edu.command.query.training.TrainingApplyProcessQueryExe;
import com.zcloud.edu.domain.enums.ApplyTypeEnum;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessNodeCO;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
import com.zcloud.edu.dto.training.TrainingApplyProcessAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyProcessPageQry;
import com.zcloud.edu.dto.training.TrainingApplyProcessUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:30:04
*/
@Service
@AllArgsConstructor
public class TrainingApplyProcessServiceImpl implements TrainingApplyProcessServiceI {
private final TrainingApplyProcessAddExe trainingApplyProcessAddExe;
private final TrainingApplyProcessUpdateExe trainingApplyProcessUpdateExe;
private final TrainingApplyProcessRemoveExe trainingApplyProcessRemoveExe;
private final TrainingApplyProcessQueryExe trainingApplyProcessQueryExe;
private final TrainingApplyRecordQueryExe trainingApplyRecordQueryExe;
@Override
public PageResponse<TrainingApplyProcessCO> listPage(TrainingApplyProcessPageQry qry){
return trainingApplyProcessQueryExe.execute(qry);
}
@Override
public SingleResponse add(TrainingApplyProcessAddCmd cmd) {
trainingApplyProcessAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(TrainingApplyProcessUpdateCmd trainingApplyProcessUpdateCmd) {
trainingApplyProcessUpdateExe.execute(trainingApplyProcessUpdateCmd);
}
@Override
public void remove(Long id) {
trainingApplyProcessRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
trainingApplyProcessRemoveExe.execute(ids);
}
@Override
public List<TrainingApplyProcessNodeCO> getProcessDiagramByRecordId(TrainingApplyProcessPageQry qry) {
return trainingApplyProcessQueryExe.getProcessDiagramByRecordId(qry);
}
}

View File

@ -0,0 +1,71 @@
package com.zcloud.edu.service;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.api.training.TrainingApplyRecordServiceI;
import com.zcloud.edu.command.training.TrainingApplyRecordAddExe;
import com.zcloud.edu.command.training.TrainingApplyRecordRemoveExe;
import com.zcloud.edu.command.training.TrainingApplyRecordUpdateExe;
import com.zcloud.edu.command.query.training.TrainingApplyRecordQueryExe;
import com.zcloud.edu.dto.training.TrainingApplyRecordAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyRecordPageQry;
import com.zcloud.edu.dto.training.TrainingApplyRecordUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:21:52
*/
@Service
@AllArgsConstructor
public class TrainingApplyRecordServiceImpl implements TrainingApplyRecordServiceI {
private final TrainingApplyRecordAddExe trainingApplyRecordAddExe;
private final TrainingApplyRecordUpdateExe trainingApplyRecordUpdateExe;
private final TrainingApplyRecordRemoveExe trainingApplyRecordRemoveExe;
private final TrainingApplyRecordQueryExe trainingApplyRecordQueryExe;
@Override
public PageResponse<TrainingApplyRecordCO> listPage(TrainingApplyRecordPageQry qry){
SSOUser ssoUser = AuthContext.getCurrentUser();
return trainingApplyRecordQueryExe.executeBySql(qry);
}
@Override
public SingleResponse add(TrainingApplyRecordAddCmd cmd) {
trainingApplyRecordAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(TrainingApplyRecordUpdateCmd trainingApplyRecordUpdateCmd) {
trainingApplyRecordUpdateExe.execute(trainingApplyRecordUpdateCmd);
}
@Override
public void remove(Long id) {
trainingApplyRecordRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
trainingApplyRecordRemoveExe.execute(ids);
}
@Override
public SingleResponse<TrainingApplyRecordCO> getInfoById(Long id) {
return SingleResponse.of(trainingApplyRecordQueryExe.getInfoById(id));
}
@Override
public void approve(TrainingApplyRecordUpdateCmd cmd) {
trainingApplyRecordUpdateExe.executeApprove(cmd);
}
}

View File

@ -0,0 +1,59 @@
package com.zcloud.edu.service;
import com.zcloud.edu.api.training.TrainingApplyUserServiceI;
import com.zcloud.edu.command.training.TrainingApplyUserAddExe;
import com.zcloud.edu.command.training.TrainingApplyUserRemoveExe;
import com.zcloud.edu.command.training.TrainingApplyUserUpdateExe;
import com.zcloud.edu.command.query.training.TrainingApplyUserQueryExe;
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:36:38
*/
@Service
@AllArgsConstructor
public class TrainingApplyUserServiceImpl implements TrainingApplyUserServiceI {
private final TrainingApplyUserAddExe trainingApplyUserAddExe;
private final TrainingApplyUserUpdateExe trainingApplyUserUpdateExe;
private final TrainingApplyUserRemoveExe trainingApplyUserRemoveExe;
private final TrainingApplyUserQueryExe trainingApplyUserQueryExe;
@Override
public PageResponse<TrainingApplyUserCO> listPage(TrainingApplyUserPageQry qry){
return trainingApplyUserQueryExe.execute(qry);
}
@Override
public SingleResponse add(TrainingApplyUserAddCmd cmd) {
trainingApplyUserAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(TrainingApplyUserUpdateCmd trainingApplyUserUpdateCmd) {
trainingApplyUserUpdateExe.execute(trainingApplyUserUpdateCmd);
}
@Override
public void remove(Long id) {
trainingApplyUserRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
trainingApplyUserRemoveExe.execute(ids);
}
}

View File

@ -0,0 +1,59 @@
package com.zcloud.edu.service;
import com.zcloud.edu.api.training.TrainingUserServiceI;
import com.zcloud.edu.command.training.TrainingUserAddExe;
import com.zcloud.edu.command.training.TrainingUserRemoveExe;
import com.zcloud.edu.command.training.TrainingUserUpdateExe;
import com.zcloud.edu.command.query.training.TrainingUserQueryExe;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
* @Author makejava
* @Date 2026-01-12 15:41:07
*/
@Service
@AllArgsConstructor
public class TrainingUserServiceImpl implements TrainingUserServiceI {
private final TrainingUserAddExe trainingUserAddExe;
private final TrainingUserUpdateExe trainingUserUpdateExe;
private final TrainingUserRemoveExe trainingUserRemoveExe;
private final TrainingUserQueryExe trainingUserQueryExe;
@Override
public PageResponse<TrainingUserCO> listPage(TrainingUserPageQry qry){
return trainingUserQueryExe.execute(qry);
}
@Override
public SingleResponse add(TrainingUserAddCmd cmd) {
trainingUserAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(TrainingUserUpdateCmd trainingUserUpdateCmd) {
trainingUserUpdateExe.execute(trainingUserUpdateCmd);
}
@Override
public void remove(Long id) {
trainingUserRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
trainingUserRemoveExe.execute(ids);
}
}

View File

@ -0,0 +1,36 @@
package com.zcloud.edu.api.training;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessNodeCO;
import com.zcloud.edu.dto.training.TrainingApplyProcessAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyProcessPageQry;
import com.zcloud.edu.dto.training.TrainingApplyProcessUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyProcessCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import java.util.List;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:30:04
*/
public interface TrainingApplyProcessServiceI {
PageResponse<TrainingApplyProcessCO> listPage(TrainingApplyProcessPageQry qry);
SingleResponse<TrainingApplyProcessCO> add(TrainingApplyProcessAddCmd cmd);
void edit(TrainingApplyProcessUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
/**
*
*/
List<TrainingApplyProcessNodeCO> getProcessDiagramByRecordId(TrainingApplyProcessPageQry qry);
}

View File

@ -0,0 +1,37 @@
package com.zcloud.edu.api.training;
import com.zcloud.edu.dto.training.TrainingApplyRecordAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyRecordPageQry;
import com.zcloud.edu.dto.training.TrainingApplyRecordUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:21:51
*/
public interface TrainingApplyRecordServiceI {
PageResponse<TrainingApplyRecordCO> listPage(TrainingApplyRecordPageQry qry);
SingleResponse<TrainingApplyRecordCO> add(TrainingApplyRecordAddCmd cmd);
void edit(TrainingApplyRecordUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
/**
*
*/
SingleResponse<TrainingApplyRecordCO> getInfoById(Long id);
/**
*
*/
void approve(TrainingApplyRecordUpdateCmd cmd);
}

View File

@ -0,0 +1,27 @@
package com.zcloud.edu.api.training;
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:36:37
*/
public interface TrainingApplyUserServiceI {
PageResponse<TrainingApplyUserCO> listPage(TrainingApplyUserPageQry qry);
SingleResponse<TrainingApplyUserCO> add(TrainingApplyUserAddCmd cmd);
void edit(TrainingApplyUserUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
}

View File

@ -0,0 +1,27 @@
package com.zcloud.edu.api.training;
import com.zcloud.edu.dto.training.TrainingUserAddCmd;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:41:06
*/
public interface TrainingUserServiceI {
PageResponse<TrainingUserCO> listPage(TrainingUserPageQry qry);
SingleResponse<TrainingUserCO> add(TrainingUserAddCmd cmd);
void edit(TrainingUserUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
}

View File

@ -0,0 +1,21 @@
package com.zcloud.edu.dto.clientobject.training;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ApproveDetailCO {
@ApiModelProperty(value = "审批类型 1-审批信息 2-委托信息")
private Integer approveType;
@ApiModelProperty(value = "审批企业")
private String approveCorpName;
@ApiModelProperty(value = "审批部门")
private String approveDeptName;
@ApiModelProperty(value = "审批人")
private String approveUserName;
}

View File

@ -0,0 +1,81 @@
package com.zcloud.edu.dto.clientobject.training;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:30:00
*/
@Data
public class TrainingApplyProcessCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingApplyProcessId;
//培训申请记录id
@ApiModelProperty(value = "培训申请记录id")
private String trainingApplyRecordId;
//审批类型(1:发起,2:审批3:委托)
@ApiModelProperty(value = "审批类型(1:发起,2:审批3:委托)")
private Long applyType;
//记录审批状态
@ApiModelProperty(value = "记录审批状态 审批状态1:待审批2:审批中,3:审批完成")
private Long approvalStatus;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//企业id
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
//部门id
@ApiModelProperty(value = "部门id")
private Long departmentId;
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//乐观锁
@ApiModelProperty(value = "乐观锁")
private Integer version;
//创建人
@ApiModelProperty(value = "创建人")
private Long createId;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//创建时间
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
//更新人
@ApiModelProperty(value = "更新人")
private Long updateId;
//修改人名称
@ApiModelProperty(value = "修改人名称")
private String updateName;
//更新时间
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
//描述
@ApiModelProperty(value = "描述")
private String remarks;
//是否删除
@ApiModelProperty(value = "是否删除")
private String deleteEnum;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//机构id
@ApiModelProperty(value = "机构id")
private Long orgId;
//环境
@ApiModelProperty(value = "环境")
private String env;
}

View File

@ -0,0 +1,26 @@
package com.zcloud.edu.dto.clientobject.training;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TrainingApplyProcessNodeCO {
@ApiModelProperty(value = "节点名称")
private String nodeName;
@ApiModelProperty(value = "审批状态")
private Long approvalStatus;
@ApiModelProperty(value = "姓名")
private String username;
@ApiModelProperty(value = "审批类型")
private Long applyType;
@ApiModelProperty(value = "时间")
private String time;
}

View File

@ -0,0 +1,112 @@
package com.zcloud.edu.dto.clientobject.training;
import com.alibaba.cola.dto.ClientObject;
import com.zcloud.edu.domain.model.training.ApproveDetailE;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:21:46
*/
@Data
public class TrainingApplyRecordCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingApplyRecordId;
//申请企业id
@ApiModelProperty(value = "申请企业id")
private Long applyCorpinfoId;
//企业名称
@ApiModelProperty(value = "申请企业名称")
private String applyCorpName;
//申请部门id
@ApiModelProperty(value = "申请部门id")
private Long applyDepartmentId;
//申请用户id
@ApiModelProperty(value = "申请用户id")
private Long applyUserId;
//审批企业id
@ApiModelProperty(value = "审批企业id")
private Long approvalCorpinfoId;
// 审批企业名称
@ApiModelProperty(value = "审批企业名称")
private String approvalCorpName;
//审批部门id
@ApiModelProperty(value = "审批部门id")
private Long approvalDepartmentId;
// 审批部门名称
@ApiModelProperty(value = "审批部门名称")
private String approvalDepartmentName;
//审批用户id
@ApiModelProperty(value = "审批用户id")
private Long approvalUserId;
// 审批用户名称
@ApiModelProperty(value = "审批用户名称")
private String approvalUserName;
// 关联项目
@ApiModelProperty(value = "关联项目")
private String projectName;
//审批状态1:待审批2:审批中,3:审批完成
@ApiModelProperty(value = "审批状态1:待审批2:审批中,3:审批完成")
private Long approvalStatus;
//乐观锁
@ApiModelProperty(value = "乐观锁")
private Integer version;
// 申请人数
@ApiModelProperty(value = " 申请人数")
private Integer applyUserCount;
//创建人
@ApiModelProperty(value = "创建人")
private Long createId;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//创建时间
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
//更新人
@ApiModelProperty(value = "更新人")
private Long updateId;
//修改人名称
@ApiModelProperty(value = "修改人名称")
private String updateName;
//更新时间
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
//描述
@ApiModelProperty(value = "描述")
private String remarks;
//是否删除
@ApiModelProperty(value = "是否删除")
private String deleteEnum;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//机构id
@ApiModelProperty(value = "机构id")
private Long orgId;
//环境
@ApiModelProperty(value = "环境")
private String env;
// 申请人名称
@ApiModelProperty(value = " 申请人名称")
private String applyUserName;
@ApiModelProperty(value = "申请人列表")
private List<TrainingApplyUserCO> applyUsers;
@ApiModelProperty(value = "审批委托信息")
private List<ApproveDetailE> approveDetails;
}

View File

@ -0,0 +1,81 @@
package com.zcloud.edu.dto.clientobject.training;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:36:33
*/
@Data
public class TrainingApplyUserCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingApplyUserId;
//培训申请记录id
@ApiModelProperty(value = "培训申请记录id")
private String trainingApplyRecordId;
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//申请状态1:待审批2:审批通过,3:审批不通过
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过")
private Long applyStatus;
//用户名称
@ApiModelProperty(value = "用户名称")
private String userName;
//身份证号
@ApiModelProperty(value = "身份证号")
private String idCard;
//关联项目
@ApiModelProperty(value = "关联项目")
private String projectName;
//乐观锁
@ApiModelProperty(value = "乐观锁")
private Integer version;
//创建人
@ApiModelProperty(value = "创建人")
private Long createId;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//创建时间
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
//更新人
@ApiModelProperty(value = "更新人")
private Long updateId;
//修改人名称
@ApiModelProperty(value = "修改人名称")
private String updateName;
//更新时间
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
//描述
@ApiModelProperty(value = "描述")
private String remarks;
//是否删除
@ApiModelProperty(value = "是否删除")
private String deleteEnum;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//机构id
@ApiModelProperty(value = "机构id")
private Long orgId;
//环境
@ApiModelProperty(value = "环境")
private String env;
}

View File

@ -0,0 +1,75 @@
package com.zcloud.edu.dto.clientobject.training;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:41:01
*/
@Data
public class TrainingUserCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingUserId;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//申请状态1:待审批2:审批通过,3:审批不通过
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过")
private Long applyStatus;
//有效期开始时间
@ApiModelProperty(value = "有效期开始时间")
private LocalDateTime startTime;
//有效期结束时间
@ApiModelProperty(value = "有效期结束时间")
private LocalDateTime endTime;
//考试状态:1.待考试2:考试通过,3:考试不通过
@ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过")
private Long examineStatus;
//乐观锁
@ApiModelProperty(value = "乐观锁")
private Integer version;
//创建人
@ApiModelProperty(value = "创建人")
private Long createId;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//创建时间
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
//更新人
@ApiModelProperty(value = "更新人")
private Long updateId;
//修改人名称
@ApiModelProperty(value = "修改人名称")
private String updateName;
//更新时间
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
//描述
@ApiModelProperty(value = "描述")
private String remarks;
//是否删除
@ApiModelProperty(value = "是否删除")
private String deleteEnum;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//机构id
@ApiModelProperty(value = "机构id")
private Long orgId;
//环境
@ApiModelProperty(value = "环境")
private String env;
}

View File

@ -0,0 +1,46 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:29:58
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingApplyProcessAddCmd extends Command {
@ApiModelProperty(value = "培训申请记录id", name = "trainingApplyRecordId", required = true)
// @NotEmpty(message = "培训申请记录id不能为空")
private String trainingApplyRecordId;
@ApiModelProperty(value = "审批类型(1:发起,2:审批3:委托)", name = "applyType", required = true)
@NotNull(message = "审批类型(1:发起,2:审批3:委托)不能为空")
private Long applyType;
@ApiModelProperty(value = "手机号", name = "phone", required = true)
// @NotEmpty(message = "手机号不能为空")
private String phone;
@ApiModelProperty(value = "企业id", name = "corpinfoId", required = true)
@NotNull(message = "企业id不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "部门id", name = "departmentId", required = true)
@NotNull(message = "部门id不能为空")
private Long departmentId;
@ApiModelProperty(value = "用户id", name = "userId", required = true)
@NotNull(message = "用户id不能为空")
private Long userId;
}

View File

@ -0,0 +1,30 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:30:03
*/
@Data
public class TrainingApplyProcessPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeTrainingApplyProcessId;
private String eqTrainingApplyRecordId;
}

View File

@ -0,0 +1,46 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:30:05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingApplyProcessUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "trainingApplyProcessId", required = true)
@NotEmpty(message = "业务主键id不能为空")
private String trainingApplyProcessId;
@ApiModelProperty(value = "培训申请记录id", name = "trainingApplyRecordId", required = true)
@NotEmpty(message = "培训申请记录id不能为空")
private String trainingApplyRecordId;
@ApiModelProperty(value = "审批类型(1:发起,2:审批3:委托)", name = "applyType", required = true)
@NotNull(message = "审批类型(1:发起,2:审批3:委托)不能为空")
private Long applyType;
@ApiModelProperty(value = "手机号", name = "phone", required = true)
@NotEmpty(message = "手机号不能为空")
private String phone;
@ApiModelProperty(value = "企业id", name = "corpinfoId", required = true)
@NotNull(message = "企业id不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "部门id", name = "departmentId", required = true)
@NotNull(message = "部门id不能为空")
private Long departmentId;
@ApiModelProperty(value = "用户id", name = "userId", required = true)
@NotNull(message = "用户id不能为空")
private Long userId;
}

View File

@ -0,0 +1,62 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:21:35
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingApplyRecordAddCmd extends Command {
@ApiModelProperty(value = "申请企业id", name = "applyCorpinfoId", required = true)
@NotNull(message = "申请企业id不能为空")
private Long applyCorpinfoId;
@ApiModelProperty(value = "申请部门id", name = "applyDepartmentId", required = true)
@NotNull(message = "申请部门id不能为空")
private Long applyDepartmentId;
@ApiModelProperty(value = "申请用户id", name = "applyUserId", required = true)
@NotNull(message = "申请用户id不能为空")
private Long applyUserId;
@ApiModelProperty(value = "审批企业id", name = "approvalCorpinfoId", required = true)
@NotNull(message = "审批企业id不能为空")
private Long approvalCorpinfoId;
@ApiModelProperty(value = "审批部门id", name = "approvalDepartmentId", required = true)
@NotNull(message = "审批部门id不能为空")
private Long approvalDepartmentId;
@ApiModelProperty(value = "审批用户id", name = "approvalUserId", required = true)
@NotNull(message = "审批用户id不能为空")
private Long approvalUserId;
@ApiModelProperty(value = "关联项目", name = "projectName", required = true)
@NotEmpty(message = "关联项目不能为空")
private String projectName;
@ApiModelProperty(value = "审批状态1:待审批2:审批中,3:审批完成", name = "approvalStatus", required = true)
// @NotNull(message = "审批状态1:待审批2:审批中,3:审批完成不能为空")
private Long approvalStatus;
@ApiModelProperty(value = "申请人员列表")
@NotNull(message = "申请人员列表不能为空")
@Valid
private List<TrainingApplyUserAddCmd> applyUsers;
}

View File

@ -0,0 +1,38 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:21:50
*/
@Data
public class TrainingApplyRecordPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeTrainingApplyRecordId;
@ApiModelProperty(value = "审批状态1:待审批2:审批通过,3:审批完成", name = "approvalStatus", required = false)
private Long eqApprovalStatus;
@ApiModelProperty(value = "审批人ID", name = "approvalUserId", required = false)
private Long eqApprovalUserId;
@ApiModelProperty(value = "申请企业ID", name = "applyCorpinfoId", required = false)
private Long eqApplyCorpinfoId;
}

View File

@ -0,0 +1,48 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
import java.util.List;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:21:52
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingApplyRecordUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "trainingApplyRecordId", required = true)
private String trainingApplyRecordId;
@ApiModelProperty(value = "申请企业id", name = "applyCorpinfoId", required = true)
private Long applyCorpinfoId;
@ApiModelProperty(value = "申请部门id", name = "applyDepartmentId", required = true)
private Long applyDepartmentId;
@ApiModelProperty(value = "申请用户id", name = "applyUserId", required = true)
private Long applyUserId;
@ApiModelProperty(value = "审批企业id", name = "approvalCorpinfoId", required = true)
private Long approvalCorpinfoId;
@ApiModelProperty(value = "审批部门id", name = "approvalDepartmentId", required = true)
private Long approvalDepartmentId;
@ApiModelProperty(value = "审批用户id", name = "approvalUserId", required = true)
private Long approvalUserId;
@ApiModelProperty(value = "关联项目id", name = "projectName", required = true)
private String projectName;
@ApiModelProperty(value = "审批状态1:待审批2:审批中,3:审批完成", name = "approvalStatus", required = true)
private Long approvalStatus;
@ApiModelProperty(value = "申请用户")
private List<TrainingApplyUserE> applyUsers;
}

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:36:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingApplyUserAddCmd extends Command {
@ApiModelProperty(value = "培训申请记录id", name = "trainingApplyRecordId", required = true)
// @NotEmpty(message = "培训申请记录id不能为空")
private String trainingApplyRecordId;
@ApiModelProperty(value = "用户id", name = "userId", required = true)
@NotNull(message = "用户id不能为空")
private Long userId;
@ApiModelProperty(value = "手机号", name = "phone", required = true)
@NotEmpty(message = "手机号不能为空")
private String phone;
@ApiModelProperty(value = "身份证号" , name = "idCard", required = true)
@NotEmpty(message = "身份证号不能为空")
private String idCard;
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过", name = "applyStatus", required = true)
// @NotNull(message = "申请状态1:待审批2:审批通过,3:审批不通过不能为空")
private Long applyStatus;
}

View File

@ -0,0 +1,28 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:36:36
*/
@Data
public class TrainingApplyUserPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeTrainingApplyUserId;
}

View File

@ -0,0 +1,37 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:36:39
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingApplyUserUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "trainingApplyUserId", required = true)
private String trainingApplyUserId;
@ApiModelProperty(value = "培训申请记录id", name = "trainingApplyRecordId", required = true)
private String trainingApplyRecordId;
@ApiModelProperty(value = "用户id", name = "userId", required = true)
private Long userId;
@ApiModelProperty(value = "手机号", name = "phone", required = true)
private String phone;
@ApiModelProperty(value = "身份证号" , name = "idCard", required = true)
private String idCard;
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过", name = "applyStatus", required = true)
private Long applyStatus;
}

View File

@ -0,0 +1,43 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
import java.time.LocalDateTime;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:40:59
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingUserAddCmd extends Command {
@ApiModelProperty(value = "手机号", name = "phone", required = true)
@NotEmpty(message = "手机号不能为空")
private String phone;
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过", name = "applyStatus", required = true)
@NotNull(message = "申请状态1:待审批2:审批通过,3:审批不通过不能为空")
private Long applyStatus;
@ApiModelProperty(value = "有效期开始时间", name = "startTime", required = true)
@NotNull(message = "有效期开始时间不能为空")
private LocalDateTime startTime;
@ApiModelProperty(value = "有效期结束时间", name = "endTime", required = true)
@NotNull(message = "有效期结束时间不能为空")
private LocalDateTime endTime;
@ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过", name = "examineStatus", required = true)
@NotNull(message = "考试状态:1.待考试2:考试通过,3:考试不通过不能为空")
private Long examineStatus;
}

View File

@ -0,0 +1,28 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:41:04
*/
@Data
public class TrainingUserPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeTrainingUserId;
}

View File

@ -0,0 +1,44 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
import java.time.LocalDateTime;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:41:08
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrainingUserUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "trainingUserId", required = true)
@NotEmpty(message = "业务主键id不能为空")
private String trainingUserId;
@ApiModelProperty(value = "手机号", name = "phone", required = true)
@NotEmpty(message = "手机号不能为空")
private String phone;
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过", name = "applyStatus", required = true)
@NotNull(message = "申请状态1:待审批2:审批通过,3:审批不通过不能为空")
private Long applyStatus;
@ApiModelProperty(value = "有效期开始时间", name = "startTime", required = true)
@NotNull(message = "有效期开始时间不能为空")
private LocalDateTime startTime;
@ApiModelProperty(value = "有效期结束时间", name = "endTime", required = true)
@NotNull(message = "有效期结束时间不能为空")
private LocalDateTime endTime;
@ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过", name = "examineStatus", required = true)
@NotNull(message = "考试状态:1.待考试2:考试通过,3:考试不通过不能为空")
private Long examineStatus;
}

View File

@ -0,0 +1,34 @@
package com.zcloud.edu.domain.enums;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum ApplyStatusEnum {
/** 待审批 */
PENDING(1L, "待审批"),
/** 审批通过 */
APPROVED(2L, "审批通过"),
/** 审批不通过 */
REJECTED(3L, "审批不通过");
private final Long code;
private final String desc;
public static ApplyStatusEnum of(Long code) {
for (ApplyStatusEnum status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
throw new BizException("未知的申请状态: " + code);
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.edu.domain.enums;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum ApplyTypeEnum {
/** 发起 */
INITIATE(1L, "发起"),
/** 审批 */
APPROVAL(2L, "审批"),
/** 委托 */
DELEGATE(3L, "委托");
private final Long code;
private final String desc;
public static ApplyTypeEnum of(Long code) {
for (ApplyTypeEnum type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
throw new BizException("未知的审批类型: " + code);
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.edu.domain.enums;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum ApprovalStatusEnum {
/** 待审批 */
PENDING(1L, "待审批"),
/** 审批中 */
APPROVING(2L, "审批中"),
/** 审批完成 */
APPROVED(3L, "审批完成");
private final Long code;
private final String desc;
public static ApprovalStatusEnum of(Long code) {
for (ApprovalStatusEnum status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
throw new BizException("未知的审批状态: " + code);
}
}

View File

@ -0,0 +1,35 @@
package com.zcloud.edu.domain.enums;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum ExamineStatusEnum {
/** 待考试 */
PENDING(1L, "待考试"),
/** 考试通过 */
PASSED(2L, "考试通过"),
/** 考试不通过 */
FAILED(3L, "考试不通过");
private final Long code;
private final String desc;
public static ExamineStatusEnum of(Long code) {
for (ExamineStatusEnum status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
throw new BizException("未知的考试状态: " + code);
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.domain.gateway.training;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import java.util.List;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:30:02
*/
public interface TrainingApplyProcessGateway {
/**
*
*/
Boolean add(TrainingApplyProcessE trainingApplyProcessE) ;
/**
*
*/
Boolean addBatch(List<TrainingApplyProcessE> trainingApplyProcessEList);
/**
*
*/
Boolean update(TrainingApplyProcessE trainingApplyProcessE);
/**
*
*/
Boolean deletedTrainingApplyProcessById(Long id);
Boolean deletedTrainingApplyProcessByIds(Long[] id);
/**
* ID
*/
List<TrainingApplyProcessE> listByRecordId(String trainingApplyRecordId);
}

View File

@ -0,0 +1,38 @@
package com.zcloud.edu.domain.gateway.training;
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:21:48
*/
public interface TrainingApplyRecordGateway {
/**
*
*/
Boolean add(TrainingApplyRecordE trainingApplyRecordE) ;
/**
*
*/
Boolean update(TrainingApplyRecordE trainingApplyRecordE);
/**
*
*/
Boolean deletedTrainingApplyRecordById(Long id);
Boolean deletedTrainingApplyRecordByIds(Long[] id);
/**
* ID
*/
TrainingApplyRecordE getById(Long id);
/**
*
*/
Boolean approve(TrainingApplyRecordE trainingApplyRecordE);
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.domain.gateway.training;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import java.util.List;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:36:35
*/
public interface TrainingApplyUserGateway {
/**
*
*/
Boolean add(TrainingApplyUserE trainingApplyUserE) ;
/**
*
*/
Boolean addBatch(List<TrainingApplyUserE> trainingApplyUserEList);
/**
*
*/
Boolean update(TrainingApplyUserE trainingApplyUserE);
/**
*
*/
Boolean deletedTrainingApplyUserById(Long id);
Boolean deletedTrainingApplyUserByIds(Long[] id);
/**
*
*/
Boolean updateStatusByApprove(List<TrainingApplyUserE> trainingApplyUserE);
}

View File

@ -0,0 +1,33 @@
package com.zcloud.edu.domain.gateway.training;
import com.zcloud.edu.domain.model.training.TrainingUserE;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:41:03
*/
public interface TrainingUserGateway {
/**
*
*/
Boolean add(TrainingUserE trainingUserE) ;
/**
*
*/
Boolean addBatch(java.util.List<TrainingUserE> trainingUserEList);
/**
*
*/
Boolean update(TrainingUserE trainingUserE);
/**
*
*/
Boolean deletedTrainingUserById(Long id);
Boolean deletedTrainingUserByIds(Long[] id);
}

View File

@ -0,0 +1,22 @@
package com.zcloud.edu.domain.model.training;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ApproveDetailE {
@ApiModelProperty(value = "审批类型 1-审批信息 2-委托信息")
private Integer approveType;
@ApiModelProperty(value = "审批企业")
private String approveCorpName;
@ApiModelProperty(value = "审批部门")
private String approveDeptName;
@ApiModelProperty(value = "审批人")
private String approveUserName;
}

View File

@ -0,0 +1,100 @@
package com.zcloud.edu.domain.model.training;
import cn.hutool.core.util.IdUtil;
import com.jjb.saas.framework.domain.model.BaseE;
import com.zcloud.edu.domain.enums.ApplyTypeEnum;
import lombok.Data;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:30:01
*/
@Data
public class TrainingApplyProcessE extends BaseE {
//业务主键id
private String trainingApplyProcessId;
//培训申请记录id
private String trainingApplyRecordId;
//审批类型(1:发起,2:审批3:委托)
private Long applyType;
//手机号
private String phone;
//企业id
private Long corpinfoId;
//部门id
private Long departmentId;
//用户id
private Long userId;
// 流程审批状态 审批状态1:待审批2:审批中,3:审批完成
private Long approvalStatus;
/**
*
*/
public static TrainingApplyProcessE createInitiate(
String recordId, Long applyType, Long corpinfoId, Long departmentId, Long userId, String remarks) {
TrainingApplyProcessE process = new TrainingApplyProcessE();
process.setTrainingApplyProcessId(IdUtil.simpleUUID());
process.setTrainingApplyRecordId(recordId);
process.setApplyType(applyType);
process.setCorpinfoId(corpinfoId);
process.setDepartmentId(departmentId);
process.setUserId(userId);
process.setRemarks(remarks);
return process;
}
/**
*
*/
public static TrainingApplyProcessE createApproval(
String recordId, Long corpinfoId, Long departmentId, Long userId, String remarks) {
TrainingApplyProcessE process = new TrainingApplyProcessE();
process.setTrainingApplyProcessId(IdUtil.simpleUUID());
process.setTrainingApplyRecordId(recordId);
process.setApplyType(ApplyTypeEnum.APPROVAL.getCode());
process.setCorpinfoId(corpinfoId);
process.setDepartmentId(departmentId);
process.setUserId(userId);
process.setRemarks(remarks);
return process;
}
/**
*
*/
public static TrainingApplyProcessE createDelegate(
String recordId, Long corpinfoId, Long departmentId, Long userId, String remarks) {
TrainingApplyProcessE process = new TrainingApplyProcessE();
process.setTrainingApplyProcessId(IdUtil.simpleUUID());
process.setTrainingApplyRecordId(recordId);
process.setApplyType(ApplyTypeEnum.DELEGATE.getCode());
process.setCorpinfoId(corpinfoId);
process.setDepartmentId(departmentId);
process.setUserId(userId);
process.setRemarks(remarks);
return process;
}
/**
*
*/
public void setApprovalStatus(Long approvalStatus) {
if (approvalStatus == null) return;
this.approvalStatus = approvalStatus;
}
/**
*
*/
private boolean needApprovalStatus(Long applyType) {
return ApplyTypeEnum.APPROVAL.getCode().equals(applyType)
|| ApplyTypeEnum.DELEGATE.getCode().equals(applyType);
}
}

View File

@ -0,0 +1,24 @@
package com.zcloud.edu.domain.model.training;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TrainingApplyProcessNodeE {
@ApiModelProperty(value = "节点名称")
private String nodeName;
@ApiModelProperty(value = "审批状态")
private Long approvalStatus;
@ApiModelProperty(value = "姓名")
private String username;
@ApiModelProperty(value = "审批类型")
private Long applyType;
@ApiModelProperty(value = "时间")
private String time;
}

View File

@ -0,0 +1,19 @@
package com.zcloud.edu.domain.model.training;
import lombok.Data;
@Data
public class TrainingApplyRecordDetailE extends TrainingApplyRecordE {
// 主表字段
private Long id;
private String trainingApplyRecordId;
// 关联查询字段
private String applyUserName;
private String applyCorpName;
private String approvalUserName;
private String approvalDepartmentName;
private String approvalCorpName;
}

View File

@ -0,0 +1,162 @@
package com.zcloud.edu.domain.model.training;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.cola.exception.BizException;
import com.jjb.saas.framework.domain.model.BaseE;
import com.zcloud.edu.domain.enums.ApplyStatusEnum;
import com.zcloud.edu.domain.enums.ApplyTypeEnum;
import com.zcloud.edu.domain.enums.ApprovalStatusEnum;
import com.zcloud.edu.domain.enums.ExamineStatusEnum;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:21:48
*/
@Data
public class TrainingApplyRecordE extends BaseE {
//业务主键id
private String trainingApplyRecordId;
//申请企业id
private Long applyCorpinfoId;
//申请企业名称
private String applyCorpName;
//申请部门id
private Long applyDepartmentId;
//申请用户id
private Long applyUserId;
//申请用户名称
private String applyUserName;
//审批企业id
private Long approvalCorpinfoId;
//审批企业名称
private String approvalCorpName;
//审批部门id
private Long approvalDepartmentId;
//审批部门名称
private String approvalDepartmentName;
//审批用户id
private Long approvalUserId;
//审批用户名称
private String approvalUserName;
// 关联项目
private String projectName;
//审批状态1:待审批2:审批中,3:审批完成
private Long approvalStatus;
// 申请人员列表
private List<TrainingApplyUserE> applyUsers = new ArrayList<>();
// 审批流程列表
private List<TrainingApplyProcessE> processes = new ArrayList<>();
// 审批人员列表
private List<TrainingApplyUserE> approvalUsers;
// 审批和委托信息
private List<ApproveDetailE> approveDetails;
// 培训人员
private List<TrainingUserE> trainingUsers = new ArrayList<>();
/**
*
*/
public void initiate() {
this.trainingApplyRecordId = StrUtil.isNotBlank(this.trainingApplyRecordId) ? this.trainingApplyRecordId : IdUtil.simpleUUID();
this.approvalStatus = ApprovalStatusEnum.PENDING.getCode();
// 初始化申请人员
if (!CollectionUtils.isEmpty(this.applyUsers)) {
this.applyUsers.forEach(user -> {
user.setTrainingApplyUserId(StrUtil.isBlank(user.getTrainingApplyUserId()) ? IdUtil.simpleUUID() : user.getTrainingApplyUserId());
user.setTrainingApplyRecordId(this.trainingApplyRecordId);
user.setApplyStatus(ApplyStatusEnum.PENDING.getCode());
});
}
// 流程
TrainingApplyProcessE initiateProcess = TrainingApplyProcessE.createInitiate(
this.trainingApplyRecordId,
ApplyTypeEnum.INITIATE.getCode(),
this.applyCorpinfoId,
this.applyDepartmentId,
this.applyUserId,
"发起培训申请"
);
this.processes.add(initiateProcess);
TrainingApplyProcessE process = TrainingApplyProcessE.createInitiate(
this.trainingApplyRecordId,
ApplyTypeEnum.APPROVAL.getCode(),
this.approvalCorpinfoId,
this.approvalDepartmentId,
this.approvalUserId,
"等待审批"
);
this.processes.add(process);
}
/**
*
*/
public void approve(Long approvalStatus){
// 状态校验
if (!ApprovalStatusEnum.PENDING.getCode().equals(approvalStatus)
&& !ApprovalStatusEnum.APPROVING.getCode().equals(approvalStatus)) {
throw new BizException("只有待审批或审批中状态才能进行审批");
}
if (CollectionUtils.isEmpty(this.applyUsers)) {
throw new BizException("申请人员列表不能为空");
}
}
/**
*
*/
public void addTrainingUser() {
if (this.applyUsers == null) return;
applyUsers.forEach(user -> {
TrainingUserE trainingUser = new TrainingUserE();
trainingUser.setTrainingUserId(IdUtil.simpleUUID());
trainingUser.setPhone(user.getPhone());
trainingUser.setApplyStatus(user.getApplyStatus());
trainingUser.setExamineStatus(ExamineStatusEnum.PENDING.getCode());
this.trainingUsers.add(trainingUser);
});
}
/**
*
*/
public void addApplyUsers(List<TrainingApplyUserE> users) {
if (!CollectionUtils.isEmpty(users)) {
this.applyUsers.addAll(users);
if (StrUtil.isNotBlank(this.projectName)) {
applyUsers.forEach(applyUser -> {applyUser.setProjectName(projectName);});
}
}
}
/**
*
*/
public void buildApproveDetails(List<ApproveDetailE> approveDetails) {
if (!CollectionUtils.isEmpty(approveDetails)) {
this.approveDetails = approveDetails;
}
}
}

View File

@ -0,0 +1,33 @@
package com.zcloud.edu.domain.model.training;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:36:34
*/
@Data
public class TrainingApplyUserE extends BaseE {
//主键ID
private Long id;
//业务主键id
private String trainingApplyUserId;
//培训申请记录id
private String trainingApplyRecordId;
//用户id
private Long userId;
//手机号
private String phone;
//申请状态1:待审批2:审批通过,3:审批不通过
private Long applyStatus;
//身份证号
private String idCard;
//关联项目
private String projectName;
//用户名称
private String userName;
}

View File

@ -0,0 +1,46 @@
package com.zcloud.edu.domain.model.training;
import cn.hutool.core.util.IdUtil;
import com.jjb.saas.framework.domain.model.BaseE;
import com.zcloud.edu.domain.enums.ExamineStatusEnum;
import lombok.Data;
import java.time.LocalDateTime;
/**
* web-domain
* @Author makejava
* @Date 2026-01-12 15:41:02
*/
@Data
public class TrainingUserE extends BaseE {
//业务主键id
private String trainingUserId;
//手机号
private String phone;
//申请状态1:待审批2:审批通过,3:审批不通过
private Long applyStatus;
//有效期开始时间
private LocalDateTime startTime;
//有效期结束时间
private LocalDateTime endTime;
//考试状态:1.待考试2:考试通过,3:考试不通过
private Long examineStatus;
/**
*
*/
public static TrainingUserE fromApplyUser(TrainingApplyUserE applyUser) {
TrainingUserE trainingUser = new TrainingUserE();
trainingUser.setTrainingUserId(IdUtil.simpleUUID());
trainingUser.setPhone(applyUser.getPhone());
trainingUser.setApplyStatus(applyUser.getApplyStatus());
trainingUser.setExamineStatus(ExamineStatusEnum.PENDING.getCode());
// 默认有效期1年
trainingUser.setStartTime(LocalDateTime.now());
trainingUser.setEndTime(LocalDateTime.now().plusYears(1));
return trainingUser;
}
}

View File

@ -0,0 +1,87 @@
package com.zcloud.edu.gatewayimpl.training;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.edu.domain.gateway.training.TrainingApplyProcessGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
import lombok.AllArgsConstructor;
import com.zcloud.gbscommon.utils.Tools;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:30:02
*/
@Service
@AllArgsConstructor
public class TrainingApplyProcessGatewayImpl implements TrainingApplyProcessGateway {
private final TrainingApplyProcessRepository trainingApplyProcessRepository;
@Override
public Boolean add(TrainingApplyProcessE trainingApplyProcessE) {
TrainingApplyProcessDO d = new TrainingApplyProcessDO(StrUtil.isBlank(trainingApplyProcessE.getTrainingApplyProcessId())
? Tools.get32UUID() : trainingApplyProcessE.getTrainingApplyProcessId());
BeanUtils.copyProperties(trainingApplyProcessE, d,"trainingApplyProcessId");
trainingApplyProcessRepository.save(d);
return true;
}
@Override
public Boolean addBatch(List<TrainingApplyProcessE> processes) {
if (CollectionUtils.isEmpty(processes)) {
return true;
}
List<TrainingApplyProcessDO> processDOList = processes.stream()
.map(process -> {
TrainingApplyProcessDO processDO = new TrainingApplyProcessDO();
BeanUtils.copyProperties(process, processDO);
return processDO;
})
.collect(Collectors.toList());
return trainingApplyProcessRepository.saveBatch(processDOList);
}
@Override
public Boolean update(TrainingApplyProcessE trainingApplyProcessE) {
TrainingApplyProcessDO d = new TrainingApplyProcessDO();
BeanUtils.copyProperties(trainingApplyProcessE, d);
trainingApplyProcessRepository.updateById(d);
return true;
}
@Override
public Boolean deletedTrainingApplyProcessById(Long id) {
return trainingApplyProcessRepository.removeById(id);
}
@Override
public Boolean deletedTrainingApplyProcessByIds(Long[] ids) {
return trainingApplyProcessRepository.removeByIds(Arrays.asList(ids));
}
@Override
public List<TrainingApplyProcessE> listByRecordId(String trainingApplyRecordId) {
List<TrainingApplyProcessDO> processDOList = trainingApplyProcessRepository.list(new LambdaQueryWrapper<TrainingApplyProcessDO>()
.eq(TrainingApplyProcessDO::getTrainingApplyRecordId, trainingApplyRecordId)
);
return processDOList.stream()
.map(processDO -> {
TrainingApplyProcessE process = new TrainingApplyProcessE();
BeanUtils.copyProperties(processDO, process);
return process;
})
.collect(Collectors.toList());
}
}

View File

@ -0,0 +1,72 @@
package com.zcloud.edu.gatewayimpl.training;
import cn.hutool.core.util.StrUtil;
import com.zcloud.edu.domain.gateway.training.TrainingApplyRecordGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyRecordE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import com.zcloud.edu.persistence.repository.training.TrainingApplyRecordRepository;
import lombok.AllArgsConstructor;
import com.zcloud.gbscommon.utils.Tools;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:21:49
*/
@Service
@AllArgsConstructor
public class TrainingApplyRecordGatewayImpl implements TrainingApplyRecordGateway {
private final TrainingApplyRecordRepository trainingApplyRecordRepository;
@Override
public Boolean add(TrainingApplyRecordE trainingApplyRecordE) {
TrainingApplyRecordDO d = new TrainingApplyRecordDO(StrUtil.isNotBlank(trainingApplyRecordE.getTrainingApplyRecordId())
? trainingApplyRecordE.getTrainingApplyRecordId() :Tools.get32UUID());
BeanUtils.copyProperties(trainingApplyRecordE, d,"trainingApplyRecordId");
trainingApplyRecordRepository.save(d);
return true;
}
@Override
public Boolean update(TrainingApplyRecordE trainingApplyRecordE) {
TrainingApplyRecordDO d = new TrainingApplyRecordDO();
BeanUtils.copyProperties(trainingApplyRecordE, d);
trainingApplyRecordRepository.updateById(d);
return true;
}
@Override
public Boolean deletedTrainingApplyRecordById(Long id) {
return trainingApplyRecordRepository.removeById(id);
}
@Override
public Boolean deletedTrainingApplyRecordByIds(Long[] ids) {
return trainingApplyRecordRepository.removeByIds(Arrays.asList(ids));
}
/**
*
*/
@Override
public TrainingApplyRecordE getById(Long id) {
TrainingApplyRecordDO recordDO = trainingApplyRecordRepository.getById(id);
if (recordDO == null) {
return null;
}
TrainingApplyRecordE recordE = new TrainingApplyRecordE();
BeanUtils.copyProperties(recordDO, recordE);
return recordE;
}
@Override
public Boolean approve(TrainingApplyRecordE trainingApplyRecordE) {
return null;
}
}

View File

@ -0,0 +1,83 @@
package com.zcloud.edu.gatewayimpl.training;
import cn.hutool.core.util.StrUtil;
import com.zcloud.edu.domain.gateway.training.TrainingApplyUserGateway;
import com.zcloud.edu.domain.model.training.TrainingApplyUserE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
import lombok.AllArgsConstructor;
import com.zcloud.gbscommon.utils.Tools;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:36:35
*/
@Service
@AllArgsConstructor
public class TrainingApplyUserGatewayImpl implements TrainingApplyUserGateway {
private final TrainingApplyUserRepository trainingApplyUserRepository;
@Override
public Boolean add(TrainingApplyUserE trainingApplyUserE) {
TrainingApplyUserDO d = new TrainingApplyUserDO(StrUtil.isBlank(trainingApplyUserE.getTrainingApplyUserId()) ?
Tools.get32UUID() : trainingApplyUserE.getTrainingApplyUserId());
BeanUtils.copyProperties(trainingApplyUserE, d,"trainingApplyUserId");
trainingApplyUserRepository.save(d);
return true;
}
@Override
public Boolean addBatch(List<TrainingApplyUserE> trainingApplyUserEList) {
// 使用 Stream 流进行转换
List<TrainingApplyUserDO> doList = trainingApplyUserEList.stream()
.map(e -> {
TrainingApplyUserDO d = new TrainingApplyUserDO(Tools.get32UUID());
BeanUtils.copyProperties(e, d, "trainingApplyUserId");
return d;
})
.collect(Collectors.toList());
trainingApplyUserRepository.saveBatch(doList);
return true;
}
@Override
public Boolean update(TrainingApplyUserE trainingApplyUserE) {
TrainingApplyUserDO d = new TrainingApplyUserDO();
BeanUtils.copyProperties(trainingApplyUserE, d);
trainingApplyUserRepository.updateById(d);
return true;
}
@Override
public Boolean deletedTrainingApplyUserById(Long id) {
return trainingApplyUserRepository.removeById(id);
}
@Override
public Boolean deletedTrainingApplyUserByIds(Long[] ids) {
return trainingApplyUserRepository.removeByIds(Arrays.asList(ids));
}
@Override
public Boolean updateStatusByApprove(List<TrainingApplyUserE> trainingApplyUserE) {
List<TrainingApplyUserDO> doList = trainingApplyUserE.stream()
.map(e -> {
TrainingApplyUserDO d = new TrainingApplyUserDO();
BeanUtils.copyProperties(e, d);
return d;
})
.collect(Collectors.toList());
return trainingApplyUserRepository.updateBatchById(doList);
}
}

View File

@ -0,0 +1,69 @@
package com.zcloud.edu.gatewayimpl.training;
import cn.hutool.core.util.StrUtil;
import com.zcloud.edu.domain.gateway.training.TrainingUserGateway;
import com.zcloud.edu.domain.model.training.TrainingUserE;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.zcloud.edu.persistence.repository.training.TrainingUserRepository;
import lombok.AllArgsConstructor;
import com.zcloud.gbscommon.utils.Tools;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:41:04
*/
@Service
@AllArgsConstructor
public class TrainingUserGatewayImpl implements TrainingUserGateway {
private final TrainingUserRepository trainingUserRepository;
@Override
public Boolean add(TrainingUserE trainingUserE) {
TrainingUserDO d = new TrainingUserDO(StrUtil.isBlank(trainingUserE.getTrainingUserId())
? Tools.get32UUID() : trainingUserE.getTrainingUserId());
BeanUtils.copyProperties(trainingUserE, d,"trainingUserId");
trainingUserRepository.save(d);
return true;
}
@Override
public Boolean addBatch(List<TrainingUserE> trainingUserEList) {
// 使用 Stream 流进行转换
List<TrainingUserDO> doList = trainingUserEList.stream()
.map(e -> {
TrainingUserDO d = new TrainingUserDO(Tools.get32UUID());
BeanUtils.copyProperties(e, d, "trainingUserId");
return d;
})
.collect(Collectors.toList());
trainingUserRepository.saveBatch(doList);
return true;
}
@Override
public Boolean update(TrainingUserE trainingUserE) {
TrainingUserDO d = new TrainingUserDO();
BeanUtils.copyProperties(trainingUserE, d);
trainingUserRepository.updateById(d);
return true;
}
@Override
public Boolean deletedTrainingUserById(Long id) {
return trainingUserRepository.removeById(id);
}
@Override
public Boolean deletedTrainingUserByIds(Long[] ids) {
return trainingUserRepository.removeByIds(Arrays.asList(ids));
}
}

View File

@ -0,0 +1,47 @@
package com.zcloud.edu.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.*;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:30:02
*/
@Data
@TableName("training_apply_process")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TrainingApplyProcessDO extends BaseDO {
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingApplyProcessId;
//培训申请记录id
@ApiModelProperty(value = "培训申请记录id")
private String trainingApplyRecordId;
//审批类型(1:发起,2:审批3:委托)
@ApiModelProperty(value = "审批类型(1:发起,2:审批3:委托)")
private Long applyType;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//企业id
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
//部门id
@ApiModelProperty(value = "部门id")
private Long departmentId;
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
public TrainingApplyProcessDO(String trainingApplyProcessId) {
this.trainingApplyProcessId = trainingApplyProcessId;
}
}

View File

@ -0,0 +1,65 @@
package com.zcloud.edu.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.*;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:21:48
*/
@Data
@TableName("training_apply_record")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TrainingApplyRecordDO extends BaseDO {
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingApplyRecordId;
//申请企业id
@ApiModelProperty(value = "申请企业id")
private Long applyCorpinfoId;
//申请企业名称
@ApiModelProperty(value = "申请企业名称")
@TableField(exist = false)
private String applyCorpName;
//申请部门id
@ApiModelProperty(value = "申请部门id")
private Long applyDepartmentId;
//申请用户id
@ApiModelProperty(value = "申请用户id")
private Long applyUserId;
//审批企业id
@ApiModelProperty(value = "审批企业id")
private Long approvalCorpinfoId;
//审批部门id
@ApiModelProperty(value = "审批部门id")
private Long approvalDepartmentId;
//审批用户id
@ApiModelProperty(value = "审批用户id")
private Long approvalUserId;
// 关联项目
@ApiModelProperty(value = "关联项目")
private String projectName;
//审批状态1:待审批2:审批中,3:审批完成
@ApiModelProperty(value = "审批状态1:待审批2:审批中,3:审批完成")
private Long approvalStatus;
// 申请人数
@TableField(exist = false)
private Integer applyUserCount;
// 申请人姓名
@TableField(exist = false)
private String applyUserName;
public TrainingApplyRecordDO(String trainingApplyRecordId) {
this.trainingApplyRecordId = trainingApplyRecordId;
}
}

View File

@ -0,0 +1,47 @@
package com.zcloud.edu.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.*;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:36:34
*/
@Data
@TableName("training_apply_user")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TrainingApplyUserDO extends BaseDO {
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingApplyUserId;
//培训申请记录id
@ApiModelProperty(value = "培训申请记录id")
private String trainingApplyRecordId;
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//身份证号
@ApiModelProperty(value = "身份证号")
private String idCard;
//申请状态1:待审批2:审批通过,3:审批不通过
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过")
private Long applyStatus;
@TableField(exist = false)
private String userName;
public TrainingApplyUserDO(String trainingApplyUserId) {
this.trainingApplyUserId = trainingApplyUserId;
}
}

View File

@ -0,0 +1,46 @@
package com.zcloud.edu.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.*;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:41:03
*/
@Data
@TableName("training_user")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TrainingUserDO extends BaseDO {
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String trainingUserId;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//申请状态1:待审批2:审批通过,3:审批不通过
@ApiModelProperty(value = "申请状态1:待审批2:审批通过,3:审批不通过")
private Long applyStatus;
//有效期开始时间
@ApiModelProperty(value = "有效期开始时间")
private LocalDateTime startTime;
//有效期结束时间
@ApiModelProperty(value = "有效期结束时间")
private LocalDateTime endTime;
//考试状态:1.待考试2:考试通过,3:考试不通过
@ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过")
private Long examineStatus;
public TrainingUserDO(String trainingUserId) {
this.trainingUserId = trainingUserId;
}
}

View File

@ -0,0 +1,31 @@
package com.zcloud.edu.persistence.mapper;
import com.zcloud.edu.domain.model.training.ApproveDetailE;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:30:03
*/
@Mapper
public interface TrainingApplyProcessMapper extends BaseMapper<TrainingApplyProcessDO> {
/**
* ID
*/
List<TrainingApplyProcessNodeE> selectProcessNodeByRecordId(@Param("recordId") String recordId);
/**
*
*/
List<ApproveDetailE> selectApproveDetailList(@Param("trainingApplyRecordId") String trainingApplyRecordId);
}

View File

@ -0,0 +1,33 @@
package com.zcloud.edu.persistence.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:21:49
*/
@Mapper
public interface TrainingApplyRecordMapper extends BaseMapper<TrainingApplyRecordDO> {
/**
*
*/
IPage<TrainingApplyRecordDO> selectTrainingRecordPage(IPage<TrainingApplyRecordDO> page, @Param("ew") QueryWrapper<TrainingApplyRecordDO> queryWrapper);
/**
*
*/
com.zcloud.edu.domain.model.training.TrainingApplyRecordDetailE selectByBusinessId(@Param("id") Long id);
}

View File

@ -0,0 +1,25 @@
package com.zcloud.edu.persistence.mapper;
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:36:36
*/
@Mapper
public interface TrainingApplyUserMapper extends BaseMapper<TrainingApplyUserDO> {
/**
* ID
*/
List<TrainingApplyUserDO> selectByRecordId(@Param("trainingApplyRecordId") String trainingApplyRecordId);
}

View File

@ -0,0 +1,16 @@
package com.zcloud.edu.persistence.mapper;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:41:04
*/
@Mapper
public interface TrainingUserMapper extends BaseMapper<TrainingUserDO> {
}

View File

@ -0,0 +1,60 @@
package com.zcloud.edu.persistence.repository.impl;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.edu.domain.model.training.ApproveDetailE;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
import com.zcloud.edu.persistence.mapper.TrainingApplyProcessMapper;
import com.zcloud.edu.persistence.repository.training.TrainingApplyProcessRepository;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:30:04
*/
@Service
@RequiredArgsConstructor
public class TrainingApplyProcessRepositoryImpl extends BaseRepositoryImpl<TrainingApplyProcessMapper, TrainingApplyProcessDO> implements TrainingApplyProcessRepository {
private final TrainingApplyProcessMapper trainingApplyProcessMapper;
@Override
public PageResponse<TrainingApplyProcessDO> listPage(Map<String,Object> params) {
IPage<TrainingApplyProcessDO> iPage = new Query<TrainingApplyProcessDO>().getPage(params);
QueryWrapper<TrainingApplyProcessDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<TrainingApplyProcessDO> result = trainingApplyProcessMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public List<TrainingApplyProcessDO> list(Map<String, Object> params) {
QueryWrapper<TrainingApplyProcessDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
return trainingApplyProcessMapper.selectList(queryWrapper);
}
@Override
public List<TrainingApplyProcessNodeE> getProcessNodeByRecordId(String recordId) {
return trainingApplyProcessMapper.selectProcessNodeByRecordId(recordId);
}
@Override
public List<ApproveDetailE> getApproveDetailList(String trainingApplyRecordId) {
return trainingApplyProcessMapper.selectApproveDetailList(trainingApplyRecordId);
}
}

View File

@ -0,0 +1,64 @@
package com.zcloud.edu.persistence.repository.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import com.zcloud.edu.persistence.mapper.TrainingApplyRecordMapper;
import com.zcloud.edu.persistence.repository.training.TrainingApplyRecordRepository;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:21:51
*/
@Service
@RequiredArgsConstructor
public class TrainingApplyRecordRepositoryImpl extends BaseRepositoryImpl<TrainingApplyRecordMapper, TrainingApplyRecordDO> implements TrainingApplyRecordRepository {
private final TrainingApplyRecordMapper trainingApplyRecordMapper;
@Override
public PageResponse<TrainingApplyRecordDO> listPage(Map<String,Object> params) {
IPage<TrainingApplyRecordDO> iPage = new Query<TrainingApplyRecordDO>().getPage(params);
QueryWrapper<TrainingApplyRecordDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<TrainingApplyRecordDO> result = trainingApplyRecordMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public PageResponse<TrainingApplyRecordDO> listPageSql(Map<String, Object> params) {
IPage<TrainingApplyRecordDO> iPage = new Query<TrainingApplyRecordDO>().getPage(params);
QueryWrapper<TrainingApplyRecordDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
// SSOUser ssoUser = AuthContext.getCurrentUser();
// queryWrapper.eq("approval_user_id", ssoUser.getUserId());
IPage<TrainingApplyRecordDO> result = trainingApplyRecordMapper.selectTrainingRecordPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public TrainingApplyRecordDO getByTrainingRecordId(String id) {
return trainingApplyRecordMapper.selectOne(new LambdaQueryWrapper<TrainingApplyRecordDO>()
.eq(TrainingApplyRecordDO::getTrainingApplyRecordId, id)
);
}
@Override
public com.zcloud.edu.domain.model.training.TrainingApplyRecordDetailE getDetailById(Long id) {
return trainingApplyRecordMapper.selectByBusinessId(id);
}
}

View File

@ -0,0 +1,45 @@
package com.zcloud.edu.persistence.repository.impl;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
import com.zcloud.edu.persistence.mapper.TrainingApplyUserMapper;
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:36:37
*/
@Service
@RequiredArgsConstructor
public class TrainingApplyUserRepositoryImpl extends BaseRepositoryImpl<TrainingApplyUserMapper, TrainingApplyUserDO> implements TrainingApplyUserRepository {
private final TrainingApplyUserMapper trainingApplyUserMapper;
@Override
public PageResponse<TrainingApplyUserDO> listPage(Map<String,Object> params) {
IPage<TrainingApplyUserDO> iPage = new Query<TrainingApplyUserDO>().getPage(params);
QueryWrapper<TrainingApplyUserDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<TrainingApplyUserDO> result = trainingApplyUserMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public List<TrainingApplyUserDO> getByRecordId(String trainingApplyRecordId) {
return trainingApplyUserMapper.selectByRecordId(trainingApplyRecordId);
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.persistence.repository.impl;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.edu.domain.model.training.TrainingUserE;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.zcloud.edu.persistence.mapper.TrainingUserMapper;
import com.zcloud.edu.persistence.repository.training.TrainingUserRepository;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:41:05
*/
@Service
@RequiredArgsConstructor
public class TrainingUserRepositoryImpl extends BaseRepositoryImpl<TrainingUserMapper, TrainingUserDO> implements TrainingUserRepository {
private final TrainingUserMapper trainingUserMapper;
@Override
public PageResponse<TrainingUserDO> listPage(Map<String,Object> params) {
IPage<TrainingUserDO> iPage = new Query<TrainingUserDO>().getPage(params);
QueryWrapper<TrainingUserDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<TrainingUserDO> result = trainingUserMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.edu.persistence.repository.training;
import com.zcloud.edu.domain.model.training.ApproveDetailE;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessE;
import com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE;
import com.zcloud.edu.persistence.dataobject.TrainingApplyProcessDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:30:03
*/
public interface TrainingApplyProcessRepository extends BaseRepository<TrainingApplyProcessDO> {
PageResponse<TrainingApplyProcessDO> listPage(Map<String,Object> params);
List<TrainingApplyProcessDO> list(Map<String,Object> params);
/**
* ID
*/
List<TrainingApplyProcessNodeE> getProcessNodeByRecordId(String recordId);
/**
*
*/
List<ApproveDetailE> getApproveDetailList(String trainingApplyRecordId);
}

View File

@ -0,0 +1,23 @@
package com.zcloud.edu.persistence.repository.training;
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:21:51
*/
public interface TrainingApplyRecordRepository extends BaseRepository<TrainingApplyRecordDO> {
PageResponse<TrainingApplyRecordDO> listPage(Map<String,Object> params);
PageResponse<TrainingApplyRecordDO> listPageSql(Map<String,Object> params);
TrainingApplyRecordDO getByTrainingRecordId(String id);
com.zcloud.edu.domain.model.training.TrainingApplyRecordDetailE getDetailById(Long id);
}

View File

@ -0,0 +1,24 @@
package com.zcloud.edu.persistence.repository.training;
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:36:37
*/
public interface TrainingApplyUserRepository extends BaseRepository<TrainingApplyUserDO> {
PageResponse<TrainingApplyUserDO> listPage(Map<String,Object> params);
/**
* ID
*/
List<TrainingApplyUserDO> getByRecordId(String trainingApplyRecordId);
}

View File

@ -0,0 +1,19 @@
package com.zcloud.edu.persistence.repository.training;
import com.zcloud.edu.domain.model.training.TrainingUserE;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import java.util.List;
import java.util.Map;
/**
* web-infrastructure
* @Author makejava
* @Date 2026-01-12 15:41:05
*/
public interface TrainingUserRepository extends BaseRepository<TrainingUserDO> {
PageResponse<TrainingUserDO> listPage(Map<String,Object> params);
}

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.edu.persistence.mapper.TrainingApplyProcessMapper">
<select id="selectProcessNodeByRecordId"
resultType="com.zcloud.edu.domain.model.training.TrainingApplyProcessNodeE">
SELECT
CASE tap.apply_type
WHEN 1 THEN '发起'
WHEN 2 THEN '审批'
WHEN 3 THEN '委托'
ELSE '未知'
END AS nodeName,
tar.approval_status AS approvalStatus,
u.username AS username,
tap.apply_type AS applyType,
DATE_FORMAT(tap.create_time, '%Y-%m-%d %H:%i:%s') AS time
FROM
training_apply_process tap
LEFT JOIN
training_apply_record tar
ON tap.training_apply_record_id = tar.training_apply_record_id
LEFT JOIN
`user` u
ON u.id = tap.user_id
WHERE
tap.training_apply_record_id = #{recordId}
AND tap.delete_enum = 'false'
ORDER BY tap.create_time ASC
</select>
<select id="selectApproveDetailList" resultType="com.zcloud.edu.domain.model.training.ApproveDetailE">
SELECT
tap.apply_type AS approveType,
ci.corp_name AS approveCorpName,
d.name AS approveDeptName,
u.name AS approveUserName
FROM
training_apply_process tap
LEFT JOIN
corp_info ci ON tap.corpinfo_id = ci.id AND ci.delete_enum = 'false'
LEFT JOIN
department d ON tap.department_id = d.id AND d.delete_enum = 'false'
LEFT JOIN
user u ON tap.user_id = u.id AND u.delete_enum = 'false'
WHERE
tap.training_apply_record_id = #{trainingApplyRecordId}
AND tap.delete_enum = 'false'
ORDER BY tap.create_time ASC
</select>
</mapper>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.edu.persistence.mapper.TrainingApplyRecordMapper">
<resultMap id="BaseResultMap" type="com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO">
<id column="id" property="id"/>
<result column="training_apply_record_id" property="trainingApplyRecordId"/>
<result column="apply_corpinfo_id" property="applyCorpinfoId"/>
<result column="apply_corp_name" property="applyCorpName"/>
<result column="apply_department_id" property="applyDepartmentId"/>
<result column="apply_user_id" property="applyUserId"/>
<result column="approval_corpinfo_id" property="approvalCorpinfoId"/>
<result column="approval_department_id" property="approvalDepartmentId"/>
<result column="approval_user_id" property="approvalUserId"/>
<result column="project_name" property="projectName"/>
<result column="approval_status" property="approvalStatus"/>
<result column="version" property="version"/>
<result column="create_id" property="createId"/>
<result column="create_name" property="createName"/>
<result column="create_time" property="createTime"/>
<result column="update_id" property="updateId"/>
<result column="update_name" property="updateName"/>
<result column="update_time" property="updateTime"/>
<result column="remarks" property="remarks"/>
<result column="delete_enum" property="deleteEnum"/>
<result column="tenant_id" property="tenantId"/>
<result column="org_id" property="orgId"/>
<result column="env" property="env"/>
<!-- 扩展字段 -->
<result column="apply_user_count" property="applyUserCount"/>
<result column="apply_user_name" property="applyUserName"/>
</resultMap>
<!--培训申请记录分页-->
<select id="selectTrainingRecordPage" resultMap="BaseResultMap">
SELECT
r.id,
r.training_apply_record_id,
r.apply_corpinfo_id,
ci.corp_name AS apply_corp_name,
r.apply_department_id,
r.apply_user_id,
r.approval_corpinfo_id,
r.approval_department_id,
r.approval_user_id,
r.project_name,
r.approval_status,
r.version,
u.username AS apply_user_name,
COALESCE(tau_cnt.apply_user_count, 0) AS apply_user_count
FROM
training_apply_record r
LEFT JOIN
user u
ON u.id = r.apply_user_id
AND u.delete_enum = 'false'
LEFT JOIN corp_info ci
ON ci.id = r.apply_corpinfo_id
AND ci.delete_enum = 'false'
LEFT JOIN (
SELECT
training_apply_record_id,
COUNT(1) AS apply_user_count
FROM training_apply_user
WHERE delete_enum = 'false'
GROUP BY training_apply_record_id
) tau_cnt
ON tau_cnt.training_apply_record_id = r.training_apply_record_id
WHERE
r.delete_enum = 'false'
<if test="ew != null and ew.sqlSegment != null and ew.sqlSegment != ''">
AND ${ew.sqlSegment}
</if>
</select>
<!--培训申请记录详情-->
<select id="selectByBusinessId" resultType="com.zcloud.edu.domain.model.training.TrainingApplyRecordDetailE">
SELECT
r.*,
(SELECT username FROM user WHERE id = r.apply_user_id AND delete_enum = 'FALSE') AS applyUserName,
(SELECT corp_name FROM corp_info WHERE id = r.apply_corpinfo_id AND delete_enum = 'FALSE') AS applyCorpName,
(SELECT username FROM user WHERE id = r.approval_user_id AND delete_enum = 'FALSE') AS approvalUserName,
(SELECT name FROM department WHERE id = r.approval_department_id AND delete_enum = 'FALSE') AS approvalDepartmentName,
(SELECT corp_name FROM corp_info WHERE id = r.approval_corpinfo_id AND delete_enum = 'FALSE') AS approvalCorpName
FROM
training_apply_record r
WHERE
r.id = #{id}
AND r.delete_enum = 'false'
</select>
</mapper>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.edu.persistence.mapper.TrainingApplyUserMapper">
<!-- 根据申请记录ID查询申请人员含用户信息-->
<select id="selectByRecordId" resultType="com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO">
SELECT
tau.id,
tau.training_apply_user_id as trainingApplyUserId,
tau.training_apply_record_id as trainingApplyRecordId,
tau.user_id as userId,
tau.phone,
tau.apply_status as applyStatus,
tau.remarks,
u.username,
tau.id_card as idCard
FROM
training_apply_user tau
LEFT JOIN
user u ON tau.user_id = u.id
AND u.delete_enum = 'false'
WHERE
tau.training_apply_record_id = #{trainingApplyRecordId}
AND tau.delete_enum = 'false'
ORDER BY
tau.create_time ASC
</select>
</mapper>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.edu.persistence.mapper.TrainingUserMapper">
</mapper>