新增保洁订单功能

This commit is contained in:
2025-09-09 18:02:07 +08:00
parent 2816c22a4d
commit b5de50fb67
29 changed files with 1012 additions and 50 deletions

View File

@@ -0,0 +1,49 @@
package org.dromara.property.controller.BigScreen;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.web.core.BaseController;
import org.dromara.property.domain.MeetBooking;
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
import org.dromara.property.domain.vo.BigScreen.TypeWorkOrderHistogramVo;
import org.dromara.property.service.IMeetBookingService;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author yuyongle
* @version 1.0
* @description: 大屏接口
* @date 2025/9/9 9:57
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/screen")
public class ScreenController extends BaseController {
private final IServiceWorkOrdersService serviceWorkOrdersService;
private final IMeetBookingService meetBookingService;
/**
* 大屏工单柱状图
*/
@GetMapping("/typeWorkOrderHistogram")
public R<List<TypeWorkOrderHistogramVo>> typeWorkOrderHistogram() {
return R.ok(serviceWorkOrdersService.typeWorkOrderHistogram());
}
/**
* 大屏会议室总数和当天预约数统计
*/
@GetMapping("/todayMeetCount")
public R<TodayMeetCountVo> todayMeetCount() {
return R.ok(meetBookingService.todayMeetCount());
}
}

View File

@@ -0,0 +1,106 @@
package org.dromara.property.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.dromara.property.service.ICleanOrderRecordService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 保洁订单记录
* 前端访问路由地址为:/property/orderRecord
*
* @author mocheng
* @date 2025-09-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/orderRecord")
public class CleanOrderRecordController extends BaseController {
private final ICleanOrderRecordService cleanOrderRecordService;
/**
* 查询保洁订单记录列表
*/
@SaCheckPermission("property:orderRecord:list")
@GetMapping("/list")
public TableDataInfo<CleanOrderRecordVo> list(CleanOrderRecordBo bo, PageQuery pageQuery) {
return cleanOrderRecordService.queryPageList(bo, pageQuery);
}
/**
* 导出保洁订单记录列表
*/
@SaCheckPermission("property:orderRecord:export")
@Log(title = "保洁订单记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(CleanOrderRecordBo bo, HttpServletResponse response) {
List<CleanOrderRecordVo> list = cleanOrderRecordService.queryList(bo);
ExcelUtil.exportExcel(list, "保洁订单记录", CleanOrderRecordVo.class, response);
}
/**
* 获取保洁订单记录详细信息
*
* @param id 主键
*/
@SaCheckPermission("property:orderRecord:query")
@GetMapping("/{id}")
public R<CleanOrderRecordVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(cleanOrderRecordService.queryById(id));
}
/**
* 新增保洁订单记录
*/
@SaCheckPermission("property:orderRecord:add")
@Log(title = "保洁订单记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody CleanOrderRecordBo bo) {
return toAjax(cleanOrderRecordService.insertByBo(bo));
}
/**
* 修改保洁订单记录
*/
@SaCheckPermission("property:orderRecord:edit")
@Log(title = "保洁订单记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CleanOrderRecordBo bo) {
return toAjax(cleanOrderRecordService.updateByBo(bo));
}
/**
* 删除保洁订单记录
*
* @param ids 主键串
*/
@SaCheckPermission("property:orderRecord:remove")
@Log(title = "保洁订单记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(cleanOrderRecordService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -90,6 +91,13 @@ public class CleanOrderController extends BaseController {
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CleanOrderBo bo) {
return toAjax(cleanOrderService.updateByBo(bo));
}
/**
* 指派
*/
@PostMapping("/assign")
public R<Void> assign(@Validated(EditGroup.class) @RequestBody CleanOrderBo bo) {
return toAjax(cleanOrderService.assign(bo));
}
/**
* 删除保洁订单

View File

@@ -0,0 +1,36 @@
package org.dromara.property.controller.mobile;
import cn.dev33.satoken.annotation.SaCheckPermission;
import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.bo.CustomerActivityBo;
import org.dromara.property.domain.vo.CustomerActivityVo;
import org.dromara.property.service.ICustomerActivityService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author yuyongle
* @version 1.0
* @description: 客户服务-活动
* @date 2025/9/9 16:45
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/mobile/activity")
public class MCustomerActivityController {
private final ICustomerActivityService customerActivityService;
/**
* 查询客户服务-活动列表
*/
@GetMapping("/list")
public TableDataInfo<CustomerActivityVo> list(CustomerActivityBo bo, PageQuery pageQuery) {
return customerActivityService.queryPageList(bo, pageQuery);
}
}

View File

