结束服务指令、将每天未点击结束的服务工单的结束时间设置为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;
|
||||
|
|
@ -254,7 +255,7 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl<DirectiveOrderMapp
|
|||
return map;
|
||||
} else {
|
||||
QueryWrapper<DirectiveOrder> qw = new QueryWrapper<>();
|
||||
qw.eq("nu_id",directiveOrder.getNuId());
|
||||
qw.eq("nu_id", directiveOrder.getNuId());
|
||||
qw.eq("serv_start_time", directiveOrder.getServStartTime());
|
||||
List<DirectiveOrder> list = baseMapper.selectList(qw);
|
||||
|
||||
|
|
@ -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()));
|
||||
|
|
@ -422,7 +428,7 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl<DirectiveOrderMapp
|
|||
return Result.error("当前服务已超时,不可转单");
|
||||
} else {
|
||||
QueryWrapper<DirectiveOrder> qw = new QueryWrapper<>();
|
||||
qw.eq("nu_id",beforeData.getNuId());
|
||||
qw.eq("nu_id", beforeData.getNuId());
|
||||
qw.eq("serv_start_time", beforeData.getServStartTime());
|
||||
List<DirectiveOrder> list = baseMapper.selectList(qw);
|
||||
|
||||
|
|
@ -478,7 +484,7 @@ public class DirectiveOrderPadServiceImpl extends ServiceImpl<DirectiveOrderMapp
|
|||
return Result.error("当前服务已超时,不可协助执行");
|
||||
} else {
|
||||
QueryWrapper<DirectiveOrder> qw = new QueryWrapper<>();
|
||||
qw.eq("nu_id",beforeData.getNuId());
|
||||
qw.eq("nu_id", beforeData.getNuId());
|
||||
qw.eq("serv_start_time", beforeData.getServStartTime());
|
||||
List<DirectiveOrder> list = baseMapper.selectList(qw);
|
||||
|
||||
|
|
|
|||
|
|
@ -112,10 +112,10 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
List<DirectiveOrder> ordersList = baseMapper.queryDataPoolList(null);
|
||||
for (int i = 0; i < ordersList.size(); i++) {
|
||||
DirectiveOrder orders = ordersList.get(i);
|
||||
if(orders.getIzPackage().equals("N")){
|
||||
if (orders.getIzPackage().equals("N")) {
|
||||
//获取有效服务指令
|
||||
DirectiveOrder directiveEntity = baseMapper.getDirectiveById(orders);
|
||||
if(directiveEntity==null){
|
||||
if (directiveEntity == null) {
|
||||
continue;
|
||||
}
|
||||
orders.setDirectiveName(directiveEntity.getDirectiveName());
|
||||
|
|
@ -126,10 +126,10 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
orders.setServiceContent(directiveEntity.getServiceContent());
|
||||
orders.setServiceDuration(directiveEntity.getServiceDuration());
|
||||
orders.setTimeoutDuration(directiveEntity.getTimeoutDuration());
|
||||
}else{
|
||||
} else {
|
||||
//获取有效服务指令包
|
||||
DirectiveOrder packageEntity = baseMapper.getPackageById(orders);
|
||||
if(packageEntity==null){
|
||||
if (packageEntity == null) {
|
||||
continue;
|
||||
}
|
||||
orders.setDirectiveName(packageEntity.getDirectiveName());
|
||||
|
|
@ -141,17 +141,17 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
//生成结束时间
|
||||
String duration = orders.getServiceDuration();
|
||||
Calendar c = Calendar.getInstance();
|
||||
if(duration.equals("")||duration.equals("0")){
|
||||
c.set(Calendar.YEAR,3000);
|
||||
c.set(Calendar.MONTH,Calendar.DECEMBER);
|
||||
c.set(Calendar.DAY_OF_MONTH,31);
|
||||
c.set(Calendar.HOUR_OF_DAY,0);
|
||||
c.set(Calendar.MINUTE,0);
|
||||
c.set(Calendar.SECOND,0);
|
||||
c.set(Calendar.MILLISECOND,0);
|
||||
}else{
|
||||
if (duration.equals("") || duration.equals("0")) {
|
||||
c.set(Calendar.YEAR, 3000);
|
||||
c.set(Calendar.MONTH, Calendar.DECEMBER);
|
||||
c.set(Calendar.DAY_OF_MONTH, 31);
|
||||
c.set(Calendar.HOUR_OF_DAY, 0);
|
||||
c.set(Calendar.MINUTE, 0);
|
||||
c.set(Calendar.SECOND, 0);
|
||||
c.set(Calendar.MILLISECOND, 0);
|
||||
} else {
|
||||
c.setTime(orders.getStartTime());
|
||||
c.add(Calendar.MINUTE,Integer.valueOf(duration));
|
||||
c.add(Calendar.MINUTE, Integer.valueOf(duration));
|
||||
}
|
||||
Date endTime = c.getTime();
|
||||
orders.setEndTime(endTime);
|
||||
|
|
@ -194,11 +194,11 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
// System.out.println("护理单元:" + orders.getNuId() + ",服务时间" + orders.getStartTime());
|
||||
if (orders.getIzPackage().equals("N")) {
|
||||
List<DirectiveOrderInfo> ordersInfoList = ordersInfoService.getDirectiveList(orders.getDirectiveId());
|
||||
if(ordersInfoList!=null&&ordersInfoList.size()>0){
|
||||
if (ordersInfoList != null && ordersInfoList.size() > 0) {
|
||||
String directiveIds = ordersInfoList.stream().map(DirectiveOrderInfo::getDirectiveId).collect(Collectors.joining(","));
|
||||
//获取满足条件的员工
|
||||
DirectiveOrder employee = employeeScreening(directiveIds, orders.getElderId(), null, orders.getStartTime());
|
||||
if(employee!=null){
|
||||
if (employee != null) {
|
||||
orders.setEmployeeId(employee.getEmployeeId());
|
||||
orders.setEmployeeName(employee.getEmployeeName());
|
||||
orders.setOptIds(employee.getEmployeeId());
|
||||
|
|
@ -233,20 +233,20 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
// System.out.println("");
|
||||
// System.out.println("");
|
||||
// System.out.println("");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
List<DirectiveOrderInfo> ordersInfoList = ordersInfoService.getSubDirectiveList(orders.getDirectiveId());
|
||||
if(ordersInfoList!=null&&ordersInfoList.size()>0){
|
||||
if (ordersInfoList != null && ordersInfoList.size() > 0) {
|
||||
String directiveIds = ordersInfoList.stream().map(DirectiveOrderInfo::getDirectiveId).collect(Collectors.joining(","));
|
||||
|
||||
List<DirectiveOrder> emps = baseMapper.getPermissionEmps(directiveIds);//获取服务标签中的员工和数量
|
||||
emps.removeIf(data -> data.getOwnCn() < ordersInfoList.size());//删除没有权限的数据
|
||||
String employeeIds = emps.stream().map(DirectiveOrder::getEmployeeId).collect(Collectors.joining(","));
|
||||
DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),employeeIds,orders.getStartTime());
|
||||
if(employee!=null){
|
||||
DirectiveOrder employee = employeeScreening(directiveIds, orders.getElderId(), employeeIds, orders.getStartTime());
|
||||
if (employee != null) {
|
||||
orders.setEmployeeId(employee.getEmployeeId());
|
||||
orders.setEmployeeName(employee.getEmployeeName());
|
||||
orders.setOptIds(employee.getEmployeeId());
|
||||
|
|
@ -267,7 +267,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
ordersSub.setCycleType(orders.getCycleType());
|
||||
ordersSub.setCycleValue(orders.getCycleValue());
|
||||
ordersSub.setIzPackage(orders.getIzPackage());
|
||||
if(!orders.getIzPackage().equals("N")){
|
||||
if (!orders.getIzPackage().equals("N")) {
|
||||
ordersSub.setPackageId(orders.getDirectiveId());
|
||||
ordersSub.setPackageName(orders.getDirectiveName());
|
||||
}
|
||||
|
|
@ -643,22 +643,22 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
private String getOrderNo(String orderType){
|
||||
private String getOrderNo(String orderType) {
|
||||
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
|
||||
String deptCode = deptInfo.getString("code");
|
||||
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||
// 构建今天的前缀模式
|
||||
String todayPrefix = "";
|
||||
if(orderType.equals("1")){
|
||||
if (orderType.equals("1")) {
|
||||
todayPrefix = "HL";
|
||||
}
|
||||
if(orderType.equals("2")){
|
||||
if (orderType.equals("2")) {
|
||||
todayPrefix = "YL";
|
||||
}
|
||||
if(orderType.equals("3")){
|
||||
if (orderType.equals("3")) {
|
||||
todayPrefix = "CK";
|
||||
}
|
||||
if(orderType.equals("4")){
|
||||
if (orderType.equals("4")) {
|
||||
todayPrefix = "HQ";
|
||||
}
|
||||
todayPrefix = todayPrefix + deptCode + today;
|
||||
|
|
@ -742,10 +742,10 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
String employeeName = "";
|
||||
Calendar c = Calendar.getInstance();
|
||||
Date startTime = c.getTime();
|
||||
if(orders.getIzPackage().equals("N")){
|
||||
if (orders.getIzPackage().equals("N")) {
|
||||
//获取服务指令
|
||||
DirectiveOrder directiveEntity = baseMapper.getDirectiveById(orders);
|
||||
if(directiveEntity==null){
|
||||
if (directiveEntity == null) {
|
||||
map.put("success", false);
|
||||
map.put("message", "服务指令无效");
|
||||
return map;
|
||||
|
|
@ -758,10 +758,10 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
orders.setServiceContent(directiveEntity.getServiceContent());
|
||||
orders.setServiceDuration(directiveEntity.getServiceDuration());
|
||||
orders.setTimeoutDuration(directiveEntity.getTimeoutDuration());
|
||||
}else{
|
||||
} else {
|
||||
//获取服务指令包
|
||||
DirectiveOrder packageEntity = baseMapper.getPackageById(orders);
|
||||
if(packageEntity==null){
|
||||
if (packageEntity == null) {
|
||||
map.put("success", false);
|
||||
map.put("message", "服务指令包无效");
|
||||
return map;
|
||||
|
|
@ -774,41 +774,41 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
|
||||
//生成结束时间
|
||||
String duration = orders.getServiceDuration();
|
||||
if(duration.equals("")||duration.equals("0")){
|
||||
c.set(Calendar.YEAR,3000);
|
||||
c.set(Calendar.MONTH,Calendar.DECEMBER);
|
||||
c.set(Calendar.DAY_OF_MONTH,31);
|
||||
c.set(Calendar.HOUR_OF_DAY,0);
|
||||
c.set(Calendar.MINUTE,0);
|
||||
c.set(Calendar.SECOND,0);
|
||||
c.set(Calendar.MILLISECOND,0);
|
||||
}else{
|
||||
c.add(Calendar.MINUTE,Integer.valueOf(duration));
|
||||
if (duration.equals("") || duration.equals("0")) {
|
||||
c.set(Calendar.YEAR, 3000);
|
||||
c.set(Calendar.MONTH, Calendar.DECEMBER);
|
||||
c.set(Calendar.DAY_OF_MONTH, 31);
|
||||
c.set(Calendar.HOUR_OF_DAY, 0);
|
||||
c.set(Calendar.MINUTE, 0);
|
||||
c.set(Calendar.SECOND, 0);
|
||||
c.set(Calendar.MILLISECOND, 0);
|
||||
} else {
|
||||
c.add(Calendar.MINUTE, Integer.valueOf(duration));
|
||||
}
|
||||
Date endTime = c.getTime();
|
||||
orders.setStartTime(startTime);
|
||||
orders.setEndTime(endTime);
|
||||
if(orders.getIzPackage().equals("N")){
|
||||
if (orders.getIzPackage().equals("N")) {
|
||||
infoList = ordersInfoService.getDirectiveList(orders.getDirectiveId());
|
||||
String directiveIds = infoList.stream().map(DirectiveOrderInfo::getDirectiveId).collect(Collectors.joining(","));
|
||||
if(!directiveOrder.getTriggerMode().equals("1")){
|
||||
if (!directiveOrder.getTriggerMode().equals("1")) {
|
||||
getSendOrderRule();
|
||||
DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),null,orders.getStartTime());
|
||||
DirectiveOrder employee = employeeScreening(directiveIds, orders.getElderId(), null, orders.getStartTime());
|
||||
employeeId = employee.getEmployeeId();
|
||||
employeeName = employee.getEmployeeName();
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
infoList = ordersInfoService.getSubDirectiveList(orders.getDirectiveId());
|
||||
String directiveIds = infoList.stream().map(DirectiveOrderInfo::getDirectiveId).collect(Collectors.joining(","));
|
||||
if(!directiveOrder.getTriggerMode().equals("1")){
|
||||
if (!directiveOrder.getTriggerMode().equals("1")) {
|
||||
getSendOrderRule();
|
||||
List<DirectiveOrder> emps = baseMapper.getPermissionEmps(directiveIds);//获取服务标签中的员工和数量
|
||||
if(infoList!=null){
|
||||
if (infoList != null) {
|
||||
int size = infoList.size();
|
||||
emps.removeIf(data -> data.getOwnCn() < size);//删除没有权限的数据
|
||||
}
|
||||
String employeeIds = emps.stream().map(DirectiveOrder::getEmployeeId).collect(Collectors.joining(","));
|
||||
DirectiveOrder employee = employeeScreening(directiveIds,orders.getElderId(),employeeIds,orders.getStartTime());
|
||||
DirectiveOrder employee = employeeScreening(directiveIds, orders.getElderId(), employeeIds, orders.getStartTime());
|
||||
employeeId = employee.getEmployeeId();
|
||||
employeeName = employee.getEmployeeName();
|
||||
}
|
||||
|
|
@ -834,8 +834,8 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
orders.setOptNames(employeeName);
|
||||
orders.setDelFlag("0");
|
||||
this.save(orders);//生成工单主表
|
||||
if(infoList!=null){
|
||||
for(int i=0;i<infoList.size();i++){
|
||||
if (infoList != null) {
|
||||
for (int i = 0; i < infoList.size(); i++) {
|
||||
DirectiveOrderInfo ordersInfo = infoList.get(i);
|
||||
ordersInfo.setOrderNo(getOrderInfoNo(orderNo));
|
||||
ordersInfo.setOrderType(orderType);
|
||||
|
|
@ -849,7 +849,7 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
ordersInfo.setCycleTypeId(orders.getCycleTypeId());
|
||||
ordersInfo.setCycleType(orders.getCycleType());
|
||||
ordersInfo.setIzPackage(orders.getIzPackage());
|
||||
if(!orders.getIzPackage().equals("N")){
|
||||
if (!orders.getIzPackage().equals("N")) {
|
||||
ordersInfo.setPackageId(orders.getDirectiveId());
|
||||
ordersInfo.setPackageName(orders.getDirectiveName());
|
||||
}
|
||||
|
|
@ -887,18 +887,24 @@ public class DirectiveOrderServiceImpl extends ServiceImpl<DirectiveOrderMapper,
|
|||
|
||||
/**
|
||||
* 获取员工姓名
|
||||
*
|
||||
* @param employeeId
|
||||
*/
|
||||
@Override
|
||||
public String getEmployeeName(String employeeId){
|
||||
public String getEmployeeName(String employeeId) {
|
||||
String employeeName = "";
|
||||
if(employeeId!=null&&!employeeId.equals("")){
|
||||
if (employeeId != null && !employeeId.equals("")) {
|
||||
DirectiveOrder employeeInfo = baseMapper.getEmployeeById(employeeId);
|
||||
if(employeeInfo!=null){
|
||||
if (employeeInfo != null) {
|
||||
employeeName = employeeInfo.getEmployeeName();
|
||||
}
|
||||
}
|
||||
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