Ver código fonte

1、工单组和组员
2、报事报修与工单关联

slowslo 4 anos atrás
pai
commit
467c46a283
39 arquivos alterados com 1776 adições e 28 exclusões
  1. 4 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/RepairDTO.java
  2. 34 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/WorkOrderGroupDTO.java
  3. 34 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/WorkOrderGroupUserDTO.java
  4. 39 3
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/Repair.java
  5. 21 7
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/WorkOrder.java
  6. 62 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/WorkOrderGroup.java
  7. 62 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/WorkOrderGroupUser.java
  8. 63 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IWorkOrderGroupClient.java
  9. 63 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IWorkOrderGroupUserClient.java
  10. 62 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/WorkOrderGroupClientFallback.java
  11. 62 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/WorkOrderGroupUserClientFallback.java
  12. 42 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupSimpleVO.java
  13. 40 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupUserSimpleVO.java
  14. 40 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupUserVO.java
  15. 50 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupVO.java
  16. 3 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderVO.java
  17. 17 1
      blade-service/estate/src/main/java/org/springblade/estate/controller/RepairController.java
  18. 154 0
      blade-service/estate/src/main/java/org/springblade/estate/controller/WorkOrderGroupController.java
  19. 143 0
      blade-service/estate/src/main/java/org/springblade/estate/controller/WorkOrderGroupUserController.java
  20. 90 0
      blade-service/estate/src/main/java/org/springblade/estate/feign/WorkOrderGroupClient.java
  21. 90 0
      blade-service/estate/src/main/java/org/springblade/estate/feign/WorkOrderGroupUserClient.java
  22. 5 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/RepairMapper.xml
  23. 44 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupMapper.java
  24. 34 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupMapper.xml
  25. 42 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupUserMapper.java
  26. 26 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupUserMapper.xml
  27. 2 2
      blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderMapper.xml
  28. 2 0
      blade-service/estate/src/main/java/org/springblade/estate/service/IRepairService.java
  29. 60 0
      blade-service/estate/src/main/java/org/springblade/estate/service/IWorkOrderGroupService.java
  30. 54 0
      blade-service/estate/src/main/java/org/springblade/estate/service/IWorkOrderGroupUserService.java
  31. 3 1
      blade-service/estate/src/main/java/org/springblade/estate/service/IWorkOrderService.java
  32. 16 4
      blade-service/estate/src/main/java/org/springblade/estate/service/impl/RepairServiceImpl.java
  33. 86 0
      blade-service/estate/src/main/java/org/springblade/estate/service/impl/WorkOrderGroupServiceImpl.java
  34. 64 0
      blade-service/estate/src/main/java/org/springblade/estate/service/impl/WorkOrderGroupUserServiceImpl.java
  35. 7 3
      blade-service/estate/src/main/java/org/springblade/estate/service/impl/WorkOrderServiceImpl.java
  36. 64 0
      blade-service/estate/src/main/java/org/springblade/estate/wrapper/WorkOrderGroupUserWrapper.java
  37. 69 0
      blade-service/estate/src/main/java/org/springblade/estate/wrapper/WorkOrderGroupWrapper.java
  38. 18 2
      blade-service/estate/src/main/java/org/springblade/estate/wrapper/WorkOrderWrapper.java
  39. 5 5
      community-app-gateway/src/main/java/org/springblade/app/controller/EstateRepairController.java

+ 4 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/RepairDTO.java

@@ -46,4 +46,8 @@ public class RepairDTO extends Repair {
 
 	private String workOrderName;
 
+	private Long groupId;
+
+	private Long groupUserId;
+
 }

+ 34 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/WorkOrderGroupDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.dto;
+
+import org.springblade.estate.entity.WorkOrderGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工单团队数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WorkOrderGroupDTO extends WorkOrderGroup {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/WorkOrderGroupUserDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.dto;
+
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 工单团队和用户关联表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WorkOrderGroupUserDTO extends WorkOrderGroupUser {
+	private static final long serialVersionUID = 1L;
+
+}

+ 39 - 3
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/Repair.java

@@ -17,12 +17,16 @@
 package org.springblade.estate.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springblade.core.mp.base.BaseEntity;
 import java.time.LocalDateTime;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * 报事工单实体类
@@ -101,24 +105,34 @@ public class Repair extends BaseEntity {
 	private String handlerPhone;
 	/**
 	 * 处理状态
+	 * 0:未处理
+	 * 1:处理中
+	 * 2:已处理
+	 * 3:不作处理
 	 */
 	@ApiModelProperty(value = "处理状态")
 	private Integer handleStatus;
 	/**
 	 * 处理时间
 	 */
+	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	@ApiModelProperty(value = "处理时间")
-	private LocalDateTime handleTime;
+	private Date handleTime;
 	/**
 	 * 预约开始时间
 	 */
+	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	@ApiModelProperty(value = "预约开始时间")
-	private LocalDateTime beginTime;
+	private Date beginTime;
 	/**
 	 * 预约结束时间
 	 */
+	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	@ApiModelProperty(value = "预约结束时间")
-	private LocalDateTime endTime;
+	private Date endTime;
 	/**
 	 * 受理状态:0:等待受理,1:已受理,2:拒绝受理
 	 */
@@ -129,6 +143,15 @@ public class Repair extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "受理原因")
 	private String acceptReason;
+	/**
+	 * 处理结果
+	 */
+	@ApiModelProperty(value = "处理结果")
+	private String handleResult;
+	/**
+	 * 处理结果评价
+	 */
+	private Integer rate;
 	/**
 	 * 0-未评价  1-已评价
 	 */
@@ -149,6 +172,19 @@ public class Repair extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "园区ID")
 	private Long agencyId;
+
+	/**
+	 * 工单组ID
+	 */
+	@ApiModelProperty(value = "工单组ID")
+	private Long workOrderGroupId;
+
+	/**
+	 * 工单组成员ID
+	 */
+	@ApiModelProperty(value = "工单组成员ID")
+	private Long workOrderGroupUserId;
+
 	/**
 	 * 企业ID
 	 */

+ 21 - 7
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/WorkOrder.java

@@ -17,11 +17,15 @@
 package org.springblade.estate.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 实体类
@@ -62,21 +66,31 @@ public class WorkOrder extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "事件简述")
 	private String bizTag;
+
 	/**
-	* 处理人
-	*/
-		@ApiModelProperty(value = "处理人")
-		private String handler;
+	 * 工单组ID
+	 */
+	@ApiModelProperty(value = "工单组ID")
+	private Long groupId;
+
 	/**
-	 * 处理人
+	 * 工单组成员ID
 	 */
-	@ApiModelProperty(value = "处理人电话")
-	private String handlerPhone;
+	@ApiModelProperty(value = "工单组成员ID")
+	private Long groupUserId;
 	/**
 	* 处理状态
 	*/
 		@ApiModelProperty(value = "处理状态")
 		private Integer handleStatus;
+
+	/**
+	 * 处理时间
+	 */
+	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "处理时间")
+	private Date handleTime;
 	/**
 	* 图片,逗号隔开
 	*/

+ 62 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/WorkOrderGroup.java

@@ -0,0 +1,62 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 工单团队
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@TableName("estate_work_order_group")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WorkOrderGroup对象", description = "工单团队")
+public class WorkOrderGroup extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	* 组名
+	*/
+		@ApiModelProperty(value = "组名")
+		private String name;
+	/**
+	* 小区id
+	*/
+		@ApiModelProperty(value = "小区id")
+		private Long residentialId;
+	/**
+	* 工单组类型,设备工单组,报事报修工单组
+	*/
+		@ApiModelProperty(value = "工单组类型,设备工单组,报事报修工单组")
+		private Integer groupType;
+	/**
+	* 仅在设备工单组可用,设备类型,可以多选
+	*/
+		@ApiModelProperty(value = "仅在设备工单组可用,设备类型,可以多选")
+		private String tags;
+
+
+}

+ 62 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/WorkOrderGroupUser.java

@@ -0,0 +1,62 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 工单团队和用户关联表
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@TableName("estate_work_order_group_user")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WorkOrderGroupUser对象", description = "工单团队和用户关联表")
+public class WorkOrderGroupUser extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	* 组id
+	*/
+		@ApiModelProperty(value = "组id")
+		private Long groupId;
+	/**
+	* 责任人
+	*/
+		@ApiModelProperty(value = "责任人")
+		private String person;
+	/**
+	* 责任人联系电话
+	*/
+		@ApiModelProperty(value = "责任人联系电话")
+		private String phone;
+	/**
+	* 是否为处理人
+	*/
+		@ApiModelProperty(value = "是否为处理人")
+		private Integer isHandler;
+
+
+}

+ 63 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IWorkOrderGroupClient.java

@@ -0,0 +1,63 @@
+package org.springblade.estate.feign;
+
+import io.swagger.annotations.ApiParam;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 工单团队 Feign
+ *
+ * @author lianghanqiang
+ * @since 2022-01-19
+ */
+@FeignClient(value = "cyzh-estate",path = "/feign/workordergroup")
+public interface IWorkOrderGroupClient  {
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+    WorkOrderGroupVO detail(WorkOrderGroup workOrderGroup);
+
+	/**
+	 * 查询 工单团队
+	 */
+	@GetMapping("/list")
+    List<WorkOrderGroupVO> list(WorkOrderGroup workOrderGroup);
+
+
+
+	/**
+	 * 新增 工单团队
+	 */
+	@PostMapping("/save")
+	boolean save(@Valid @RequestBody WorkOrderGroup workOrderGroup);
+
+	/**
+	 * 修改 工单团队
+	 */
+	@PostMapping("/update")
+    boolean update(@Valid @RequestBody WorkOrderGroup workOrderGroup);
+
+	/**
+	 * 新增或修改 工单团队
+	 */
+	@PostMapping("/submit")
+    boolean submit(@Valid @RequestBody WorkOrderGroup workOrderGroup);
+
+
+	/**
+	 * 删除 工单团队
+	 */
+	@PostMapping("/remove")
+    boolean remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids);
+
+
+}

+ 63 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IWorkOrderGroupUserClient.java

@@ -0,0 +1,63 @@
+package org.springblade.estate.feign;
+
+import io.swagger.annotations.ApiParam;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 工单团队和用户关联表 Feign
+ *
+ * @author lianghanqiang
+ * @since 2022-01-19
+ */
+@FeignClient(value = "cyzh-estate",path = "/feign/workordergroupuser")
+public interface IWorkOrderGroupUserClient  {
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+    WorkOrderGroupUserVO detail(WorkOrderGroupUser workOrderGroupUser);
+
+	/**
+	 * 查询 工单团队和用户关联表
+	 */
+	@GetMapping("/list")
+    List<WorkOrderGroupUserVO> list(WorkOrderGroupUser workOrderGroupUser);
+
+
+
+	/**
+	 * 新增 工单团队和用户关联表
+	 */
+	@PostMapping("/save")
+	boolean save(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser);
+
+	/**
+	 * 修改 工单团队和用户关联表
+	 */
+	@PostMapping("/update")
+    boolean update(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser);
+
+	/**
+	 * 新增或修改 工单团队和用户关联表
+	 */
+	@PostMapping("/submit")
+    boolean submit(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser);
+
+
+	/**
+	 * 删除 工单团队和用户关联表
+	 */
+	@PostMapping("/remove")
+    boolean remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids);
+
+
+}

+ 62 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/WorkOrderGroupClientFallback.java

@@ -0,0 +1,62 @@
+package org.springblade.estate.feign;
+
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import org.springframework.stereotype.Component;
+import javax.validation.Valid;
+import java.util.List;
+
+@Component
+public class WorkOrderGroupClientFallback implements IWorkOrderGroupClient {
+            /**
+         * 详情
+         */
+        @Override
+        public WorkOrderGroupVO detail(WorkOrderGroup workOrderGroup) {
+            return null;
+        }
+
+        /**
+         * 查询 工单团队
+         */
+        @Override
+        public List<WorkOrderGroupVO> list(WorkOrderGroup workOrderGroup) {
+            return null;
+        }
+
+
+
+        /**
+         * 新增 工单团队
+         */
+        @Override
+        public boolean save( WorkOrderGroup workOrderGroup) {
+            return false;
+        }
+
+        /**
+         * 修改 工单团队
+         */
+        @Override
+        public boolean update( WorkOrderGroup workOrderGroup) {
+            return false;
+        }
+
+        /**
+         * 新增或修改 工单团队
+         */
+        @Override
+        public boolean submit( WorkOrderGroup workOrderGroup) {
+            return false;
+        }
+
+
+        /**
+         * 删除 工单团队
+         */
+        @Override
+        public boolean remove( String ids) {
+            return false;
+        }
+
+    }

+ 62 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/WorkOrderGroupUserClientFallback.java

