结束服务指令、将每天未点击结束的服务工单的结束时间设置为23:59:59定时任务:计算并存储工单执行状态(正常执行、超时等)
This commit is contained in:
parent
57115f0d91
commit
c5ef80c63f
|
|
@ -149,6 +149,10 @@ public class DirectiveOrderEndTplinkJob implements Job {
|
|||
System.out.println("===============================================");
|
||||
}
|
||||
directiveOrderService.updateById(directiveOrder);
|
||||
|
||||
if (directiveOrderList.indexOf(directiveOrder) < directiveOrderList.size() - 1) {
|
||||
Thread.sleep(10000);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,4 +69,6 @@ public interface DirectiveOrderMapper extends BaseMapper<DirectiveOrder> {
|
|||
List<DirectiveOrder> findErrorFiles();
|
||||
|
||||
int cleanErrorFilePath(@Param("ids") List<String> ids);
|
||||
|
||||
int updateEmpEndTimeByJob();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -273,6 +273,14 @@
|
|||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
<update id="updateEmpEndTimeByJob">
|
||||
UPDATE nu_biz_directive_order
|
||||
SET emp_end_time = DATE_FORMAT(emp_start_time, '%Y-%m-%d 23:59:59'),
|
||||
order_status = '3'
|
||||
WHERE emp_start_time IS NOT NULL
|
||||
AND emp_end_time IS NULL
|
||||
AND DATE(emp_start_time) = CURDATE()
|
||||
</update>
|
||||
|
||||
<select id="getDirectivePrice" resultType="com.nu.modules.biz.order.entity.DirectiveOrder">
|
||||
select toll_price as tollPrice,
|
||||
|
|
|
|||
|
|
@ -17,4 +17,6 @@ public interface IDirectiveOrderService extends IService<DirectiveOrder> {
|
|||
Result<?> generateOrdersBatch();
|
||||
Map<String, Object> generateOrdersInstant(DirectiveOrder directiveOrder);
|
||||
String getEmployeeName(String employeeId);
|
||||
|
||||
void updateEmpEndTimeByJob();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nu.modules.biz.order.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.io.unit.DataUnit;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
|
@ -300,6 +301,11 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl<DirectiveOrderMapp
|
|||
}
|
||||
|
||||
directiveOrder.setEmpEndTime(new Date());
|
||||
{
|
||||
//判断正常结束还是超时(无论定时、计时 只要实际结束时间 大于 应该结束时间 就是超时 否则正常)
|
||||
boolean izCs = new Date().after(directiveOrder.getServEndTime());
|
||||
directiveOrder.setOrderStatus(izCs ? "3" : "2");
|
||||
}
|
||||
baseMapper.updateById(directiveOrder);
|
||||
|
||||
// List<DirectiveOrderInfo> list = directiveOrderInfoMapper.selectList(new QueryWrapper<DirectiveOrderInfo>().eq("main_id", directiveOrder.getId()));
|
||||
|
|
|
|||
|
|
@ -887,6 +887,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
|
||||
/**
|
||||
* 获取员工姓名
|
||||
*
|
||||
* @param employeeId
|
||||
*/
|
||||
@Override
|
||||
|
|
@ -901,4 +902,9 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
return employeeName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEmpEndTimeByJob() {
|
||||
baseMapper.updateEmpEndTimeByJob();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,20 +25,26 @@ public class DirectiveEndOrderJob implements Job {
|
|||
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
DirectiveOrder upData = new DirectiveOrder();
|
||||
//设置为当天23:59:59
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
upData.setEmpEndTime(new Date(calendar.get(Calendar.YEAR) - 1900,
|
||||
calendar.get(Calendar.MONTH),
|
||||
calendar.get(Calendar.DAY_OF_MONTH),
|
||||
23, 59, 59));
|
||||
// DirectiveOrder upData = new DirectiveOrder();
|
||||
// //设置为当天23:59:59
|
||||
// Calendar calendar = Calendar.getInstance();
|
||||
// upData.setEmpEndTime(new Date(calendar.get(Calendar.YEAR) - 1900,
|
||||
// calendar.get(Calendar.MONTH),
|
||||
// calendar.get(Calendar.DAY_OF_MONTH),
|
||||
// 23, 59, 59));
|
||||
//
|
||||
// //当天任务且已开始的
|
||||
// UpdateWrapper<DirectiveOrder> uw = new UpdateWrapper<>();
|
||||
// uw.apply("DATE(serv_start_time) = CURDATE()");
|
||||
// uw.isNotNull("emp_start_time");
|
||||
// uw.isNull("emp_end_time");
|
||||
// directiveOrderService.update(upData,uw);
|
||||
|
||||
//当天任务且已开始的
|
||||
UpdateWrapper<DirectiveOrder> uw = new UpdateWrapper<>();
|
||||
uw.apply("DATE(serv_start_time) = CURDATE()");
|
||||
uw.isNotNull("emp_start_time");
|
||||
uw.isNull("emp_end_time");
|
||||
directiveOrderService.update(upData,uw);
|
||||
//条件是工单已开始未结束 且 员工开始时间是今天 存在问题:
|
||||
// 1)任务设置在每天23:59:50 如果当天由于系统原因比如重启后才补发定时任务 则缺少了一天的定时任务
|
||||
// 2)如果员工在23:59:50~23:59:59 点击开始 则结束时间无法被定时任务执行到
|
||||
// 3)解决办法:条件只要已开始未结束(那以后就不能有让历史工单的结束时间需要保持空的需求了 - 定时会自动赋值 一旦出错这种数据因为没有日志就只能用数据库备份比对解决)
|
||||
directiveOrderService.updateEmpEndTimeByJob();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue