From 428ab58dc2bbd3c177b95d083f8c4dc92270a41d Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Thu, 19 Jun 2025 16:14:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E8=B0=83=E6=95=B4=E5=92=8C?= =?UTF-8?q?=20=E5=90=8C=E5=8D=95=E5=8D=95=E4=BD=8D=E6=B4=BE=E9=81=A3?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=97=B6=E9=97=B4=E5=BB=B6=E7=BB=AD=E8=80=8C?= =?UTF-8?q?=E9=9D=9E=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WorkOrderDelayServiceImpl.java | 11 +-- .../impl/WorkOrderInfoServiceImpl.java | 84 ++++++++++++------- 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java index 573c972..b2b0015 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java @@ -93,12 +93,10 @@ public class WorkOrderDelayServiceImpl implements IWorkOrderDelayService { .collect(Collectors.toList()); bo.setContractNames(contractNames); } -// else if (hasOwnerRole && deptName.equals("鄞州公安")){ -// // TODO 鄞州公安 -// }else { -// bo.setContractNames(Arrays.asList("其他")); -// } + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + // 按照更新时间排序 + lqw.orderByDesc(WorkOrderDelay::getUpdateTime); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -143,8 +141,7 @@ public class WorkOrderDelayServiceImpl implements IWorkOrderDelayService { lqw.in(CollectionUtil.isNotEmpty(bo.getContractNames()), WorkOrderDelay::getContractName, bo.getContractNames()); - // 添加按创建时间降序排序 - lqw.orderByDesc(WorkOrderDelay::getCreateTime); + return lqw; } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java index 06dec47..925a9d8 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java @@ -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); - add.setMaintenanceUnit(partyB); + 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 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 queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); + queryWrapper.eq(WorkOrderProcess::getStage, "故障派遣"); + // 按照时间降序排,最新的记录在最前面 + queryWrapper.orderByDesc(WorkOrderProcess::getCreateTime); + // 表示之前存在派遣 + List workOrderDispatchList = workOrderProcessMapper.selectList(queryWrapper); + if (workOrderDispatchList.size() > 0){ + return true; + }else{ + return false; + } + } @Override public TableDataInfo dealWithList(WorkOrderInfoBo bo, PageQuery pageQuery) { LoginUser loginUser = LoginHelper.getLoginUser(); String username = loginUser.getUsername(); - //TODO 优化:查询而不是过滤 - // 如果是运维角色则增加所属部门作为查询条件 + List roles = loginUser.getRoles(); boolean hasUnitRole = roles.stream().anyMatch(role -> "运维人员".equals(role.getRoleName())); if (hasUnitRole){ @@ -467,6 +484,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { LambdaQueryWrapper lqw = buildQueryWrapper(bo); // 设置工单状态:1:待接单 2:处理中 7:处理中(已延期) lqw.in(WorkOrderInfo::getStatus, Arrays.asList(1, 2, 7,9,10)); + // 按照更新时间排序 + lqw.orderByDesc(WorkOrderInfo::getUpdateTime); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); List records = result.getRecords(); @@ -478,7 +497,13 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); // 按照时间降序排,最新的记录在最前面 - queryWrapper.orderByDesc(WorkOrderProcess::getCreateTime); + 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 partyBList = Arrays.asList("电信", "移动","盈力"); bo.setMaintenanceUnits(partyBList); - }else if (deptName.equals("鄞州公安")){ - List partyBList = Arrays.asList("时代"); - bo.setMaintenanceUnits(partyBList); } - } + }*/ LambdaQueryWrapper 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 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 roles = loginUser.getRoles(); - // 业主只能看到自己负责的工单 - boolean hasOwnerRole = roles.stream().anyMatch(role -> "业主".equals(role.getRoleName())); - if (hasOwnerRole){ - // 通过合同甲方获取对应的合同乙方(运维单位) - if (deptName.equals("江北公安")){ - List partyBList = Arrays.asList("电信", "移动","盈力"); - bo.setMaintenanceUnits(partyBList); - }else if (deptName.equals("鄞州公安")){ - List partyBList = Arrays.asList("时代"); - bo.setMaintenanceUnits(partyBList); - } - } + // 业主只能看到自己负责的工单(因为租户隔离这里不用再过滤了) + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + //status 0 待派遣 3 运维单位处理时回退至派遣 lqw.in(WorkOrderInfo::getStatus, Arrays.asList(0, 3)); - + // 按照更新时间排序 + lqw.orderByDesc(WorkOrderInfo::getUpdateTime); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -1276,7 +1293,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { LambdaUpdateWrapper 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 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("事件转派!"); }