@@ -0,0 +1,62 @@
+package org.springblade.estate.feign;
+
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springframework.stereotype.Component;
+import javax.validation.Valid;
+import java.util.List;
+
+@Component
+public class WorkOrderGroupUserClientFallback implements IWorkOrderGroupUserClient {
+            /**
+         * 详情
+         */
+        @Override
+        public WorkOrderGroupUserVO detail(WorkOrderGroupUser workOrderGroupUser) {
+            return null;
+        }
+
+        /**
+         * 查询 工单团队和用户关联表
+         */
+        @Override
+        public List<WorkOrderGroupUserVO> list(WorkOrderGroupUser workOrderGroupUser) {
+            return null;
+        }
+
+
+
+        /**
+         * 新增 工单团队和用户关联表
+         */
+        @Override
+        public boolean save( WorkOrderGroupUser workOrderGroupUser) {
+            return false;
+        }
+
+        /**
+         * 修改 工单团队和用户关联表
+         */
+        @Override
+        public boolean update( WorkOrderGroupUser workOrderGroupUser) {
+            return false;
+        }
+
+        /**
+         * 新增或修改 工单团队和用户关联表
+         */
+        @Override
+        public boolean submit( WorkOrderGroupUser workOrderGroupUser) {
+            return false;
+        }
+
+
+        /**
+         * 删除 工单团队和用户关联表
+         */
+        @Override
+        public boolean remove( String ids) {
+            return false;
+        }
+
+    }

+ 42 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupSimpleVO.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.estate.entity.WorkOrderGroup;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 工单团队视图实体类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@ApiModel(value = "WorkOrderGroupSimpleVO对象", description = "工单团队")
+public class WorkOrderGroupSimpleVO implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String name;
+
+	private Long id;
+}

+ 40 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupUserSimpleVO.java

@@ -0,0 +1,40 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 工单团队和用户关联视图实体类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@ApiModel(value = "WorkOrderGroupUserSimpleVO对象", description = "工单团队和用户关联")
+public class WorkOrderGroupUserSimpleVO implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String person;
+
+	private Long id;
+
+	private String phone;
+}

+ 40 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupUserVO.java

@@ -0,0 +1,40 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.vo;
+
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 工单团队和用户关联表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WorkOrderGroupUserVO对象", description = "工单团队和用户关联表")
+public class WorkOrderGroupUserVO extends WorkOrderGroupUser {
+	private static final long serialVersionUID = 1L;
+
+	private String label;
+
+	private Long value;
+
+}

+ 50 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderGroupVO.java

@@ -0,0 +1,50 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.springblade.core.tool.node.INode;
+import org.springblade.estate.entity.WorkOrderGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.system.vo.RoleVO;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 工单团队视图实体类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WorkOrderGroupVO对象", description = "工单团队")
+public class WorkOrderGroupVO extends WorkOrderGroup {
+	private static final long serialVersionUID = 1L;
+
+	private String residentialName;
+
+	private String label;
+
+	private Long value;
+
+	private List<WorkOrderGroupUserVO> children = new ArrayList<>();
+}

+ 3 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/WorkOrderVO.java

@@ -38,5 +38,8 @@ public class WorkOrderVO extends WorkOrder {
 	private List<String> imgs;
 	private String eventTypeTxt;
 	private String handleStatusTxt;
+	private String handler;
+	private String handlerPhone;
+	private String groupName;
 
 }

+ 17 - 1
blade-service/estate/src/main/java/org/springblade/estate/controller/RepairController.java

@@ -17,6 +17,7 @@
 package org.springblade.estate.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -72,7 +73,8 @@ public class RepairController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入repair")
 	public R<IPage<RepairVO>> list(@RequestParam Map<String, Object> repair, Query query, BladeUser bladeUser) {
-		IPage<Repair> pages = repairService.page(Condition.getPage(query), new LambdaQueryWrapper<Repair>().orderByDesc(Repair::getReportTime).orderByAsc(Repair::getAcceptStatus));
+		QueryWrapper<Repair> queryWrapper = Condition.getQueryWrapper(repair, Repair.class);
+		IPage<Repair> pages = repairService.page(Condition.getPage(query), queryWrapper.lambda().orderByDesc(Repair::getReportTime).orderByAsc(Repair::getAcceptStatus));
 		return R.data(RepairWrapper.build().pageVO(pages));
 	}
 
@@ -140,5 +142,19 @@ public class RepairController extends BladeController {
 		return repairService.generateWorkOrder(repairDTO);
 	}
 
+	/**
+	 * 去处理
+	 * handleStatus
+	 * 1:处理中
+	 * 2:处理成功
+	 * 3:不作处理
+	 */
+	@PostMapping("/toHandle")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "去处理")
+	public R toHandle(@RequestBody RepairDTO repairDTO) {
+		return repairService.toHandle(repairDTO);
+	}
+
 
 }

+ 154 - 0
blade-service/estate/src/main/java/org/springblade/estate/controller/WorkOrderGroupController.java

@@ -0,0 +1,154 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.system.vo.DictBizVO;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import org.springblade.estate.wrapper.WorkOrderGroupWrapper;
+import org.springblade.estate.service.IWorkOrderGroupService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+import java.util.List;
+
+/**
+ * 工单团队 控制器
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/workordergroup")
+@Api(value = "工单团队", tags = "工单团队接口")
+public class WorkOrderGroupController extends BladeController {
+
+	private final IWorkOrderGroupService workOrderGroupService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入workOrderGroup")
+	public R<WorkOrderGroupVO> detail(WorkOrderGroup workOrderGroup) {
+		WorkOrderGroup detail = workOrderGroupService.getOne(Condition.getQueryWrapper(workOrderGroup));
+		return R.data(WorkOrderGroupWrapper.build().entityVO(detail));
+	}
+
+	/**
+	 * 分页 工单团队
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入workOrderGroup")
+	public R<IPage<WorkOrderGroupVO>> list(WorkOrderGroup workOrderGroup, Query query) {
+		IPage<WorkOrderGroup> pages = workOrderGroupService.page(Condition.getPage(query), Condition.getQueryWrapper(workOrderGroup));
+		return R.data(WorkOrderGroupWrapper.build().pageVO(pages));
+	}
+
+
+	/**
+	 * 自定义分页 工单团队
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入workOrderGroup")
+	public R<IPage<WorkOrderGroupVO>> page(WorkOrderGroupVO workOrderGroup, Query query) {
+		IPage<WorkOrderGroupVO> pages = workOrderGroupService.selectWorkOrderGroupPage(Condition.getPage(query), workOrderGroup);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 工单团队
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入workOrderGroup")
+	public R save(@Valid @RequestBody WorkOrderGroup workOrderGroup) {
+		return R.status(workOrderGroupService.save(workOrderGroup));
+	}
+
+	/**
+	 * 修改 工单团队
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入workOrderGroup")
+	public R update(@Valid @RequestBody WorkOrderGroup workOrderGroup) {
+		return R.status(workOrderGroupService.updateById(workOrderGroup));
+	}
+
+	/**
+	 * 新增或修改 工单团队
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入workOrderGroup")
+	public R submit(@Valid @RequestBody WorkOrderGroup workOrderGroup) {
+		return R.status(workOrderGroupService.saveOrUpdate(workOrderGroup));
+	}
+
+
+	/**
+	 * 删除 工单团队
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(workOrderGroupService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 树形结构
+	 */
+	@PostMapping("/tree")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "树形结构", notes = "树形结构")
+	public R<List<WorkOrderGroupVO>> tree(@RequestParam(value = "groupType", required = false) Integer groupType) {
+		return R.data(workOrderGroupService.tree(groupType));
+	}
+
+	/**
+	 * 下拉结构
+	 */
+	@GetMapping("/select")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "下拉结构", notes = "树形结构")
+	public R<List<WorkOrderGroupSimpleVO>> select(@RequestParam(value = "groupType", required = false) Integer groupType) {
+		return R.data(workOrderGroupService.select(groupType));
+	}
+
+
+}

