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. 使用ssh连接远程仓库的方法(github)

    使用ssh连接远程仓库的方法 但是当我登录虚拟机想提交csapp的代码时,我发现需要验证我的账号密码,感觉每次提交都要输入这个很麻烦.然后就在网上查询了下为何提交代码需要输入账号密码. 使用 HTTP ...

  2. OpenTK 垂直同步对刷新率的影响

    本文将和大家介绍 Vsync 垂直同步的开启对 OpenTK 应用的刷新率的影响 在上一篇博客 OpenTK 入门 初始化窗口 告诉了大家如何初始化 OpenTK 承载 OpenGL 的窗口的应用,在 ...

  3. 第8讲 browse命令的使用技巧

    第8讲 browse命令的使用技巧 1.浏览所有parts,使用技巧 选中工程文件*.dsn/Edit/Browse/Parts.列出工程中用到的所有元件,方便在画完原理图后,查看哪些元件没有编号或数 ...

  4. 引爆你的网页乐趣!前端十个令人捧腹的JavaScript整蛊代码。

    愚人节整蛊代码.想要在网页上增添一抹幽默与惊喜吗?或是想给你的朋友一个意想不到的"小惊喜"?那么,这十款简单而有趣的JavaScript前端整蛊代码绝对能满足你的需求!每一个代码都 ...

  5. 九、ODBC External Table Of Doris

    ODBC External Table Of Doris 提供了Doris通过数据库访问的标准接口(ODBC)来访问外部表 ODBC Driver的安装和配置: 要求所有的BE节点都安装上相同的Dri ...

  6. VMware虚拟机安装Centos-7.9

    VMware虚拟机安装Centos-7.9 创作不易,点赞关注一下吧 1.安装VMware Workstation Pro 大家根据自己的实际情况安装合适版本的VMware Workstation P ...

  7. java里面的方法。

    java里面的方法. java方法是语句的组合,他们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建在其他地方被引用 方法类似于其他语言里面的函数 e ...

  8. Netflow/IPFIX 流量收集与分析

    目录 文章目录 目录 Netflow(网络数据流检测协议) IPFIX(网络流量监测) IPFIX 组网架构 IPFIX 应用场景 Usage-based Accounting(基于使用流量的计费) ...

  9. Vue3开发新范式,不用`ref/reactive`,不用`ref.value`

    什么是Cabloy-Front? Cabloy-Front 是一款支持 IOC 容器的 Vue3 框架.不用ref/reactive,不用ref.value,不用pinia 与UI库的配合 Cablo ...

  10. 通过XML标记生成word

    思路 word生成可以通过标签,也可以通过XML元素. word文档实际上是由文档对象模型描述的,因此我们能够通过对文档对象进行操作去生成word. 由于word允许我们附加XML结构(元素),如下: ...