business/src/main/java/com/ycl/domain/entity/ProjectOvertimeTimes.java
File was renamed from business/src/main/java/com/ycl/domain/entity/ProjectCodingStatus.java @@ -17,7 +17,7 @@ */ @Data @TableName("t_project_overtime_times") public class ProjectCodingStatus extends AbsEntity { public class ProjectOvertimeTimes extends AbsEntity { private static final long serialVersionUID = 1L; business/src/main/java/com/ycl/domain/form/ProjectOvertimeTimesForm.java
File was renamed from business/src/main/java/com/ycl/domain/form/ProjectCodingStatusForm.java @@ -2,16 +2,15 @@ import com.ycl.common.group.Update; import com.ycl.common.group.Add; import com.ycl.domain.entity.ProjectOvertimeTimes; import com.ycl.system.domain.base.AbsForm; import com.ycl.domain.entity.ProjectCodingStatus; import org.springframework.beans.BeanUtils; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import org.springframework.lang.NonNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * 表单 @@ -21,7 +20,7 @@ */ @Data @ApiModel(value = "ProjectCodingStatus表单", description = "表单") public class ProjectCodingStatusForm extends AbsForm { public class ProjectOvertimeTimesForm extends AbsForm { @NotNull(message = "不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("超时任务数") @@ -39,9 +38,9 @@ @ApiModelProperty("项目类型") private String projectType; public static ProjectCodingStatus getEntityByForm(@NonNull ProjectCodingStatusForm form, ProjectCodingStatus entity) { public static ProjectOvertimeTimes getEntityByForm(@NonNull ProjectOvertimeTimesForm form, ProjectOvertimeTimes entity) { if(entity == null) { entity = new ProjectCodingStatus(); entity = new ProjectOvertimeTimes(); } BeanUtils.copyProperties(form, entity); return entity; business/src/main/java/com/ycl/domain/query/ProjectOvertimeTimesQuery.java
File was renamed from business/src/main/java/com/ycl/domain/query/ProjectCodingStatusQuery.java @@ -16,7 +16,7 @@ * @since 2025-04-01 */ @Data @ApiModel(value = "ProjectCodingStatus查询参数", description = "查询参数") public class ProjectCodingStatusQuery extends AbsQuery { @ApiModel(value = "ProjectOvertimeTimesQuery查询参数", description = "查询参数") public class ProjectOvertimeTimesQuery extends AbsQuery { } business/src/main/java/com/ycl/domain/vo/ProjectOvertimeTimesVO.java
File was renamed from business/src/main/java/com/ycl/domain/vo/ProjectCodingStatusVO.java @@ -1,14 +1,12 @@ package com.ycl.domain.vo; import com.ycl.domain.entity.ProjectOvertimeTimes; import com.ycl.system.domain.base.AbsVo; import com.ycl.domain.entity.ProjectCodingStatus; import java.util.List; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * 展示 @@ -18,7 +16,7 @@ */ @Data @ApiModel(value = "响应数据", description = "响应数据") public class ProjectCodingStatusVO extends AbsVo { public class ProjectOvertimeTimesVO extends AbsVo { /** 任务超时数*/ @ApiModelProperty("任务超时数") @@ -37,9 +35,9 @@ private String projectType; public static ProjectCodingStatusVO getVoByEntity(@NonNull ProjectCodingStatus entity, ProjectCodingStatusVO vo) { public static ProjectOvertimeTimesVO getVoByEntity(@NonNull ProjectOvertimeTimes entity, ProjectOvertimeTimesVO vo) { if(vo == null) { vo = new ProjectCodingStatusVO(); vo = new ProjectOvertimeTimesVO(); } BeanUtils.copyProperties(entity, vo); return vo; business/src/main/java/com/ycl/mapper/ProjectCodingStatusMapper.java
File was deleted business/src/main/java/com/ycl/mapper/ProjectOvertimeTimesMapper.java
New file @@ -0,0 +1,36 @@ package com.ycl.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.domain.entity.ProjectOvertimeTimes; import com.ycl.domain.query.ProjectOvertimeTimesQuery; import com.ycl.domain.vo.ProjectOvertimeTimesVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * Mapper 接口 * * @author zxl * @since 2025-04-01 */ @Mapper public interface ProjectOvertimeTimesMapper extends BaseMapper<ProjectOvertimeTimes> { /** * id查找 * @param id * @return */ ProjectOvertimeTimesVO getById(Integer id); /** * 分页 */ IPage getPage(IPage page, @Param("query") ProjectOvertimeTimesQuery query); void delAll(); } business/src/main/java/com/ycl/service/CodingRulerService.java
@@ -8,7 +8,7 @@ import java.util.List; /** * 服务类 * 赋码规则服务类 * * @author zxl * @since 2025-03-18 @@ -68,4 +68,10 @@ * @return */ Result changeCodingRulerStatus(Integer id); /** * 获得启动的赋码规则 * @return 存放的字段 yellowRuler启用的黄码规则,redRuler启用的红码规则 */ Result getStartRuler(); } business/src/main/java/com/ycl/service/ProjectOvertimeTimesService.java
File was renamed from business/src/main/java/com/ycl/service/ProjectCodingStatusService.java @@ -1,10 +1,11 @@ package com.ycl.service; import com.ycl.domain.entity.ProjectCodingStatus; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.common.base.Result; import com.ycl.domain.form.ProjectCodingStatusForm; import com.ycl.domain.query.ProjectCodingStatusQuery; import com.ycl.domain.entity.ProjectOvertimeTimes; import com.ycl.domain.form.ProjectOvertimeTimesForm; import com.ycl.domain.query.ProjectOvertimeTimesQuery; import java.util.List; /** @@ -13,21 +14,21 @@ * @author zxl * @since 2025-04-01 */ public interface ProjectCodingStatusService extends IService<ProjectCodingStatus> { public interface ProjectOvertimeTimesService extends IService<ProjectOvertimeTimes> { /** * 添加 * @param form * @return */ Result add(ProjectCodingStatusForm form); Result add(ProjectOvertimeTimesForm form); /** * 修改 * @param form * @return */ Result update(ProjectCodingStatusForm form); Result update(ProjectOvertimeTimesForm form); /** * 批量删除 @@ -48,7 +49,7 @@ * @param query * @return */ Result page(ProjectCodingStatusQuery query); Result page(ProjectOvertimeTimesQuery query); /** * 根据id查找 business/src/main/java/com/ycl/service/impl/CodingRulerServiceImpl.java
@@ -17,6 +17,7 @@ import com.ycl.framework.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.stream.Collectors; @@ -150,4 +151,30 @@ baseMapper.updateById(codingRuler); return Result.ok(msg); } /** * 获得启动的赋码规则 * @return 存放的字段 yellowRuler启用的黄码规则,redRuler启用的红码规则 */ @Override public Result getStartRuler() { Result result = new Result(); //获得启用的赋码规则 List<CodingRulerVO> codingRulerVOS = codingRulerMapper.getStartRuler(); if (CollectionUtils.isEmpty(codingRulerVOS)){ log.error("未启用赋码规则"); return result; } CodingRulerVO yellowRuler = null; CodingRulerVO redRuler = null; for (CodingRulerVO codingRulerVO : codingRulerVOS){ if (CodingRulerCodeTypeEnum.YELLOW.getValue().equals(codingRulerVO.getProjectCodeType())){ yellowRuler = codingRulerVO; }else if (CodingRulerCodeTypeEnum.RED.getValue().equals(codingRulerVO.getProjectCodeType())){ redRuler = codingRulerVO; } } result.put("yellowRuler",yellowRuler); result.put("redRuler",redRuler); return result; } } business/src/main/java/com/ycl/service/impl/ProjectCodingStatusServiceImpl.java
@@ -1,14 +1,15 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.domain.entity.ProjectCodingStatus; import com.ycl.mapper.ProjectCodingStatusMapper; import com.ycl.service.ProjectCodingStatusService; import com.ycl.domain.entity.ProjectOvertimeTimes; import com.ycl.domain.query.ProjectOvertimeTimesQuery; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.form.ProjectCodingStatusForm; import com.ycl.domain.vo.ProjectCodingStatusVO; import com.ycl.domain.query.ProjectCodingStatusQuery; import com.ycl.domain.form.ProjectOvertimeTimesForm; import com.ycl.domain.vo.ProjectOvertimeTimesVO; import com.ycl.mapper.ProjectOvertimeTimesMapper; import com.ycl.service.ProjectOvertimeTimesService; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import com.ycl.framework.utils.PageUtil; @@ -26,9 +27,9 @@ */ @Service @RequiredArgsConstructor public class ProjectCodingStatusServiceImpl extends ServiceImpl<ProjectCodingStatusMapper, ProjectCodingStatus> implements ProjectCodingStatusService { public class ProjectCodingStatusServiceImpl extends ServiceImpl<ProjectOvertimeTimesMapper, ProjectOvertimeTimes> implements ProjectOvertimeTimesService { private final ProjectCodingStatusMapper projectCodingStatusMapper; private final ProjectOvertimeTimesMapper projectCodingStatusMapper; /** * 添加 @@ -36,8 +37,8 @@ * @return */ @Override public Result add(ProjectCodingStatusForm form) { ProjectCodingStatus entity = ProjectCodingStatusForm.getEntityByForm(form, null); public Result add(ProjectOvertimeTimesForm form) { ProjectOvertimeTimes entity = ProjectOvertimeTimesForm.getEntityByForm(form, null); baseMapper.insert(entity); return Result.ok("添加成功"); } @@ -48,8 +49,8 @@ * @return */ @Override public Result update(ProjectCodingStatusForm form) { ProjectCodingStatus entity = baseMapper.selectById(form.getId()); public Result update(ProjectOvertimeTimesForm form) { ProjectOvertimeTimes entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); @@ -86,8 +87,8 @@ * @return */ @Override public Result page(ProjectCodingStatusQuery query) { IPage<ProjectCodingStatusVO> page = PageUtil.getPage(query, ProjectCodingStatusVO.class); public Result page(ProjectOvertimeTimesQuery query) { IPage<ProjectOvertimeTimesVO> page = PageUtil.getPage(query, ProjectOvertimeTimesVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -99,7 +100,7 @@ */ @Override public Result detail(Integer id) { ProjectCodingStatusVO vo = baseMapper.getById(id); ProjectOvertimeTimesVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); @@ -111,9 +112,9 @@ */ @Override public Result all() { List<ProjectCodingStatus> entities = baseMapper.selectList(null); List<ProjectCodingStatusVO> vos = entities.stream() .map(entity -> ProjectCodingStatusVO.getVoByEntity(entity, null)) List<ProjectOvertimeTimes> entities = baseMapper.selectList(null); List<ProjectOvertimeTimesVO> vos = entities.stream() .map(entity -> ProjectOvertimeTimesVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } business/src/main/java/com/ycl/task/CodingTask.java
@@ -2,21 +2,19 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.common.enums.business.CodingRulerCodeTypeEnum; import com.ycl.common.base.Result; import com.ycl.common.enums.business.CodingRulerIntervalTypeEnum; import com.ycl.common.enums.business.CodingRulerSymbolTypeEnum; import com.ycl.common.enums.business.ProjectProcessTypeEnum; import com.ycl.domain.entity.*; import com.ycl.domain.vo.CodingRulerVO; import com.ycl.domain.vo.ProcessCodingVO; import com.ycl.domain.vo.ProjectCodingStatusVO; import com.ycl.domain.vo.ProjectProcessVO; import com.ycl.domain.vo.ProcessOvertimeTimesVO; import com.ycl.factory.FlowServiceFactory; import com.ycl.mapper.*; import com.ycl.service.ProjectCodingStatusService; import liquibase.pro.packaged.A; import com.ycl.service.CodingRulerService; import com.ycl.service.ProjectOvertimeTimesService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -28,49 +26,41 @@ import java.util.stream.Collectors; @Slf4j @RequiredArgsConstructor @Component("codingTask") public class CodingTask extends FlowServiceFactory { @Autowired private ProjectCodingStatusMapper projectCodingStatusMapper; @Autowired private ProjectCodingStatusService projectCodingStatusService; private final ProjectOvertimeTimesMapper projectOvertimeTimesMapper; @Autowired private ProjectProcessMapper projectProcessMapper; @Autowired private ProjectInfoMapper projectInfoMapper; @Autowired private CodingRulerMapper codingRulerMapper; private final ProjectOvertimeTimesService projectOvertimeTimesService; @Autowired private ProcessCodingMapper processCodingMapper; private final ProjectProcessMapper projectProcessMapper; private final ProjectInfoMapper projectInfoMapper; private final CodingRulerService codingRulerService; private final ProcessCodingMapper processCodingMapper; //计数项目超时任务数并更具赋码规则进行赋码 public void codingTask(){ log.info("开始计算项目并且赋码"); //获得启用的赋码规则 List<CodingRulerVO> codingRulerVOS = codingRulerMapper.getStartRuler(); Result result = codingRulerService.getStartRuler(); CodingRulerVO yellowRuler = (CodingRulerVO) result.get("yellowRuler"); CodingRulerVO redRuler = (CodingRulerVO) result.get("redRuler"); //没启用直接结束 if (CollectionUtils.isEmpty(codingRulerVOS)){ log.info("未启用赋码规则"); if (Objects.isNull(yellowRuler) && Objects.isNull(redRuler)) { log.error("未启用赋码规则"); return; } CodingRulerVO yellowRuler = null; CodingRulerVO redRuler = null; for (CodingRulerVO codingRulerVO : codingRulerVOS){ if (CodingRulerCodeTypeEnum.YELLOW.getValue().equals(codingRulerVO.getProjectCodeType())){ yellowRuler = codingRulerVO; }else if (CodingRulerCodeTypeEnum.RED.getValue().equals(codingRulerVO.getProjectCodeType())){ redRuler = codingRulerVO; } } //获得所有 超时任务数与流程实例id List<ProcessCodingVO> processCodingVOS = processCodingMapper.countProjectOverTimeNum(); if (!CollectionUtils.isEmpty(processCodingVOS)){ List<ProcessOvertimeTimesVO> processOvertimeTimesVOS = processCodingMapper.countProjectOvertimeTimes(); if (!CollectionUtils.isEmpty(processOvertimeTimesVOS)){ //将流程实例id转换为list List<String> processIds = processCodingVOS.stream().map(ProcessCodingVO::getProcessInsId).toList(); List<String> processIds = processOvertimeTimesVOS.stream().map(ProcessOvertimeTimesVO::getProcessInsId).toList(); //获得所有 更具流程定义id,流程相关项目id, key为流程id Map<String, ProjectProcess> projectMap = new LambdaQueryChainWrapper<>(projectProcessMapper) .in(ProjectProcess::getProcessInsId, processIds) @@ -86,29 +76,29 @@ //新增的记录集合 List<ProjectCodingStatus> addList = new ArrayList<>(); List<ProjectOvertimeTimes> addList = new ArrayList<>(); for (ProcessCodingVO processCoding : processCodingVOS) { for (ProcessOvertimeTimesVO processOvertimeTimesVO : processOvertimeTimesVOS) { //判断 项目类型为 ProjectProcessTypeEnum.PROJECT 并且超时任务数大于0 if (processCoding.getTaskOvertimeNum() != 0 && projectMap.containsKey(processCoding.getProcessInsId())) { ProjectCodingStatus projectCodingStatus = new ProjectCodingStatus(); projectCodingStatus.setProjectType(ProjectProcessTypeEnum.PROJECT.getValue()); projectCodingStatus.setProjectId(projectMap.get(processCoding.getProcessInsId()).getProjectId()); projectCodingStatus.setProcessInsId(processCoding.getProcessInsId()); projectCodingStatus.setTaskOvertimeNum(processCoding.getTaskOvertimeNum()); if (processOvertimeTimesVO.getTaskOvertimeNum() != 0 && projectMap.containsKey(processOvertimeTimesVO.getProcessInsId())) { ProjectOvertimeTimes projectOvertimeTimes = new ProjectOvertimeTimes(); projectOvertimeTimes.setProjectType(ProjectProcessTypeEnum.PROJECT.getValue()); projectOvertimeTimes.setProjectId(projectMap.get(processOvertimeTimesVO.getProcessInsId()).getProjectId()); projectOvertimeTimes.setProcessInsId(processOvertimeTimesVO.getProcessInsId()); projectOvertimeTimes.setTaskOvertimeNum(processOvertimeTimesVO.getTaskOvertimeNum()); //添加到新增集合内 addList.add(projectCodingStatus); addList.add(projectOvertimeTimes); //检验赋码规则 checkCodingType(projectCodingStatus.getTaskOvertimeNum(), projectCodingStatus.getProjectId(), checkCodingType(projectOvertimeTimes.getTaskOvertimeNum(), projectOvertimeTimes.getProjectId(), yellowProjectCodingIds,redProjectCodingIds, yellowRuler,redRuler); } } if(!CollectionUtils.isEmpty(addList)){ projectCodingStatusMapper.delAll(); projectCodingStatusService.saveBatch(addList); projectOvertimeTimesMapper.delAll(); projectOvertimeTimesService.saveBatch(addList); } //修改项目赋码 updateProjectCoding(redProjectCodingIds,"red"); business/src/main/resources/mapper/ProjectOvertimeTimesMapper.xml
File was renamed from business/src/main/resources/mapper/ProjectCodingStatusMapper.xml @@ -1,17 +1,14 @@ <?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.ycl.mapper.ProjectCodingStatusMapper"> <mapper namespace="com.ycl.mapper.ProjectOvertimeTimesMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectCodingStatusVO"> <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectOvertimeTimesVO"> <result column="task_overtime_num" property="taskOvertimeNum" /> <result column="process_ins_id" property="processInsId" /> <result column="project_id" property="projectId" /> <result column="project_type" property="projectType" /> </resultMap> <delete id="delAll"> DELETE FROM t_project_overtime_times flowable/src/main/java/com/ycl/domain/vo/ProcessCodingVO.java
@@ -53,11 +53,6 @@ @ApiModelProperty("任务状态green/red/yellow") private String status; /** 任务状态0进行中1结束 */ @ApiModelProperty("超时任务数") private Long taskOvertimeNum; /** 任务超时状态 */ @ApiModelProperty("任务超时状态") private String overtimeStatus; flowable/src/main/java/com/ycl/domain/vo/ProcessOvertimeTimesVO.java
New file @@ -0,0 +1,18 @@ package com.ycl.domain.vo; import com.ycl.system.domain.base.AbsVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "响应数据", description = "响应数据") public class ProcessOvertimeTimesVO extends AbsVo { /** 流程实例id */ @ApiModelProperty("流程实例id") private String processInsId; /** 超时任务数 */ @ApiModelProperty("超时任务数") private Long taskOvertimeNum; } flowable/src/main/java/com/ycl/mapper/ProcessCodingMapper.java
@@ -5,6 +5,7 @@ import com.ycl.domain.entity.ProcessCoding; import com.ycl.domain.query.ProcessCodingQuery; import com.ycl.domain.vo.ProcessCodingVO; import com.ycl.domain.vo.ProcessOvertimeTimesVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -43,5 +44,5 @@ * 查询出每个流程实例id中超时的任务数,流程实例id * @return */ List<ProcessCodingVO> countProjectOverTimeNum(); List<ProcessOvertimeTimesVO> countProjectOvertimeTimes(); } flowable/src/main/resources/mapper/ProcessCodingMapper.xml
@@ -14,13 +14,13 @@ <result column="status" property="status" /> <result column="overtime_status" property="overtimeStatus" /> </resultMap> <resultMap id="projectProcessTaskOverNum" type="com.ycl.domain.vo.ProcessCodingVO"> <resultMap id="processOvertimeTimesVO" type="com.ycl.domain.vo.ProcessOvertimeTimesVO"> <id column="id" property="id"/> <result column="task_overtime_num" property="taskOvertimeNum"/> <result column="process_ins_id" property="processInsId"/> </resultMap> <select id="countProjectOverTimeNum" resultMap="projectProcessTaskOverNum"> <select id="countProjectOvertimeTimes" resultMap="processOvertimeTimesVO"> select TPC.id, TPC.process_ins_id, COUNT(TPC.overtime_status) as task_overtime_num