+ 143 - 0
blade-service/estate/src/main/java/org/springblade/estate/controller/WorkOrderGroupUserController.java

@@ -0,0 +1,143 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserSimpleVO;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springblade.estate.wrapper.WorkOrderGroupUserWrapper;
+import org.springblade.estate.service.IWorkOrderGroupUserService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+import java.util.List;
+
+/**
+ * 工单团队和用户关联表 控制器
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/workordergroupuser")
+@Api(value = "工单团队和用户关联表", tags = "工单团队和用户关联表接口")
+public class WorkOrderGroupUserController extends BladeController {
+
+	private final IWorkOrderGroupUserService workOrderGroupUserService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入workOrderGroupUser")
+	public R<WorkOrderGroupUserVO> detail(WorkOrderGroupUser workOrderGroupUser) {
+		WorkOrderGroupUser detail = workOrderGroupUserService.getOne(Condition.getQueryWrapper(workOrderGroupUser));
+		return R.data(WorkOrderGroupUserWrapper.build().entityVO(detail));
+	}
+
+	/**
+	 * 分页 工单团队和用户关联表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入workOrderGroupUser")
+	public R<IPage<WorkOrderGroupUserVO>> list(WorkOrderGroupUser workOrderGroupUser, Query query) {
+		IPage<WorkOrderGroupUser> pages = workOrderGroupUserService.page(Condition.getPage(query), Condition.getQueryWrapper(workOrderGroupUser));
+		return R.data(WorkOrderGroupUserWrapper.build().pageVO(pages));
+	}
+
+
+	/**
+	 * 自定义分页 工单团队和用户关联表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入workOrderGroupUser")
+	public R<IPage<WorkOrderGroupUserVO>> page(WorkOrderGroupUserVO workOrderGroupUser, Query query) {
+		IPage<WorkOrderGroupUserVO> pages = workOrderGroupUserService.selectWorkOrderGroupUserPage(Condition.getPage(query), workOrderGroupUser);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 工单团队和用户关联表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入workOrderGroupUser")
+	public R save(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser) {
+		return R.status(workOrderGroupUserService.save(workOrderGroupUser));
+	}
+
+	/**
+	 * 修改 工单团队和用户关联表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入workOrderGroupUser")
+	public R update(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser) {
+		return R.status(workOrderGroupUserService.updateById(workOrderGroupUser));
+	}
+
+	/**
+	 * 新增或修改 工单团队和用户关联表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入workOrderGroupUser")
+	public R submit(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser) {
+		return R.status(workOrderGroupUserService.saveOrUpdate(workOrderGroupUser));
+	}
+
+
+	/**
+	 * 删除 工单团队和用户关联表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(workOrderGroupUserService.deleteLogic(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 下拉结构
+	 */
+	@GetMapping("/select")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "下拉结构", notes = "树形结构")
+	public R<List<WorkOrderGroupUserSimpleVO>> select(@RequestParam(value = "groupId", required = true) Long groupId) {
+		return R.data(workOrderGroupUserService.select(groupId));
+	}
+
+
+}

+ 90 - 0
blade-service/estate/src/main/java/org/springblade/estate/feign/WorkOrderGroupClient.java

@@ -0,0 +1,90 @@
+package org.springblade.estate.feign;
+
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import org.springblade.estate.wrapper.WorkOrderGroupWrapper;
+import org.springblade.estate.service.IWorkOrderGroupService;
+import org.springblade.core.boot.ctrl.BladeController;
+import java.util.List;
+/**
+ * 工单团队 client
+ *
+ * @author lianghanqiang
+ * @since 2022-01-19
+ */
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/feign/workordergroup")
+
+public class WorkOrderGroupClient implements IWorkOrderGroupClient {
+
+    private final IWorkOrderGroupService workOrderGroupService;
+
+        /**
+     * 详情
+     */
+    @Override
+    @GetMapping("/detail")
+    public WorkOrderGroupVO detail(WorkOrderGroup workOrderGroup) {
+        WorkOrderGroup detail = workOrderGroupService.getOne(Condition.getQueryWrapper(workOrderGroup));
+        return WorkOrderGroupWrapper.build().entityVO(detail);
+        }
+
+    /**
+     * 查询 工单团队
+     */
+    @Override
+    @GetMapping("/list")
+    public List<WorkOrderGroupVO> list(WorkOrderGroup workOrderGroup) {
+        return WorkOrderGroupWrapper.build().listVO(workOrderGroupService.list(Condition.getQueryWrapper(workOrderGroup)));
+        }
+
+
+
+    /**
+     * 新增 工单团队
+     */
+    @Override
+    @PostMapping("/save")
+    public boolean save(@Valid @RequestBody WorkOrderGroup workOrderGroup) {
+        return workOrderGroupService.save(workOrderGroup);
+        }
+
+    /**
+     * 修改 工单团队
+     */
+    @Override
+    @PostMapping("/update")
+    public boolean update(@Valid @RequestBody WorkOrderGroup workOrderGroup) {
+        return workOrderGroupService.updateById(workOrderGroup);
+        }
+
+    /**
+     * 新增或修改 工单团队
+     */
+    @Override
+    @PostMapping("/submit")
+    public boolean submit(@Valid @RequestBody WorkOrderGroup workOrderGroup) {
+        return workOrderGroupService.saveOrUpdate(workOrderGroup);
+        }
+
+
+    /**
+     * 删除 工单团队
+     */
+    @Override
+    @PostMapping("/remove")
+    public boolean remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        return workOrderGroupService.deleteLogic(Func.toLongList(ids));
+        }
+
+
+}