@@ -6,9 +6,12 @@ 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.InspectionTaskBo;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.vo.InspectionTaskVo;
import org.dromara.property.domain.vo.mobile.MInspectionTaskVo;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersVo;
import org.dromara.property.service.IInspectionTaskService;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -26,6 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/mobile/inspectionTask")
public class MInspectionTaskController extends BaseController {
private final IInspectionTaskService inspectionTaskService;
private final IServiceWorkOrdersService serviceWorkOrdersService;
/**
* 移动端查询巡检任务列表
@@ -34,4 +38,11 @@ public class MInspectionTaskController extends BaseController {
public TableDataInfo<MInspectionTaskVo> list(InspectionTaskBo bo, PageQuery pageQuery) {
return inspectionTaskService.mQueryPageList(bo, pageQuery);
}
/**
* 小程序查询【工单处理】
*/
@GetMapping("/mlist")
public TableDataInfo<MServiceWorkOrdersVo> mlist(ServiceWorkOrdersBo bo, PageQuery pageQuery) {
return serviceWorkOrdersService.queryMobilePageList(bo, pageQuery);
}
}

View File

@@ -12,12 +12,16 @@ 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.bo.mobile.MServiceWorkOrdersBo;
import org.dromara.property.domain.vo.ServiceWorkOrdersTypeVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersVo;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersVo;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.dromara.property.service.IServiceWorkOrdersTypeService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 【业务管理-工单处理】
*
@@ -31,6 +35,7 @@ import org.springframework.web.bind.annotation.*;
public class MServiceWorkOrdersController extends BaseController {
private final IServiceWorkOrdersService serviceWorkOrdersService;
private final IServiceWorkOrdersTypeService serviceWorkOrdersTypeService;
/**
* 小程序新增【工单处理】
@@ -56,4 +61,11 @@ public class MServiceWorkOrdersController extends BaseController {
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
return toAjax(serviceWorkOrdersService.updateByBo(bo));
}
/**
* 查询【工单类型】树结构
*/
@GetMapping("/typeTree")
public R<List<ServiceWorkOrdersTypeVo>> typeTrees() {
return R.ok(serviceWorkOrdersTypeService.typeTrees());
}
}

View File

@@ -37,6 +37,10 @@ public class Clean extends TenantEntity {
* 计量单位
*/
private String measure;
/**
* 保洁内容
*/
private String cleanContent;
/**
* 保洁面积

View File

@@ -0,0 +1,73 @@
package org.dromara.property.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 保洁订单记录对象 clean_order_record
*
* @author mocheng
* @date 2025-09-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("clean_order_record")
public class CleanOrderRecord extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 保洁订单id
*/
private Long cleanOrderId;
/**
* 状态(1创建订单,2已接单,3处理中4已完成)
*/
private String status;
/**
* 是否签到(1未签到2签到)
*/
private String isSign;
/**
* 签到图片
*/
private String signImg;
/**
* 处理人
*/
private Long handler;
/**
* 发起人
*/
private Long initiatorPeople;
/**
* 评价文本
*/
private String serviceEvaluaText;
/**
* 是否异常(1正常2异常)
*/
private String isAbnormal;
}

View File

@@ -0,0 +1,74 @@
package org.dromara.property.domain.bo;
import org.dromara.property.domain.CleanOrderRecord;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 保洁订单记录业务对象 clean_order_record
*
* @author mocheng
* @date 2025-09-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CleanOrderRecord.class, reverseConvertGenerate = false)
public class CleanOrderRecordBo extends BaseEntity {
/**
* id
*/
private Long id;
/**
* 保洁订单id
*/
private Long cleanOrderId;
/**
* 状态(1创建订单,2已接单,3处理中4已完成)
*/
private String status;
/**
* 是否签到(1未签到2签到)
*/
private String isSign;
/**
* 签到图片
*/
private String signImg;
/**
* 处理人
*/
private Long handler;
/**
* 发起人
*/
private Long initiatorPeople;
/**
* 评价文本
*/
private String serviceEvaluaText;
/**
* 是否异常(1正常2异常)
*/
private String isAbnormal;
}

View File

@@ -50,7 +50,11 @@ public class CleanBo extends BaseEntity {
// * 保洁面积
// */
// private Long area;
/**
* 保洁内容
*/
@NotBlank(message = "保洁内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String cleanContent;
/**
* 计算方式
*/

View File

@@ -13,6 +13,7 @@ import jakarta.validation.constraints.*;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
/**
* 保洁订单业务对象 clean_order
@@ -148,4 +149,7 @@ public class CleanOrderBo extends BaseEntity {
private List<Clean> cleanList;
private CleanOrderRecordBo cleanOrderRecord;
}

View File

@@ -0,0 +1,19 @@
package org.dromara.property.domain.vo.BigScreen;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Map;
/**
* @author yuyongle
* @version 1.0
* @description: 大屏类型会议室当天预约统计
* @date 2025/9/9 10:17
*/
@Data
@Accessors(chain = true)
public class TodayMeetCountVo {
private Integer meetCount; // 工单类型如A, B, C, D
private Integer timeQuantity; // 每个状态的数量
}

View File

@@ -0,0 +1,20 @@
package org.dromara.property.domain.vo.BigScreen;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Map;
/**
* @author yuyongle
* @version 1.0
* @description: 大屏类型工单状态柱状图
* @date 2025/9/9 10:17
*/
@Data
@Accessors(chain = true)
public class TypeWorkOrderHistogramVo {
private String type; // 工单类型如A, B, C, D
private Map<String, Integer> statusCounts; // 每个状态的数量
}

View File

@@ -0,0 +1,96 @@
package org.dromara.property.domain.vo;
import org.dromara.property.domain.CleanOrderRecord;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 保洁订单记录视图对象 clean_order_record
*
* @author mocheng
* @date 2025-09-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CleanOrderRecord.class)
public class CleanOrderRecordVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 保洁订单id
*/
@ExcelProperty(value = "保洁订单id")
private Long cleanOrderId;
/**
* 状态(1创建订单,2已接单,3处理中4已完成)
*/
@ExcelProperty(value = "状态(1创建订单,2已接单,3处理中4已完成)")
private String status;
/**
* 是否签到(1未签到2签到)
*/
@ExcelProperty(value = "是否签到(1未签到2签到)")
private String isSign;
/**
* 签到图片
*/
@ExcelProperty(value = "签到图片")
private String signImg;
/**
* 处理人
*/
@ExcelProperty(value = "处理人")
private Long handler;
/**
* 处理人
*/
@ExcelProperty(value = "处理人")
private String handlerText;
/**
* 发起人
*/
@ExcelProperty(value = "发起人")
private Long initiatorPeople;
/**
* 发起人
*/
@ExcelProperty(value = "发起人")
private String initiatorPeopleText;
/**
* 评价文本
*/
@ExcelProperty(value = "评价文本")
private String serviceEvaluaText;
/**
* 是否异常(1正常2异常)
*/
@ExcelProperty(value = "是否异常(1正常2异常)")
private String isAbnormal;
}

