From ffb1ef9e75bd7b03381496f29d0319c01488997b Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 10 二月 2025 09:22:07 +0800
Subject: [PATCH] 办理期限
---
business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java | 7 +++
flowable/src/main/java/com/ycl/common/constant/ProcessOverTimeConstants.java | 13 ++++++
flowable/src/main/java/com/ycl/domain/form/ProcessCodingForm.java | 11 ++++-
business/src/main/java/com/ycl/task/FlowableTask.java | 58 +++++++++++++++--------------
flowable/src/main/java/com/ycl/domain/vo/ProcessCodingVO.java | 12 +++++-
flowable/src/main/resources/mapper/ProcessCodingMapper.xml | 6 +++
flowable/src/main/java/com/ycl/domain/entity/ProcessCoding.java | 8 +++
7 files changed, 82 insertions(+), 33 deletions(-)
diff --git a/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java b/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
index b63fd97..9c71179 100644
--- a/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
+++ b/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
@@ -41,6 +41,10 @@
*/
private FixedValue 绾㈢爜鏃堕暱;
/**
+ * 鍔炵悊鏈熼檺
+ */
+ private FixedValue 鍔炵悊鏈熼檺;
+ /**
* 璁℃椂璧峰鑺傜偣瀹氫箟Id
*/
private FixedValue 寮�濮嬭鏃惰妭鐐�;
@@ -75,6 +79,9 @@
if (绾㈢爜鏃堕暱 != null && 绾㈢爜鏃堕暱.getValue(delegateTask) != null) {
processCoding.setRedTime(绾㈢爜鏃堕暱.getValue(delegateTask).toString());
}
+ if (鍔炵悊鏈熼檺 != null && 鍔炵悊鏈熼檺.getValue(delegateTask) != null) {
+ processCoding.setOvertime(鍔炵悊鏈熼檺.getValue(delegateTask).toString());
+ }
//璁剧疆寮�濮嬭妭鐐�
if (寮�濮嬭鏃惰妭鐐� != null && 寮�濮嬭鏃惰妭鐐�.getValue(delegateTask) != null) {
String taskDefKey = 寮�濮嬭鏃惰妭鐐�.getValue(delegateTask).toString();
diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java
index 2e247ae..9112494 100644
--- a/business/src/main/java/com/ycl/task/FlowableTask.java
+++ b/business/src/main/java/com/ycl/task/FlowableTask.java
@@ -67,40 +67,19 @@
String taskId = task.getId();
ProcessCoding processCoding = taskMap.get(taskId);
if (processCoding == null) {
- //涓嶉渶瑕佺洃鎺х殑浠诲姟鑺傜偣鐩存帴鏀逛负缁胯壊
+ //涓嶉渶瑕佺洃鎺х殑浠诲姟鑺傜偣椤圭洰鐮佺洿鎺ユ敼涓虹豢鑹�
List<String> processInsIds = map.get(GREEN);
processInsIds.add(task.getProcessInstanceId());
continue;
}
- //鍒ゆ柇鏄惁瓒呮椂
+ //鍒ゆ柇璧嬬爜缁熶竴鐢ㄧ浣滀负鍗曚綅
Date startTime = startTaskMap.get(processCoding.getStartTaskId());
try {
- Long yellowTime = null;
- Long redTime = null;
- String yellowTimeStr = processCoding.getYellowTime();
- if (StringUtils.isNotBlank(yellowTimeStr)) {
- String[] yellowTimeArr = yellowTimeStr.split("-");
- // 瑙f瀽澶╂暟鍜屽皬鏃舵暟
- int days = Integer.parseInt(yellowTimeArr[0]);
- int hours = 0;
- // 鍏煎涔嬪墠閰嶇疆鐨勬暣鏁板ぉ
- if (yellowTimeArr.length > 1) {
- hours = Integer.parseInt(yellowTimeArr[1]);
- }
- yellowTime = (days * 24L + hours) * 3600L;
- }
- String redTimeStr = processCoding.getRedTime();
- if (StringUtils.isNotBlank(redTimeStr)) {
- String[] redTimeArr = redTimeStr.split("-");
- // 瑙f瀽澶╂暟鍜屽皬鏃舵暟
- int days = Integer.parseInt(redTimeArr[0]);
- int hours = 0;
- if (redTimeArr.length > 1) {
- hours = Integer.parseInt(redTimeArr[1]);
- }
- redTime = (days * 24L + hours) * 3600L;
- }
+ Long redTime = getTime(processCoding.getRedTime());
+ Long yellowTime = getTime(processCoding.getYellowTime());
+ Long overtime = getTime(processCoding.getOvertime());
if (startTime == null) continue;
+ //鑺傜偣澶勭悊鏃堕棿
long durationDay = (now.getTime() - startTime.getTime()) / 1000;
String status = GREEN; // 榛樿鐘舵�佷负缁胯壊
if (redTime != null && redTime !=0 && durationDay >= redTime) {
@@ -108,12 +87,20 @@
} else if (yellowTime != null && yellowTime !=0 && durationDay >= yellowTime) {
status = YELLOW; // 鍚﹀垯锛屽鏋滆秴杩囬粍鑹叉椂闂撮槇鍊硷紝鍒欑姸鎬佷负榛勮壊
}
+ //澶勭悊鍔炵悊鏈熼檺
+ String overtimeStatus = NORMAL;
+ if (overtime != null && overtime !=0 && durationDay >= overtime) {
+ overtimeStatus = OVERTIME; // 濡傛灉瓒呰繃鍔炵悊鏈熼檺
+ } else if (overtime != null && overtime != 0 && durationDay >= (overtime - 12 * 60 * 60)) {
+ overtimeStatus = WILLOVERTIME; // 濡傛灉涓存湡(鍥哄畾瓒呮椂鍓�12灏忔椂涓轰复鏈�)
+ }
List<String> processInsIds = map.get(status);
processInsIds.add(task.getProcessInstanceId());
+
processCoding.setStatus(status);
+ processCoding.setOvertimeStatus(overtimeStatus);
list.add(processCoding);
} catch (Exception e) {
- e.printStackTrace();
log.error(e.getMessage(),"璧嬬爜鏃堕棿鏍煎紡鏈夎");
}
}
@@ -125,6 +112,21 @@
log.info("缁撴潫璧嬬爜");
}
+ private Long getTime(String timeStr) {
+ Long time = null;
+ if (StringUtils.isNotBlank(timeStr)) {
+ String[] timeArr = timeStr.split("-");
+ // 瑙f瀽澶╂暟鍜屽皬鏃舵暟
+ int days = Integer.parseInt(timeArr[0]);
+ int hours = 0;
+ if (timeArr.length > 1) {
+ hours = Integer.parseInt(timeArr[1]);
+ }
+ time = (days * 24L + hours) * 3600L;
+ }
+ return time;
+ }
+
private Map<String, Date> getStartTaskList(List<ProcessCoding> processCodingList) {
//鏌ュ嚭浠诲姟璁℃椂璧峰鑺傜偣闆嗗悎
List<String> startTaskIds = processCodingList.stream().map(ProcessCoding::getStartTaskId).collect(Collectors.toList());
diff --git a/flowable/src/main/java/com/ycl/common/constant/ProcessOverTimeConstants.java b/flowable/src/main/java/com/ycl/common/constant/ProcessOverTimeConstants.java
index 10d736b..b59d109 100644
--- a/flowable/src/main/java/com/ycl/common/constant/ProcessOverTimeConstants.java
+++ b/flowable/src/main/java/com/ycl/common/constant/ProcessOverTimeConstants.java
@@ -15,4 +15,17 @@
* 榛勭爜
*/
public static final String YELLOW = "yellow";
+
+ /**
+ * 姝e父
+ */
+ public static final String NORMAL = "normal";
+ /**
+ * 涓存湡
+ */
+ public static final String WILLOVERTIME = "willOvertime";
+ /**
+ * 瓒呮椂
+ */
+ public static final String OVERTIME = "overtime";
}
diff --git a/flowable/src/main/java/com/ycl/domain/entity/ProcessCoding.java b/flowable/src/main/java/com/ycl/domain/entity/ProcessCoding.java
index 2a8beff..72ab5ee 100644
--- a/flowable/src/main/java/com/ycl/domain/entity/ProcessCoding.java
+++ b/flowable/src/main/java/com/ycl/domain/entity/ProcessCoding.java
@@ -41,9 +41,15 @@
/** 鍙樼孩鐮佺殑澶╂暟 */
private String redTime;
+ @TableField("overtime")
+ /** 澶勭悊鏈熼檺 */
+ private String overtime;
+
@TableField("status")
/** 浠诲姟鐘舵�� */
private String status;
-
+ @TableField("overtime_status")
+ /** 浠诲姟瓒呮椂鐘舵�� */
+ private String overtimeStatus;
}
diff --git a/flowable/src/main/java/com/ycl/domain/form/ProcessCodingForm.java b/flowable/src/main/java/com/ycl/domain/form/ProcessCodingForm.java
index 933a331..5f21334 100644
--- a/flowable/src/main/java/com/ycl/domain/form/ProcessCodingForm.java
+++ b/flowable/src/main/java/com/ycl/domain/form/ProcessCodingForm.java
@@ -41,16 +41,23 @@
@NotNull(message = "鍙橀粍鐮佺殑澶╂暟涓嶈兘涓虹┖", groups = {Add.class, Update.class})
@ApiModelProperty("鍙橀粍鐮佺殑澶╂暟")
- private Integer yellowTime;
+ private String yellowTime;
@NotNull(message = "鍙樼孩鐮佺殑澶╂暟涓嶈兘涓虹┖", groups = {Add.class, Update.class})
@ApiModelProperty("鍙樼孩鐮佺殑澶╂暟")
- private Integer redTime;
+ private String redTime;
+ @NotNull(message = "澶勭悊鏈熼檺涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("澶勭悊鏈熼檺")
+ private String overtime;
@NotNull(message = "浠诲姟鐘舵��", groups = {Add.class, Update.class})
@ApiModelProperty("浠诲姟鐘舵�乬reen/yellow/red")
private String status;
+ @NotNull(message = "浠诲姟瓒呮椂鐘舵��", groups = {Add.class, Update.class})
+ @ApiModelProperty("浠诲姟瓒呮椂鐘舵�乶ormal/willOvertime/overtime")
+ private String overtimeStatus;
+
public static ProcessCoding getEntityByForm(@NonNull ProcessCodingForm form, ProcessCoding entity) {
if(entity == null) {
entity = new ProcessCoding();
diff --git a/flowable/src/main/java/com/ycl/domain/vo/ProcessCodingVO.java b/flowable/src/main/java/com/ycl/domain/vo/ProcessCodingVO.java
index 7282c21..65ee250 100644
--- a/flowable/src/main/java/com/ycl/domain/vo/ProcessCodingVO.java
+++ b/flowable/src/main/java/com/ycl/domain/vo/ProcessCodingVO.java
@@ -1,5 +1,6 @@
package com.ycl.domain.vo;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.ycl.system.domain.base.AbsVo;
import com.ycl.domain.entity.ProcessCoding;
import java.util.List;
@@ -38,16 +39,23 @@
/** 鍙橀粍鐮佺殑澶╂暟 */
@ApiModelProperty("鍙橀粍鐮佺殑澶╂暟")
- private Integer yellowTime;
+ private String yellowTime;
/** 鍙樼孩鐮佺殑澶╂暟 */
@ApiModelProperty("鍙樼孩鐮佺殑澶╂暟")
- private Integer redTime;
+ private String redTime;
+
+ @TableField("overtime")
+ /** 澶勭悊鏈熼檺 */
+ private String overtime;
/** 浠诲姟鐘舵��0杩涜涓�1缁撴潫 */
@ApiModelProperty("浠诲姟鐘舵�乬reen/red/yellow")
private String status;
+ /** 浠诲姟瓒呮椂鐘舵�� */
+ @ApiModelProperty("浠诲姟瓒呮椂鐘舵��")
+ private String overtimeStatus;
public static ProcessCodingVO getVoByEntity(@NonNull ProcessCoding entity, ProcessCodingVO vo) {
if(vo == null) {
vo = new ProcessCodingVO();
diff --git a/flowable/src/main/resources/mapper/ProcessCodingMapper.xml b/flowable/src/main/resources/mapper/ProcessCodingMapper.xml
index c87910b..658c980 100644
--- a/flowable/src/main/resources/mapper/ProcessCodingMapper.xml
+++ b/flowable/src/main/resources/mapper/ProcessCodingMapper.xml
@@ -10,7 +10,9 @@
<result column="process_ins_id" property="processInsId" />
<result column="yellow_time" property="yellowTime" />
<result column="red_time" property="redTime" />
+ <result column="overtime" property="overtime" />
<result column="status" property="status" />
+ <result column="overtime_status" property="overtimeStatus" />
</resultMap>
@@ -22,7 +24,9 @@
TPC.process_ins_id,
TPC.yellow_time,
TPC.red_time,
+ TPC.overtime,
TPC.status,
+ TPC.overtime_status,
TPC.id
FROM
t_process_coding TPC
@@ -39,7 +43,9 @@
TPC.process_ins_id,
TPC.yellow_time,
TPC.red_time,
+ TPC.overtime,
TPC.status,
+ TPC.overtime_status,
TPC.id
FROM
t_process_coding TPC
--
Gitblit v1.8.0