+ 90 - 0
blade-service/estate/src/main/java/org/springblade/estate/feign/WorkOrderGroupUserClient.java

@@ -0,0 +1,90 @@
+package org.springblade.estate.feign;
+
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springblade.estate.wrapper.WorkOrderGroupUserWrapper;
+import org.springblade.estate.service.IWorkOrderGroupUserService;
+import org.springblade.core.boot.ctrl.BladeController;
+import java.util.List;
+/**
+ * 工单团队和用户关联表 client
+ *
+ * @author lianghanqiang
+ * @since 2022-01-19
+ */
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/feign/workordergroupuser")
+
+public class WorkOrderGroupUserClient implements IWorkOrderGroupUserClient {
+
+    private final IWorkOrderGroupUserService workOrderGroupUserService;
+
+        /**
+     * 详情
+     */
+    @Override
+    @GetMapping("/detail")
+    public WorkOrderGroupUserVO detail(WorkOrderGroupUser workOrderGroupUser) {
+        WorkOrderGroupUser detail = workOrderGroupUserService.getOne(Condition.getQueryWrapper(workOrderGroupUser));
+        return WorkOrderGroupUserWrapper.build().entityVO(detail);
+        }
+
+    /**
+     * 查询 工单团队和用户关联表
+     */
+    @Override
+    @GetMapping("/list")
+    public List<WorkOrderGroupUserVO> list(WorkOrderGroupUser workOrderGroupUser) {
+        return WorkOrderGroupUserWrapper.build().listVO(workOrderGroupUserService.list(Condition.getQueryWrapper(workOrderGroupUser)));
+        }
+
+
+
+    /**
+     * 新增 工单团队和用户关联表
+     */
+    @Override
+    @PostMapping("/save")
+    public boolean save(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser) {
+        return workOrderGroupUserService.save(workOrderGroupUser);
+        }
+
+    /**
+     * 修改 工单团队和用户关联表
+     */
+    @Override
+    @PostMapping("/update")
+    public boolean update(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser) {
+        return workOrderGroupUserService.updateById(workOrderGroupUser);
+        }
+
+    /**
+     * 新增或修改 工单团队和用户关联表
+     */
+    @Override
+    @PostMapping("/submit")
+    public boolean submit(@Valid @RequestBody WorkOrderGroupUser workOrderGroupUser) {
+        return workOrderGroupUserService.saveOrUpdate(workOrderGroupUser);
+        }
+
+
+    /**
+     * 删除 工单团队和用户关联表
+     */
+    @Override
+    @PostMapping("/remove")
+    public boolean remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        return workOrderGroupUserService.deleteLogic(Func.toLongList(ids));
+        }
+
+
+}

+ 5 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/RepairMapper.xml

@@ -31,9 +31,14 @@
         <result property="acceptReason" column="accept_reason"/>
         <result property="hasEstimate" column="has_estimate"/>
         <result property="comment" column="comment"/>
+        <result property="rate" column="rate"/>
         <result property="pic" column="pic"/>
         <result property="agencyId" column="agency_id"/>
         <result property="enterpriseId" column="enterprise_id"/>
+        <result property="workOrderGroupId" column="work_order_group_id"/>
+        <result property="workOrderGroupUserId" column="work_order_group_user_id"/>
+        <result property="handleTime" column="handle_time"/>
+        <result property="handleResult" column="handle_result"/>
     </resultMap>
 
 

+ 44 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupMapper.java

@@ -0,0 +1,44 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.mapper;
+
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.system.vo.DictBizVO;
+
+import java.util.List;
+
+/**
+ * 工单团队 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+public interface WorkOrderGroupMapper extends BaseMapper<WorkOrderGroup> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param workOrderGroup
+	 * @return
+	 */
+	List<WorkOrderGroupVO> selectWorkOrderGroupPage(IPage page, WorkOrderGroupVO workOrderGroup);
+
+}

+ 34 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.estate.mapper.WorkOrderGroupMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="workOrderGroupResultMap" type="org.springblade.estate.entity.WorkOrderGroup">
+        <result column="id" property="id"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="name" property="name"/>
+        <result column="residential_id" property="residentialId"/>
+        <result column="group_type" property="groupType"/>
+        <result column="tags" property="tags"/>
+    </resultMap>
+
+    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+    </resultMap>
+
+
+    <select id="selectWorkOrderGroupPage" resultMap="workOrderGroupResultMap">
+        select * from estate_work_order_group where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupUserMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.mapper;
+
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 工单团队和用户关联表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+public interface WorkOrderGroupUserMapper extends BaseMapper<WorkOrderGroupUser> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param workOrderGroupUser
+	 * @return
+	 */
+	List<WorkOrderGroupUserVO> selectWorkOrderGroupUserPage(IPage page, WorkOrderGroupUserVO workOrderGroupUser);
+
+}

+ 26 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderGroupUserMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.estate.mapper.WorkOrderGroupUserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="workOrderGroupUserResultMap" type="org.springblade.estate.entity.WorkOrderGroupUser">
+        <result column="id" property="id"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="group_id" property="groupId"/>
+        <result column="person" property="person"/>
+        <result column="phone" property="phone"/>
+        <result column="is_handler" property="isHandler"/>
+    </resultMap>
+
+
+    <select id="selectWorkOrderGroupUserPage" resultMap="workOrderGroupUserResultMap">
+        select * from estate_work_order_group_user where is_deleted = 0
+    </select>
+
+</mapper>

+ 2 - 2
blade-service/estate/src/main/java/org/springblade/estate/mapper/WorkOrderMapper.xml

@@ -17,8 +17,8 @@
         <result column="event_type" property="eventType"/>
         <result column="biz_tag" property="bizTag"/>
         <result column="event_desc" property="eventDesc"/>
-        <result column="handler" property="handler"/>
-        <result column="handler_phone" property="handlerPhone"/>
+        <result column="group_id" property="groupId"/>
+        <result column="group_user_id" property="groupUserId"/>
         <result column="handle_status" property="handleStatus"/>
         <result column="img" property="img"/>
         <result column="contact" property="contact"/>

