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