mirror of
https://gitee.com/elegant_wings/dbd-meeting.git
synced 2025-06-21 12:29:36 +08:00
修改超时机制
This commit is contained in:
parent
ee852fa346
commit
465f392f12
@ -166,12 +166,11 @@ public class Repair extends BaseEntity<Repair> {
|
||||
|
||||
//--超时
|
||||
/**
|
||||
* 设置超时时间
|
||||
* 超时告警 0 无状态 ;默认 1 绿色 (未达告警状态值) 3橙色告警 5红色告警;根据 预计完成时间 判断
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date timeout;
|
||||
private Integer timeout = 0;
|
||||
|
||||
/** 预警状态, 默认0 没有预警;设置时间后 1 绿色 3橙色 5红色 */
|
||||
/** 预警状态, 0 没有预警; 默认 1 绿色 3橙色 5红色;根据 预计完成时间 判断*/
|
||||
private Integer warn = 0;
|
||||
|
||||
//工单状态,流程相关
|
||||
|
@ -77,19 +77,33 @@ public interface RepairMapper {
|
||||
*/
|
||||
int deleteRepairByIds(String[] ids);
|
||||
|
||||
/**
|
||||
* 红色告警
|
||||
*
|
||||
* @param day 超时大于day天红色预警
|
||||
*/
|
||||
int repairTimeoutRed(Integer day);
|
||||
|
||||
/**
|
||||
* 橙色预警
|
||||
*
|
||||
* @param day 超时大于day天橙色预警
|
||||
*/
|
||||
int repairTimeoutOrange(Integer day);
|
||||
|
||||
/**
|
||||
* 红色预警
|
||||
*
|
||||
* @param day 小于day天红色预警
|
||||
*/
|
||||
int repairTimeOutRed(Integer day);
|
||||
int repairForewarnRed(Integer day);
|
||||
|
||||
/**
|
||||
* 橙色预警
|
||||
*
|
||||
* @param day 小于day天橙色预警
|
||||
*/
|
||||
int repairTimeOutOrange(Integer day);
|
||||
int repairForewarnOrange(Integer day);
|
||||
|
||||
/**
|
||||
* 工单结束后解除预警
|
||||
|
@ -77,10 +77,16 @@ public interface IRepairService {
|
||||
*/
|
||||
int deleteRepairById(Long id);
|
||||
|
||||
/**
|
||||
* 工单超时告警
|
||||
*/
|
||||
int repairTimeOut();
|
||||
|
||||
/**
|
||||
* 工单超时预警
|
||||
*/
|
||||
int repairTimeOutWarn();
|
||||
int repairForewarnWarn();
|
||||
|
||||
|
||||
/**
|
||||
* 工单结束后解除预警
|
||||
|
@ -90,7 +90,7 @@ public class RepairServiceImpl implements IRepairService {
|
||||
Integer from = -1, to = -1;
|
||||
Repair newRepair = repair.getId() == null || repair.getId() == 0L ? repair : repairMapper.selectRepairById(repair.getId());//使用数据库中的表单
|
||||
from = repair.getId() == null || repair.getId() == 0L ? 0 : newRepair.getStatus();
|
||||
//保修
|
||||
//报修
|
||||
if (from == 0) {
|
||||
//没有设置维修人员则到派单环节,否则到“修理工是否接收”环节
|
||||
to = repair.getRepairUserId() == null ? 1 : 5;
|
||||
@ -101,7 +101,8 @@ public class RepairServiceImpl implements IRepairService {
|
||||
if (nextUser == null) return "没有找到派单员账号";
|
||||
repair.setSn(snService.generate(Sn.Type.REPAIR));//编单号
|
||||
repair.setPerUserId(nextUser.getId());//设置派单员
|
||||
repair.setWarn(0);
|
||||
repair.setTimeout(1);//告警默认绿色
|
||||
repair.setWarn(1);//预警默认绿色
|
||||
repair.setDeleteFlag(0);
|
||||
repair.setCreateBy(currentUserId.toString());
|
||||
repair.setCreateTime(new Date());
|
||||
@ -328,18 +329,32 @@ public class RepairServiceImpl implements IRepairService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int repairTimeOutWarn() {
|
||||
public int repairTimeOut() {
|
||||
List<DictData> list = dictDataService.selectDictDataByType("repair_timeout");
|
||||
if (list.size() == 2) {
|
||||
Integer orange = Integer.valueOf(list.get(0).getDictValue());
|
||||
Integer red = Integer.valueOf(list.get(1).getDictValue());
|
||||
int r = repairMapper.repairTimeOutRed(red);
|
||||
int o = repairMapper.repairTimeOutOrange(orange);
|
||||
if (list.size() == 4) {
|
||||
Integer orange = Integer.valueOf(list.get(2).getDictValue());
|
||||
Integer red = Integer.valueOf(list.get(3).getDictValue());
|
||||
int r = repairMapper.repairTimeoutRed(red);
|
||||
int o = repairMapper.repairTimeoutOrange(orange);
|
||||
return r + o;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int repairForewarnWarn() {
|
||||
List<DictData> list = dictDataService.selectDictDataByType("repair_timeout");
|
||||
if (list.size() == 4) {
|
||||
Integer orange = Integer.valueOf(list.get(0).getDictValue());
|
||||
Integer red = Integer.valueOf(list.get(1).getDictValue());
|
||||
int r = repairMapper.repairForewarnRed(red);
|
||||
int o = repairMapper.repairForewarnOrange(orange);
|
||||
return r + o;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int removeWarn() {
|
||||
return repairMapper.removeWarn();
|
||||
|
@ -267,25 +267,39 @@
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<update id="repairTimeOutRed" parameterType="Integer">
|
||||
update ics_repair set warn=5 where delete_flag=0 and status <![CDATA[ < ]]> 9 and timeout is not null and warn <![CDATA[ <> ]]> 5 and TIMESTAMPDIFF(DAY,NOW(),timeout) <![CDATA[ <= ]]> #{day}
|
||||
<!-- 预警 -->
|
||||
<update id="repairForewarnRed" parameterType="Integer">
|
||||
update ics_repair set warn=5 where delete_flag=0 and status <![CDATA[ < ]]> 9 and preDate is not null and warn <![CDATA[ <> ]]> 5 and TIMESTAMPDIFF(DAY,NOW(),preDate) <![CDATA[ <= ]]> #{day}
|
||||
</update>
|
||||
|
||||
<update id="repairTimeOutOrange" parameterType="Integer">
|
||||
update ics_repair set warn=3 where delete_flag=0 and status <![CDATA[ < ]]> 9 and timeout is not null and warn <![CDATA[ <= ]]> 1 and TIMESTAMPDIFF(DAY,NOW(),timeout) <![CDATA[ <= ]]> #{day}
|
||||
<update id="repairForewarnOrange" parameterType="Integer">
|
||||
update ics_repair set warn=3 where delete_flag=0 and status <![CDATA[ < ]]> 9 and preDate is not null and warn <![CDATA[ <= ]]> 1 and TIMESTAMPDIFF(DAY,NOW(),preDate) <![CDATA[ <= ]]> #{day}
|
||||
</update>
|
||||
|
||||
<update id="removeWarn">
|
||||
update ics_repair set warn=0 where delete_flag=0 and status <![CDATA[ >= ]]> 9 and warn <![CDATA[ > ]]> 0
|
||||
</update>
|
||||
|
||||
<!-- 自动好评 -->
|
||||
<update id="repairGoodEval">
|
||||
update ics_repair set eval_service=5,eval_time=NOW(),eval_user_id=-1,status=13
|
||||
where delete_flag=0 and status=9 and end_date is not null and TIMESTAMPDIFF(DAY,end_date,NOW()) <![CDATA[ >= ]]> 7
|
||||
</update>
|
||||
|
||||
<!-- 防止刷单 -->
|
||||
<select id="submitCheck" parameterType="String" resultType="Integer">
|
||||
select count(id) from ics_repair where delete_flag=0 and create_by= #{userId} and TIMESTAMPDIFF(MINUTE,create_time,NOW()) <![CDATA[ <= ]]> 3
|
||||
</select>
|
||||
|
||||
<!-- 超时告警,按顺序执行 -->
|
||||
<update id="repairTimeoutRed" parameterType="Integer">
|
||||
update ics_repair set timeout=5 where delete_flag=0 and status <![CDATA[ < ]]> 9 and preDate is not null and timeout <![CDATA[ <> ]]> 5 and TIMESTAMPDIFF(DAY,preDate,now()) <![CDATA[ >= ]]> #{day}
|
||||
</update>
|
||||
|
||||
<update id="repairTimeoutOrange" parameterType="Integer">
|
||||
update ics_repair set timeout=3 where delete_flag=0 and status <![CDATA[ < ]]> 9 and preDate is not null and timeout <![CDATA[ <= ]]> 1 and TIMESTAMPDIFF(DAY,preDate,now()) <![CDATA[ >= ]]> #{day}
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
|
||||
</mapper>
|
@ -17,16 +17,26 @@ import org.springframework.stereotype.Service;
|
||||
public class RepairTask {
|
||||
|
||||
/**
|
||||
* 工单超时预警
|
||||
* 工单超时预警;还未超时
|
||||
*/
|
||||
public void repairTimeOut() {
|
||||
public void repairForewarn() {
|
||||
IRepairService repairService = SpringUtils.getBean(IRepairService.class);
|
||||
int num = repairService.repairTimeOutWarn();
|
||||
int num = repairService.repairForewarnWarn();
|
||||
log.info("已对" + num + "个工单超时预警");
|
||||
num = repairService.removeWarn();
|
||||
log.info("已对" + num + "个工单解除预警");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 工单超时告警;已经超时
|
||||
*/
|
||||
public void repairTimeOut() {
|
||||
IRepairService repairService = SpringUtils.getBean(IRepairService.class);
|
||||
int num = repairService.repairTimeOut();
|
||||
log.info("已对" + num + "个工单超时告警");
|
||||
}
|
||||
|
||||
/**
|
||||
* 工单完成7天后未评价 则 自动好评
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user