+ 2 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/IRepairService.java

@@ -44,4 +44,6 @@ public interface IRepairService extends BaseService<Repair> {
 
 	R generateWorkOrder(RepairDTO repairDTO);
 
+	R toHandle(RepairDTO repairDTO);
+
 }

+ 60 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/IWorkOrderGroupService.java

@@ -0,0 +1,60 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.service;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.system.vo.DictBizVO;
+
+import java.util.List;
+
+/**
+ * 工单团队 服务类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+public interface IWorkOrderGroupService extends BaseService<WorkOrderGroup> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param workOrderGroup
+	 * @return
+	 */
+	IPage<WorkOrderGroupVO> selectWorkOrderGroupPage(IPage<WorkOrderGroupVO> page, WorkOrderGroupVO workOrderGroup);
+
+	/**
+	 * 树形结构
+	 *
+	 * @return
+	 */
+	List<WorkOrderGroupVO> tree(Integer groupType);
+
+	/**
+	 * 下拉结构
+	 *
+	 * @return
+	 */
+	List<WorkOrderGroupSimpleVO> select(Integer groupType);
+
+}

+ 54 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/IWorkOrderGroupUserService.java

@@ -0,0 +1,54 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.service;
+
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 工单团队和用户关联表 服务类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+public interface IWorkOrderGroupUserService extends BaseService<WorkOrderGroupUser> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param workOrderGroupUser
+	 * @return
+	 */
+	IPage<WorkOrderGroupUserVO> selectWorkOrderGroupUserPage(IPage<WorkOrderGroupUserVO> page, WorkOrderGroupUserVO workOrderGroupUser);
+
+	List<WorkOrderGroupUser> getByGroupId(Long groupId);
+
+	/**
+	 * 下拉结构
+	 *
+	 * @return
+	 */
+	List<WorkOrderGroupUserSimpleVO> select(Long groupId);
+
+}

+ 3 - 1
blade-service/estate/src/main/java/org/springblade/estate/service/IWorkOrderService.java

