|
@ -1,5 +1,6 @@ |
|
|
package org.dromara.platform.service.impl; |
|
|
package org.dromara.platform.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
import cn.hutool.core.date.DateUtil; |
|
|
import cn.hutool.core.date.DateUtil; |
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
import jakarta.annotation.Resource; |
|
|
import jakarta.annotation.Resource; |
|
@ -51,6 +52,12 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
|
|
|
|
|
private final WorkOrderInfoMapper baseMapper; |
|
|
private final WorkOrderInfoMapper baseMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private ContractInfoMapper contractInfoMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProjectInfoMapper projectInfoMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
@Resource |
|
|
private IProjectInfoService projectInfoService; |
|
|
private IProjectInfoService projectInfoService; |
|
|
@Resource |
|
|
@Resource |
|
@ -130,26 +137,32 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
*/ |
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public TableDataInfo<WorkOrderInfoVo> queryPageList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
public TableDataInfo<WorkOrderInfoVo> queryPageList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
|
|
|
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
|
|
String deptName = loginUser.getDeptName(); |
|
|
log.info("用户昵称:{}-->角色{}-->部门:{}",loginUser.getNickname(),loginUser.getRoles(),loginUser.getDeptName()); |
|
|
log.info("用户昵称:{}-->角色{}-->部门:{}",loginUser.getNickname(),loginUser.getRoles(),loginUser.getDeptName()); |
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
|
|
|
String username = loginUser.getUsername(); |
|
|
|
|
|
// 获取用户角色列表
|
|
|
// 获取用户角色列表
|
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
// 提前判断是否有 "监理" 和 "业主" 角色
|
|
|
// 提前判断是否有 "监理" 和 "业主" 角色
|
|
|
boolean hasUnitRole = roles.stream().anyMatch(role -> "运维人员".equals(role.getRoleName())); |
|
|
boolean hasUnitRole = roles.stream().anyMatch(role -> "运维人员".equals(role.getRoleName())); |
|
|
boolean hasSupervisorRole = roles.stream().anyMatch(role -> "监理".equals(role.getRoleName())); |
|
|
boolean hasSupervisorRole = roles.stream().anyMatch(role -> "监理".equals(role.getRoleName())); |
|
|
boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); |
|
|
boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); |
|
|
|
|
|
// 如果是运维角色则增加所属部门作为查询条件
|
|
|
if (hasUnitRole){ |
|
|
if (hasUnitRole){ |
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
bo.setMaintenanceUnit(deptName); |
|
|
List<WorkOrderInfoVo> sortedRecords = records.stream() |
|
|
} |
|
|
//根据单位过滤
|
|
|
if (hasOwnerRole){ |
|
|
.filter(item -> item.getMaintenanceUnit().equals(loginUser.getDeptName())) |
|
|
// 通过合同甲方获取对应的合同乙方(运维单位)
|
|
|
.collect(Collectors.toList()); |
|
|
if (deptName.equals("江北公安")){ |
|
|
result.setRecords(sortedRecords); |
|
|
List<String> partyBList = Arrays.asList("电信", "移动","盈力"); |
|
|
result.setTotal(sortedRecords.size()); |
|
|
bo.setMaintenanceUnits(partyBList); |
|
|
|
|
|
}else if (deptName.equals("鄞州公安")){ |
|
|
|
|
|
List<String> partyBList = Arrays.asList("时代"); |
|
|
|
|
|
bo.setMaintenanceUnits(partyBList); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
return TableDataInfo.build(result); |
|
|
return TableDataInfo.build(result); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -188,10 +201,17 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getFaultDescription()), WorkOrderInfo::getFaultDescription, bo.getFaultDescription()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getFaultDescription()), WorkOrderInfo::getFaultDescription, bo.getFaultDescription()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), WorkOrderInfo::getAttachment, bo.getAttachment()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), WorkOrderInfo::getAttachment, bo.getAttachment()); |
|
|
lqw.eq(bo.getMaintenanceRequirement() != null, WorkOrderInfo::getMaintenanceRequirement, bo.getMaintenanceRequirement()); |
|
|
lqw.eq(bo.getMaintenanceRequirement() != null, WorkOrderInfo::getMaintenanceRequirement, bo.getMaintenanceRequirement()); |
|
|
|
|
|
// 运维单位多选
|
|
|
|
|
|
lqw.in(CollectionUtil.isNotEmpty(bo.getMaintenanceUnits()), |
|
|
|
|
|
WorkOrderInfo::getMaintenanceUnit, |
|
|
|
|
|
bo.getMaintenanceUnits()); |
|
|
|
|
|
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getDispatchOpinion()), WorkOrderInfo::getDispatchOpinion, bo.getDispatchOpinion()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getDispatchOpinion()), WorkOrderInfo::getDispatchOpinion, bo.getDispatchOpinion()); |
|
|
lqw.eq(bo.getIsDispatched() != null, WorkOrderInfo::getIsDispatched, bo.getIsDispatched()); |
|
|
lqw.eq(bo.getIsDispatched() != null, WorkOrderInfo::getIsDispatched, bo.getIsDispatched()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getLatitude()), WorkOrderInfo::getLatitude, bo.getLatitude()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getLatitude()), WorkOrderInfo::getLatitude, bo.getLatitude()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getLongitude()), WorkOrderInfo::getLongitude, bo.getLongitude()); |
|
|
lqw.eq(StringUtils.isNotBlank(bo.getLongitude()), WorkOrderInfo::getLongitude, bo.getLongitude()); |
|
|
|
|
|
// 运维单位
|
|
|
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getMaintenanceUnit()), WorkOrderInfo::getMaintenanceUnit, bo.getMaintenanceUnit()); |
|
|
//当前状态:status
|
|
|
//当前状态:status
|
|
|
lqw.eq(bo.getStatus() != null, WorkOrderInfo::getStatus, bo.getStatus()); |
|
|
lqw.eq(bo.getStatus() != null, WorkOrderInfo::getStatus, bo.getStatus()); |
|
|
|
|
|
|
|
@ -375,7 +395,9 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
@Override |
|
|
@Override |
|
|
public void takeOrder(String workOrderId) { |
|
|
public void takeOrder(String workOrderId) { |
|
|
WorkOrderInfoVo workOrderInfoVo = baseMapper.selectVoById(workOrderId); |
|
|
WorkOrderInfoVo workOrderInfoVo = baseMapper.selectVoById(workOrderId); |
|
|
if (workOrderInfoVo.getStatus() != 1){ |
|
|
log.info("当前工单状态为:{}", workOrderInfoVo.getStatus()); |
|
|
|
|
|
Set<Long> allowedStatuses = Set.of(1L, 9L, 10L); |
|
|
|
|
|
if (!allowedStatuses.contains(workOrderInfoVo.getStatus())) { |
|
|
throw new ServiceException("当前工单状态未处于:待接单状态,不能进行接单操作!"); |
|
|
throw new ServiceException("当前工单状态未处于:待接单状态,不能进行接单操作!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -423,20 +445,22 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
public TableDataInfo<WorkOrderInfoVo> dealWithList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
public TableDataInfo<WorkOrderInfoVo> dealWithList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
String username = loginUser.getUsername(); |
|
|
String username = loginUser.getUsername(); |
|
|
|
|
|
//TODO 优化:查询而不是过滤
|
|
|
|
|
|
// 如果是运维角色则增加所属部门作为查询条件
|
|
|
|
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
|
|
|
boolean hasUnitRole = roles.stream().anyMatch(role -> "运维人员".equals(role.getRoleName())); |
|
|
|
|
|
if (hasUnitRole){ |
|
|
|
|
|
bo.setMaintenanceUnit(loginUser.getDeptName()); |
|
|
|
|
|
} |
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
|
|
|
// 设置工单状态:1:待接单 2:处理中 7:处理中(已延期)
|
|
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(1, 2, 7,9,10)); |
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
List<WorkOrderInfoVo> filterRecords = records.stream() |
|
|
|
|
|
.filter(record -> record.getStatus() != null |
|
|
|
|
|
&& (record.getStatus() == 1 || record.getStatus() == 2 || record.getStatus() == 7) |
|
|
|
|
|
) |
|
|
|
|
|
// TODO 角色过滤
|
|
|
|
|
|
.filter(item -> "admin".equals(username) || item.getMaintenanceUnit().equals(loginUser.getDeptName())) |
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
// 封装
|
|
|
// 封装
|
|
|
for (WorkOrderInfoVo record : filterRecords) { |
|
|
for (WorkOrderInfoVo record : records) { |
|
|
String workOrderId = record.getId(); |
|
|
String workOrderId = record.getId(); |
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
@ -446,12 +470,15 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
queryWrapper.last("LIMIT 1"); |
|
|
queryWrapper.last("LIMIT 1"); |
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
|
|
|
|
|
|
if (target != null && target.getOperationTime() != null) { |
|
|
if (target != null |
|
|
|
|
|
&& target.getOperationTime() != null |
|
|
|
|
|
&& (record.getStatus() != 9 && record.getStatus() != 10)) { |
|
|
Date operationTime = target.getOperationTime(); |
|
|
Date operationTime = target.getOperationTime(); |
|
|
// 单位:小时
|
|
|
// 单位:小时
|
|
|
Long responseTime = record.getResponseTime(); |
|
|
Long responseTime = record.getResponseTime(); |
|
|
// 设置剩余时间提示
|
|
|
//TODO 设置剩余处理时间
|
|
|
record.setRestTime(getTimeLeft(operationTime, responseTime)); |
|
|
record.setRestTime(getTimeLeft(operationTime, responseTime)); |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
// 如果没有找到接单记录或没有接单时间,可以设为默认值
|
|
|
// 如果没有找到接单记录或没有接单时间,可以设为默认值
|
|
|
record.setRestTime("暂无接单信息"); |
|
|
record.setRestTime("暂无接单信息"); |
|
@ -468,11 +495,39 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
record.setRestTime(getTimeLeft(dueDateTime)); |
|
|
record.setRestTime(getTimeLeft(dueDateTime)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<WorkOrderProcess> dispatchQuery = new LambdaQueryWrapper<>(); |
|
|
|
|
|
dispatchQuery.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
|
|
|
// * 9 待接单(派遣)
|
|
|
|
|
|
// * 10 待接单(转派)
|
|
|
|
|
|
if (record.getStatus() == 10){ |
|
|
|
|
|
dispatchQuery.eq(WorkOrderProcess::getStage, "事件转派"); |
|
|
|
|
|
}else { |
|
|
|
|
|
dispatchQuery.eq(WorkOrderProcess::getStage, "故障派遣"); |
|
|
|
|
|
} |
|
|
|
|
|
// 按照时间降序排,最新的记录在最前面
|
|
|
|
|
|
dispatchQuery.orderByDesc(WorkOrderProcess::getCreateTime); |
|
|
|
|
|
dispatchQuery.last("LIMIT 1"); |
|
|
|
|
|
WorkOrderProcess dispatchProcess = workOrderProcessMapper.selectOne(dispatchQuery); |
|
|
|
|
|
|
|
|
|
|
|
String projectName = record.getProjectName(); |
|
|
|
|
|
// 根据项目名称获取接单超期时间
|
|
|
|
|
|
String orderTakingOverTime = projectInfoMapper.selectOrderTakingOverTimeByProjectName(projectName); |
|
|
|
|
|
if (dispatchProcess != null |
|
|
|
|
|
&& dispatchProcess.getOperationTime() != null) { |
|
|
|
|
|
Date operationTime = dispatchProcess.getOperationTime(); |
|
|
|
|
|
// 设置剩余接单时间
|
|
|
|
|
|
record.setOrderAcceptDeadline(getTimeLeft(operationTime, Long.valueOf(orderTakingOverTime))); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
record.setOrderAcceptDeadline("暂无派遣信息"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (record.getStatus() == 7 || record.getStatus() == 2){ |
|
|
|
|
|
record.setOrderAcceptDeadline("正在处理中.."); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
result.setRecords(filterRecords); |
|
|
|
|
|
result.setTotal(filterRecords.size()); |
|
|
|
|
|
return TableDataInfo.build(result); |
|
|
return TableDataInfo.build(result); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -550,39 +605,37 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
@Override |
|
|
@Override |
|
|
public TableDataInfo<WorkOrderInfoVo> reviewList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
public TableDataInfo<WorkOrderInfoVo> reviewList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
String deptName = loginUser.getDeptName(); |
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
|
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
|
|
|
|
|
|
|
|
|
// 获取用户角色列表
|
|
|
// 获取用户角色列表
|
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
|
|
|
|
|
|
// 提前判断是否有 "监理" 和 "业主" 角色
|
|
|
// 提前判断是否有 "监理" 和 "业主" 角色
|
|
|
boolean hasSupervisorRole = roles.stream().anyMatch(role -> "监理".equals(role.getRoleName())); |
|
|
boolean hasSupervisorRole = roles.stream().anyMatch(role -> "监理".equals(role.getRoleName())); |
|
|
boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); |
|
|
boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); |
|
|
|
|
|
if (hasOwnerRole){ |
|
|
|
|
|
// 通过合同甲方获取对应的合同乙方(运维单位)
|
|
|
|
|
|
if (deptName.equals("江北公安")){ |
|
|
|
|
|
List<String> partyBList = Arrays.asList("电信", "移动","盈力"); |
|
|
|
|
|
bo.setMaintenanceUnits(partyBList); |
|
|
|
|
|
}else if (deptName.equals("鄞州公安")){ |
|
|
|
|
|
List<String> partyBList = Arrays.asList("时代"); |
|
|
|
|
|
bo.setMaintenanceUnits(partyBList); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
|
|
|
|
|
|
List<WorkOrderInfoVo> filterRecords = records.stream() |
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(4, 5)); |
|
|
.filter(record -> record.getStatus() != null |
|
|
|
|
|
&& (record.getStatus() == 4 || record.getStatus() == 5)) |
|
|
|
|
|
.filter(record -> { |
|
|
|
|
|
// 如果都没有这两个角色,则保留所有 status == 4 || 5 的记录
|
|
|
|
|
|
if (!hasSupervisorRole && !hasOwnerRole) { |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
// 监理:只保留 status == 4
|
|
|
|
|
|
if (hasSupervisorRole && record.getStatus() == 4) { |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
// 业主:只保留 status == 5
|
|
|
|
|
|
if (hasOwnerRole && record.getStatus() == 5) { |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
}) |
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
result.setRecords(filterRecords); |
|
|
if (hasSupervisorRole){ |
|
|
result.setTotal(filterRecords.size()); |
|
|
//监理初审(暂定后续可配)
|
|
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(4)); |
|
|
|
|
|
} |
|
|
|
|
|
if (hasOwnerRole){ |
|
|
|
|
|
//业主终审(暂定后续可配)
|
|
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(5)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
return TableDataInfo.build(result); |
|
|
return TableDataInfo.build(result); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -943,6 +996,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); |
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); |
|
|
|
|
|
queryWrapper.orderByDesc(WorkOrderProcess::getOperationTime).last("LIMIT 1"); |
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
Date operationTime = target.getOperationTime(); |
|
|
Date operationTime = target.getOperationTime(); |
|
|
// 1.创建工单延期信息
|
|
|
// 1.创建工单延期信息
|
|
@ -1107,16 +1161,28 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TableDataInfo<WorkOrderInfoVo> dispatchList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
public TableDataInfo<WorkOrderInfoVo> dispatchList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
|
|
String deptName = loginUser.getDeptName(); |
|
|
|
|
|
log.info("用户昵称:{}-->角色{}-->部门:{}",loginUser.getNickname(),loginUser.getRoles(),loginUser.getDeptName()); |
|
|
|
|
|
// 获取用户角色列表
|
|
|
|
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
|
|
|
// 业主只能看到自己负责的工单
|
|
|
|
|
|
boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); |
|
|
|
|
|
if (hasOwnerRole){ |
|
|
|
|
|
// 通过合同甲方获取对应的合同乙方(运维单位)
|
|
|
|
|
|
if (deptName.equals("江北公安")){ |
|
|
|
|
|
List<String> partyBList = Arrays.asList("电信", "移动","盈力"); |
|
|
|
|
|
bo.setMaintenanceUnits(partyBList); |
|
|
|
|
|
}else if (deptName.equals("鄞州公安")){ |
|
|
|
|
|
List<String> partyBList = Arrays.asList("时代"); |
|
|
|
|
|
bo.setMaintenanceUnits(partyBList); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
|
|
|
//status 0 待派遣 3 运维单位处理时回退至派遣
|
|
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(0, 3)); |
|
|
|
|
|
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
|
|
|
List<WorkOrderInfoVo> filterRecords = records.stream() |
|
|
|
|
|
.filter(record -> record.getStatus() != null |
|
|
|
|
|
&& (record.getStatus() == 0 || record.getStatus() == 3) |
|
|
|
|
|
) |
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
result.setRecords(filterRecords); |
|
|
|
|
|
result.setTotal(filterRecords.size()); |
|
|
|
|
|
return TableDataInfo.build(result); |
|
|
return TableDataInfo.build(result); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -1167,7 +1233,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
if (flag) { |
|
|
if (flag) { |
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
.set(WorkOrderInfo::getStatus, 1); |
|
|
//待接单(派遣)
|
|
|
|
|
|
.set(WorkOrderInfo::getStatus, 9); |
|
|
baseMapper.update(null, updateWrapper); |
|
|
baseMapper.update(null, updateWrapper); |
|
|
log.info("已派遣至运维单位!"); |
|
|
log.info("已派遣至运维单位!"); |
|
|
} |
|
|
} |
|
@ -1208,6 +1275,45 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
baseMapper.update(null, updateWrapper); |
|
|
baseMapper.update(null, updateWrapper); |
|
|
log.info("作废!"); |
|
|
log.info("作废!"); |
|
|
} |
|
|
} |
|
|
|
|
|
}else if (handle.equals("事件转派")){ |
|
|
|
|
|
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); |
|
|
|
|
|
workOrderProcess.setWorkOrderId(workOrderId); |
|
|
|
|
|
workOrderProcess.setOperator(loginUser.getNickname()); |
|
|
|
|
|
workOrderProcess.setStage("事件转派"); |
|
|
|
|
|
workOrderProcess.setOperationName("事件转派"); |
|
|
|
|
|
workOrderProcess.setDescription("在故障派遣环节进行了事件转派操作,派遣给"+bo.getMaintenanceUnit()+"处理"); |
|
|
|
|
|
// 获取最近一个节点的操作时间
|
|
|
|
|
|
LambdaQueryWrapper<WorkOrderProcess> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
wrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId) |
|
|
|
|
|
.orderByDesc(WorkOrderProcess::getOperationTime) |
|
|
|
|
|
.last("LIMIT 1"); |
|
|
|
|
|
WorkOrderProcess recentTarget = workOrderProcessMapper.selectOne(wrapper); |
|
|
|
|
|
log.info("最近一个节点:{}-->操作时间{}", recentTarget.getOperationName(), recentTarget.getOperationTime()); |
|
|
|
|
|
Date lastTime = recentTarget.getOperationTime(); |
|
|
|
|
|
LocalDateTime time1 = LocalDateTime.ofInstant(lastTime.toInstant(), ZoneId.systemDefault()); |
|
|
|
|
|
// 设置操作时间
|
|
|
|
|
|
LocalDateTime time2 = LocalDateTime.now(); |
|
|
|
|
|
Date date2 = Date.from(time2.atZone(ZoneId.systemDefault()).toInstant()); |
|
|
|
|
|
workOrderProcess.setOperationTime(date2); |
|
|
|
|
|
// 设置派遣意见返回
|
|
|
|
|
|
workOrderProcess.setFeedback(bo.getDispatchOpinion()); |
|
|
|
|
|
// 计算时间差
|
|
|
|
|
|
Duration duration = Duration.between(time1, time2); |
|
|
|
|
|
long durationInSeconds = duration.getSeconds(); |
|
|
|
|
|
String formatDuration = formatDuration((int) durationInSeconds); |
|
|
|
|
|
workOrderProcess.setDuration(formatDuration); |
|
|
|
|
|
|
|
|
|
|
|
Boolean flag = workOrderProcessService.insertByBo(workOrderProcess); |
|
|
|
|
|
|
|
|
|
|
|
if (flag) { |
|
|
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
|
|
//待接单(转派)
|
|
|
|
|
|
.set(WorkOrderInfo::getStatus,10) |
|
|
|
|
|
.set(WorkOrderInfo::getMaintenanceUnit, bo.getMaintenanceUnit()); |
|
|
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
|
|
log.info("事件转派!"); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|