diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java index b41ba4be..dd09d70d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java @@ -16,6 +16,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.property.domain.bo.ServiceWorkOrdersBo; +import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo; import org.dromara.property.domain.vo.ServiceWorkOrdersVo; import org.dromara.property.service.IServiceWorkOrdersService; import org.springframework.validation.annotation.Validated; @@ -48,33 +49,33 @@ public class ServiceWorkOrdersController extends BaseController { } /** - * 导出【请填写功能名称】列表 + * 导出【工单处理】列表 */ @SaCheckPermission("system:workOrders:export") - @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT) + @Log(title = "【工单处理】", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ServiceWorkOrdersBo bo, HttpServletResponse response) { List list = serviceWorkOrdersService.queryList(bo); - ExcelUtil.exportExcel(list, "【请填写功能名称】", ServiceWorkOrdersVo.class, response); + ExcelUtil.exportExcel(list, "【工单处理】", ServiceWorkOrdersVo.class, response); } /** - * 获取【请填写功能名称】详细信息 + * 获取【工单处理】详细信息 * * @param id 主键 */ - @SaCheckPermission("system:workOrders:query") + // @SaCheckPermission("system:workOrders:query") @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { return R.ok(serviceWorkOrdersService.queryById(id)); } /** - * 新增【请填写功能名称】 + * 新增【工单处理】 */ @SaCheckPermission("system:workOrders:add") - @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT) + @Log(title = "【工单处理】", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody ServiceWorkOrdersBo bo) { @@ -82,10 +83,10 @@ public class ServiceWorkOrdersController extends BaseController { } /** - * 修改【请填写功能名称】 + * 修改【工单处理】 */ @SaCheckPermission("system:workOrders:edit") - @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE) + @Log(title = "【工单处理】", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) { @@ -93,12 +94,12 @@ public class ServiceWorkOrdersController extends BaseController { } /** - * 删除【请填写功能名称】 + * 删除【工单处理】 * * @param ids 主键串 */ @SaCheckPermission("system:workOrders:remove") - @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE) + @Log(title = "【工单处理】", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable("ids") Long[] ids) { diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java index 84bc78d0..1bb0b89f 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java @@ -42,7 +42,7 @@ public class ServiceWorkOrders extends TenantEntity { /** * 工单类型 */ - private int type; + private Long type; /** * 状态 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java index e70aa694..94e5b0b4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java @@ -41,7 +41,7 @@ public class ServiceWorkOrdersBo extends BaseEntity { /** * 工单类型 */ - private int type; + private Long type; /** * 状态 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java index 3499f82e..eb570cf4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java @@ -59,6 +59,12 @@ public class MeetBookingAppointmentVo implements Serializable { */ @ExcelProperty(value = "预定人名称") private String personName; + /** + * 联系方式 + */ + @ExcelProperty(value = "联系方式") + private String phone; + /** * 会议室主题 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java index 27893a17..adaa33aa 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java @@ -64,11 +64,21 @@ public class MeetBookingVo implements Serializable { @ExcelProperty(value = "所属单位") private String unit; + /** + * 所属单位名称 + */ + @ExcelProperty(value = "所属单位名称") + private String unitName; /** * 预定人 */ @ExcelProperty(value = "预定人") private String person; + /** + * 预定人名称 + */ + @ExcelProperty(value = "预定人名称") + private String personName; /** * 联系方式 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java new file mode 100644 index 00000000..06c7b266 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java @@ -0,0 +1,125 @@ +package org.dromara.property.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.property.domain.ServiceWorkOrders; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @Author:yuyongle + * @Date:2025/7/9 17:25 + * @Description:工单处理详情 + **/ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ServiceWorkOrders.class) +public class ServiceWorkOrdersInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 工单编号 + */ + @ExcelProperty(value = "工单编号") + private String orderNo; + + /** + * 工单名称 + */ + @ExcelProperty(value = "工单名称") + private String orderName; + + /** + * 工单类型 + */ + @ExcelProperty(value = "工单类型") + private Long type; + + /** + * 状态 + */ + @ExcelProperty(value = "状态") + private int status; + + /** + * 派单时间 + */ + @ExcelProperty(value = "派单时间") + private Date dispatchTime; + + /** + * 发起人姓名 + */ + @ExcelProperty(value = "发起人姓名") + private String initiatorName; + /** + * 发起人姓名文本 + */ + @ExcelProperty(value = "发起人姓名文本") + private String initiatorNameText; + + /** + * 发起人手机号 + */ + @ExcelProperty(value = "发起人手机号") + private String initiatorPhone; + + /** + * 处理人姓名 + */ + @ExcelProperty(value = "处理人姓名") + private String handler; + /** + * 处理人姓名文本 + */ + @ExcelProperty(value = "处理人姓名文本") + private String handlerText; + + + /** + * 地址 + */ + @ExcelProperty(value = "地址") + private String location; + + /** + * 计划完成时间 + */ + @ExcelProperty(value = "计划完成时间") + private Date planCompleTime; + + /** + * 完成时间 + */ + @ExcelProperty(value = "完成时间") + private Date compleTime; + + /** + * 评价 + */ + @ExcelProperty(value = "评价") + private String serviceEvalua; + + /** + * 是否超时 + */ + @ExcelProperty(value = "是否超时") + private int isTimeOut; + /** + * 类型名称 + */ + @ExcelProperty(value = "类型名称") + private String typeName; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java index d20b40bc..306db689 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java @@ -48,7 +48,7 @@ public class ServiceWorkOrdersVo implements Serializable { * 工单类型 */ @ExcelProperty(value = "工单类型") - private int type; + private Long type; /** * 状态 @@ -67,6 +67,11 @@ public class ServiceWorkOrdersVo implements Serializable { */ @ExcelProperty(value = "发起人姓名") private String initiatorName; + /** + * 发起人姓名文本 + */ + @ExcelProperty(value = "发起人姓名文本") + private String initiatorNameText; /** * 发起人手机号 @@ -79,6 +84,12 @@ public class ServiceWorkOrdersVo implements Serializable { */ @ExcelProperty(value = "处理人姓名") private String handler; + /** + * 处理人姓名文本 + */ + @ExcelProperty(value = "处理人姓名文本") + private String handlerText; + /** * 地址 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java index 632a74fa..08d66aef 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java @@ -3,6 +3,7 @@ package org.dromara.property.service; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.property.domain.bo.ServiceWorkOrdersBo; +import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo; import org.dromara.property.domain.vo.ServiceWorkOrdersVo; import java.util.Collection; @@ -22,7 +23,7 @@ public interface IServiceWorkOrdersService { * @param id 主键 * @return 【工单处理】 */ - ServiceWorkOrdersVo queryById(Long id); + ServiceWorkOrdersInfoVo queryById(Long id); /** * 分页查询【工单处理】列表 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java index f2e9fa50..13611020 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java @@ -1,12 +1,17 @@ package org.dromara.property.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.rabbitmq.client.Return; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.exception.base.BaseException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -77,7 +82,31 @@ public class MeetBookingServiceImpl implements IMeetBookingService { public TableDataInfo queryPageList(MeetBookingBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); + + List units = result.getRecords().stream() + .map(vo -> vo.getUnit()) + .distinct() + .collect(Collectors.toList()); + List persons = result.getRecords().stream() + .map(vo -> vo.getPerson()) + .distinct() + .collect(Collectors.toList()); + List residentUnitVolist = residentUnitMapper.selectVoByIds(units); + List residentPersonsVolist = residentPersonMapper.selectVoByIds(persons); + + List meetBookingVoList = new ArrayList<>(); + result.getRecords().stream().forEach(s -> { + ResidentUnitVo residentUnitVo = residentUnitVolist.stream() + .filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getUnit())).findFirst().orElse(null); + s.setUnitName(residentUnitVo.getName()); + ResidentPersonVo residentPersonVo = residentPersonsVolist.stream() + .filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getPerson())).findFirst().orElse(null); + s.setPersonName(residentPersonVo.getUserName()); + s.setPhone(residentPersonVo.getPhone()); + meetBookingVoList.add(s); + }); + new Page().setRecords(meetBookingVoList); + return TableDataInfo.build(new Page().setRecords(meetBookingVoList)); } /** @@ -95,6 +124,9 @@ public class MeetBookingServiceImpl implements IMeetBookingService { .le(MeetBooking::getScheduledStarttime, endOfDay) .ge(MeetBooking::getScheduledEndtime, startOfDay); List meetBookings = baseMapper.selectList(meetBookingLambdaQueryWrapper); + if (CollectionUtil.isEmpty(meetBookings)) { + return new ArrayList<>(); + } List meetBookingAppointmentVoList = BeanUtil.copyToList(meetBookings, MeetBookingAppointmentVo.class); SimpleDateFormat df = new SimpleDateFormat("HH"); List units = meetBookingAppointmentVoList.stream() @@ -115,24 +147,10 @@ public class MeetBookingServiceImpl implements IMeetBookingService { ResidentPersonVo residentPersonVo = residentPersonsVolist.stream() .filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getPerson())).findFirst().orElse(null); s.setPersonName(residentPersonVo.getUserName()); + s.setPhone(residentPersonVo.getPhone()); String str = df.format(s.getScheduledStarttime()); int a = Integer.parseInt(str); - if (a >= 0 && a <= 6) { - s.setSlots("凌晨"); - } - if (a > 6 && a <= 12) { - s.setSlots("上午"); - } - if (a > 12 && a <= 13) { - s.setSlots("中午"); - } - if (a > 13 && a <= 18) { - s.setSlots("下午"); - } - if (a > 18 && a <= 24) { - s.setSlots("晚上"); - } - + s.setSlots(a <= 12 ? "上午" : "下午"); } ); return meetBookingAppointmentVoList; @@ -167,6 +185,9 @@ public class MeetBookingServiceImpl implements IMeetBookingService { .ge(MeetBooking::getScheduledStarttime, startOfWeek) .le(MeetBooking::getScheduledEndtime, endOfWeek); List meetBookingVoList = baseMapper.selectVoList(bookingLambdaQueryWrapper); + if (CollectionUtil.isEmpty(meetBookingVoList)) { + return new ArrayList<>(); + } List meetBookingWeekVoList = BeanUtil.copyToList(meetBookingVoList, MeetBookingWeekVo.class); String[] weekStr = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; List meetBookingWeekList = new ArrayList<>(); @@ -195,21 +216,7 @@ public class MeetBookingServiceImpl implements IMeetBookingService { s.setWeek(weekStr[firstDayOfWeek - 1]); String str = df.format(s.getScheduledStarttime()); int a = Integer.parseInt(str); - if (a >= 0 && a <= 6) { - s.setSlots("凌晨"); - } - if (a > 6 && a <= 12) { - s.setSlots("上午"); - } - if (a > 12 && a <= 13) { - s.setSlots("中午"); - } - if (a > 13 && a <= 18) { - s.setSlots("下午"); - } - if (a > 18 && a <= 24) { - s.setSlots("晚上"); - } + s.setSlots(a <= 12 ? "上午" : "下午"); meetBookingWeekList.add(s); }); return meetBookingWeekList; 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 e1fc5d6b..0bd51290 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 @@ -1,5 +1,7 @@ package org.dromara.property.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -10,9 +12,15 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.property.domain.ServiceWorkOrders; +import org.dromara.property.domain.ServiceWorkOrdersType; import org.dromara.property.domain.bo.ServiceWorkOrdersBo; +import org.dromara.property.domain.vo.ResidentPersonVo; +import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo; +import org.dromara.property.domain.vo.ServiceWorkOrdersTypeVo; import org.dromara.property.domain.vo.ServiceWorkOrdersVo; +import org.dromara.property.mapper.ResidentPersonMapper; import org.dromara.property.mapper.ServiceWorkOrdersMapper; +import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper; import org.dromara.property.service.IServiceWorkOrdersService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; /** * 【工单处理】Service业务层处理 @@ -33,6 +42,8 @@ import java.util.Map; public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { private final ServiceWorkOrdersMapper baseMapper; + private final ServiceWorkOrdersTypeMapper typesMapper; + private final ResidentPersonMapper residentPersonMapper; /** * 查询【工单处理】 @@ -41,8 +52,23 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { * @return 【工单处理】 */ @Override - public ServiceWorkOrdersVo queryById(Long id){ - return baseMapper.selectVoById(id); + public ServiceWorkOrdersInfoVo queryById(Long id){ + ServiceWorkOrdersVo serviceWorkOrdersVo = baseMapper.selectVoById(id); + ServiceWorkOrdersInfoVo serviceWorkOrdersInfoVo = BeanUtil.copyProperties(serviceWorkOrdersVo, ServiceWorkOrdersInfoVo.class); + ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = typesMapper.selectVoById(serviceWorkOrdersVo.getType()); + if(Objects.nonNull(serviceWorkOrdersTypeVo )){ + serviceWorkOrdersInfoVo.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName()); + } + ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getInitiatorName())); + if(Objects.nonNull(residentPersonVo)) { + serviceWorkOrdersInfoVo.setInitiatorNameText(residentPersonVo.getUserName()); + serviceWorkOrdersInfoVo.setInitiatorPhone(residentPersonVo.getPhone()); + } + ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler())); + if(Objects.nonNull(residentPersonHandler)) { + serviceWorkOrdersInfoVo.setHandlerText(residentPersonHandler.getUserName()); + } + return serviceWorkOrdersInfoVo; } /** @@ -99,6 +125,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(ServiceWorkOrdersBo bo) { ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class); + validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { @@ -126,6 +153,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { */ private void validEntityBeforeSave(ServiceWorkOrders entity){ //TODO 做一些数据校验,如唯一约束 + entity.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr()); } /** diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml index fd50b648..bdc04ceb 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml @@ -5,25 +5,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"