package com.cmbchina.monitor.service.imp;

import com.alibaba.fastjson.JSON;
import com.cmbchina.monitor.entity.kanban.detail.CardDetailDTO;
import org.apache.xmlbeans.impl.jam.provider.ResourcePath;
import org.springframework.util.StringUtils; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties; import static com.cmbchina.monitor.service.imp.KanBanCheckServiceImpl.recordCardIssue; /**
* @Author IT006915
* @Date 2023/11/28 16:01
*/
public class KanbanCheckRulesImpl {
public static Map<String, List<String>> METHOD_CHECK_CONFIG = new HashMap<>(); public static void main(String[] args) {
setMethodCheckConfig();
CardDetailDTO cardDetailDTO = JSON.parseObject("", CardDetailDTO.class);
checkWorkHours(cardDetailDTO);
} // 检查卡片工时是否超过35
public static void checkWorkHours(CardDetailDTO cardDetailDTO) {
//判断当前卡片是否需要执行此检查方法
if (!isExecCheck(cardDetailDTO,"checkWorkHours")){
return;
}
System.out.println();
if (cardDetailDTO.getTotalWorkingHours() >= 30){
recordCardIssue(cardDetailDTO.getId(), "提醒", "卡片公共工时已达到30小时");
}
if (cardDetailDTO.getTotalWorkingHours() > 35){
recordCardIssue(cardDetailDTO.getId(), "错误", "卡片公共工时已超过到35小时");
}
} /**
* 根据执行方法和卡片信息,判断卡片是否需要执行当前检查方法
* @param cardDetailDTO
* @param methodName
* @return
*/
public static boolean isExecCheck(CardDetailDTO cardDetailDTO, String methodName) {
if (METHOD_CHECK_CONFIG.isEmpty() || METHOD_CHECK_CONFIG.get(methodName) == null) {
return false;
}
if (METHOD_CHECK_CONFIG.get(methodName).contains(cardDetailDTO.getCardType().getName()) ||
METHOD_CHECK_CONFIG.get(methodName).contains(cardDetailDTO.getTitle())) {
return true;
}
return false;
} public static void setMethodCheckConfig() {
Properties configProperties = getConfigProperties();
if (configProperties == null) {
return;
}
Object methodCheckJson = configProperties.get("kanban.method.check");
if (!StringUtils.isEmpty(methodCheckJson)) {
METHOD_CHECK_CONFIG = JSON.parseObject((String)methodCheckJson, Map.class);
}
} public static Properties getConfigProperties() {
Properties properties = new Properties();
try {
URL resource = ResourcePath.class.getClassLoader().getResource("checkruler.properties");
FileInputStream fileInputStream = new FileInputStream(resource.getPath());
properties.load(new InputStreamReader(fileInputStream, "UTF-8"));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
return properties.isEmpty() ? null : properties;
}
}

tempCode的更多相关文章

  1. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  2. 关于全局ID,雪花(snowflake)算法的说明

    上次简单的说一下:http://www.cnblogs.com/dunitian/p/6041745.html#uid C#版本的国外朋友已经封装了,大家可以去看看:https://github.co ...

  3. 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)

    技能 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#skill 以前的水印,只是简单走起,用的是原生态的方法.现在各种变态水印,于是就不再用原生态 ...

  4. 中文分词之结巴分词~~~附使用场景+demo(net)

    常用技能(更新ing):http://www.cnblogs.com/dunitian/p/4822808.html#skill 技能总纲(更新ing):http://www.cnblogs.com/ ...

  5. 当GitHub把我当成DDos攻击者拉进了黑名单中。。。

    Github黑名单自救+快速稳定FQ 异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 原因:项目冲突,没有先更新后提交,他自行更 ...

  6. Gitlab使用总结

    Gitlab日常开发流程 1. 从某一功能分支新建一个自己的开发分支 二. 将master分支clone到本地 mkdir git-test cd git-test\ git clone http:/ ...

  7. VS2013 带命令行参数的调试问题 解决方案

    int main(int argc,char* argv[]) argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数 比如:  ...

  8. int main(int argc,char* argv[])详解

    argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数, 比如:       int   main(int   argc,   ...

  9. 关于main函数传参数的问题

    argc是命令行总的参数个数      argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数      命令行后面跟的用户输入的参数,比如:      int   main(int   ...

  10. Sql Server 调用DLL

    背景 在处理数据或者分析数据时,我们常常需要加入一定的逻辑,该些处理逻辑有些sql是可以支持,有些逻辑SQL则无能为力,在这种情况下,大多数人都会编写相关的程序来处理成自己想要的数据,但每次处理相同逻 ...

随机推荐

  1. 阿里云容器服务全面升级为 ACK Anywhere,让云的边界拓展至企业需要的每个场景

    ​简介: 2021 年 9 月 26 日上海阿里云计算峰会上,阿里巴巴研究员.阿里云云原生应用平台负责人丁宇宣布,阿里云容器服务全面升级为 ACK Anywhere,让企业在任何需要云的地方,都能获得 ...

  2. [Go] golang 执行 Linux 系统 command

    执行系统 shell 命令示例: fileDir := "files/"out, err := exec.Command("sh", "-c" ...

  3. kafka connect gui 可视化管理工具

    kafka connect gui 可视化管理工具 官网地址:http://www.redisant.cn/ka 连接到 Kafka Connect 支持各种认证方式,支持 SSL/TLS 安全连接 ...

  4. async 与 promise 的区别

    async函数会引式返回一个promise,而promise的resolve值就是函数return的值 使用async和await明显节约了不少代码,不需要.then,不需要写匿名函数处理promis ...

  5. 一个随时跟新的css库

    1.一个选中阴影的样式 .select border: 1px solid #4d92f7; box-shadow: 0px 0px 15px rgba(0,50,122,.15); 2.一个三栏渐变 ...

  6. tomcat(3)- tomcat部署zrlog

    目录 1. Tomcat单独部署 2. nginx+tomcat部署 1. Tomcat单独部署 部署场景为: 客户端:192.168.20.1 tomcat:主机名:tomcat01,地址:192. ...

  7. 在tomcat上安装PFX格式证书部署https

    您可以在Tomcat服务器安装已签发的SSL证书,实现通过HTTPS安全访问Web服务.本文介绍如何在Tomcat服务器安装PFX格式的SSL证书. 步骤一:在阿里云的域名管理后台,下载SSL证书 登 ...

  8. UE4 C++调用C# DLL(DllExport方法)

    之前看见园子里一篇C++调用C#的文章,参考后拿UE试一下.刚开始尝试了C# dll > CLR C++ DLL > Native C++ DLL的做法, 原生环境下是可以的,但是到UE4 ...

  9. 2022最新的Centos6.10安装mysql8.0

    一.系统源替换 1.备份系统源 (1)进入源的默认路径 cd /etc/yum.repos.d (2)查看一下 (3)备份 cp CentOS-Base.repo CentOS-Base-Back.r ...

  10. 推荐一款微信公众平台Python开发神器!

    1.引言 在当今数字化时代,微信公众平台成为了企业和个人连接用户的重要渠道.为了高效地管理和与用户互动,开发者需要一个强大而灵活的工具. Weixin-Python 正是这样一个为微信公众平台量身打造 ...