@@ -22,6 +22,8 @@ import org.springblade.estate.vo.WorkOrderVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.Date;
+
 /**
  *  服务类
  *
@@ -40,6 +42,6 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
 	IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderVO workOrder);
 
 	R<WorkOrder> generateWorkOrder(String orderName, Integer eventType, String eventDesc, String bizTag,
-						String handler, String handlerPhone, String img, String contact, String contactPhone);
+								   Long groupUserId, String img, String contact, String contactPhone, Date handleTime, Long groupId);
 
 }

+ 16 - 4
blade-service/estate/src/main/java/org/springblade/estate/service/impl/RepairServiceImpl.java

@@ -1,6 +1,5 @@
 package org.springblade.estate.service.impl;
 
-import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.GenerateNum;
 import org.springblade.community.entity.Agency;
 import org.springblade.community.feign.IAgencyClient;
@@ -71,21 +70,34 @@ public class RepairServiceImpl extends BaseServiceImpl<RepairMapper, Repair> imp
 			return R.fail("工单已生成,请勿重复");
 		}
 		R<WorkOrder> result = this.workOrderService.generateWorkOrder(repairDTO.getWorkOrderName(), 2,
-			repair.getReportDetail(), repairDTO.getBizTag(), repairDTO.getHandler(), repairDTO.getHandlerPhone(),
-			repair.getPic(), repair.getReportor(), repair.getReportorPhone());
+			repair.getReportDetail(), repairDTO.getBizTag(), repairDTO.getGroupUserId(),
+			repair.getPic(), repair.getReportor(), repair.getReportorPhone(), repairDTO.getHandleTime(), repairDTO.getGroupId());
 		if(result.isSuccess()){
 			repair.setHandler(repairDTO.getHandler());
 			repair.setHandlerPhone(repairDTO.getHandlerPhone());
 			repair.setHandleTime(repairDTO.getHandleTime());
+			repair.setWorkOrderGroupId(repairDTO.getGroupId());
+			repair.setWorkOrderGroupUserId(repairDTO.getGroupUserId());
 			repair.setAcceptStatus(1);
 			repair.setAcceptReason("已受理");
 			repair.setHasWorkOrder(1);
 			repair.setWorkOrderId(result.getData().getId());
-			return R.status(this.updateById(repairDTO));
+			repair.setHandleStatus(0);
+			return R.status(this.updateById(repair));
 		}else{
 			return R.fail("工单生成失败");
 		}
 
 	}
 
+	@Override
+	public R toHandle(RepairDTO repairDTO) {
+		Repair repair = this.getById(repairDTO.getId());
+		if(repair == null){
+			return R.fail("事件不存在");
+		}
+		repair.setHandleStatus(repairDTO.getHandleStatus());
+		return R.status(this.updateById(repair));
+	}
+
 }

+ 86 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/impl/WorkOrderGroupServiceImpl.java

@@ -0,0 +1,86 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.service.IWorkOrderGroupUserService;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+import org.springblade.estate.mapper.WorkOrderGroupMapper;
+import org.springblade.estate.service.IWorkOrderGroupService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.estate.wrapper.WorkOrderGroupUserWrapper;
+import org.springblade.estate.wrapper.WorkOrderGroupWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 工单团队 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Service
+public class WorkOrderGroupServiceImpl extends BaseServiceImpl<WorkOrderGroupMapper, WorkOrderGroup> implements IWorkOrderGroupService {
+
+	@Autowired
+	private IWorkOrderGroupUserService workOrderGroupUserService;
+
+	@Override
+	public IPage<WorkOrderGroupVO> selectWorkOrderGroupPage(IPage<WorkOrderGroupVO> page, WorkOrderGroupVO workOrderGroup) {
+		return page.setRecords(baseMapper.selectWorkOrderGroupPage(page, workOrderGroup));
+	}
+
+	@Override
+	public List<WorkOrderGroupVO> tree(Integer groupType) {
+		List<WorkOrderGroup> groupList = this.list(new LambdaQueryWrapper<WorkOrderGroup>().eq(groupType != null, WorkOrderGroup::getGroupType, groupType));
+		List<WorkOrderGroupVO> groupVOList = new ArrayList<>();
+		for(WorkOrderGroup workOrderGroup : groupList){
+			WorkOrderGroupVO workOrderGroupVO = WorkOrderGroupWrapper.build().entityVO(workOrderGroup);
+			workOrderGroupVO.setLabel(workOrderGroup.getName());
+			workOrderGroupVO.setValue(workOrderGroup.getId());
+			List<WorkOrderGroupUser> groupUserList = workOrderGroupUserService.getByGroupId(workOrderGroup.getId());
+			List<WorkOrderGroupUserVO> groupUserVOList = new ArrayList<>();
+			for(WorkOrderGroupUser workOrderGroupUser : groupUserList){
+				WorkOrderGroupUserVO groupUserVO = WorkOrderGroupUserWrapper.build().entityVO(workOrderGroupUser);
+				groupUserVO.setLabel(workOrderGroupUser.getPerson());
+				groupUserVO.setValue(workOrderGroupUser.getId());
+				groupUserVOList.add(groupUserVO);
+			}
+			workOrderGroupVO.setChildren(groupUserVOList);
+			groupVOList.add(workOrderGroupVO);
+		}
+		return groupVOList;
+	}
+
+	@Override
+	public List<WorkOrderGroupSimpleVO> select(Integer groupType) {
+		LambdaQueryWrapper<WorkOrderGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(groupType != null, WorkOrderGroup::getGroupType, groupType);
+		lambdaQueryWrapper.orderByDesc(WorkOrderGroup::getCreateTime);
+		List<WorkOrderGroup> groupList = baseMapper.selectList(lambdaQueryWrapper);
+		return WorkOrderGroupWrapper.build().listSimpleVO(groupList);
+	}
+
+}

+ 64 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/impl/WorkOrderGroupUserServiceImpl.java

@@ -0,0 +1,64 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupUserSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+import org.springblade.estate.mapper.WorkOrderGroupUserMapper;
+import org.springblade.estate.service.IWorkOrderGroupUserService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.estate.wrapper.WorkOrderGroupUserWrapper;
+import org.springblade.estate.wrapper.WorkOrderGroupWrapper;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 工单团队和用户关联表 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+@Service
+public class WorkOrderGroupUserServiceImpl extends BaseServiceImpl<WorkOrderGroupUserMapper, WorkOrderGroupUser> implements IWorkOrderGroupUserService {
+
+	@Override
+	public IPage<WorkOrderGroupUserVO> selectWorkOrderGroupUserPage(IPage<WorkOrderGroupUserVO> page, WorkOrderGroupUserVO workOrderGroupUser) {
+		return page.setRecords(baseMapper.selectWorkOrderGroupUserPage(page, workOrderGroupUser));
+	}
+
+	@Override
+	public List<WorkOrderGroupUser> getByGroupId(Long groupId) {
+		LambdaQueryWrapper<WorkOrderGroupUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(WorkOrderGroupUser::getGroupId, groupId);
+		return baseMapper.selectList(lambdaQueryWrapper);
+	}
+
+	@Override
+	public List<WorkOrderGroupUserSimpleVO> select(Long groupId) {
+		LambdaQueryWrapper<WorkOrderGroupUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(WorkOrderGroupUser::getGroupId, groupId);
+		lambdaQueryWrapper.orderByDesc(WorkOrderGroupUser::getCreateTime);
+		List<WorkOrderGroupUser> groupUserList = baseMapper.selectList(lambdaQueryWrapper);
+		return WorkOrderGroupUserWrapper.build().listSimpleVO(groupUserList);
+	}
+
+}

+ 7 - 3
blade-service/estate/src/main/java/org/springblade/estate/service/impl/WorkOrderServiceImpl.java

@@ -26,6 +26,8 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.Date;
+
 /**
  *  服务实现类
  *
@@ -41,18 +43,20 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
 	}
 
 	@Override
-	public R<WorkOrder> generateWorkOrder(String orderName, Integer eventType, String eventDesc, String bizTag, String handler, String handlerPhone, String img, String contact, String contactPhone) {
+	public R<WorkOrder> generateWorkOrder(String orderName, Integer eventType, String eventDesc, String bizTag, Long groupUserId,
+										  String img, String contact, String contactPhone, Date handleTime, Long groupId) {
 		WorkOrder workOrder = new WorkOrder();
 		workOrder.setOrderNo("RE" + GenerateNum.generateNum());
 		workOrder.setImg(img);
 		workOrder.setBizTag(bizTag);
 		workOrder.setContact(contact);
 		workOrder.setContactPhone(contactPhone);
-		workOrder.setHandler(handler);
-		workOrder.setHandlerPhone(handlerPhone);
+		workOrder.setGroupUserId(groupUserId);
 		workOrder.setOrderName(orderName);
 		workOrder.setEventType(eventType);
 		workOrder.setEventDesc(eventDesc);
+		workOrder.setHandleTime(handleTime);
+		workOrder.setGroupId(groupId);
 		boolean save = this.save(workOrder);
 		if(save){
 			return R.data(workOrder);

+ 64 - 0
blade-service/estate/src/main/java/org/springblade/estate/wrapper/WorkOrderGroupUserWrapper.java

@@ -0,0 +1,64 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupUserVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 工单团队和用户关联表包装类,返回视图层所需的字段
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+public class WorkOrderGroupUserWrapper extends BaseEntityWrapper<WorkOrderGroupUser, WorkOrderGroupUserVO>  {
+
+	public static WorkOrderGroupUserWrapper build() {
+		return new WorkOrderGroupUserWrapper();
+ 	}
+
+	@Override
+	public WorkOrderGroupUserVO entityVO(WorkOrderGroupUser workOrderGroupUser) {
+		WorkOrderGroupUserVO workOrderGroupUserVO = Objects.requireNonNull(BeanUtil.copy(workOrderGroupUser, WorkOrderGroupUserVO.class));
+
+		//User createUser = UserCache.getUser(workOrderGroupUser.getCreateUser());
+		//User updateUser = UserCache.getUser(workOrderGroupUser.getUpdateUser());
+		//workOrderGroupUserVO.setCreateUserName(createUser.getName());
+		//workOrderGroupUserVO.setUpdateUserName(updateUser.getName());
+
+		return workOrderGroupUserVO;
+	}
+
+	public WorkOrderGroupUserSimpleVO entitySimpleVO(WorkOrderGroupUser workOrderGroupUser) {
+		WorkOrderGroupUserSimpleVO workOrderGroupUserSimpleVO = Objects.requireNonNull(BeanUtil.copy(workOrderGroupUser, WorkOrderGroupUserSimpleVO.class));
+		return workOrderGroupUserSimpleVO;
+	}
+
+	public List<WorkOrderGroupUserSimpleVO> listSimpleVO(List<WorkOrderGroupUser> workOrderGroupUserList) {
+		return workOrderGroupUserList.stream().map(this::entitySimpleVO).collect(Collectors.toList());
+	}
+
+}

+ 69 - 0
blade-service/estate/src/main/java/org/springblade/estate/wrapper/WorkOrderGroupWrapper.java

@@ -0,0 +1,69 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.estate.wrapper;
+
+import org.springblade.community.entity.Residential;
+import org.springblade.community.feign.IResidentialClient;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.vo.WorkOrderGroupSimpleVO;
+import org.springblade.estate.vo.WorkOrderGroupVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 工单团队包装类,返回视图层所需的字段
+ *
+ * @author BladeX
+ * @since 2022-01-19
+ */
+public class WorkOrderGroupWrapper extends BaseEntityWrapper<WorkOrderGroup, WorkOrderGroupVO>  {
+
+	private static IResidentialClient residentialClient;
+
+	public static WorkOrderGroupWrapper build() {
+		return new WorkOrderGroupWrapper();
+ 	}
+
+ 	static {
+		residentialClient = SpringUtil.getBean(IResidentialClient.class);
+	}
+
+	@Override
+	public WorkOrderGroupVO entityVO(WorkOrderGroup workOrderGroup) {
+		WorkOrderGroupVO workOrderGroupVO = Objects.requireNonNull(BeanUtil.copy(workOrderGroup, WorkOrderGroupVO.class));
+		Residential residential = residentialClient.getById(workOrderGroup.getResidentialId());
+		if(residential != null){
+			workOrderGroupVO.setResidentialName(residential.getName());
+		}
+		return workOrderGroupVO;
+	}
+
+	public WorkOrderGroupSimpleVO entitySimpleVO(WorkOrderGroup workOrderGroup) {
+		WorkOrderGroupSimpleVO workOrderGroupVO = Objects.requireNonNull(BeanUtil.copy(workOrderGroup, WorkOrderGroupSimpleVO.class));
+		return workOrderGroupVO;
+	}
+
+	public List<WorkOrderGroupSimpleVO> listSimpleVO(List<WorkOrderGroup> workOrderGroupList) {
+		return workOrderGroupList.stream().map(this::entitySimpleVO).collect(Collectors.toList());
+	}
+
+}

