diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskDetailVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskDetailVo.java index e1a48883..73874903 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskDetailVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskDetailVo.java @@ -71,7 +71,7 @@ public class InspectionTaskDetailVo implements Serializable { * 巡检计划text */ @ExcelProperty(value = " 巡检计划text") - private Long planText; + private String planText; /** * 巡检点id @@ -82,7 +82,7 @@ public class InspectionTaskDetailVo implements Serializable { * 巡检点text */ @ExcelProperty(value = "巡检点text") - private Long pointText; + private String pointText; /** * 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java index dcd475aa..e5637783 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java @@ -35,6 +35,11 @@ public class InspectionTaskVo implements Serializable { */ @ExcelProperty(value = "主键id") private Long id; + /** + * 任务名称 + */ + @ExcelProperty(value = "任务名称") + private String taskName; /** * 巡检计划id diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbRoomVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbRoomVo.java index 35e6d934..aacf8c3c 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbRoomVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbRoomVo.java @@ -111,8 +111,9 @@ public class TbRoomVo implements Serializable { /** * 状态('空置','已售','已租','自用') */ - @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "'=空置','已售','已租','自用'") + // @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelProperty(value = "状态") + //@ExcelDictFormat(readConverterExp = "'=空置','已售','已租','自用'") private Integer status; @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "status", other = "wy_fjzt") diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java index 968fae54..ff0e04e6 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java @@ -228,7 +228,7 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { if (DateUtil.isIn(today, startDate, endDate) && inspectionDayList.contains(day)) { InspectionTask task = new InspectionTask(); task.setInspectionPlanId(p.getId()); - task.setTaskName(plan.getPlanName()+"的任务"); + task.setTaskName(plan.getPlanName() + "的任务"); task.setTaskType(plan.getSignType()); task.setPlanInsTime(startDate + "~" + p.getEndTime()); task.setTenantId(plan.getTenantId()); @@ -258,38 +258,35 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { staffQueryWrapper.eq(InspectionPlanStaff::getInspectionPlanId, plan.getId()); //查询该计划巡查人员 List inspectionPlanStaffVos = inspectionPlanStaffMapper.selectVoList(staffQueryWrapper); - // 使用Optional安全处理可能为null的对象 - Optional.ofNullable(plan).ifPresent(p -> { - DateTime today = DateUtil.date(); - DateTime startDate = DateUtil.date(plan.getStartDate()); - DateTime endDate = DateUtil.date(plan.getEndDate()); - String week = String.valueOf(DateUtil.dayOfWeek(DateUtil.date())); - List inspectionWorkdayList = Arrays.asList(p.getInspectionWorkday().split(",")); - if (DateUtil.isIn(today, startDate, endDate) && inspectionWorkdayList.contains(week)) { - InspectionTask task = new InspectionTask(); - task.setInspectionPlanId(p.getId()); - task.setInspectionPlanId(p.getId()); - task.setTaskType(plan.getSignType()); - task.setTaskName(plan.getPlanName()+"的任务"); - task.setPlanInsTime(startDate + "~" + p.getEndTime()); - task.setTenantId(plan.getTenantId()); - task.setStatus("0"); - if (CollectionUtil.isNotEmpty(inspectionPlanStaffVos)) { - String userIds = inspectionPlanStaffVos.stream().map(vo -> vo.getUserId().toString()).collect(Collectors.joining(",")); + DateTime today = DateUtil.date(); + DateTime startDate = DateUtil.date(plan.getStartDate()); + DateTime endDate = DateUtil.date(plan.getEndDate()); + String week = String.valueOf(DateUtil.dayOfWeek(DateUtil.date())); + List inspectionWorkdayList = Arrays.asList(plan.getInspectionWorkday().split(",")); + if (DateUtil.isIn(today, startDate, endDate) && inspectionWorkdayList.contains(week)) { + InspectionTask task = new InspectionTask(); + task.setInspectionPlanId(plan.getId()); + task.setInspectionPlanId(plan.getId()); + task.setTaskType(plan.getSignType()); + task.setTaskName(plan.getPlanName() + "的任务"); + task.setPlanInsTime(startDate + "~" + plan.getEndTime()); + task.setTenantId(plan.getTenantId()); + task.setStatus("0"); + if (CollectionUtil.isNotEmpty(inspectionPlanStaffVos)) { + String userIds = inspectionPlanStaffVos.stream().map(vo -> vo.getUserId().toString()).collect(Collectors.joining(",")); - String userNames = inspectionPlanStaffVos.stream().map(InspectionPlanStaffVo::getUserName).collect(Collectors.joining(",")); - task.setPlanUserId(userIds); - task.setPlanUserName(userNames); - } else { - task.setPlanUserId(""); - task.setPlanUserName(""); - } - boolean b = inspectionTaskMapper.insert(task) > 0; - if (b) { - createTaskDetail(task, plan); - } + String userNames = inspectionPlanStaffVos.stream().map(InspectionPlanStaffVo::getUserName).collect(Collectors.joining(",")); + task.setPlanUserId(userIds); + task.setPlanUserName(userNames); + } else { + task.setPlanUserId(""); + task.setPlanUserName(""); } - }); + boolean b = inspectionTaskMapper.insert(task) > 0; + if (b) { + createTaskDetail(task, plan); + } + } } /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java index 3ea7a95f..a76cc61c 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import org.apache.commons.beanutils.BeanMap; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -30,6 +31,7 @@ import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersRecordVo; import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersVo; import org.dromara.property.mapper.*; import org.dromara.property.mapper.attendanceMapper.AttendanceUserGroupMapper; +import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.model.LoginUser; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.InspectionTaskDetailBo; @@ -60,7 +62,8 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer private final ServiceWorkOrdersMapper serviceWorkOrdersMapper; private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper; private final AttendanceUserGroupMapper attendanceUserGroupMapper; - + @DubboReference + private RemoteUserService remoteUserService; /** * 查询巡检明细 * @@ -84,35 +87,49 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); if (CollUtil.isNotEmpty(result.getRecords())) { -// //收集任务id为list -// List taskIds = result.getRecords().stream().map(InspectionTaskDetailVo::getTaskId).toList(); -// //收集任务为map id和名称 -// Map taskNameMap = inspectionTaskMapper.selectVoByIds(taskIds).stream() -// .collect(Collectors.toMap(InspectionTaskVo::getId, InspectionTaskVo::getPlanName)); -// //收集路线id为list -// List routeIds = result.getRecords().stream().map(InspectionTaskDetailVo::getRouteId).toList(); -// //收集任务为map id和名称 -// Map routeNameMap = inspectionRouteMapper.selectVoByIds(routeIds).stream() -// .collect(Collectors.toMap(InspectionRouteVo::getId, InspectionRouteVo::getRouteName)); -// //收集路线列表 -// List inspectionRoutes = inspectionRouteMapper.selectVoByIds(routeIds); -// //收集计划id为list -// List planIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPlanId).toList(); -// //收集计划列表 -// Map planNameMap = inspectionPlanMapper.selectVoByIds(routeIds).stream() -// .collect(Collectors.toMap(InspectionPlanVo::getId, InspectionPlanVo::getPlanName)); -// //巡检点id为list -// List pointIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPointId).toList(); + //收集任务id为list + List taskIds = result.getRecords().stream().map(InspectionTaskDetailVo::getTaskId).toList(); + //收集任务为map id和名称 + Map taskNameMap = inspectionTaskMapper.selectVoByIds(taskIds).stream() + .collect(Collectors.toMap(InspectionTaskVo::getId, InspectionTaskVo::getTaskName)); + //收集路线id为list + List routeIds = result.getRecords().stream().map(InspectionTaskDetailVo::getRouteId).toList(); + //收集任务为map id和名称 + Map routeNameMap = inspectionRouteMapper.selectVoByIds(routeIds).stream() + .collect(Collectors.toMap(InspectionRouteVo::getId, InspectionRouteVo::getRouteName)); + //收集计划id为list + List planIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPlanId).toList(); + //收集计划列表 + Map planNameMap = inspectionPlanMapper.selectVoByIds(planIds).stream() + .collect(Collectors.toMap(InspectionPlanVo::getId, InspectionPlanVo::getPlanName)); + //巡检点id为list + List pointIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPointId).toList(); + //巡检点列表 + Map pointNameMap = inspectionPointMapper.selectVoByIds(pointIds).stream() + .collect(Collectors.toMap(InspectionPointVo::getId, InspectionPointVo::getPointName)); result.getRecords().stream().forEach(vo -> { - disposeData(vo); + disposeData(vo,taskNameMap,routeNameMap,planNameMap,pointNameMap); }); } return TableDataInfo.build(result); } - private void disposeData(InspectionTaskDetailVo vo) { - + private void disposeData(InspectionTaskDetailVo vo,Map taskNameMap,Map routeNameMap, Map planNameMap,Map pointNameMap ) { + vo.setTaskText(taskNameMap.get(vo.getTaskId())); + vo.setRouteText(routeNameMap.get(vo.getRouteId())); + vo.setPlanText(planNameMap.get(vo.getPlanId())); + vo.setPointText(pointNameMap.get(vo.getPointId())); +// if(ObjectUtil.isNotEmpty( vo.getPlanInspectionPersonText() )){ +// //以,切割拼接成 +// String[] split = vo.getPlanInspectionPersonText().split(","); +// remoteUserService.selectNicknameById(Long.valueOf(vo.getPlanInspectionPerson())); +// vo.setPlanInspectionPersonText( ) +// } +// if(ObjectUtil.isNotEmpty(vo.setActualInspectionPerson())){ +// +// vo.setActualInspectionPersonText(); +// } } /** @@ -346,6 +363,10 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer serviceWorkOrders.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight()); serviceWorkOrders.setType(serviceWorkOrdersType.getId()); serviceWorkOrders.setLocation(bo.getInspectionLocation()); + serviceWorkOrders.setIsTimeOut("0"); + Date originalDate = new Date(); // 当前时间 + Date newDate = DateUtil.offsetHour(originalDate, serviceWorkOrdersType.getCompletionNumber()); + serviceWorkOrders.setPlanCompleTime(newDate); boolean flag = serviceWorkOrdersMapper.insert(serviceWorkOrders) > 0; if (flag) { bo.setId(serviceWorkOrders.getId()); @@ -358,6 +379,10 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) { handleServiceWorkOrder(serviceWorkOrders, serviceWorkOrdersType, bo); } + //修改巡检明细接口绑定工单id + InspectionTaskDetail update = BeanUtil.copyProperties(bo, InspectionTaskDetail.class); + update.setOrderId(serviceWorkOrders.getId()); + baseMapper.updateById(update); } } return flag; @@ -411,10 +436,6 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer // 5. 更新工单 serviceWorkOrders.setDispatchTime(new Date()); serviceWorkOrdersMapper.updateById(serviceWorkOrders); - //修改巡检明细接口 - InspectionTaskDetail inspectionTaskDetail = baseMapper.selectById(bo.getId()); - inspectionTaskDetail.setOrderId(serviceWorkOrders.getId()); - baseMapper.updateById(inspectionTaskDetail); log.info("成功派单,工单号:{}", serviceWorkOrders.getOrderNo()); } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java index ab7beb9d..c3df7575 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java @@ -228,6 +228,10 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue()); add.setInitiatorPeople(user.getNickname()); add.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight()); + add.setIsTimeOut("0"); + Date originalDate = new Date(); // 当前时间 + Date newDate = DateUtil.offsetHour(originalDate, serviceWorkOrdersType.getCompletionNumber()); + add.setPlanCompleTime(newDate); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { @@ -332,11 +336,21 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus()); boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper); //TODO 做一些数据校验,如唯一约束 - ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord(); - serviceWorkOrdersRecord.setOrderId(entity.getId()); - serviceWorkOrdersRecord.setStatus(entity.getStatus()); - serviceWorkOrdersRecord.setHandler(entity.getHandler()); - workOrdersRecordMapper.insert(serviceWorkOrdersRecord); + if (!exists) { + ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord(); + serviceWorkOrdersRecord.setOrderId(entity.getId()); + serviceWorkOrdersRecord.setStatus(entity.getStatus()); + serviceWorkOrdersRecord.setHandler(entity.getHandler()); + boolean b = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0; + if (b) { + if (serviceWorkOrdersRecord.getStatus().equals(WorkOrderStatusEnum.DONE.getValue())) { + entity.setCompleTime(new Date()); + entity.setIsTimeOut( DateUtil.compare(new Date(), entity.getPlanCompleTime())>0?"1":"0"); + baseMapper.updateById(entity); + } + } + + } } /** @@ -594,6 +608,10 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { add.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue()); add.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight()); add.setInitiatorPeople(user.getNickname()); + add.setIsTimeOut("0"); + Date originalDate = new Date(); // 当前时间 + Date newDate = DateUtil.offsetHour(originalDate, serviceWorkOrdersType.getCompletionNumber()); + add.setPlanCompleTime(newDate); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) {