View File

@@ -6,7 +6,9 @@ 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.CleanOrderRecord;
import org.dromara.property.domain.CleanRelation;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import java.io.Serial;
import java.io.Serializable;
@@ -153,6 +155,7 @@ public class CleanOrderVo implements Serializable {
private List<Clean> cleanList;
private List<CleanRelation> relationList;
private List<CleanOrderRecordVo> recordVoList;

View File

@@ -53,7 +53,10 @@ public class CleanVo implements Serializable {
*/
@ExcelProperty(value = "计算方式")
private String method;
/**
* 保洁内容
*/
private String cleanContent;
/**
* 单价
*/

View File

@@ -0,0 +1,15 @@
package org.dromara.property.mapper;
import org.dromara.property.domain.CleanOrderRecord;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 保洁订单记录Mapper接口
*
* @author mocheng
* @date 2025-09-09
*/
public interface CleanOrderRecordMapper extends BaseMapperPlus<CleanOrderRecord, CleanOrderRecordVo> {
}

View File

@@ -0,0 +1,69 @@
package org.dromara.property.service;
import org.dromara.property.domain.CleanOrderRecord;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 保洁订单记录Service接口
*
* @author mocheng
* @date 2025-09-09
*/
public interface ICleanOrderRecordService {
/**
* 查询保洁订单记录
*
* @param id 主键
* @return 保洁订单记录
*/
CleanOrderRecordVo queryById(Long id);
/**
* 分页查询保洁订单记录列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 保洁订单记录分页列表
*/
TableDataInfo<CleanOrderRecordVo> queryPageList(CleanOrderRecordBo bo, PageQuery pageQuery);
/**
* 查询符合条件的保洁订单记录列表
*
* @param bo 查询条件
* @return 保洁订单记录列表
*/
List<CleanOrderRecordVo> queryList(CleanOrderRecordBo bo);
/**
* 新增保洁订单记录
*
* @param bo 保洁订单记录
* @return 是否新增成功
*/
Boolean insertByBo(CleanOrderRecordBo bo);
/**
* 修改保洁订单记录
*
* @param bo 保洁订单记录
* @return 是否修改成功
*/
Boolean updateByBo(CleanOrderRecordBo bo);
/**
* 校验并批量删除保洁订单记录信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -1,6 +1,7 @@
package org.dromara.property.service;
import org.dromara.property.domain.MeetBooking;
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
import org.dromara.property.domain.vo.MeetBookingAppointmentVo;
import org.dromara.property.domain.vo.MeetBookingDetailVo;
import org.dromara.property.domain.vo.MeetBookingVo;
@@ -85,5 +86,11 @@ public interface IMeetBookingService {
* @return
*/
List<Map<Object, Object>> getMeetBooking(String type);
//APP端接口
/**
*
* @return
*/
TodayMeetCountVo todayMeetCount();
}

View File

@@ -5,6 +5,8 @@ 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.bo.mobile.MServiceWorkOrdersBo;
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
import org.dromara.property.domain.vo.BigScreen.TypeWorkOrderHistogramVo;
import org.dromara.property.domain.vo.ServiceWorkOrderAnalysisVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersVo;
@@ -74,16 +76,17 @@ public interface IServiceWorkOrdersService {
/**
* 工单服务看板
*
* @return
*/
ServiceWorkOrderAnalysisVo counts();
//小程序端新增
/**
* 新增工单
*
* @param bo
* @return
*/
@@ -91,10 +94,12 @@ public interface IServiceWorkOrdersService {
/**
* 查询工单处理人枚举
*
* @param type
* @return
*/
List<Map<Object, Object>> getServiceWorkOrdersHandler(String type);
/**
* 分页查询【工单处理】列表
*
@@ -119,4 +124,12 @@ public interface IServiceWorkOrdersService {
* @return list
*/
List<ServiceWorkOrdersVo> queryMyOrderByXcx();
//大屏接口
/**
* 大屏工单柱状图
*/
List<TypeWorkOrderHistogramVo> typeWorkOrderHistogram();
}

View File

@@ -71,4 +71,10 @@ public interface IServiceWorkOrdersTypeService {
* @return 工单类型树结构
*/
List<ServiceWorkOrdersTypeVo> typeTree();
/**
* 查询【工单类型】树结构
* @return 工单类型树结构
*/
List<ServiceWorkOrdersTypeVo> typeTrees();
}

View File

@@ -1,5 +1,6 @@
package org.dromara.property.service.cleanOrderService;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.dromara.property.domain.vo.cleanOrderVo.CleanOrderVo;
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -65,4 +66,11 @@ public interface ICleanOrderService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 指派保洁订单
* @param bo
* @return
*/
int assign(CleanOrderBo bo);
}

View File

@@ -0,0 +1,138 @@
package org.dromara.property.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import org.dromara.property.domain.CleanOrderRecord;
import org.dromara.property.mapper.CleanOrderRecordMapper;
import org.dromara.property.service.ICleanOrderRecordService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 保洁订单记录Service业务层处理
*
* @author mocheng
* @date 2025-09-09
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class CleanOrderRecordServiceImpl implements ICleanOrderRecordService {
private final CleanOrderRecordMapper baseMapper;
/**
* 查询保洁订单记录
*
* @param id 主键
* @return 保洁订单记录
*/
@Override
public CleanOrderRecordVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询保洁订单记录列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 保洁订单记录分页列表
*/
@Override
public TableDataInfo<CleanOrderRecordVo> queryPageList(CleanOrderRecordBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CleanOrderRecord> lqw = buildQueryWrapper(bo);
Page<CleanOrderRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的保洁订单记录列表
*
* @param bo 查询条件
* @return 保洁订单记录列表
*/
@Override
public List<CleanOrderRecordVo> queryList(CleanOrderRecordBo bo) {
LambdaQueryWrapper<CleanOrderRecord> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<CleanOrderRecord> buildQueryWrapper(CleanOrderRecordBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CleanOrderRecord> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(CleanOrderRecord::getId);
lqw.eq(bo.getCleanOrderId() != null, CleanOrderRecord::getCleanOrderId, bo.getCleanOrderId());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CleanOrderRecord::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getIsSign()), CleanOrderRecord::getIsSign, bo.getIsSign());
lqw.eq(StringUtils.isNotBlank(bo.getSignImg()), CleanOrderRecord::getSignImg, bo.getSignImg());
lqw.eq(bo.getHandler() != null, CleanOrderRecord::getHandler, bo.getHandler());
lqw.eq(bo.getInitiatorPeople() != null, CleanOrderRecord::getInitiatorPeople, bo.getInitiatorPeople());
lqw.eq(StringUtils.isNotBlank(bo.getIsAbnormal()), CleanOrderRecord::getIsAbnormal, bo.getIsAbnormal());
return lqw;
}
/**
* 新增保洁订单记录
*
* @param bo 保洁订单记录
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(CleanOrderRecordBo bo) {
CleanOrderRecord add = MapstructUtils.convert(bo, CleanOrderRecord.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改保洁订单记录
*
* @param bo 保洁订单记录
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(CleanOrderRecordBo bo) {
CleanOrderRecord update = MapstructUtils.convert(bo, CleanOrderRecord.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(CleanOrderRecord entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除保洁订单记录信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@@ -14,10 +14,12 @@ import org.dromara.common.core.utils.MapstructUtils;
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.Meet;
import org.dromara.property.domain.MeetAttachOrder;
import org.dromara.property.domain.MeetBooking;
import org.dromara.property.domain.bo.MeetBookingBo;
import org.dromara.property.domain.vo.*;
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
import org.dromara.property.domain.vo.residentVo.ResidentPersonVo;
import org.dromara.property.domain.vo.residentVo.ResidentUnitVo;
import org.dromara.property.mapper.*;
@@ -30,6 +32,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -69,7 +72,7 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
//RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(meetBookingVo.getPerson()));
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(Long.valueOf(meetBookingVo.getPerson()));
meetBookingDetailVo.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getUserName() : null);
meetBookingDetailVo.setPhone(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getPhone(): null);
meetBookingDetailVo.setPhone(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getPhone() : null);
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(Long.valueOf(meetBookingVo.getUnit()));
meetBookingDetailVo.setUnitName(ObjectUtil.isNotNull(residentUnitVo) ? residentUnitVo.getName() : null);
return meetBookingDetailVo;
@@ -87,26 +90,26 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
LambdaQueryWrapper<MeetBooking> lqw = buildQueryWrapper(bo);
Page<MeetBookingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<MeetBookingVo> meetBookingVoList = new ArrayList<>();
if(CollUtil.isNotEmpty(result.getRecords())){
List<ResidentUnitVo> residentUnitVolist = residentUnitMapper.selectVoList();
List<Long> userId = result.getRecords().stream().map(vo -> vo.getPerson()).distinct().map(Long::parseLong).collect(Collectors.toList());
List<ResidentPersonVo> remoteUserVos = residentPersonMapper.selectVoByIds(userId);
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(userId);
if (CollUtil.isNotEmpty(result.getRecords())) {
List<ResidentUnitVo> residentUnitVolist = residentUnitMapper.selectVoList();
List<Long> userId = result.getRecords().stream().map(vo -> vo.getPerson()).distinct().map(Long::parseLong).collect(Collectors.toList());
List<ResidentPersonVo> remoteUserVos = residentPersonMapper.selectVoByIds(userId);
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(userId);
result.getRecords().stream().forEach(s -> {
if (CollUtil.isNotEmpty(residentUnitVolist)) {
ResidentUnitVo residentUnitVo = residentUnitVolist.stream()
.filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getUnit())).findFirst().orElse(null);
s.setUnitName(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
}
if (CollUtil.isNotEmpty(remoteUserVos)) {
ResidentPersonVo residentPersonVo = remoteUserVos.stream()
.filter(vo -> vo.getUserId() != null && String.valueOf(vo.getUserId()).equals(s.getPerson())).findFirst().orElse(null);
s.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getUserName() : null);
s.setPhone(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getPhone() : null);
}
meetBookingVoList.add(s);
});
result.getRecords().stream().forEach(s -> {
if (CollUtil.isNotEmpty(residentUnitVolist)) {
ResidentUnitVo residentUnitVo = residentUnitVolist.stream()
.filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getUnit())).findFirst().orElse(null);
s.setUnitName(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
}
if (CollUtil.isNotEmpty(remoteUserVos)) {
ResidentPersonVo residentPersonVo = remoteUserVos.stream()
.filter(vo -> vo.getUserId() != null && String.valueOf(vo.getUserId()).equals(s.getPerson())).findFirst().orElse(null);
s.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getUserName() : null);
s.setPhone(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getPhone() : null);
}
meetBookingVoList.add(s);
});
}
return TableDataInfo.build(new Page<MeetBookingVo>().setRecords(meetBookingVoList).setTotal(result.getTotal()));
}
@@ -124,7 +127,7 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
LocalDateTime startOfDay = date.atStartOfDay();
LocalDateTime endOfDay = date.atTime(LocalTime.MAX);
meetBookingLambdaQueryWrapper
.eq(MeetBooking::getState,2)
.eq(MeetBooking::getState, 2)
.le(MeetBooking::getScheduledStarttime, endOfDay)
.ge(MeetBooking::getScheduledEndtime, startOfDay);
List<MeetBooking> meetBookings = baseMapper.selectList(meetBookingLambdaQueryWrapper);
@@ -135,14 +138,14 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
SimpleDateFormat df = new SimpleDateFormat("HH");
List<ResidentUnitVo> residentUnitVolist = residentUnitMapper.selectVoList();
List<Long> userId = meetBookingAppointmentVoList.stream().map(vo -> vo.getPerson()).distinct().map(Long::parseLong).collect(Collectors.toList());
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(userId);
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(userId);
List<ResidentPersonVo> remoteUserVos = residentPersonMapper.selectVoByIds(userId);
meetBookingAppointmentVoList.stream().forEach(
s -> {
if (CollUtil.isNotEmpty(residentUnitVolist)) {
ResidentUnitVo residentUnitVo = residentUnitVolist.stream()
.filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getUnit())).findFirst().orElse(null);
s.setUnitName(ObjectUtil.isNotEmpty(residentUnitVo) ?residentUnitVo.getName():null);
s.setUnitName(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
}
if (CollUtil.isNotEmpty(remoteUserVos)) {
ResidentPersonVo residentPersonVo = remoteUserVos.stream()
@@ -184,7 +187,7 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
// 构建查询条件
LambdaQueryWrapper<MeetBooking> bookingLambdaQueryWrapper = new LambdaQueryWrapper<>();
bookingLambdaQueryWrapper.eq(MeetBooking::getMeetId, meetId)
.eq(MeetBooking::getState,2)
.eq(MeetBooking::getState, 2)
.ge(MeetBooking::getScheduledStarttime, startOfWeek)
.le(MeetBooking::getScheduledEndtime, endOfWeek);
List<MeetBookingVo> meetBookingVoList = baseMapper.selectVoList(bookingLambdaQueryWrapper);
@@ -197,13 +200,13 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
SimpleDateFormat df = new SimpleDateFormat("HH");
List<ResidentUnitVo> residentUnitVolist = residentUnitMapper.selectVoList();
List<Long> userId = meetBookingWeekVoList.stream().map(vo -> vo.getPerson()).distinct().map(Long::parseLong).collect(Collectors.toList());
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(userId);
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(userId);
List<ResidentPersonVo> remoteUserVos = residentPersonMapper.selectVoByIds(userId);
meetBookingWeekVoList.stream().forEach(s -> {
if (CollUtil.isNotEmpty(residentUnitVolist)) {
ResidentUnitVo residentUnitVo = residentUnitVolist.stream()
.filter(vo -> vo.getId() != null && String.valueOf(vo.getId()).equals(s.getUnit())).findFirst().orElse(null);
s.setUnitName(ObjectUtil.isNotEmpty(residentUnitVo)? residentUnitVo.getName():null);
s.setUnitName(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
}
if (CollUtil.isNotEmpty(remoteUserVos)) {
ResidentPersonVo residentPersonVo = remoteUserVos.stream()
@@ -322,9 +325,29 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
};
}
public List<MeetBooking> getList() {
LambdaQueryWrapper<MeetBooking> meetQueryWrapper = new LambdaQueryWrapper<>();
return baseMapper.selectList(meetQueryWrapper);
}
@Override
public TodayMeetCountVo todayMeetCount() {
Long meetCount = meetMapper.selectCount(null);
// 获取今日开始和结束时间
LocalDate today = LocalDate.now();
// 查询今日预约
LambdaQueryWrapper<MeetBooking> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.le(MeetBooking::getScheduledStarttime, today)
.ge(MeetBooking::getScheduledEndtime, today);
List<MeetBooking> todayBookings = baseMapper.selectList(queryWrapper);
TodayMeetCountVo todayMeetCountVo = new TodayMeetCountVo();
todayMeetCountVo.setTimeQuantity(todayBookings.size());
todayMeetCountVo.setMeetCount(Integer.valueOf(Math.toIntExact(meetCount)));
return todayMeetCountVo;
}
}

View File

@@ -27,6 +27,8 @@ import org.dromara.property.domain.enums.OrderReportingTypeEnum;
import org.dromara.property.domain.enums.OrderTypeOperationEnum;
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
import org.dromara.property.domain.vo.*;
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
import org.dromara.property.domain.vo.BigScreen.TypeWorkOrderHistogramVo;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersRecordVo;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersVo;
import org.dromara.property.mapper.ResidentPersonMapper;
@@ -762,4 +764,89 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
return baseMapper.selectVoList(qw);
}
//大屏接口
/**
* 大屏工单柱状图
*/
@Override
public List<TypeWorkOrderHistogramVo> typeWorkOrderHistogram() {
// 查询工单类型
List<ServiceWorkOrdersTypeVo> typeVoList = serviceWorkOrdersTypeService.typeTree();
// 递归收集工单类型ID并查询工单数量按状态区分
List<TypeWorkOrderHistogramVo> result = new ArrayList<>();
for (ServiceWorkOrdersTypeVo typeVo : typeVoList) {
Map<String, Integer> statusCounts = getStatusCounts(typeVo);
result.add(new TypeWorkOrderHistogramVo()
.setType(typeVo.getOrderTypeName())
.setStatusCounts(statusCounts));
}
return result;
}
private Map<String, Integer> getStatusCounts(ServiceWorkOrdersTypeVo typeVo) {
List<Long> allTypeIds = getAllTypeIds(typeVo);
List<ServiceWorkOrders> workOrders = getWorkOrdersByTypeIds(allTypeIds);
Map<String, Integer> statusCounts = new HashMap<>();
int pendingCount = 0;
int dispatchCount = 0;
int processingCount = 0;
int completedCount = 0;
for (ServiceWorkOrders order : workOrders) {
String status = order.getStatus();
switch (status) {
case "0": // 待派单
pendingCount++;
break;
case "1": // 已派单
case "2":
dispatchCount++;
break;
case "3": // 处理中
processingCount++;
case "4": // 已关闭
completedCount++;
break;
default:
// 处理其他状态或记录日志
break;
}
}
statusCounts.put(WorkOrderStatusEnum.CREATE_ORDER.getName(), pendingCount);
statusCounts.put(WorkOrderStatusEnum.DISPATCHED.getName(), dispatchCount);
statusCounts.put(WorkOrderStatusEnum.IN_HAND.getName(), processingCount);
statusCounts.put(WorkOrderStatusEnum.DONE.getName(), completedCount);
statusCounts.put("已完成", completedCount);
return statusCounts;
}
private List<Long> getAllTypeIds(ServiceWorkOrdersTypeVo typeVo) {
List<Long> typeIds = new ArrayList<>();
collectTypeIds(typeVo, typeIds);
return typeIds;
}
private void collectTypeIds(ServiceWorkOrdersTypeVo typeVo, List<Long> typeIds) {
typeIds.add(typeVo.getId());
if (typeVo.getChildren() != null) {
for (ServiceWorkOrdersTypeVo child : typeVo.getChildren()) {
collectTypeIds(child, typeIds);
}
}
}
private List<ServiceWorkOrders> getWorkOrdersByTypeIds(List<Long> typeIds) {
// 假设这里有一个方法可以从数据库或其他数据源获取工单列表
return baseMapper.selectList(
new LambdaQueryWrapper<ServiceWorkOrders>()
.in(ServiceWorkOrders::getType, typeIds)
);
}
}

View File

@@ -203,4 +203,16 @@ public class ServiceWorkOrdersTypeServiceImpl implements IServiceWorkOrdersTypeS
}
return tree;
}
//APP端
/**
* 查询【工单类型】树结构
*
* @return 工单类型树结构
*/
@Override
public List<ServiceWorkOrdersTypeVo> typeTrees() {
List<ServiceWorkOrdersTypeVo> list = baseMapper.selectVoList();
return buildTree(list, null);
}
}

