From 30481003d9c1b191765fe0f47ad0e1558bd64de8 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 01 四月 2025 17:21:45 +0800
Subject: [PATCH] 获取赋码规则新增文件
---
business/src/main/java/com/ycl/domain/form/ProjectCodingStatusForm.java | 50 ++++
business/src/main/java/com/ycl/domain/vo/ProjectCodingStatusVO.java | 48 ++++
common/src/main/java/com/ycl/common/enums/business/CodingRulerSymbolTypeEnum.java | 36 +++
business/src/main/java/com/ycl/mapper/ProjectCodingStatusMapper.java | 37 +++
business/src/main/java/com/ycl/service/ProjectCodingStatusService.java | 65 +++++
business/src/main/java/com/ycl/task/CodingTask.java | 226 ++++++++++++++++++
business/src/main/java/com/ycl/domain/entity/ProjectCodingStatus.java | 39 +++
business/src/main/java/com/ycl/domain/query/ProjectCodingStatusQuery.java | 22 +
business/src/main/java/com/ycl/service/impl/ProjectCodingStatusServiceImpl.java | 120 ++++++++++
business/src/main/resources/mapper/ProjectCodingStatusMapper.xml | 46 +++
10 files changed, 689 insertions(+), 0 deletions(-)
diff --git a/business/src/main/java/com/ycl/domain/entity/ProjectCodingStatus.java b/business/src/main/java/com/ycl/domain/entity/ProjectCodingStatus.java
new file mode 100644
index 0000000..108e252
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/entity/ProjectCodingStatus.java
@@ -0,0 +1,39 @@
+package com.ycl.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import com.ycl.system.domain.base.AbsEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+@Data
+@TableName("t_project_overtime_times")
+public class ProjectCodingStatus extends AbsEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("task_overtime_num")
+ /** 瓒呮椂浠诲姟鏁�*/
+ private Long taskOvertimeNum;
+
+ @TableField("process_ins_id")
+ /** 娴佺▼瀹炰緥id*/
+ private String processInsId;
+
+ @TableField("project_id")
+ /** 椤圭洰id*/
+ private String projectId;
+
+ /** 椤圭洰绫诲瀷*/
+ @TableField("project_type")
+ private String projectType;
+}
diff --git a/business/src/main/java/com/ycl/domain/form/ProjectCodingStatusForm.java b/business/src/main/java/com/ycl/domain/form/ProjectCodingStatusForm.java
new file mode 100644
index 0000000..861bfd5
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/form/ProjectCodingStatusForm.java
@@ -0,0 +1,50 @@
+package com.ycl.domain.form;
+
+import com.ycl.common.group.Update;
+import com.ycl.common.group.Add;
+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;
+
+/**
+ * 琛ㄥ崟
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+@Data
+@ApiModel(value = "ProjectCodingStatus琛ㄥ崟", description = "琛ㄥ崟")
+public class ProjectCodingStatusForm extends AbsForm {
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("瓒呮椂浠诲姟鏁�")
+ private Integer taskOvertimeNum;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("娴佺▼瀹炰緥id")
+ private String processInsId;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("椤圭洰id")
+ private String projectId;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("椤圭洰绫诲瀷")
+ private String projectType;
+
+ public static ProjectCodingStatus getEntityByForm(@NonNull ProjectCodingStatusForm form, ProjectCodingStatus entity) {
+ if(entity == null) {
+ entity = new ProjectCodingStatus();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/business/src/main/java/com/ycl/domain/query/ProjectCodingStatusQuery.java b/business/src/main/java/com/ycl/domain/query/ProjectCodingStatusQuery.java
new file mode 100644
index 0000000..6073200
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/query/ProjectCodingStatusQuery.java
@@ -0,0 +1,22 @@
+package com.ycl.domain.query;
+
+import com.ycl.system.domain.base.AbsQuery;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏌ヨ
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+@Data
+@ApiModel(value = "ProjectCodingStatus鏌ヨ鍙傛暟", description = "鏌ヨ鍙傛暟")
+public class ProjectCodingStatusQuery extends AbsQuery {
+}
+
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectCodingStatusVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectCodingStatusVO.java
new file mode 100644
index 0000000..7c38d82
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectCodingStatusVO.java
@@ -0,0 +1,48 @@
+package com.ycl.domain.vo;
+
+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;
+
+/**
+ * 灞曠ず
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+@Data
+@ApiModel(value = "鍝嶅簲鏁版嵁", description = "鍝嶅簲鏁版嵁")
+public class ProjectCodingStatusVO extends AbsVo {
+
+ /** 浠诲姟瓒呮椂鏁�*/
+ @ApiModelProperty("浠诲姟瓒呮椂鏁�")
+ private Integer taskOvertimeNum;
+
+ /** 娴佺▼瀹炰緥id*/
+ @ApiModelProperty("娴佺▼瀹炰緥id")
+ private String processInsId;
+
+ /** 椤圭洰id*/
+ @ApiModelProperty("椤圭洰id")
+ private String projectId;
+
+ /** 椤圭洰绫诲瀷*/
+ @ApiModelProperty("椤圭洰绫诲瀷")
+ private String projectType;
+
+
+ public static ProjectCodingStatusVO getVoByEntity(@NonNull ProjectCodingStatus entity, ProjectCodingStatusVO vo) {
+ if(vo == null) {
+ vo = new ProjectCodingStatusVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/business/src/main/java/com/ycl/mapper/ProjectCodingStatusMapper.java b/business/src/main/java/com/ycl/mapper/ProjectCodingStatusMapper.java
new file mode 100644
index 0000000..770a2c4
--- /dev/null
+++ b/business/src/main/java/com/ycl/mapper/ProjectCodingStatusMapper.java
@@ -0,0 +1,37 @@
+package com.ycl.mapper;
+
+import com.ycl.domain.entity.ProjectCodingStatus;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.domain.vo.ProjectCodingStatusVO;
+import com.ycl.domain.form.ProjectCodingStatusForm;
+import com.ycl.domain.query.ProjectCodingStatusQuery;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+@Mapper
+public interface ProjectCodingStatusMapper extends BaseMapper<ProjectCodingStatus> {
+
+ /**
+ * id鏌ユ壘
+ * @param id
+ * @return
+ */
+ ProjectCodingStatusVO getById(Integer id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") ProjectCodingStatusQuery query);
+
+ void delAll();
+
+
+}
diff --git a/business/src/main/java/com/ycl/service/ProjectCodingStatusService.java b/business/src/main/java/com/ycl/service/ProjectCodingStatusService.java
new file mode 100644
index 0000000..8b5aaa2
--- /dev/null
+++ b/business/src/main/java/com/ycl/service/ProjectCodingStatusService.java
@@ -0,0 +1,65 @@
+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 java.util.List;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+public interface ProjectCodingStatusService extends IService<ProjectCodingStatus> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(ProjectCodingStatusForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(ProjectCodingStatusForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(ProjectCodingStatusQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(Integer id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+}
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectCodingStatusServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectCodingStatusServiceImpl.java
new file mode 100644
index 0000000..eff9d93
--- /dev/null
+++ b/business/src/main/java/com/ycl/service/impl/ProjectCodingStatusServiceImpl.java
@@ -0,0 +1,120 @@
+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.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 org.springframework.stereotype.Service;
+import lombok.RequiredArgsConstructor;
+import com.ycl.framework.utils.PageUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.Assert;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author zxl
+ * @since 2025-04-01
+ */
+@Service
+@RequiredArgsConstructor
+public class ProjectCodingStatusServiceImpl extends ServiceImpl<ProjectCodingStatusMapper, ProjectCodingStatus> implements ProjectCodingStatusService {
+
+ private final ProjectCodingStatusMapper projectCodingStatusMapper;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(ProjectCodingStatusForm form) {
+ ProjectCodingStatus entity = ProjectCodingStatusForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(ProjectCodingStatusForm form) {
+ ProjectCodingStatus entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ @Override
+ public Result remove(List<String> ids) {
+ baseMapper.deleteBatchIds(ids);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ @Override
+ public Result removeById(String id) {
+ baseMapper.deleteById(id);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ @Override
+ public Result page(ProjectCodingStatusQuery query) {
+ IPage<ProjectCodingStatusVO> page = PageUtil.getPage(query, ProjectCodingStatusVO.class);
+ baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(Integer id) {
+ ProjectCodingStatusVO vo = baseMapper.getById(id);
+
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok().data(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<ProjectCodingStatus> entities = baseMapper.selectList(null);
+ List<ProjectCodingStatusVO> vos = entities.stream()
+ .map(entity -> ProjectCodingStatusVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+}
diff --git a/business/src/main/java/com/ycl/task/CodingTask.java b/business/src/main/java/com/ycl/task/CodingTask.java
new file mode 100644
index 0000000..69e97cc
--- /dev/null
+++ b/business/src/main/java/com/ycl/task/CodingTask.java
@@ -0,0 +1,226 @@
+package com.ycl.task;
+
+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.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.factory.FlowServiceFactory;
+import com.ycl.mapper.*;
+import com.ycl.service.ProjectCodingStatusService;
+import liquibase.pro.packaged.A;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component("codingTask")
+public class CodingTask extends FlowServiceFactory {
+ @Autowired
+ private ProjectCodingStatusMapper projectCodingStatusMapper;
+
+ @Autowired
+ private ProjectCodingStatusService projectCodingStatusService;
+
+ @Autowired
+ private ProjectProcessMapper projectProcessMapper;
+ @Autowired
+ private ProjectInfoMapper projectInfoMapper;
+ @Autowired
+ private CodingRulerMapper codingRulerMapper;
+
+ @Autowired
+ private ProcessCodingMapper processCodingMapper;
+
+
+ public void codingTask(){
+ log.info("寮�濮嬭绠楅」鐩苟涓旇祴鐮�");
+ //鑾峰緱鍚敤鐨勮祴鐮佽鍒�
+ List<CodingRulerVO> codingRulerVOS = codingRulerMapper.getStartRuler();
+ //娌″惎鐢ㄧ洿鎺ョ粨鏉�
+ if (CollectionUtils.isEmpty(codingRulerVOS)){
+ log.info("鏈惎鐢ㄨ祴鐮佽鍒�");
+ 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)){
+ //灏嗘祦绋嬪疄渚媔d杞崲涓簂ist
+ List<String> processIds = processCodingVOS.stream().map(ProcessCodingVO::getProcessInsId).toList();
+ //鑾峰緱鎵�鏈� 鏇村叿娴佺▼瀹氫箟id锛屾祦绋嬬浉鍏抽」鐩甶d锛� key涓烘祦绋媔d
+ Map<String, ProjectProcess> projectMap = new LambdaQueryChainWrapper<>(projectProcessMapper)
+ .in(ProjectProcess::getProcessInsId, processIds)
+ .eq(ProjectProcess::getProjectType, ProjectProcessTypeEnum.PROJECT)
+ .list()
+ .stream()
+ .collect(Collectors.toMap(ProjectProcess::getProcessInsId, Function.identity()));
+
+ //淇敼涓洪粍鐮佺殑椤圭洰 id
+ List<String> yellowProjectCodingIds = new ArrayList<>();
+ //淇敼涓虹孩鐮佺殑椤圭洰 id
+ List<String> redProjectCodingIds = new ArrayList<>();
+
+
+ //鏂板鐨勮褰曢泦鍚�
+ List<ProjectCodingStatus> addList = new ArrayList<>();
+
+ for (ProcessCodingVO processCoding : processCodingVOS) {
+ //鍒ゆ柇 椤圭洰绫诲瀷涓� 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());
+ //娣诲姞鍒版柊澧為泦鍚堝唴
+ addList.add(projectCodingStatus);
+ //妫�楠岃祴鐮佽鍒�
+ checkCodingType(projectCodingStatus.getTaskOvertimeNum(),
+ projectCodingStatus.getProjectId(),
+ yellowProjectCodingIds,redProjectCodingIds,
+ yellowRuler,redRuler);
+ }
+ }
+
+ if(!CollectionUtils.isEmpty(addList)){
+ projectCodingStatusMapper.delAll();
+ projectCodingStatusService.saveBatch(addList);
+ }
+ //淇敼椤圭洰璧嬬爜
+ updateProjectCoding(redProjectCodingIds,"red");
+ log.info("鎵撳嵃璧嬪�间负绾㈢爜鐨勯」鐩甶d");
+ for (String s : redProjectCodingIds){
+ System.out.println(s);
+ }
+ log.info("鎵撳嵃璧嬪�间负绾㈢爜鐨勯」鐩甶d瀹屾瘯");
+ updateProjectCoding(yellowProjectCodingIds,"yellow");
+ log.info("鎵撳嵃璧嬪�间负榛勭爜鐨勯」鐩甶d");
+ for (String s : yellowProjectCodingIds){
+ System.out.println(s);
+ }
+ log.info("鎵撳嵃璧嬪�间负榛勭爜鐨勯」鐩甶d瀹屾瘯");
+ }
+
+ log.info("缁撴潫璁$畻椤圭洰骞朵笖璧嬬爜");
+ }
+
+ /**
+ * 璧嬬爜
+ *
+ * @param projectIds 娴佺▼瀹炰緥ID鍒楄〃
+ * @param coding 璧嬬爜鍊�
+ */
+ private void updateProjectCoding(List<String> projectIds, String coding) {
+ if (!CollectionUtils.isEmpty(projectIds)) {
+ //灏唅d 绫诲瀷杞崲涓篖ong
+ List<Long> longList = projectIds.stream()
+ .map(Long::parseLong)
+ .collect(Collectors.toList());
+ new LambdaUpdateChainWrapper<>(projectInfoMapper)
+ .in(ProjectInfo::getId, longList)
+ .set(ProjectInfo::getCoding, coding)
+ .update();
+ }
+ }
+
+
+ /**
+ *
+ * @param overTimeNum 瓒呮椂浠诲姟鏁�
+ * @param projectId 椤圭洰id
+ * @param yellowProjectCodingIds 淇敼椤圭洰璧嬬爜涓洪粍鐮佺殑id闆嗗悎
+ * @param redProjectCodingIds 淇敼椤圭洰璧嬬爜涓虹孩鐮佺殑id闆嗗悎
+ * @param yellowRuler 榛勭爜瑙勫垯
+ * @param redRuler 绾㈢爜瑙勫垯
+ */
+ private void checkCodingType(Long overTimeNum,String projectId,
+ List<String> yellowProjectCodingIds, List<String> redProjectCodingIds,
+ CodingRulerVO yellowRuler,CodingRulerVO redRuler){
+ //鍏堝垽鏂孩鐮侊紝瑙勫垯濡傛灉婊¤冻锛屽垯涓嶆墽琛岄粍鐮佽鍒�
+ if (judgeState(overTimeNum, projectId, redProjectCodingIds, redRuler)) return;
+
+ //鍒ゆ柇鏄惁婊¤冻榛勭爜瑙勫垯
+ judgeState(overTimeNum, projectId, yellowProjectCodingIds, yellowRuler);
+
+
+ }
+
+ private boolean judgeState(Long overTimeNum, String projectId, List<String> projectCodingIds, CodingRulerVO ruler) {
+ if (ruler != null){
+ if (CodingRulerIntervalTypeEnum.Interval.getValue().equals(ruler.getIntervalType())){
+ //鍖洪棿鎯呭喌
+ boolean result = false;
+ //鍒ゆ柇婊¤冻宸﹀尯闂�
+ if (ruler.getLeftSymbol().equals("0")){
+ result = (overTimeNum > ruler.getLeftValue());
+ }else if (ruler.getLeftSymbol().equals("1")){
+ result = (overTimeNum >= ruler.getLeftValue());
+ }else if (ruler.getLeftSymbol().equals("2")){
+ result = (Objects.equals(overTimeNum, ruler.getLeftValue()));
+ }
+ //婊¤冻鍒欏垽鏂弧瓒冲彸鍖洪棿
+ if (result){
+ if (ruler.getRightSymbol().equals("2")){
+ result = (Objects.equals(overTimeNum, ruler.getRightValue()));
+ }else if (ruler.getRightSymbol().equals("3")){
+ result = (overTimeNum < ruler.getRightValue());
+ }else if (ruler.getRightSymbol().equals("4")){
+ result = (overTimeNum <= ruler.getRightValue());
+ }
+ }
+ if (result){
+ //绗﹀悎璇ヨ祴鐮佹潯浠�
+ projectCodingIds.add(projectId);
+ return true;
+ }
+ }
+ else{
+ //鍗曞尯闂存儏鍐�
+ boolean result = false;
+ if (ruler.getLeftSymbol().equals("0")){
+ result = (overTimeNum > ruler.getLeftValue());
+ }else if (ruler.getLeftSymbol().equals("1")){
+ result = (overTimeNum >= ruler.getLeftValue());
+ }else if (ruler.getLeftSymbol().equals("2")){
+ result = (Objects.equals(overTimeNum, ruler.getLeftValue()));
+ }else if (ruler.getLeftSymbol().equals("3")){
+ result = (overTimeNum < ruler.getLeftValue());
+ }else if (ruler.getLeftSymbol().equals("4")){
+ result = (overTimeNum <= ruler.getLeftValue());
+ }
+ if (result){
+ //绗﹀悎璇ヨ祴鐮佹潯浠�
+ projectCodingIds.add(projectId);
+ return true;
+ }
+
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/business/src/main/resources/mapper/ProjectCodingStatusMapper.xml b/business/src/main/resources/mapper/ProjectCodingStatusMapper.xml
new file mode 100644
index 0000000..1958ff8
--- /dev/null
+++ b/business/src/main/resources/mapper/ProjectCodingStatusMapper.xml
@@ -0,0 +1,46 @@
+<?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">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectCodingStatusVO">
+ <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
+ </delete>
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ TPOT.task_overtime_num,
+ TPOT.process_ins_id,
+ TPOT.project_id,
+ TPOT.id
+ FROM
+ t_project_overtime_times TPOT
+ WHERE
+ TPOT.id = #{id} AND TPOT.deleted = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ TPOT.task_overtime_num,
+ TPOT.process_ins_id,
+ TPOT.project_id,
+ TPOT.id
+ FROM
+ t_project_overtime_times TPOT
+ WHERE
+ TPOT.deleted = 0
+ </select>
+
+</mapper>
diff --git a/common/src/main/java/com/ycl/common/enums/business/CodingRulerSymbolTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/CodingRulerSymbolTypeEnum.java
new file mode 100644
index 0000000..aace9fe
--- /dev/null
+++ b/common/src/main/java/com/ycl/common/enums/business/CodingRulerSymbolTypeEnum.java
@@ -0,0 +1,36 @@
+package com.ycl.common.enums.business;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Getter
+public enum CodingRulerSymbolTypeEnum {
+ GT("0","澶т簬"),
+ GE("1","澶т簬绛変簬"),
+ EQ("2","绛変簬"),
+ LT("3","灏忎簬"),
+ LE("4","灏忎簬绛変簬");
+
+ @EnumValue
+ @JsonValue
+ private final String value;
+
+ private final String desc;
+
+ CodingRulerSymbolTypeEnum(String value, String desc) {
+ this.value = value;
+ this.desc = desc;
+ }
+
+
+ // 灏嗘灇涓捐浆鎹负 Map
+ public static Map<String, String> getMap() {
+ return Arrays.stream(CodingRulerSymbolTypeEnum.values())
+ .collect(Collectors.toMap(CodingRulerSymbolTypeEnum::getValue, CodingRulerSymbolTypeEnum::getDesc));
+ }
+}
--
Gitblit v1.8.0