|
|
@ -12,6 +12,7 @@ import org.dromara.common.core.exception.ServiceException; |
|
|
|
import org.dromara.common.core.utils.DateUtils; |
|
|
|
import org.dromara.common.core.utils.MapstructUtils; |
|
|
|
import org.dromara.common.core.utils.StringUtils; |
|
|
|
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
@ -228,7 +229,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
lqw.eq(bo.getStatus() != null, WorkOrderInfo::getStatus, bo.getStatus()); |
|
|
|
|
|
|
|
// 添加按创建时间降序排序
|
|
|
|
lqw.orderByDesc(WorkOrderInfo::getCreateTime); |
|
|
|
// lqw.orderByDesc(WorkOrderInfo::getCreateTime);
|
|
|
|
return lqw; |
|
|
|
} |
|
|
|
|
|
|
@ -259,7 +260,9 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
// 设置维护单位
|
|
|
|
String contractName = bo.getContractName(); |
|
|
|
String partyB = projectInfoService.getContractPartyBNameByContractName(contractName); |
|
|
|
if (partyB != null) { |
|
|
|
add.setMaintenanceUnit(partyB); |
|
|
|
} |
|
|
|
|
|
|
|
boolean flag = baseMapper.insert(add) > 0; |
|
|
|
if (flag) { |
|
|
@ -311,6 +314,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
if(workOrderProcessService.insertByBo(workOrderProcess2)){ |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, generatedId) |
|
|
|
.set(BaseEntity::getUpdateTime,new Date()) |
|
|
|
.set(WorkOrderInfo::getStatus, 1); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
log.info("修改对应的工单的状态 :待接单"); } |
|
|
@ -453,12 +457,25 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private Boolean hasDispatchHistory(String workOrderId) { |
|
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障派遣"); |
|
|
|
// 按照时间降序排,最新的记录在最前面
|
|
|
|
queryWrapper.orderByDesc(WorkOrderProcess::getCreateTime); |
|
|
|
// 表示之前存在派遣
|
|
|
|
List<WorkOrderProcess> workOrderDispatchList = workOrderProcessMapper.selectList(queryWrapper); |
|
|
|
if (workOrderDispatchList.size() > 0){ |
|
|
|
return true; |
|
|
|
}else{ |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
@Override |
|
|
|
public TableDataInfo<WorkOrderInfoVo> dealWithList(WorkOrderInfoBo bo, PageQuery pageQuery) { |
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
String username = loginUser.getUsername(); |
|
|
|
//TODO 优化:查询而不是过滤
|
|
|
|
// 如果是运维角色则增加所属部门作为查询条件
|
|
|
|
|
|
|
|
List<RoleDTO> roles = loginUser.getRoles(); |
|
|
|
boolean hasUnitRole = roles.stream().anyMatch(role -> "运维人员".equals(role.getRoleName())); |
|
|
|
if (hasUnitRole){ |
|
|
@ -467,6 +484,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); |
|
|
|
// 设置工单状态:1:待接单 2:处理中 7:处理中(已延期)
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(1, 2, 7,9,10)); |
|
|
|
// 按照更新时间排序
|
|
|
|
lqw.orderByDesc(WorkOrderInfo::getUpdateTime); |
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
|
|
|
|
@ -478,7 +497,13 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); |
|
|
|
// 按照时间降序排,最新的记录在最前面
|
|
|
|
Boolean flag = hasDispatchHistory(workOrderId); |
|
|
|
if (flag){ |
|
|
|
queryWrapper.orderByAsc(WorkOrderProcess::getCreateTime); |
|
|
|
}else { |
|
|
|
queryWrapper.orderByDesc(WorkOrderProcess::getCreateTime); |
|
|
|
} |
|
|
|
|
|
|
|
queryWrapper.last("LIMIT 1"); |
|
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
|
|
|
|
@ -642,19 +667,18 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
// 提前判断是否有 "监理" 和 "业主" 角色
|
|
|
|
boolean hasSupervisorRole = roles.stream().anyMatch(role -> "监理".equals(role.getRoleName())); |
|
|
|
boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); |
|
|
|
if (hasOwnerRole){ |
|
|
|
/* 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); |
|
|
|
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(4, 5)); |
|
|
|
// 按照更新时间排序
|
|
|
|
lqw.orderByDesc(WorkOrderInfo::getUpdateTime); |
|
|
|
|
|
|
|
if (hasSupervisorRole){ |
|
|
|
//监理初审(暂定后续可配)
|
|
|
@ -728,8 +752,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
//reviewResult
|
|
|
|
if (flag){ |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
// 设置处理人信息
|
|
|
|
updateWrapper |
|
|
|
.eq(WorkOrderInfo::getId, workOrderId)// 设置状态更新信息
|
|
|
|
.set(WorkOrderInfo::getStatus, 4) |
|
|
|
.set(WorkOrderInfo::getHandleTime,date2) |
|
|
|
.set(WorkOrderInfo::getHandler,loginUser.getNickname()) |
|
|
@ -1047,14 +1071,15 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
Date beforeDelayTime = DateUtils.addHours(operationTime, responseTime.intValue()); |
|
|
|
WorkOrderDelayBo delayBo = new WorkOrderDelayBo(); |
|
|
|
// 延期审核的id 设置为工单的id 关联
|
|
|
|
delayBo.setId(bo.getId()); |
|
|
|
delayBo.setBeforeDelayTime(beforeDelayTime); |
|
|
|
delayBo.setAfterDelayTime(bo.getDelayTime()); |
|
|
|
/* delayBo.setId(bo.getId()); |
|
|
|
delayBo.setProjectName(bo.getProjectName()); |
|
|
|
delayBo.setContractName(bo.getContractName()); |
|
|
|
delayBo.setStatus(bo.getStatus()); |
|
|
|
delayBo.setHandler(bo.getRepairer());*/ |
|
|
|
BeanUtil.copyProperties(bo, delayBo); |
|
|
|
delayBo.setDelayReason(delayDescription); |
|
|
|
delayBo.setHandler(bo.getRepairer()); |
|
|
|
delayBo.setBeforeDelayTime(beforeDelayTime); |
|
|
|
delayBo.setAfterDelayTime(bo.getDelayTime()); |
|
|
|
delayBo.setHandleResult("待处理"); |
|
|
|
delayBo.setApprover(loginUser.getNickname()); |
|
|
|
delayBo.setAttachment(serializedAttachment); |
|
|
@ -1208,22 +1233,14 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
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); |
|
|
|
|
|
|
|
//status 0 待派遣 3 运维单位处理时回退至派遣
|
|
|
|
lqw.in(WorkOrderInfo::getStatus, Arrays.asList(0, 3)); |
|
|
|
|
|
|
|
// 按照更新时间排序
|
|
|
|
lqw.orderByDesc(WorkOrderInfo::getUpdateTime); |
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
|
return TableDataInfo.build(result); |
|
|
|
} |
|
|
@ -1276,7 +1293,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
//待接单(派遣)
|
|
|
|
.set(WorkOrderInfo::getStatus, 9); |
|
|
|
.set(WorkOrderInfo::getStatus, 9) |
|
|
|
.set(BaseEntity::getUpdateTime,new Date()); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
log.info("已派遣至运维单位!"); |
|
|
|
} |
|
|
@ -1313,7 +1331,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
if (flag) { |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
.set(WorkOrderInfo::getStatus, 8); |
|
|
|
.set(WorkOrderInfo::getStatus, 8) |
|
|
|
.set(BaseEntity::getUpdateTime,new Date()); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
log.info("作废!"); |
|
|
|
} |
|
|
@ -1352,7 +1371,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
//待接单(转派)
|
|
|
|
.set(WorkOrderInfo::getStatus,10) |
|
|
|
.set(WorkOrderInfo::getMaintenanceUnit, bo.getMaintenanceUnit()); |
|
|
|
.set(WorkOrderInfo::getMaintenanceUnit, bo.getMaintenanceUnit()) |
|
|
|
.set(BaseEntity::getUpdateTime,new Date()); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
log.info("事件转派!"); |
|
|
|
} |
|
|
|