View File

@@ -1,24 +1,35 @@
package org.dromara.property.service.impl.cleanOrderImpl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.*;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import org.dromara.property.domain.vo.cleanOrderVo.CleanOrderVo;
import org.dromara.property.mapper.CleanOrderRecordMapper;
import org.dromara.property.mapper.TbRoomMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanOrderMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanRelationMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanserverOrderMapper;
import org.dromara.property.service.cleanOrderService.ICleanOrderService;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -28,6 +39,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static org.springframework.beans.BeanUtils.copyProperties;
/**
* 保洁订单Service业务层处理
*
@@ -40,12 +53,15 @@ import java.util.stream.Collectors;
public class CleanOrderServiceImpl implements ICleanOrderService {
private final CleanOrderMapper baseMapper;
private final CleanOrderRecordMapper cleanOrderRecordMapper;
private final CleanserverOrderMapper cleanserverOrderMapper;
private final CleanMapper cleanMapper;
private final CleanRelationMapper cleanRelationMapper;
private final TbRoomMapper roomMapper;
@DubboReference
private RemoteUserService remoteUserService;
//NOTUNBOOKING:未退订 BOOKING:已退订
private final Integer NOTUNBOOKING = 0;
@@ -79,6 +95,25 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
CleanOrderVo cleanOrderVo = MapstructUtils.convert(cleanOrder, CleanOrderVo.class);
cleanOrderVo.setCleanList(cleanList);
cleanOrderVo.setRelationList(cleanRelationList);
//查询订单记录
List<CleanOrderRecordVo> cleanOrderRecordVos = cleanOrderRecordMapper.selectVoList(Wrappers.<CleanOrderRecord>lambdaQuery().eq(CleanOrderRecord::getCleanOrderId, id));
if(CollUtil.isNotEmpty(cleanOrderRecordVos)){
cleanOrderRecordVos.stream().forEach(item -> {
//查询指派人名称
if(ObjectUtil.isNotEmpty(item.getHandler())){
RemoteUserVo userInfo = remoteUserService.getUserInfoById(item.getHandler());
item.setHandlerText(userInfo.getNickName());
}
//查询发起人名称
if(ObjectUtil.isNotEmpty(item.getInitiatorPeople())){
RemoteUserVo userInfo = remoteUserService.getUserInfoById(item.getInitiatorPeople());
item.setInitiatorPeopleText(userInfo.getNickName());
}
});
cleanOrderVo.setRecordVoList(cleanOrderRecordVos);
}
return cleanOrderVo;
}
@@ -156,12 +191,15 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
//1.向clean_order表中插入数据
// CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class);
CleanOrder add = new CleanOrder();
validEntityBeforeSave(add);
BeanUtils.copyProperties(bo, add);
copyProperties(bo, add);
add.setStarTime(bo.getStarTime());
add.setEndTime(bo.getEndTime());
add.setIsUnbooking(NOTUNBOOKING);
boolean flag = baseMapper.insert(add) > 0;
if (flag){
bo.setId(add.getId());
validEntityBeforeSave(bo);
}
//取出clean_order表中的所有clean数据
List<Clean> cleanList = bo.getCleanList();
@@ -206,19 +244,31 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(CleanOrderBo bo) {
CleanOrder update = MapstructUtils.convert(bo, CleanOrder.class);
validEntityBeforeSave(update);
// validEntityBeforeSave(update);
update.setStarTime(bo.getStarTime());
update.setEndTime(bo.getStarTime());
return baseMapper.updateById(update) > 0;
}
/**
* 保存的数据校验
* 保存的数据校验
*/
private void validEntityBeforeSave(CleanOrder entity) {
private void validEntityBeforeSave(CleanOrderBo bo) {
//当前登录用户
Long userId = LoginHelper.getUserId();
//TODO 做一些数据校验,如唯一约束
cleanOrderRecordMapper.insert(
new CleanOrderRecord()
.setCleanOrderId(bo.getId())
.setStatus("1")
.setIsSign("1")
.setInitiatorPeople(userId)
.setServiceEvaluaText(bo.getServiceEvaluaText())
.setIsAbnormal("1")
);
}
/**
@@ -236,4 +286,16 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
//todo:应该删除中间表中的数据
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 指派保洁订单
* @param bo
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int assign(CleanOrderBo bo) {
CleanOrderRecord cleanOrderRecord= BeanUtil.copyProperties(bo.getCleanOrderRecord(), CleanOrderRecord.class);
cleanOrderRecord.setStatus("2");
return cleanOrderRecordMapper.insert(cleanOrderRecord);
}
}

View File

@@ -62,7 +62,7 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
public ResidentUnitVo queryById(Long id){
ResidentUnitVo residentUnitVo = baseMapper.selectVoById(id);
//获取入驻位置详情
if(StringUtils.isNotBlank(residentUnitVo.getLocation())){
if(ObjectUtil.isNotEmpty(residentUnitVo)){
// 修改后的代码
List<Long> idList = Arrays.stream(residentUnitVo.getLocation().split(","))
.map(String::trim)
@@ -75,9 +75,9 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
String locationDetail = String.join("", roomNames);
residentUnitVo.setLocationDetail(locationDetail);
}
Long num = personService.queryPersonCount(residentUnitVo.getId());
residentUnitVo.setNumber(num);
}
Long num = personService.queryPersonCount(residentUnitVo.getId());
residentUnitVo.setNumber(num);
return residentUnitVo;
}

View File

@@ -39,7 +39,7 @@ public class GenController extends BaseController {
/**
* 查询代码生成列表
*/
@SaCheckPermission("tool:gen:list")
//@SaCheckPermission("tool:gen:list")
@GetMapping("/list")
public TableDataInfo<GenTable> genList(GenTable genTable, PageQuery pageQuery) {
return genTableService.selectPageGenTableList(genTable, pageQuery);
@@ -50,7 +50,7 @@ public class GenController extends BaseController {
*
* @param tableId 表ID
*/
@SaCheckPermission("tool:gen:query")
//@SaCheckPermission("tool:gen:query")
@GetMapping(value = "/{tableId}")
public R<Map<String, Object>> getInfo(@PathVariable Long tableId) {
GenTable table = genTableService.selectGenTableById(tableId);
@@ -66,7 +66,7 @@ public class GenController extends BaseController {
/**
* 查询数据库列表
*/
@SaCheckPermission("tool:gen:list")
//@SaCheckPermission("tool:gen:list")
@GetMapping("/db/list")
public TableDataInfo<GenTable> dataList(GenTable genTable, PageQuery pageQuery) {
return genTableService.selectPageDbTableList(genTable, pageQuery);
@@ -77,7 +77,7 @@ public class GenController extends BaseController {
*
* @param tableId 表ID
*/
@SaCheckPermission("tool:gen:list")
//@SaCheckPermission("tool:gen:list")
@GetMapping(value = "/column/{tableId}")
public TableDataInfo<GenTableColumn> columnList(@PathVariable("tableId") Long tableId) {
TableDataInfo<GenTableColumn> dataInfo = new TableDataInfo<>();
@@ -92,7 +92,7 @@ public class GenController extends BaseController {
*
* @param tables 表名串
*/
@SaCheckPermission("tool:gen:import")
//@SaCheckPermission("tool:gen:import")
@Log(title = "代码生成", businessType = BusinessType.IMPORT)
@PostMapping("/importTable")
public R<Void> importTableSave(String tables, String dataName) {
@@ -106,7 +106,7 @@ public class GenController extends BaseController {
/**
* 修改保存代码生成业务
*/
@SaCheckPermission("tool:gen:edit")
//@SaCheckPermission("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> editSave(@Validated @RequestBody GenTable genTable) {
@@ -120,7 +120,7 @@ public class GenController extends BaseController {
*
* @param tableIds 表ID串
*/
@SaCheckPermission("tool:gen:remove")
//@SaCheckPermission("tool:gen:remove")
@Log(title = "代码生成", businessType = BusinessType.DELETE)
@DeleteMapping("/{tableIds}")
public R<Void> remove(@PathVariable Long[] tableIds) {
@@ -133,7 +133,7 @@ public class GenController extends BaseController {
*
* @param tableId 表ID
*/
@SaCheckPermission("tool:gen:preview")
//@SaCheckPermission("tool:gen:preview")
@GetMapping("/preview/{tableId}")
public R<Map<String, String>> preview(@PathVariable("tableId") Long tableId) throws IOException {
Map<String, String> dataMap = genTableService.previewCode(tableId);
@@ -145,7 +145,7 @@ public class GenController extends BaseController {
*
* @param tableId 表ID
*/
@SaCheckPermission("tool:gen:code")
//@SaCheckPermission("tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/download/{tableId}")
public void download(HttpServletResponse response, @PathVariable("tableId") Long tableId) throws IOException {
@@ -158,7 +158,7 @@ public class GenController extends BaseController {
*
* @param tableId 表ID
*/
@SaCheckPermission("tool:gen:code")
//@SaCheckPermission("tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/genCode/{tableId}")
public R<Void> genCode(@PathVariable("tableId") Long tableId) {
@@ -171,7 +171,7 @@ public class GenController extends BaseController {
*
* @param tableId 表ID
*/
@SaCheckPermission("tool:gen:edit")
//@SaCheckPermission("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE)
@GetMapping("/synchDb/{tableId}")
public R<Void> synchDb(@PathVariable("tableId") Long tableId) {
@@ -184,7 +184,7 @@ public class GenController extends BaseController {
*
* @param tableIdStr 表ID串
*/
@SaCheckPermission("tool:gen:code")
//@SaCheckPermission("tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/batchGenCode")
public void batchGenCode(HttpServletResponse response, String tableIdStr) throws IOException {
@@ -209,7 +209,7 @@ public class GenController extends BaseController {
/**
* 查询数据源名称列表
*/
@SaCheckPermission("tool:gen:list")
//@SaCheckPermission("tool:gen:list")
@GetMapping(value = "/getDataNames")
public R<Object> getCurrentDataSourceNameList(){
return R.ok(DataBaseHelper.getDataSourceNameList());