+ 18 - 2
blade-service/estate/src/main/java/org/springblade/estate/wrapper/WorkOrderWrapper.java

@@ -16,19 +16,22 @@
  */
 package org.springblade.estate.wrapper;
 
-import cn.hutool.core.util.ArrayUtil;
+import com.google.gson.internal.$Gson$Types;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.estate.entity.WorkOrder;
+import org.springblade.estate.entity.WorkOrderGroup;
+import org.springblade.estate.entity.WorkOrderGroupUser;
+import org.springblade.estate.service.IWorkOrderGroupService;
+import org.springblade.estate.service.IWorkOrderGroupUserService;
 import org.springblade.estate.vo.WorkOrderVO;
 import org.springblade.system.expand.feign.IConfClient;
 import org.springblade.system.feign.IDictBizClient;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -43,6 +46,8 @@ public class WorkOrderWrapper extends BaseEntityWrapper<WorkOrder, WorkOrderVO>
 
 	private static IConfClient confClient;
 	private static IDictBizClient dictBizClient;
+	private static IWorkOrderGroupUserService workOrderGroupUserService;
+	private static IWorkOrderGroupService workOrderGroupService;
 
 	public static WorkOrderWrapper build() {
 		return new WorkOrderWrapper();
@@ -51,6 +56,8 @@ public class WorkOrderWrapper extends BaseEntityWrapper<WorkOrder, WorkOrderVO>
  	static {
 		confClient = SpringUtil.getBean(IConfClient.class);
 		dictBizClient = SpringUtil.getBean(IDictBizClient.class);
+		workOrderGroupUserService = SpringUtil.getBean(IWorkOrderGroupUserService.class);
+		workOrderGroupService = SpringUtil.getBean(IWorkOrderGroupService.class);
 	}
 
 	@Override
@@ -65,6 +72,15 @@ public class WorkOrderWrapper extends BaseEntityWrapper<WorkOrder, WorkOrderVO>
 			workOrderVO.setImg(imgList.stream().map(String::valueOf).collect(Collectors.joining(",")));
 		}
 		workOrderVO.setHandleStatusTxt(dictBizClient.getValue("work_order_handle_status", workOrder.getHandleStatus().toString()).getData());
+		WorkOrderGroupUser groupUser = workOrderGroupUserService.getById(workOrder.getGroupUserId());
+		if(groupUser != null){
+			workOrderVO.setHandler(groupUser.getPerson());
+			workOrderVO.setHandlerPhone(groupUser.getPhone());
+		}
+		WorkOrderGroup group = workOrderGroupService.getById(workOrder.getGroupId());
+		if(group != null){
+			workOrderVO.setGroupName(group.getName());
+		}
 		return workOrderVO;
 	}
 

+ 5 - 5
community-app-gateway/src/main/java/org/springblade/app/controller/EstateRepairController.java

@@ -57,22 +57,22 @@ public class EstateRepairController {
 	public Map<String,Object> addEstateRepair(@RequestBody RepairDTO estateRepairDto){
 
 		Map<String,Object> map = new HashMap<>();
-		estateRepairDto.setJobNo(generateRepairNO());
+		estateRepairDto.setRepairNo(generateRepairNO());
 		Residential searchResidential = new Residential();
-		searchResidential.setId(estateRepairDto.getResidentialId());
+//		searchResidential.setId(estateRepairDto.getA());
 		Residential residentialById = residentialClient.detail(searchResidential);
 		if(residentialById != null){
-			estateRepairDto.setOrgPosition(residentialById.getOrgPosition());
+//			estateRepairDto.setOrgPosition(residentialById.getOrgPosition());
 			estateRepairDto.setTenantId(residentialById.getTenantId());
 		}else{
 			map.put("add_result", "小区不存在");
 		}
 		HouseUser searchHouseUser = new HouseUser();
-		searchHouseUser.setId(estateRepairDto.getUserId());
+//		searchHouseUser.setId(estateRepairDto.getReportor());
 		HouseUserVO houseUserVO = houseUserClient.detail(searchHouseUser);
 		if(houseUserVO != null){
 			estateRepairDto.setReportor(houseUserVO.getName());
-			estateRepairDto.setReportPhone(houseUserVO.getPhone());
+			estateRepairDto.setReportorPhone(houseUserVO.getPhone());
 		}
 
 		//处理图片